summaryrefslogtreecommitdiffstats
path: root/source/ap
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap')
-rwxr-xr-xsource/ap/a2ps/a2ps.SlackBuild158
-rw-r--r--source/ap/a2ps/a2ps.a2ps_cfg.in.diff11
-rw-r--r--source/ap/a2ps/a2ps.diff12
-rw-r--r--source/ap/a2ps/psutils.destdir.diff56
-rw-r--r--source/ap/a2ps/psutils.diff33
-rw-r--r--source/ap/a2ps/slack-desc19
-rw-r--r--source/ap/acct/acct-6.4pre1-6.diff2636
-rwxr-xr-xsource/ap/acct/acct.SlackBuild137
-rw-r--r--source/ap/acct/acct.logdir.fhs.diff29
-rw-r--r--source/ap/acct/slack-desc19
-rwxr-xr-xsource/ap/alsa-utils/alsa-utils.SlackBuild106
-rw-r--r--source/ap/alsa-utils/alsa-utils.alsaconf.diff54
-rw-r--r--source/ap/alsa-utils/rc.alsa93
-rw-r--r--source/ap/alsa-utils/slack-desc19
-rw-r--r--source/ap/amp/amp-gcc34.diff11
-rwxr-xr-xsource/ap/amp/amp.SlackBuild61
-rw-r--r--source/ap/amp/license_excerpts42
-rw-r--r--source/ap/amp/slack-desc19
-rwxr-xr-xsource/ap/ash/ash.SlackBuild74
-rw-r--r--source/ap/ash/patches/ash-builtin.patch843
-rw-r--r--source/ap/ash/patches/ash-debian.patch702
-rw-r--r--source/ap/ash/patches/ash-echo.patch91
-rw-r--r--source/ap/ash/patches/ash-freebsd.patch60
-rw-r--r--source/ap/ash/patches/ash-getcwd.patch13
-rw-r--r--source/ap/ash/patches/ash-getopt.patch198
-rw-r--r--source/ap/ash/patches/ash-glob.patch445
-rw-r--r--source/ap/ash/patches/ash-hetio.patch559
-rw-r--r--source/ap/ash/patches/ash-jobs.patch108
-rw-r--r--source/ap/ash/patches/ash-kill.patch675
-rw-r--r--source/ap/ash/patches/ash-makefile.patch115
-rw-r--r--source/ap/ash/patches/ash-manpage.patch42
-rw-r--r--source/ap/ash/patches/ash-memout.patch333
-rw-r--r--source/ap/ash/patches/ash-misc.patch122
-rw-r--r--source/ap/ash/patches/ash-ppid.patch21
-rw-r--r--source/ap/ash/patches/ash-redir.patch463
-rw-r--r--source/ap/ash/patches/ash-setmode.patch510
-rw-r--r--source/ap/ash/patches/ash-sighup.patch18
-rw-r--r--source/ap/ash/patches/ash-syntax.patch270
-rw-r--r--source/ap/ash/patches/ash-test.patch588
-rw-r--r--source/ap/ash/patches/ash-times.patch42
-rw-r--r--source/ap/ash/slack-desc19
-rwxr-xr-xsource/ap/at/at.SlackBuild102
-rw-r--r--source/ap/at/doinst.sh30
-rw-r--r--source/ap/at/slack-desc19
-rwxr-xr-xsource/ap/aumix/aumix.SlackBuild66
-rw-r--r--source/ap/aumix/aumix.alsa.diff34
-rw-r--r--source/ap/aumix/slack-desc19
-rwxr-xr-xsource/ap/bc/bc.SlackBuild111
-rw-r--r--source/ap/bc/slack-desc19
-rwxr-xr-xsource/ap/bpe/bpe.SlackBuild68
-rw-r--r--source/ap/bpe/slack-desc19
-rw-r--r--source/ap/cdparanoia/cdparanoia-III-10.2_cdda_private.patch481
-rwxr-xr-xsource/ap/cdparanoia/cdparanoia.SlackBuild122
-rw-r--r--source/ap/cdparanoia/slack-desc19
-rwxr-xr-xsource/ap/cdrdao/cdrdao.SlackBuild85
-rw-r--r--source/ap/cdrdao/slack-desc19
-rwxr-xr-xsource/ap/cdrtools/cdrtools.SlackBuild138
-rw-r--r--source/ap/cdrtools/doinst.sh14
-rw-r--r--source/ap/cdrtools/slack-desc19
-rw-r--r--source/ap/cdrtools/zisofs-tools-1.0.8.tar.bz2.sign8
-rwxr-xr-xsource/ap/cupsddk/cupsddk.SlackBuild87
-rw-r--r--source/ap/cupsddk/slack-desc19
-rwxr-xr-xsource/ap/dc3dd/dc3dd.SlackBuild91
-rw-r--r--source/ap/dc3dd/slack-desc19
-rwxr-xr-xsource/ap/diffstat/diffstat.SlackBuild106
-rw-r--r--source/ap/diffstat/slack-desc19
-rw-r--r--source/ap/diffutils/diffutils-sdiff-no-waitpid.patch23
-rwxr-xr-xsource/ap/diffutils/diffutils.SlackBuild110
-rw-r--r--source/ap/diffutils/doinst.sh16
-rw-r--r--source/ap/diffutils/slack-desc19
-rwxr-xr-xsource/ap/dmapi/dmapi.SlackBuild111
-rw-r--r--source/ap/dmapi/dmapi.destdir.diff36
-rw-r--r--source/ap/dmapi/slack-desc19
-rwxr-xr-xsource/ap/dmidecode/dmidecode.SlackBuild94
-rw-r--r--source/ap/dmidecode/dmidecode.makefile.diff14
-rw-r--r--source/ap/dmidecode/slack-desc19
-rwxr-xr-xsource/ap/dvd+rw-tools/dvd+rw-tools.SlackBuild78
-rw-r--r--source/ap/dvd+rw-tools/dvd+rw-tools.limits.h.diff10
-rw-r--r--source/ap/dvd+rw-tools/dvd+rw-tools.url1
-rw-r--r--source/ap/dvd+rw-tools/slack-desc19
-rwxr-xr-xsource/ap/enscript/enscript.SlackBuild97
-rw-r--r--source/ap/enscript/slack-desc19
-rwxr-xr-xsource/ap/flac/flac.SlackBuild109
-rw-r--r--source/ap/flac/flac.man.diff12
-rw-r--r--source/ap/flac/slack-desc19
-rw-r--r--source/ap/foomatic-filters/doinst.sh13
-rwxr-xr-xsource/ap/foomatic-filters/foomatic-filters.SlackBuild123
-rw-r--r--source/ap/foomatic-filters/slack-desc19
-rw-r--r--source/ap/ghostscript-fonts-std/doinst.sh11
-rwxr-xr-xsource/ap/ghostscript-fonts-std/ghostscript-fonts-std.SlackBuild68
-rw-r--r--source/ap/ghostscript-fonts-std/slack-desc19
-rw-r--r--source/ap/ghostscript/cidfmap118
-rwxr-xr-xsource/ap/ghostscript/ghostscript.SlackBuild176
-rw-r--r--source/ap/ghostscript/slack-desc19
-rwxr-xr-xsource/ap/gphoto2/gphoto2.SlackBuild98
-rw-r--r--source/ap/gphoto2/slack-desc19
-rwxr-xr-xsource/ap/groff/groff.SlackBuild129
-rw-r--r--source/ap/groff/groff.docdir.diff12
-rw-r--r--source/ap/groff/groff.man.mdoc.local24
-rw-r--r--source/ap/groff/slack-desc19
-rwxr-xr-xsource/ap/gutenprint/gutenprint.SlackBuild115
-rw-r--r--source/ap/gutenprint/slack-desc19
-rw-r--r--source/ap/hplip/doinst.sh4
-rwxr-xr-xsource/ap/hplip/hplip.SlackBuild112
-rw-r--r--source/ap/hplip/hplip.prevent_segfault.diff23
-rw-r--r--source/ap/hplip/slack-desc19
-rwxr-xr-xsource/ap/ispell/ispell.SlackBuild102
-rw-r--r--source/ap/ispell/ispell.diff484
-rw-r--r--source/ap/ispell/slack-desc19
-rwxr-xr-xsource/ap/jed/jed.SlackBuild96
-rw-r--r--source/ap/jed/jed.mouse.diff17
-rw-r--r--source/ap/jed/jed.multibyte.diff11
-rw-r--r--source/ap/jed/slack-desc19
-rwxr-xr-xsource/ap/joe/joe.SlackBuild78
-rw-r--r--source/ap/joe/slack-desc19
-rwxr-xr-xsource/ap/jove/jove.SlackBuild95
-rw-r--r--source/ap/jove/jove.makefile.diff132
-rw-r--r--source/ap/jove/slack-desc19
-rw-r--r--source/ap/ksh93/CPL245
-rwxr-xr-xsource/ap/ksh93/ksh93.SlackBuild151
-rw-r--r--source/ap/ksh93/slack-desc19
-rwxr-xr-xsource/ap/libx86/libx86.SlackBuild78
-rw-r--r--source/ap/libx86/libx86.info2
-rw-r--r--source/ap/libx86/lrmi.c.diff18
-rw-r--r--source/ap/libx86/slack-desc19
-rw-r--r--source/ap/linuxdoc-tools/ChangeLog.txt113
-rwxr-xr-xsource/ap/linuxdoc-tools/arm/build48
-rwxr-xr-xsource/ap/linuxdoc-tools/linuxdoc-tools.SlackBuild1
-rwxr-xr-xsource/ap/linuxdoc-tools/linuxdoc-tools.build946
-rwxr-xr-xsource/ap/linuxdoc-tools/postbuildfixes.sh69
-rw-r--r--source/ap/linuxdoc-tools/slack-desc19
-rw-r--r--source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff1589
-rw-r--r--source/ap/linuxdoc-tools/sources/libsgmls-perl_1.03ii-32.diff949
-rw-r--r--source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff10
-rwxr-xr-xsource/ap/linuxdoc-tools/sources/source.download67
-rwxr-xr-xsource/ap/linuxdoc-tools/trackbuild.linuxdoc-tools78
-rwxr-xr-xsource/ap/lm_sensors/lm_sensors.SlackBuild116
-rw-r--r--source/ap/lm_sensors/lm_sensors.makefile.diff15
-rw-r--r--source/ap/lm_sensors/slack-desc19
-rwxr-xr-xsource/ap/lsof/lsof.SlackBuild76
-rw-r--r--source/ap/lsof/slack-desc19
-rwxr-xr-xsource/ap/lsscsi/lsscsi.SlackBuild111
-rw-r--r--source/ap/lsscsi/lsscsi.url1
-rw-r--r--source/ap/lsscsi/slack-desc20
-rw-r--r--source/ap/madplay/madplay-0.15.2b.tar.gz.sign7
-rwxr-xr-xsource/ap/madplay/madplay.SlackBuild79
-rw-r--r--source/ap/madplay/slack-desc19
-rw-r--r--source/ap/man-pages/doinst.sh7
-rwxr-xr-xsource/ap/man-pages/man-pages.SlackBuild100
-rw-r--r--source/ap/man-pages/slack-desc19
-rw-r--r--source/ap/man-pages/whatis.sample12806
-rw-r--r--source/ap/man/doinst.sh14
-rw-r--r--source/ap/man/man-1.6f.nroff.mandoc.diff11
-rwxr-xr-xsource/ap/man/man.SlackBuild90
-rw-r--r--source/ap/man/slack-desc19
-rwxr-xr-xsource/ap/mc/mc.SlackBuild108
-rwxr-xr-xsource/ap/mc/profile.d/mc-wrapper.csh20
-rwxr-xr-xsource/ap/mc/profile.d/mc-wrapper.sh14
-rwxr-xr-xsource/ap/mc/profile.d/mc.csh1
-rwxr-xr-xsource/ap/mc/profile.d/mc.sh1
-rw-r--r--source/ap/mc/slack-desc19
-rwxr-xr-xsource/ap/most/most.SlackBuild89
-rw-r--r--source/ap/most/slack-desc19
-rwxr-xr-xsource/ap/mpg321/mpg321.SlackBuild77
-rw-r--r--source/ap/mpg321/slack-desc19
-rw-r--r--source/ap/mysql/doinst.sh22
-rw-r--r--source/ap/mysql/mirror-url1
-rwxr-xr-xsource/ap/mysql/mysql-embedded.build46
-rwxr-xr-xsource/ap/mysql/mysql.SlackBuild182
-rw-r--r--source/ap/mysql/rc.mysqld86
-rw-r--r--source/ap/mysql/slack-desc19
-rwxr-xr-xsource/ap/nano/nano.SlackBuild117
-rw-r--r--source/ap/nano/slack-desc19
-rwxr-xr-xsource/ap/normalize/normalize.SlackBuild80
-rw-r--r--source/ap/normalize/slack-desc20
-rwxr-xr-xsource/ap/ntfsprogs/ntfsprogs.SlackBuild121
-rw-r--r--source/ap/ntfsprogs/slack-desc19
-rw-r--r--source/ap/pm-utils/README.SLACKWARE119
-rwxr-xr-xsource/ap/pm-utils/pm-utils.SlackBuild105
-rw-r--r--source/ap/pm-utils/pm-utils.url1
-rw-r--r--source/ap/pm-utils/slack-desc19
-rwxr-xr-xsource/ap/radeontool/radeontool.SlackBuild70
-rw-r--r--source/ap/radeontool/radeontool.c.diff12
-rw-r--r--source/ap/radeontool/radeontool.info8
-rw-r--r--source/ap/radeontool/slack-desc19
-rwxr-xr-xsource/ap/rexima/rexima.SlackBuild68
-rw-r--r--source/ap/rexima/slack-desc19
-rw-r--r--source/ap/rpm/Packagesbin0 -> 12288 bytes
-rw-r--r--source/ap/rpm/doinst.sh5
-rwxr-xr-xsource/ap/rpm/rpm.SlackBuild122
-rw-r--r--source/ap/rpm/slack-desc19
-rwxr-xr-xsource/ap/rzip/rzip.SlackBuild84
-rw-r--r--source/ap/rzip/slack-desc19
-rw-r--r--source/ap/sc/sc-7.16.lsm17
-rw-r--r--source/ap/sc/sc-gcc34.diff10
-rw-r--r--source/ap/sc/sc-malloc.diff13
-rwxr-xr-xsource/ap/sc/sc.SlackBuild86
-rw-r--r--source/ap/sc/slack-desc19
-rwxr-xr-xsource/ap/screen/screen.SlackBuild117
-rw-r--r--source/ap/screen/slack-desc19
-rw-r--r--source/ap/seejpeg/seejpeg-1.10.diff63
-rw-r--r--source/ap/seejpeg/seejpeg-1.10.lsm21
-rwxr-xr-xsource/ap/seejpeg/seejpeg.SlackBuild72
-rw-r--r--source/ap/seejpeg/slack-desc19
-rw-r--r--source/ap/slackpkg/README4
-rw-r--r--source/ap/sox/slack-desc19
-rwxr-xr-xsource/ap/sox/sox.SlackBuild98
-rw-r--r--source/ap/sqlite/COPYRIGHT68
-rw-r--r--source/ap/sqlite/slack-desc19
-rwxr-xr-xsource/ap/sqlite/sqlite.SlackBuild111
-rw-r--r--source/ap/sudo/doinst.sh14
-rw-r--r--source/ap/sudo/slack-desc19
-rwxr-xr-xsource/ap/sudo/sudo.SlackBuild91
-rw-r--r--source/ap/sysstat/slack-desc19
-rwxr-xr-xsource/ap/sysstat/sysstat.SlackBuild107
-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/texinfo/dir314
-rw-r--r--source/ap/texinfo/doinst.sh11
-rw-r--r--source/ap/texinfo/slack-desc19
-rwxr-xr-xsource/ap/texinfo/texinfo.SlackBuild92
-rw-r--r--source/ap/vbetool/slack-desc19
-rwxr-xr-xsource/ap/vbetool/vbetool.SlackBuild83
-rw-r--r--source/ap/vbetool/vbetool.info2
-rw-r--r--source/ap/vim/doinst.sh5
-rw-r--r--source/ap/vim/gvim.desktop120
-rw-r--r--source/ap/vim/gvim.pngbin0 -> 8249 bytes
-rw-r--r--source/ap/vim/patches/7.2.00161
-rw-r--r--source/ap/vim/patches/7.2.00247
-rw-r--r--source/ap/vim/patches/7.2.003107
-rw-r--r--source/ap/vim/patches/7.2.004103
-rw-r--r--source/ap/vim/patches/7.2.005149
-rw-r--r--source/ap/vim/patches/7.2.00650
-rw-r--r--source/ap/vim/patches/7.2.007493
-rw-r--r--source/ap/vim/patches/7.2.00863
-rw-r--r--source/ap/vim/patches/7.2.00967
-rw-r--r--source/ap/vim/patches/7.2.010206
-rw-r--r--source/ap/vim/patches/7.2.011105
-rw-r--r--source/ap/vim/patches/7.2.01253
-rw-r--r--source/ap/vim/patches/7.2.013135
-rw-r--r--source/ap/vim/patches/7.2.01452
-rw-r--r--source/ap/vim/patches/7.2.01582
-rw-r--r--source/ap/vim/patches/7.2.016166
-rw-r--r--source/ap/vim/patches/7.2.017162
-rw-r--r--source/ap/vim/patches/7.2.01845
-rw-r--r--source/ap/vim/patches/7.2.01965
-rw-r--r--source/ap/vim/patches/7.2.02054
-rw-r--r--source/ap/vim/patches/7.2.021147
-rw-r--r--source/ap/vim/patches/7.2.022140
-rw-r--r--source/ap/vim/patches/7.2.02365
-rw-r--r--source/ap/vim/patches/7.2.02450
-rw-r--r--source/ap/vim/patches/7.2.02554
-rw-r--r--source/ap/vim/patches/7.2.026105
-rw-r--r--source/ap/vim/patches/7.2.02798
-rw-r--r--source/ap/vim/patches/7.2.02853
-rw-r--r--source/ap/vim/patches/7.2.02944
-rw-r--r--source/ap/vim/patches/7.2.03051
-rw-r--r--source/ap/vim/patches/7.2.0311281
-rw-r--r--source/ap/vim/patches/7.2.03255
-rw-r--r--source/ap/vim/patches/7.2.03378
-rw-r--r--source/ap/vim/patches/7.2.03481
-rw-r--r--source/ap/vim/patches/7.2.035128
-rw-r--r--source/ap/vim/patches/7.2.036276
-rw-r--r--source/ap/vim/patches/7.2.03753
-rw-r--r--source/ap/vim/patches/7.2.03886
-rw-r--r--source/ap/vim/patches/7.2.03946
-rw-r--r--source/ap/vim/patches/7.2.04064
-rw-r--r--source/ap/vim/patches/7.2.041729
-rw-r--r--source/ap/vim/patches/7.2.042166
-rw-r--r--source/ap/vim/patches/7.2.04378
-rw-r--r--source/ap/vim/patches/7.2.044161
-rw-r--r--source/ap/vim/patches/7.2.04567
-rw-r--r--source/ap/vim/patches/7.2.04655
-rw-r--r--source/ap/vim/patches/7.2.04788
-rw-r--r--source/ap/vim/patches/7.2.048160
-rw-r--r--source/ap/vim/patches/7.2.0491193
-rw-r--r--source/ap/vim/patches/7.2.050316
-rw-r--r--source/ap/vim/patches/7.2.051411
-rw-r--r--source/ap/vim/patches/7.2.05283
-rw-r--r--source/ap/vim/patches/7.2.05358
-rw-r--r--source/ap/vim/patches/7.2.05468
-rw-r--r--source/ap/vim/patches/7.2.0551271
-rw-r--r--source/ap/vim/patches/7.2.05657
-rw-r--r--source/ap/vim/patches/7.2.057111
-rw-r--r--source/ap/vim/patches/7.2.05883
-rw-r--r--source/ap/vim/patches/7.2.05970
-rw-r--r--source/ap/vim/patches/7.2.0601102
-rw-r--r--source/ap/vim/patches/7.2.06156
-rw-r--r--source/ap/vim/patches/7.2.06255
-rw-r--r--source/ap/vim/patches/7.2.063103
-rw-r--r--source/ap/vim/patches/7.2.06466
-rw-r--r--source/ap/vim/patches/7.2.065177
-rw-r--r--source/ap/vim/patches/7.2.06670
-rw-r--r--source/ap/vim/patches/7.2.06752
-rw-r--r--source/ap/vim/patches/7.2.068101
-rw-r--r--source/ap/vim/patches/7.2.06952
-rw-r--r--source/ap/vim/patches/7.2.070566
-rw-r--r--source/ap/vim/patches/7.2.07181
-rw-r--r--source/ap/vim/patches/7.2.07256
-rw-r--r--source/ap/vim/patches/7.2.073135
-rw-r--r--source/ap/vim/patches/7.2.07454
-rw-r--r--source/ap/vim/patches/7.2.07558
-rw-r--r--source/ap/vim/patches/7.2.07686
-rw-r--r--source/ap/vim/patches/7.2.077164
-rw-r--r--source/ap/vim/patches/7.2.078120
-rw-r--r--source/ap/vim/patches/7.2.079229
-rw-r--r--source/ap/vim/patches/7.2.080365
-rw-r--r--source/ap/vim/patches/7.2.08160
-rw-r--r--source/ap/vim/patches/7.2.08277
-rw-r--r--source/ap/vim/patches/7.2.08354
-rw-r--r--source/ap/vim/patches/7.2.084144
-rw-r--r--source/ap/vim/patches/7.2.08562
-rw-r--r--source/ap/vim/patches/7.2.08698
-rw-r--r--source/ap/vim/patches/7.2.08753
-rw-r--r--source/ap/vim/patches/7.2.08899
-rw-r--r--source/ap/vim/patches/7.2.08991
-rw-r--r--source/ap/vim/patches/7.2.090130
-rw-r--r--source/ap/vim/patches/7.2.09163
-rw-r--r--source/ap/vim/patches/7.2.092164
-rw-r--r--source/ap/vim/patches/7.2.093234
-rw-r--r--source/ap/vim/patches/7.2.094112
-rw-r--r--source/ap/vim/patches/7.2.09563
-rw-r--r--source/ap/vim/patches/7.2.09654
-rw-r--r--source/ap/vim/patches/7.2.09754
-rw-r--r--source/ap/vim/patches/7.2.09869
-rw-r--r--source/ap/vim/patches/7.2.099127
-rw-r--r--source/ap/vim/patches/7.2.100132
-rw-r--r--source/ap/vim/patches/7.2.10147
-rw-r--r--source/ap/vim/patches/7.2.10247
-rw-r--r--source/ap/vim/patches/7.2.103216
-rw-r--r--source/ap/vim/patches/7.2.10451
-rw-r--r--source/ap/vim/patches/7.2.10572
-rw-r--r--source/ap/vim/patches/7.2.106103
-rw-r--r--source/ap/vim/patches/7.2.10756
-rw-r--r--source/ap/vim/patches/7.2.10855
-rw-r--r--source/ap/vim/patches/7.2.109423
-rw-r--r--source/ap/vim/patches/7.2.11053
-rw-r--r--source/ap/vim/patches/7.2.11188
-rw-r--r--source/ap/vim/patches/7.2.11247
-rw-r--r--source/ap/vim/patches/7.2.11399
-rw-r--r--source/ap/vim/patches/7.2.11486
-rw-r--r--source/ap/vim/patches/7.2.115133
-rw-r--r--source/ap/vim/patches/7.2.11655
-rw-r--r--source/ap/vim/patches/7.2.117107
-rw-r--r--source/ap/vim/patches/7.2.11878
-rw-r--r--source/ap/vim/patches/7.2.11951
-rw-r--r--source/ap/vim/patches/7.2.120277
-rw-r--r--source/ap/vim/patches/7.2.121180
-rw-r--r--source/ap/vim/patches/7.2.12280
-rw-r--r--source/ap/vim/patches/7.2.12350
-rw-r--r--source/ap/vim/patches/7.2.124122
-rw-r--r--source/ap/vim/patches/7.2.125161
-rw-r--r--source/ap/vim/patches/7.2.126174
-rw-r--r--source/ap/vim/patches/7.2.12759
-rw-r--r--source/ap/vim/patches/7.2.12852
-rw-r--r--source/ap/vim/patches/7.2.12973
-rw-r--r--source/ap/vim/patches/7.2.130413
-rw-r--r--source/ap/vim/patches/7.2.13183
-rw-r--r--source/ap/vim/patches/7.2.132268
-rw-r--r--source/ap/vim/patches/7.2.13353
-rw-r--r--source/ap/vim/patches/7.2.13468
-rw-r--r--source/ap/vim/patches/7.2.13585
-rw-r--r--source/ap/vim/patches/7.2.13647
-rw-r--r--source/ap/vim/patches/7.2.137343
-rw-r--r--source/ap/vim/patches/7.2.138160
-rw-r--r--source/ap/vim/patches/7.2.13979
-rw-r--r--source/ap/vim/patches/7.2.14058
-rw-r--r--source/ap/vim/patches/7.2.141239
-rw-r--r--source/ap/vim/patches/7.2.14261
-rw-r--r--source/ap/vim/patches/7.2.143234
-rw-r--r--source/ap/vim/patches/7.2.14478
-rw-r--r--source/ap/vim/patches/7.2.145125
-rw-r--r--source/ap/vim/patches/7.2.146110
-rw-r--r--source/ap/vim/patches/7.2.14753
-rw-r--r--source/ap/vim/patches/7.2.148145
-rw-r--r--source/ap/vim/patches/7.2.149672
-rw-r--r--source/ap/vim/patches/7.2.1501325
-rw-r--r--source/ap/vim/patches/7.2.15153
-rw-r--r--source/ap/vim/patches/7.2.152104
-rw-r--r--source/ap/vim/patches/7.2.15397
-rw-r--r--source/ap/vim/patches/7.2.15471
-rw-r--r--source/ap/vim/patches/7.2.15545
-rw-r--r--source/ap/vim/patches/7.2.156181
-rw-r--r--source/ap/vim/patches/7.2.157144
-rw-r--r--source/ap/vim/patches/7.2.15863
-rw-r--r--source/ap/vim/patches/7.2.15971
-rw-r--r--source/ap/vim/patches/7.2.16052
-rw-r--r--source/ap/vim/patches/7.2.161205
-rw-r--r--source/ap/vim/patches/7.2.16275
-rw-r--r--source/ap/vim/patches/7.2.16351
-rw-r--r--source/ap/vim/patches/7.2.164139
-rw-r--r--source/ap/vim/patches/7.2.16558
-rw-r--r--source/ap/vim/patches/7.2.166425
-rw-r--r--source/ap/vim/patches/7.2.1671873
-rw-r--r--source/ap/vim/patches/7.2.16874
-rw-r--r--source/ap/vim/patches/7.2.1691214
-rw-r--r--source/ap/vim/patches/7.2.170179
-rw-r--r--source/ap/vim/patches/7.2.17180
-rw-r--r--source/ap/vim/patches/7.2.17259
-rw-r--r--source/ap/vim/patches/7.2.173719
-rw-r--r--source/ap/vim/patches/7.2.1741718
-rw-r--r--source/ap/vim/patches/7.2.17551
-rw-r--r--source/ap/vim/patches/7.2.176207
-rw-r--r--source/ap/vim/patches/7.2.1772726
-rw-r--r--source/ap/vim/patches/7.2.178150
-rw-r--r--source/ap/vim/patches/7.2.179100
-rw-r--r--source/ap/vim/patches/7.2.1806520
-rw-r--r--source/ap/vim/patches/7.2.1811978
-rw-r--r--source/ap/vim/patches/7.2.18266
-rw-r--r--source/ap/vim/patches/7.2.1831846
-rw-r--r--source/ap/vim/patches/7.2.1843646
-rw-r--r--source/ap/vim/patches/7.2.185305
-rw-r--r--source/ap/vim/patches/7.2.186331
-rw-r--r--source/ap/vim/patches/7.2.187125
-rw-r--r--source/ap/vim/patches/7.2.188278
-rw-r--r--source/ap/vim/patches/7.2.18986
-rw-r--r--source/ap/vim/patches/7.2.190182
-rw-r--r--source/ap/vim/patches/7.2.1913705
-rw-r--r--source/ap/vim/patches/7.2.192135
-rw-r--r--source/ap/vim/patches/7.2.19353
-rw-r--r--source/ap/vim/patches/7.2.19444
-rw-r--r--source/ap/vim/patches/7.2.19579
-rw-r--r--source/ap/vim/patches/7.2.19684
-rw-r--r--source/ap/vim/patches/7.2.19753
-rw-r--r--source/ap/vim/patches/7.2.19860
-rw-r--r--source/ap/vim/patches/7.2.19952
-rw-r--r--source/ap/vim/patches/7.2.200348
-rw-r--r--source/ap/vim/patches/7.2.201494
-rw-r--r--source/ap/vim/patches/7.2.20262
-rw-r--r--source/ap/vim/patches/7.2.2031496
-rw-r--r--source/ap/vim/patches/7.2.204137
-rw-r--r--source/ap/vim/patches/7.2.20581
-rw-r--r--source/ap/vim/patches/7.2.20646
-rw-r--r--source/ap/vim/patches/7.2.20769
-rw-r--r--source/ap/vim/patches/7.2.20882
-rw-r--r--source/ap/vim/patches/7.2.20982
-rw-r--r--source/ap/vim/patches/7.2.21058
-rw-r--r--source/ap/vim/patches/7.2.21152
-rw-r--r--source/ap/vim/patches/7.2.21262
-rw-r--r--source/ap/vim/patches/7.2.21353
-rw-r--r--source/ap/vim/patches/7.2.21465
-rw-r--r--source/ap/vim/patches/7.2.215310
-rw-r--r--source/ap/vim/patches/7.2.216137
-rw-r--r--source/ap/vim/patches/7.2.21757
-rw-r--r--source/ap/vim/patches/7.2.21852
-rw-r--r--source/ap/vim/patches/7.2.21971
-rw-r--r--source/ap/vim/patches/7.2.22095
-rw-r--r--source/ap/vim/patches/7.2.221247
-rw-r--r--source/ap/vim/patches/7.2.22259
-rw-r--r--source/ap/vim/patches/7.2.223165
-rw-r--r--source/ap/vim/patches/7.2.22488
-rw-r--r--source/ap/vim/patches/7.2.22597
-rw-r--r--source/ap/vim/patches/7.2.226268
-rw-r--r--source/ap/vim/patches/7.2.22752
-rw-r--r--source/ap/vim/patches/7.2.228573
-rw-r--r--source/ap/vim/patches/7.2.22960
-rw-r--r--source/ap/vim/patches/7.2.23087
-rw-r--r--source/ap/vim/patches/7.2.23149
-rw-r--r--source/ap/vim/patches/7.2.232102
-rw-r--r--source/ap/vim/patches/7.2.23396
-rw-r--r--source/ap/vim/patches/7.2.234111
-rw-r--r--source/ap/vim/patches/7.2.23594
-rw-r--r--source/ap/vim/patches/7.2.23681
-rw-r--r--source/ap/vim/patches/7.2.23776
-rw-r--r--source/ap/vim/patches/7.2.238117
-rw-r--r--source/ap/vim/patches/7.2.239145
-rw-r--r--source/ap/vim/patches/7.2.24069
-rw-r--r--source/ap/vim/patches/7.2.241169
-rw-r--r--source/ap/vim/patches/7.2.24289
-rw-r--r--source/ap/vim/patches/7.2.24367
-rw-r--r--source/ap/vim/patches/7.2.244174
-rw-r--r--source/ap/vim/patches/7.2.245165
-rw-r--r--source/ap/vim/slack-desc.vim19
-rw-r--r--source/ap/vim/slack-desc.vim-gvim19
-rwxr-xr-xsource/ap/vim/vim-gvim.SlackBuild193
-rwxr-xr-xsource/ap/vim/vim.SlackBuild196
-rw-r--r--source/ap/vim/vim.vimrc.diff12
-rw-r--r--source/ap/vorbis-tools/slack-desc19
-rwxr-xr-xsource/ap/vorbis-tools/vorbis-tools.SlackBuild80
-rw-r--r--source/ap/workbone/slack-desc19
-rw-r--r--source/ap/workbone/workbone.1.diff11
-rwxr-xr-xsource/ap/workbone/workbone.SlackBuild69
-rw-r--r--source/ap/workbone/workbone_2.40-3.diff294
-rw-r--r--source/ap/xfsdump/slack-desc19
-rwxr-xr-xsource/ap/xfsdump/xfsdump.SlackBuild107
-rw-r--r--source/ap/xfsdump/xfsdump.destdir.diff36
-rw-r--r--source/ap/zsh/doinst.sh6
-rw-r--r--source/ap/zsh/slack-desc19
-rw-r--r--source/ap/zsh/zsh-4.3.10-add_new_pkg_completion.diff26
-rwxr-xr-xsource/ap/zsh/zsh.SlackBuild116
491 files changed, 99205 insertions, 0 deletions
diff --git a/source/ap/a2ps/a2ps.SlackBuild b/source/ap/a2ps/a2ps.SlackBuild
new file mode 100755
index 000000000..b8e5ed18e
--- /dev/null
+++ b/source/ap/a2ps/a2ps.SlackBuild
@@ -0,0 +1,158 @@
+#!/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.
+
+
+PKGNAM=a2ps
+PKGNAM2=psutils
+VERSION=${VERSION:-4.14}
+A2PS=${A2PS:-4.14}
+PSUTILS=${PSUTILS:-1.17}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-4}
+
+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
+
+# First, build and install psutils:
+cd $TMP
+tar xvf $CWD/$PKGNAM2-${PSUTILS}.tar.gz || exit 1
+cd $PKGNAM2
+
+# 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/psutils.diff.gz | patch -p1 --verbose -E --backup --suffix=.orig || exit 1
+zcat $CWD/psutils.destdir.diff.gz | patch -p1 --verbose -E --backup --suffix=.orig || exit 1
+
+# Build and install:
+make -f Makefile.unix || exit 1
+make -f Makefile.unix install DESTDIR=$PKG || exit 1
+
+# Add a documentation directory for psutils:
+mkdir -p $PKG/usr/doc/$PKGNAM2-$PSUTILS
+cp -a \
+ LICENSE README \
+ $PKG/usr/doc/$PKGNAM2-$PSUTILS
+
+# Build, install and delete temporary psutils package for a2ps
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM2-${PSUTILS}-$ARCH-$BUILD.txz || exit 1
+echo "Installing temporary $PKGNAM2 package (this will be removed when the SlackBuild finishes)"
+/sbin/installpkg $TMP/$PKGNAM2-${PSUTILS}-$ARCH-$BUILD.txz || exit 1
+rm $TMP/$PKGNAM2-${PSUTILS}-$ARCH-$BUILD.txz || exit 1
+
+# Then, build a2ps:
+cd $TMP
+tar xvf $CWD/$PKGNAM-$VERSION.tar.bz2 || exit 1
+cd $PKGNAM-$A2PS
+
+zcat $CWD/a2ps.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/a2ps.a2ps_cfg.in.diff.gz | patch -p1 --verbose --backup --suffix=.orig || 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 needs lispdir in case emacs is not installed at this moment:
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+lispdir="/usr/share/emacs/site-lisp" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --sysconfdir=/etc \
+ --with-medium=letter \
+ $ARCH-slackware-linux
+
+# Build and install:
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Remove temporary psutils package:
+echo "Removing temporary psutils package"
+/sbin/removepkg $PKGNAM2-${PSUTILS}-$ARCH-$BUILD || 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/a2ps-$VERSION
+cp -a ABOUT-NLS ANNOUNCE AUTHORS COPYING ChangeLog \
+ FAQ INSTALL NEWS README THANKS TODO \
+ $PKG/usr/doc/a2ps-$VERSION
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# 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
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/a2ps/a2ps.a2ps_cfg.in.diff b/source/ap/a2ps/a2ps.a2ps_cfg.in.diff
new file mode 100644
index 000000000..38b9550a0
--- /dev/null
+++ b/source/ap/a2ps/a2ps.a2ps_cfg.in.diff
@@ -0,0 +1,11 @@
+--- ./etc/a2ps_cfg.in.orig 2007-12-28 19:38:58.000000000 -0600
++++ ./etc/a2ps_cfg.in 2009-03-30 20:11:06.000000000 -0500
+@@ -68,7 +68,7 @@
+ # 2) Path to the a2ps resource #
+ #################################################################
+ # Default path where a2ps dropped its library files.
+-LibraryPath: @libpath@
++LibraryPath: @libpath@:/usr/share/fonts/Type1
+
+ # It may be useful to extend it so that a2ps can see some
+ # TeX or X11 resources: it likes AFM files and PF[AB] files.
diff --git a/source/ap/a2ps/a2ps.diff b/source/ap/a2ps/a2ps.diff
new file mode 100644
index 000000000..b3140ad37
--- /dev/null
+++ b/source/ap/a2ps/a2ps.diff
@@ -0,0 +1,12 @@
+--- ./configure.orig Thu Jan 18 21:14:51 2001
++++ ./configure Thu Jan 18 21:15:16 2001
+@@ -8449,7 +8449,8 @@
+ # Find out if ghostscript is installed
+ ac_psfont_path=
+ for ac_dir in /usr/local/ghostscript/fonts \
+- /usr/local/share/ghostscript/fonts;
++ /usr/local/share/ghostscript/fonts \
++ /usr/share/ghostscript/fonts ;
+ do
+ if test "cd $ac_dir 2>/dev/null && echo *.afm"; then
+ ac_psfont_path="$ac_psfont_path:$ac_dir";
diff --git a/source/ap/a2ps/psutils.destdir.diff b/source/ap/a2ps/psutils.destdir.diff
new file mode 100644
index 000000000..f547b791e
--- /dev/null
+++ b/source/ap/a2ps/psutils.destdir.diff
@@ -0,0 +1,56 @@
+--- psutils/Makefile.unix.old 1997-11-03 23:52:00.000000000 +0000
++++ psutils/Makefile.unix 2008-09-10 08:31:00.000000000 +0000
+@@ -25,9 +25,9 @@
+
+ OS = UNIX
+
+-BINDIR = /usr/bin
++BINDIR = ${DESTDIR}/usr/bin
+ SCRIPTDIR = $(BINDIR)
+-INCLUDEDIR = /usr/share/psutils
++INCLUDEDIR = ${DESTDIR}/usr/share/psutils
+ PERL = /usr/bin/perl
+
+ BINMODE = 0755
+@@ -36,7 +36,7 @@
+ INSTALL = install -c -m $(BINMODE)
+ INSTALLMAN = install -c -m $(MANMODE)
+ MANEXT = 1
+-MANDIR = /usr/man/man$(MANEXT)
++MANDIR = ${DESTDIR}/usr/man/man$(MANEXT)
+
+ CC = gcc
+ CFLAGS = -DPAPER=\"$(PAPER)\" -DUNIX -O -Wall
+@@ -219,28 +219,28 @@
+ install: install.bin install.script install.man install.include
+
+ install.bin: $(BIN)
+- -mkdir $(BINDIR)
++ -mkdir -p $(BINDIR)
+ @for i in $(BIN); do \
+ echo Installing $$i; \
+ $(INSTALL) $$i $(BINDIR); \
+ done
+
+ install.script: $(PERLSCRIPTS) $(SHELLSCRIPTS)
+- -mkdir $(SCRIPTDIR)
++ -mkdir -p $(SCRIPTDIR)
+ @for i in $(PERLSCRIPTS) $(SHELLSCRIPTS); do \
+ echo Installing $$i; \
+ $(INSTALL) $$i $(SCRIPTDIR); \
+ done
+
+ install.include: $(INCLUDES)
+- -mkdir $(INCLUDEDIR)
++ -mkdir -p $(INCLUDEDIR)
+ @for i in $(INCLUDES); do \
+ echo Installing $$i; \
+ $(INSTALLMAN) $$i $(INCLUDEDIR); \
+ done
+
+ install.man: $(MANPAGES)
+- -mkdir $(MANDIR)
++ -mkdir -p $(MANDIR)
+ @for i in $(MANPAGES); do \
+ echo Installing manual page for $$i; \
+ $(INSTALLMAN) $$i $(MANDIR)/$$i; \
diff --git a/source/ap/a2ps/psutils.diff b/source/ap/a2ps/psutils.diff
new file mode 100644
index 000000000..4af32bd7f
--- /dev/null
+++ b/source/ap/a2ps/psutils.diff
@@ -0,0 +1,33 @@
+diff -u -r --new-file psutils.orig/Makefile.unix psutils/Makefile.unix
+--- psutils.orig/Makefile.unix Tue Mar 11 14:52:59 1997
++++ psutils/Makefile.unix Thu Jan 18 20:53:36 2001
+@@ -19,16 +19,16 @@
+ # psnup puts multiple logical pages on one physical page
+ # psresize scales and moves pages to fit on different paper sizes
+
+-PAPER=a4
++PAPER=letter
+
+ # Makefile for PSUtils under Unix
+
+ OS = UNIX
+
+-BINDIR = /usr/local/bin
++BINDIR = /usr/bin
+ SCRIPTDIR = $(BINDIR)
+-INCLUDEDIR = /usr/local/share/psutils
+-PERL = /usr/local/bin/perl
++INCLUDEDIR = /usr/share/psutils
++PERL = /usr/bin/perl
+
+ BINMODE = 0755
+ MANMODE = 0644
+@@ -36,7 +36,7 @@
+ INSTALL = install -c -m $(BINMODE)
+ INSTALLMAN = install -c -m $(MANMODE)
+ MANEXT = 1
+-MANDIR = /usr/local/share/man/man$(MANEXT)
++MANDIR = /usr/man/man$(MANEXT)
+
+ CC = gcc
+ CFLAGS = -DPAPER=\"$(PAPER)\" -DUNIX -O -Wall
diff --git a/source/ap/a2ps/slack-desc b/source/ap/a2ps/slack-desc
new file mode 100644
index 000000000..6cdc18957
--- /dev/null
+++ b/source/ap/a2ps/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------------------------------------------------------|
+a2ps: a2ps (any to PostScript filter)
+a2ps:
+a2ps: GNU a2ps is an Any to PostScript filter. Of course it processes
+a2ps: plain text files, but also pretty prints quite a few popular
+a2ps: programming languages. Also contained in this package is psutils, a
+a2ps: collection of programs for manipulating PostScript files.
+a2ps:
+a2ps: a2ps is used by Apsfilter, so be sure to install this package if you
+a2ps: plan to do any printing.
+a2ps:
+a2ps:
diff --git a/source/ap/acct/acct-6.4pre1-6.diff b/source/ap/acct/acct-6.4pre1-6.diff
new file mode 100644
index 000000000..8db3d7be7
--- /dev/null
+++ b/source/ap/acct/acct-6.4pre1-6.diff
@@ -0,0 +1,2636 @@
+--- acct-6.4~pre1.orig/debian/rules
++++ acct-6.4~pre1/debian/rules
+@@ -0,0 +1,90 @@
++#!/usr/bin/make -f
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++include /usr/share/dpatch/dpatch.make
++
++# These are used for cross-compiling and for saving the configure script
++# from having to guess our platform (since we know it already)
++DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
++DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
++
++CFLAGS = -Wall -g
++
++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
++ CFLAGS += -O0
++else
++ CFLAGS += -O2
++endif
++
++config.status: configure patch
++ dh_testdir
++
++ # Configuring package
++ CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
++
++build: build-stamp
++build-stamp: config.status
++ dh_testdir
++
++ # Building package
++ $(MAKE)
++ texi2html -verbose -monolithic accounting.texi
++
++ touch build-stamp
++
++clean: unpatch
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp
++
++ # Cleaning package
++ [ ! -f Makefile ] || $(MAKE) distclean
++ rm -f accounting.html
++ifneq "$(wildcard /usr/share/misc/config.sub)" ""
++ cp -f /usr/share/misc/config.sub config.sub
++endif
++ifneq "$(wildcard /usr/share/misc/config.guess)" ""
++ cp -f /usr/share/misc/config.guess config.guess
++endif
++
++ dh_clean
++
++install: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++
++ # Installing package
++ $(MAKE) install DESTDIR=$(CURDIR)/debian/acct
++
++ # Removing last, it's in the sysvinit package instead.
++ rm -f debian/acct/usr/bin/last
++ rm -f debian/acct/usr/share/man/man1/last.1
++
++binary-indep: build install
++
++binary-arch: build install
++ dh_testdir
++ dh_testroot
++ dh_installchangelogs ChangeLog
++ dh_installdocs
++ dh_install
++ dh_installinit
++ dh_installcron
++ dh_installinfo
++ dh_installman
++ dh_link
++ dh_strip
++ dh_compress
++ dh_fixperms
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install
+--- acct-6.4~pre1.orig/debian/manpages
++++ acct-6.4~pre1/debian/manpages
+@@ -0,0 +1 @@
++debian/manpage/*
+--- acct-6.4~pre1.orig/debian/watch
++++ acct-6.4~pre1/debian/watch
+@@ -0,0 +1,2 @@
++version=3
++http://ftp.gnu.org/gnu/acct/acct-(.*)\.tar\.gz
+--- acct-6.4~pre1.orig/debian/postrm
++++ acct-6.4~pre1/debian/postrm
+@@ -0,0 +1,21 @@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++ purge)
++ rm -rv /var/log/account
++ ;;
++
++ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
++
++ ;;
++
++ *)
++ echo "postrm called with unknown argument \`$1'" >&2
++ ;;
++esac
++
++#DEBHELPER#
++
++exit 0
+--- acct-6.4~pre1.orig/debian/default
++++ acct-6.4~pre1/debian/default
+@@ -0,0 +1,9 @@
++# Defaults for acct
++
++# If you want to keep acct installed, but not started automatically, set this
++# variable to 0. Because /etc/cron.daily/acct calls the initscript daily, it is
++# not sufficient to stop acct once after booting if your machine remains up.
++ACCT_ENABLE="1"
++
++# Amount of days that the logs are kept.
++ACCT_LOGGING="30"
+--- acct-6.4~pre1.orig/debian/postinst
++++ acct-6.4~pre1/debian/postinst
+@@ -0,0 +1,24 @@
++#!/bin/sh
++
++set -e
++
++case "$1" in
++ configure)
++ mkdir -p /var/log/account
++ touch /var/log/account/pacct
++ chmod 0640 /var/log/account/pacct*
++ chown root:adm /var/log/account/pacct*
++ ;;
++
++ abort-upgrade|abort-remove|abort-deconfigure)
++
++ ;;
++
++ *)
++ echo "postinst called with unknown argument \`$1'" >&2
++ ;;
++esac
++
++#DEBHELPER#
++
++exit 0
+--- acct-6.4~pre1.orig/debian/cron.monthly
++++ acct-6.4~pre1/debian/cron.monthly
+@@ -0,0 +1,45 @@
++#!/bin/sh
++
++LOGROTATE="/etc/cron.daily/logrotate"
++
++test -x /usr/sbin/accton || exit 0
++
++echo "Login accounting for the month ended `date`:" > /var/log/wtmp.report
++echo >> /var/log/wtmp.report
++
++# The logrotate script happens to run before this one, effectively swallowing
++# all information out of wtmp before we can use it. Hence, we need to use the
++# previous file. Bad hack. Too bad we never heard from the logrotate maintainer
++# about this ...
++
++if [ -f "${LOGROTATE}" ] && [ -x /usr/sbin/logrotate ]
++then
++ # make sure wtmp.1 exists
++ if [ -f /var/log/wtmp.1 ]
++ then
++ LOGFILE="/var/log/wtmp.1"
++ fi
++ if [ -f /var/log/wtmp.1.gz ]
++ then
++ LOGFILE2="`tempfile`"
++ fi
++ if [ -n "${LOGFILE}" ] && [ -n "${LOGFILE2}" ]
++ then
++ ac -f "${LOGFILE2}" -f "${LOGFILE}" -p | sort -nr -k2 >> /var/log/wtmp.report
++ echo >> /var/log/wtmp.report
++ last -f "${LOGFILE2}" >> /var/log/wtmp.report
++ elif [ -n "${LOGFILE}" ] && [ -z "${LOGFILE2}" ]
++ then
++ ac -f "${LOGFILE}" -p | sort -nr -k2 >> /var/log/wtmp.report
++ echo >> /var/log/wtmp.report
++ last -f "${LOGFILE}" >> /var/log/wtmp.report
++ fi
++ rm -f "${LOGFILE2}"
++else
++ ac -p | sort -nr -k2 >> /var/log/wtmp.report
++ echo >> /var/log/wtmp.report
++ last >> /var/log/wtmp.report
++fi
++
++chown root:adm /var/log/wtmp.report
++chmod 640 /var/log/wtmp.report
+--- acct-6.4~pre1.orig/debian/doc-base
++++ acct-6.4~pre1/debian/doc-base
+@@ -0,0 +1,15 @@
++Document: acct
++Title: The GNU Accounting utilities
++Author: Noel Cragg
++Abstract: The GNU Accounting utilities for process and login accounting
++ GNU Accounting Utilities is a set of utilities which reports and summarizes
++ data about user connect times and process execution statistics.
++ .
++ "Login accounting" provides summaries of system resource usage based on connect
++ time, and "process accounting" provides summaries based on the commands
++ executed on the system.
++Section: Apps/System
++
++Format: HTML
++Index: /usr/share/doc/acct/accounting.html
++Files: /usr/share/doc/acct/accounting.html
+--- acct-6.4~pre1.orig/debian/copyright
++++ acct-6.4~pre1/debian/copyright
+@@ -0,0 +1,34 @@
++This package was debianized by Daniel Baumann <daniel@debian.org> on
++Sat, 18 Mar 2006 18:38:00 +0100.
++
++It was downloaded from:
++
++ <http://ftp.gnu.org/gnu/acct/>
++
++Upstream Author:
++
++ Tim Schmielau <tim@physik3.uni-rostock.de>
++
++License:
++
++ Copyright (C) 1993-2006 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 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
++
++On Debian systems, the complete text of the GNU General Public License
++can be found in /usr/share/common-licenses/GPL file.
++
++The Debian packaging is (C) 2006-2007, Daniel Baumann <daniel@debian.org> and
++is licensed under the GPL, see `/usr/share/common-licenses/GPL-2'.
+--- acct-6.4~pre1.orig/debian/init.d
++++ acct-6.4~pre1/debian/init.d
+@@ -0,0 +1,97 @@
++#!/bin/sh
++
++### BEGIN INIT INFO
++# Provides: acct
++# Required-Start: $remote_fs $syslog
++# Required-Stop: $remote_fs $syslog
++# Default-Start: 2 3 4 5
++# Default-Stop: 0 1 6
++# Short-Description: process and login accounting
++# Description: GNU Accounting Utilities is a set of utilities which
++# reports and summarizes data about user connect times and
++# process execution statistics.
++### END INIT INFO
++
++PATH=/sbin:/bin:/usr/sbin:/usr/bin
++DAEMON=/usr/sbin/accton
++NAME=acct
++DESC="process accounting"
++
++test -x $DAEMON || exit 0
++
++# Include acct defaults if available
++if [ -f /etc/default/acct ]
++then
++ . /etc/default/acct
++else
++ ACCT_ENABLE="1"
++ ACCT_LOGGING="30"
++fi
++
++set -e
++
++case "$1" in
++ start)
++ if [ "${ACCT_ENABLE}" = "1" ]
++ then
++
++ # Have to turn this on to be able to test the return code
++ set +e
++
++ echo -n "Starting $DESC: "
++ /usr/sbin/accton /var/log/account/pacct 2>/dev/null
++
++ rv=$?
++ if [ $rv -eq 0 ]
++ then
++ echo "$NAME."
++ elif [ $rv -eq 38 ]
++ then
++ echo "failed."
++ echo "Process accounting not available on this system."
++ elif [ $rv -eq 16 ]
++ then
++ echo "failed."
++ echo "Process accounting already running on this system."
++ else
++ logger -p daemon.err "Unexpected error code $rv received in /etc/init.d/acct"
++ fi
++
++ fi
++
++ set -e
++ ;;
++
++ stop)
++ echo -n "Stopping $DESC: "
++
++ # Have to turn this on to be able to test the return code
++ set +e
++
++ /usr/sbin/accton off 2>/dev/null
++
++ if [ $? -eq 0 ]
++ then
++ echo "$NAME."
++ else
++ echo "failed."
++ echo "Process accounting not available on this system."
++ fi
++
++ set -e
++ ;;
++
++ restart|force-reload)
++ $0 stop
++ sleep 1
++ $0 start
++ ;;
++
++ *)
++ N=/etc/init.d/$NAME
++ echo "Usage: $N {start|stop|restart|force-reload}" >&2
++ exit 1
++ ;;
++esac
++
++exit 0
+--- acct-6.4~pre1.orig/debian/changelog
++++ acct-6.4~pre1/debian/changelog
+@@ -0,0 +1,602 @@
++acct (6.4~pre1-6) unstable; urgency=medium
++
++ * Adjusted lsb header of init script, thanks Petter Reinholdtsen
++ <pere@hungry.com> (Closes: #466279).
++
++ -- Daniel Baumann <daniel@debian.org> Sat, 8 Mar 2008 09:04:00 +0100
++
++acct (6.4~pre1-5) unstable; urgency=low
++
++ * Bumped to new policy.
++ * Using new homepage field in control.
++ * Don't hide make errors in clean target.
++ * Removing historic changes entries in the first lines of changelog
++ entries, they are present in the actual entries anyway but are
++ causing lintian noise.
++
++ -- Daniel Baumann <daniel@debian.org> Thu, 27 Dec 2007 08:45:00 +0100
++
++acct (6.4~pre1-4) unstable; urgency=low
++
++ * Minor cleanups.
++ * Bumped to debhelper 5.
++ * Added lsb header to init.d.
++ * Added the remaining things to cron.monthly, other things were solved
++ different already (Closes: #378359).
++
++ -- Daniel Baumann <daniel@debian.org> Sun, 29 Apr 2007 12:27:00 +0200
++
++acct (6.4~pre1-3) unstable; urgency=medium
++
++ * Adapted the patch from Dean Gaudet <dean-debian@arctic.org> to add
++ lastcomm -f - stdin and --forwards support to current acct
++ (Closes: #262583).
++ * Fixed cron.monthly to not process the non-rotated logfile twice if the
++ rotated one isn't existing (Closes: #51796).
++
++ -- Daniel Baumann <daniel@debian.org> Sun, 5 Nov 2006 13:55:00 +0100
++
++acct (6.4~pre1-2) unstable; urgency=medium
++
++ * Forgot to remove unused var in init.d (Closes: #397134).
++
++ -- Daniel Baumann <daniel@debian.org> Sun, 5 Nov 2006 13:55:00 +0100
++
++acct (6.4~pre1-1) unstable; urgency=medium
++
++ * New email address.
++ * Hardcoding location of the log files, using environment variables does not
++ work for all binaries (Closes: #377835, #380744, #385626, #392045, #396444).
++ * Adjusted init.d script to log to syslog directly as suggested by
++ Gian Piero Carrubba <gpcarrubba@libero.it> (Closes: #208939).
++ * Updated sort call in cron.monthly to new syntax as found out by
++ Gilles Mocellin <gilles.mocellin@free.fr> and others
++ (Closes: #375712, #381492).
++ * Updated ac call in cron.monthly to process both $WTMP and /var/log/wtmp.1
++ (Closes: #324910).
++ * Fixed spelling mistake in default (Closes: #392023).
++ * Fixed spelling mistake and incompleteness in dump-acct.8 (Closes: #392134).
++
++ -- Daniel Baumann <daniel@debian.org> Sat, 4 Nov 2006 10:10:00 +0100
++
++acct (6.3.99+6.4pre1-4) unstable; urgency=low
++
++ * Fixed typo in init.d (Closes: #361109, #361109).
++
++ -- Daniel Baumann <daniel.baumann@panthera-systems.net> Sun, 25 Jun 2006 08:37:00 +0200
++
++acct (6.3.99+6.4pre1-3) unstable; urgency=low
++
++ * Storing logging information for a month instead of a week (Closes: #271466).
++ * Rewritten init.d and fixed accton call in init.d (Closes: #361109, #361109).
++ * Using /etc/default/acct now to store settings
++ (Closes: #219194, #353034, #361111).
++ * Fixed manpage error (Closes: #360098, #364589)
++
++ -- Daniel Baumann <daniel.baumann@panthera-systems.net> Fri, 23 Jun 2006 06:53:00 +0200
++
++acct (6.3.99+6.4pre1-2) unstable; urgency=low
++
++ * Removed useless debconf message (Closes: #358698).
++ * Removed last documentation (Closes: #360302).
++
++ -- Daniel Baumann <daniel.baumann@panthera-systems.net> Sun, 28 May 2006 05:36:00 +0200
++
++acct (6.3.99+6.4pre1-1) unstable; urgency=low
++
++ * New maintainer (Closes: #357362).
++ * New upstream release:
++ - supporting v3 file format (Closes: #289648, #291154, #327134)
++ * Redone debian directory:
++ - added watch file.
++ - corrected copyright file (Closes: #290052).
++ - fixed debconf depends (Closes: #331731).
++ - removed references to non-existing pacct in dump-acct.8 (Closes: #293837).
++ - removed dpatches: one was merged upstream, manpages are broken-out, and
++ /usr/bin/last ist removed after compilation (less intrusive).
++ - added Czech debconf translation (Closes: #282320, #287291).
++ - added Finnish debconf translation (Closes: #303851).
++ - added Vietnamese debconf translation (Closes: #307597).
++ - updated Dansk debconf translation (Closes: #241243).
++ - updated German debconf translation (Closes: #314136).
++ * Acknowledge NMU:
++ - fixed gzipped logfile handling in cron.monthly
++ (Closes: #187538, #208220, #212961).
++ - adjusted logfile path for logger call in init.d (Closes: #208939).
++
++ -- Daniel Baumann <daniel.baumann@panthera-systems.net> Sat, 18 Mar 2006 18:38:00 +0100
++
++acct (6.3.5-39) unstable; urgency=low
++
++ * Acknowledging NMU's. Thanks. (closes: #187539, #198581, #198581)
++ * Added Co-Maintainer (me) to Uploaders field.
++ * Added/updated polish, greek, portuguese, japanese translations.
++ (closes: #208954, #229531, #216200, #222063, #229499, #229523)
++ * Bumped Standars-Version to 3.6.1.
++
++ -- Andrés Roldán <aroldan@debian.org> Sun, 1 Feb 2004 23:02:22 +0000
++
++acct (6.3.5-38.2) unstable; urgency=low
++
++ * Fix gzip support in cron.monthly to not delete/recreate the wtmp file
++ (gunzip: /var/log/wtmp.1 already exists; not overwritten)
++
++ -- Matt Zimmerman <mdz@debian.org> Sun, 1 Feb 2004 12:00:00 -0800
++
++acct (6.3.5-38.1) unstable; urgency=low
++
++ * NMU with maintainer consent
++ * Handled gzipped wtmp file. Closes: #187539. Thanks Tero Tilus
++ * Switch to po-debconf templates. Closes: #198581
++ * Added danish templates translation (converted to gettext). Closes: #174728
++
++ -- Christian Perrier <bubulle@debian.org> Mon, 28 Jul 2003 16:32:05 +0200
++
++acct (6.3.5-38) unstable; urgency=low
++
++ * New maintainer (closes: #177233).
++ * Package builded from the scratch.
++ * Fixed danish debconf template.
++ * Fixed broken output on ia64 and alpha (closes: #169099).
++
++ -- Luis Bustamante <luferbu@fluidsignal.com> Sun, 19 Jan 2003 01:26:12 -0500
++
++acct (6.3.5-37) unstable; urgency=low
++
++ * debian/dump-acct.8: Clarified meaning of time field (Closes: #177020)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Fri, 17 Jan 2003 19:22:55 -0600
++
++acct (6.3.5-36) unstable; urgency=low
++
++ * debian/template: Added new debconf text in Danish (Closes: #174727)
++ * debian/control: Upped debconf versioned Depends to ">= 1.2.9" (lintian)
++ * debian/control: Small editing in Description (lintian)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 1 Jan 2003 08:56:23 -0600
++
++acct (6.3.5-35) unstable; urgency=low
++
++ * etc/init.d/acct: Applied patch by ralf.hildebrandt@charite.de to rely
++ only on 'uname -r' as 'uname -a' fails on hppa (Closes: 165535)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 20 Oct 2002 19:17:43 -0500
++
++acct (6.3.5-34) unstable; urgency=low
++
++ * debian/control: s|Debian Linux|Debian GNU/Linux| (Closes: #150886)
++ * debian/rules: Move #DEBHELPER# to end so that /etc/init.d/acct is
++ called after modes/owner chg on /var/account/pacct (Closes: #153905)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Mon, 22 Jul 2002 19:44:05 -0500
++
++acct (6.3.5-33) unstable; urgency=low
++
++ * debian/cron.monthly: Test for /var/log/wtmp.1 (Closes: #146918)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sat, 18 May 2002 12:20:57 -0500
++
++acct (6.3.5-32) unstable; urgency=low
++
++ * debian/templates: Updated Russian debconf template (Closes: #136918)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sat, 18 May 2002 12:20:10 -0500
++
++acct (6.3.5-31) unstable; urgency=low
++
++ * debian/templates: Updated French debconf template (Closes: #134624)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 26 Feb 2002 20:49:57 -0600
++
++acct (6.3.5-30) unstable; urgency=low
++
++ * debian/templates: New debconf text in russian (Closes: #112535)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Fri, 14 Dec 2001 18:55:33 -0600
++
++acct (6.3.5-29) unstable; urgency=low
++
++ * debian/templates: Changed Type from text to note (Closes: #106327)
++ * debian/templates: New debconf text in spanish (Closes: #106935)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 31 Jul 2001 22:17:49 -0500
++
++acct (6.3.5-28) unstable; urgency=low
++
++ * sa.c: Applied patch by LaMont Jones which enables compilation by
++ gcc-3.0, the default compiler on the parisc architecure (Closes: #103147)
++ * debian/prerm: Don't call "/etc/init.d/acct stop" explicitly as
++ debhelper's dh_installinit also adds a call.
++
++ -- Dirk Eddelbuettel <edd@debian.org> Mon, 2 Jul 2001 21:40:05 -0500
++
++acct (6.3.5-27) unstable; urgency=low
++
++ * debian/{cron.daily,postinst}: change pacct to mode 0640,root.adm.
++ Thanks to Manuel López Moreno <mlm@luname.net> (Closes: #86045)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 1 May 2001 22:21:27 -0500
++
++acct (6.3.5-26) unstable; urgency=low
++
++ * debian/templates: Added text for pt translation (Closes: #89439)
++ * debian/{pre,post}{inst,rm}: lintian cleanups
++
++ -- Dirk Eddelbuettel <edd@debian.org> Thu, 19 Apr 2001 21:54:36 -0500
++
++acct (6.3.5-25) unstable; urgency=low
++
++ * debian/control: Added Standards-Version: back in (Closes: #86925)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 21 Feb 2001 21:01:50 -0600
++
++acct (6.3.5-24) unstable; urgency=low
++
++ * debian/control: Added Build-Depends on texinfo (Closes: #85073)
++ * For good measure, added a few more suggested by dpkg-genbuilddeps
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 7 Feb 2001 22:29:02 -0600
++
++acct (6.3.5-23) unstable; urgency=low
++
++ * debian/templates: Added non-English debconf text text for sv, nl, es
++ and a new one for fr. (Closes: #83478, #83583, #84017, #84411)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 4 Feb 2001 19:56:09 -0600
++
++acct (6.3.5-22) unstable; urgency=low
++
++ * debian/control: Build-Depends on texi2html and no longer on tetex-bin
++
++ -- Dirk Eddelbuettel <edd@debian.org> Thu, 4 Jan 2001 20:42:54 -0600
++
++acct (6.3.5-21) unstable; urgency=low
++
++ * debian/cron.monthly: Special case for logrotate (Closes: #68043)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 6 Aug 2000 16:15:23 -0400
++
++acct (6.3.5-20) unstable; urgency=low
++
++ * debian/control: Add texi2html to Build-Depends (Closes: #67531)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Fri, 21 Jul 2000 17:22:55 -0400
++
++acct (6.3.5-19) unstable; urgency=low
++
++ * debian/rules: Install dump-acct.8 and dump-utmp.8 which were
++ contributed by Ognyan Kulev <ogi@fmi.uni-sofia.bg>
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 19 Jul 2000 19:08:13 -0400
++
++acct (6.3.5-18) unstable; urgency=low
++
++ * debian/templates: Apply Italian debconf text (Closes: #64160)
++ * debian/templates: Also added German and French text
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sat, 27 May 2000 16:28:13 -0400
++
++acct (6.3.5-17) unstable; urgency=low
++
++ * debian/control: Added Build-Depends: information (Closes: #51840)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 15 Dec 1999 18:42:48 -0500
++
++acct (6.3.5-16) unstable; urgency=low
++
++ * postinst: Added db_stop upon Joey Hess' advice (Closes: #50043)
++ * control: Upgraded to Policy 3.1.0
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 14 Nov 1999 19:39:17 -0500
++
++acct (6.3.5-15) unstable; urgency=low
++
++ * Ah, the joys of new technology. Helping out with the whirlwind upgrade
++ to the new debconf, we were bitten by a simple mistake in the config
++ file. Thanks again to Joey Hess for a quick fix (Closes: #48861)
++ * control: Require debconf >= 0.2
++
++ -- Dirk Eddelbuettel <edd@debian.org> Mon, 1 Nov 1999 20:45:05 -0500
++
++acct (6.3.5-14) unstable; urgency=low
++
++ * preinst: Test for install-docs (fixes Lintian error)
++ * postinst, config: Small debconf changes, kindly supplied by Joey Hess
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 31 Oct 1999 10:14:32 -0500
++
++acct (6.3.5-13) unstable; urgency=low
++
++ * Integrated Joey Hess' changes for debconf.
++
++ * debian/rules: Adapted to use /usr/share/ following the recommendation
++ on FHS transition from the Technical Committee
++ * debian/control: Upgraded to Debian Policy 3.0.1
++
++ * debian/control: Removed obsolete note about required kernel patch
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sat, 2 Oct 1999 11:35:22 -0400
++
++acct (6.3.5-12) unstable; urgency=low
++
++ * Upgraded to new Debian Perl Policy
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 4 Jul 1999 14:19:41 -0400
++
++acct (6.3.5-11) unstable; urgency=low
++
++ * Recompiled on a 2.2.* system
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 30 May 1999 11:59:22 -0400
++
++acct (6.3.5-10) unstable; urgency=low
++
++ * debian/rules: Define -DHAVE_LINUX_ACCT_H=1 in order to use acct.h from
++ the 2.2.9 kernel and not sys.h from glibc-2.0
++ * debian/acctdump: No longer installed as it works neither with
++ linux/acct.h, nor with sys/acct.h (and there still is dump-acct)
++ * compare_kernel_version:
++ -- changed to use POSIX::uname, not `uname`
++ -- added run-time flag -d for debug mode
++ -- corrected return value logic (fixes #37421)
++ * compare_kernel_version.8: added a simple manual page
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 16 May 1999 21:52:52 -0400
++
++acct (6.3.5-9) unstable; urgency=low
++
++ * Recompiled under 2.2.* kernel (#18314, #24085)
++
++ * Added a simple script /usr/sbin/compare_kernel_version to test the
++ running kernel against a command-line argument specifying a minimum
++ kernel version
++ * postinst: test for kernel >= 2.2 and, if needed, display a message
++ suggesting the slink version of the package
++ * /etc/init.d/acct: test for kernel >= 2.2 and exit early with short
++ mesage if installed kernel does not match (ie < 2.2)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 4 May 1999 20:44:34 -0400
++
++acct (6.3.5-8) unstable; urgency=low
++
++ * debian/prerm: Call /etc/init.d/acct to stop accounting as this more
++ robust against missing Accounting support in the kernel. (fixes #32711)
++ * debian/control: Added note that Accounting support has to be compiled
++ into the kernel for this to work.
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 2 Feb 1999 18:30:56 -0500
++
++acct (6.3.5-7) unstable; urgency=low
++
++ * debian/control: Deleted stale text errenously left over (fixes #32616)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Fri, 29 Jan 1999 18:38:28 -0500
++
++acct (6.3.5-6) unstable; urgency=low
++
++ * debian/{rules,postinst,postrm}: Removed support for html documentation
++ through menu as it is now provided by doc-base
++
++ -- Dirk Eddelbuettel <edd@debian.org> Thu, 14 Jan 1999 20:50:25 -0500
++
++acct (6.3.5-5) unstable; urgency=low
++
++ * Added support for doc-base
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 5 Jan 1999 21:43:16 -0500
++
++acct (6.3.5-4) frozen unstable; urgency=low
++
++ * [cron.daily, cron.monthly] Added tests for the existence of
++ /usr/sbin/accton. This helps for cases where acct is removed, but not
++ purged, and these conffiles are still around. (fixes #29340)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Thu, 12 Nov 1998 21:32:37 -0500
++
++acct (6.3.5-3) unstable; urgency=low
++
++ * Corrected typos in console messages in /etc/init.d/acct (fixes #23480)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sat, 13 Jun 1998 11:57:14 -0400
++
++acct (6.3.5-2) unstable; urgency=low
++
++ * Changed /etc/init.d/acct by adding two 'set +e; ... set -e' blocks
++ so that missing accounting support is properly recognised in all
++ branches of the script (fixes #23282)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 9 Jun 1998 21:36:16 -0400
++
++acct (6.3.5-1) unstable; urgency=low
++
++ * Upgraded to new upstream version 6.3.5 (fixes #3249)
++ * This version does not work under 2.1.* kernels which the upstream
++ author is trying to rectify.
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 27 May 1998 18:43:08 -0400
++
++acct (6.3.2-4) frozen unstable; urgency=low
++
++ * Changed debian/rules to not install last.1 as we don't install the
++ last(1) command from acct (but rather sysvinit's) (fixes #22215)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Thu, 7 May 1998 20:19:05 -0400
++
++acct (6.3.2-3) unstable; urgency=low
++
++ * Removed the note regarding accounting patch for kernels younger than
++ 1.3.72 from debian/copyright and debian/control. Thanks to Richard
++ Braakman <dark@xs4all.nl> for pointing this out (fixes #21334)
++ * Added the 'acctdump' program which was provided by Ian Jackson
++ <ian@davenant.greenend.org.uk> (fixes #20839)
++ * Upgraded debian/rules to debhelper
++ * Upgraded to Debian Policy 2.4.1
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sat, 18 Apr 1998 16:12:41 -0400
++
++acct (6.3.2-2) frozen unstable; urgency=low
++
++ * Really changed /etc/init.d/acct so that logger reports to
++ /var/log/daemon.log and not to /var/adm/daemon.log (fixes #18763)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 24 Mar 1998 19:34:07 -0500
++
++acct (6.3.2-1) unstable; urgency=low
++
++ * Upgraded to new upstream version 6.3.2
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 10 Mar 1998 19:46:34 -0500
++
++acct (6.3-2) unstable; urgency=low
++
++ * Changed /etc/init.d/acct so that logger reports to /var/log/daemon.log
++ and not to /var/adm/daemon.log (fixes #18763)
++ * Fixed FSF address in copyright (lintian)
++ * Redirect update-rc.d call to /dev/null in postrm (lintian)
++ * Added force-reload and restart targets to /etc/init.d/acct (lintian)
++ * Created links to ../man7/undocumented.7.gz in lieu of manual pages
++ for the two utility programs dump-acct and dump-utmp (lintian)
++ * Upgraded to Debian Policy 2.4.0.0
++
++ -- Dirk Eddelbuettel <edd@debian.org> Mon, 9 Mar 1998 20:24:05 -0500
++
++acct (6.3-1) unstable; urgency=low
++
++ * Upgraded to new upstream version 6.3 (which has been promoted from
++ alpha.gnu.mit.edu to the brave GNU world of prep.ai.mit.edu)
++ * Compiled with GNU libc2 aka libc6
++ * Now ships the unmodified upstream source as acct_6.3.orig.tar.gz
++ * Changed debian/rules to also create accounting.html via texi2html
++ * Added menu entry for html documentation
++
++ -- Dirk Eddelbuettel <edd@debian.org> Tue, 19 Aug 1997 22:11:21 -0400
++
++acct (6.2-5) unstable; urgency=low
++
++ * Added a variable to /etc/init.d/acct so that acct is installed but
++ not started automatically if this variable is unset (fixes bug #11126)
++ * Changed /etc/cron.daily/acct to call acct via /etc/init.d/acct and not
++ directly so that the new variable is tested (fixes bug #11126)
++
++ -- Dirk Eddelbuettel <edd@debian.org> Wed, 9 Jul 1997 22:18:30 -0400
++
++acct (6.2-4) unstable; urgency=low
++
++ * The preinst no longer stops accounting during an upgrade as this is
++ already done by the the postrm of the replaced packaged (fixes bug#7320)
++
++ * No longer installs acct.5 which is provided by the manpages package
++
++ -- Dirk Eddelbuettel <edd@debian.org> Mon, 3 Mar 1997 20:57:37 -0500
++
++acct (6.2-3) unstable; urgency=low
++
++ * Use logger(1) to report unexpected return calls from accton(8) as
++ suggested by Russell John Coker <rjc@snoopy.virtual.net.au>
++
++ * Converted to Debian Standard 2.1.2.2 (fixes #7121)
++ * Changed maintainer email address to <edd@debian.org>
++
++ -- Dirk Eddelbuettel <edd@debian.org> Sun, 9 Feb 1997 22:00:42 -0500
++
++Tue Jul 9 22:33:18 1996 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-6.2-2 release
++
++ * debian.rules: fixed copyright installation (fixes bug#3738)
++
++Mon Jul 8 11:07:01 1996 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-6.2-1 release
++
++ * acct.rc: /etc/init.d/acct tests for accton (fixes bug#3513)
++
++ * debian.rules: compress man pages with gzip -9
++
++ * debian.postrm: "purge" now deletes /var/account directory
++
++ * debian.control: changed description
++
++Sat Apr 20 22:30:46 1996 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-6.2-0 release: updated to new upstream version acct-6.2
++
++Wed Apr 10 19:38:37 1996 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-6.1-0 release
++
++ * converted to new upstream version acct-6.1 (fixes bug#2069)
++
++ * added man pages for the acct commands that were provided by
++ Susan G. Kleinmann <sgk@sgk.tiac.net> and a simple acct.5 man
++ page (fixes bug#1737)
++
++ * ac.c: added a space to printf format (should fix bug#2283)
++
++ * debian.rules: provide only acct, last is now provided by sysvinit
++
++ * debian.control: added Architecture: field
++
++ * acct.daily: exit(0) so that cron doesn't get the errno from accton.c
++
++Sat Dec 2 14:00:19 1995 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-5-13 and last-5-13 release
++
++ * debian.control: ELF release, depends on libc5
++
++Fri Oct 13 09:41:36 1995 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-5-12 and last-5-12 release
++
++ * uid_hash.h (NAME_LEN): fixed bug#1651 reported and patched by
++ Austin Donnelly <and1000@cam.ac.uk>
++
++Wed Oct 11 08:53:29 1995 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-5-11 and last-5-11 release
++
++ * debian.postinst: call update-rc.d (fixes bug #1622)
++
++Mon Oct 2 16:39:00 1995 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * dropped `alpha' from package names, now acct-5-10 and last-5-10
++
++ * accton.c: exit() now returns value of `errno' and /etc/init.d/acct
++ examines that value; this gives better messages
++
++ * accounting.texi: added a missing formatter for @item
++
++ * last.1 man page addded
++
++Wed Sep 27 10:59:55 1995 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * debian.control, debian.README: fixed bug #1486 by adding a note
++ that 'sa' is unavailable due to missing support in the current
++ kernel patch
++
++Thu Sep 21 15:52:14 1995 Dirk Eddelbuettel <edd@miles.econ.queensu.ca>
++
++ * acct-alpha-5-8 and last-alpha-5-8
++
++ * first separate release of 'last' package
++
++ * changed control file for acct (fixes bugs #1415, #1131 and #969)
++
++ * silent when accton fails during installation (fixes bug #1415)
++
++ * new maintainer
++
++
++[edd: Changes made by Ian Murdock follow]
++
++Changes:
++ * added Debian GNU/Linux package maintenance system files
++ * added scripts to rotate process accounting file (daily), to perform
++ monthly login accounting, and to start process accounting at system
++ start time
++ * added __linux__ definitions to files.h (we use /var/account/pacct
++ as ACCT_FILE, /var/account/wtmp as WTMP_FILE, /var/account/savacct
++ as SAVACCT_FILE, and /var/account/usracct as USRACCT_FILE)
++ * changed last to truncate ftp entries by default (as Unix does it)
++ * fixed a typo in accounting.texi
+--- acct-6.4~pre1.orig/debian/patches/04-lastcomm-forwards.dpatch
++++ acct-6.4~pre1/debian/patches/04-lastcomm-forwards.dpatch
+@@ -0,0 +1,126 @@
++#!/bin/sh /usr/share/dpatch/dpatch-run
++## 04-lastcomm-forwards.dpatch by Dean Gaudet <dean@arctic.org>
++##
++## DP: Adds lastcomm -f - stdin and --forwards support (Closes: #262583).
++
++@DPATCH@
++
++diff -Naur acct-6.4-pre1.orig/lastcomm.1 acct-6.4-pre1/lastcomm.1
++--- acct-6.4-pre1.orig/lastcomm.1 2006-01-07 21:55:07.000000000 +0000
+++++ acct-6.4-pre1/lastcomm.1 2006-12-04 11:52:49.000000000 +0000
++@@ -23,6 +23,10 @@
++ ]
++ .br
++ [
+++.B \-\-forwards
+++]
+++.br
+++[
++ .BI \-f " filename"
++ |
++ .BI \-\-file " filename"
++@@ -131,11 +135,25 @@
++ List records for tty
++ .I name.
++ .TP
+++.BI \-\-forwards
+++Read file forwards instead of backwards. This avoids trying to seek on the file
+++and can be used to read from a pipe. This must be specified prior to any
+++.BI \-f
+++arguments.
+++.TP
++ .BI \-f " filename, " \-\-file " filename"
++ Read from the file
++ .I filename
++ instead of
++-.I acct
+++.I acct.
+++A filename of "-" will result in reading from stdin. This must either be the
+++first
+++.BI \-f
+++option, or
+++.BI \-\-forwards
+++must precede all
+++.BI \-f
+++options.
++ .TP
++ .BI \-\-ahz " hz"
++ Use this flag to tell the program what
++diff -Naur acct-6.4-pre1.orig/lastcomm.c acct-6.4-pre1/lastcomm.c
++--- acct-6.4-pre1.orig/lastcomm.c 2006-01-07 21:56:46.000000000 +0000
+++++ acct-6.4-pre1/lastcomm.c 2006-12-04 11:59:16.000000000 +0000
++@@ -96,12 +96,9 @@
++ int c;
++ int other_pacct_file_specified = 0; /* nonzero if the user used the
++ `-f' or `--file' flag */
+++ int backwards = 1; /* default to reading backwards */
++
++ program_name = argv[0];
++-
++- /* Tell the pacct reader that we want to do things backwards! */
++-
++- pacct_init (1);
++
++ while (1)
++ {
++@@ -118,6 +115,7 @@
++ { "tty", required_argument, NULL, 8 },
++ { "command", required_argument, NULL, 9 },
++ { "ahz", required_argument, NULL, 10 },
+++ { "forwards", no_argument, NULL, 11 },
++ #ifdef HAVE_PAGING
++ { "show-paging", no_argument, NULL, 11 },
++ #endif
++@@ -146,6 +144,18 @@
++ break;
++ case 'f':
++ case 4:
+++ if (strcmp(optarg, "-") == 0)
+++ {
+++ if (backwards && other_pacct_file_specified)
+++ {
+++ printf ("%s: -f - must be specified first, or --forwards must precede the first -f\n", program_name);
+++ exit (1);
+++ }
+++ backwards = 0;
+++ optarg = "/proc/self/fd/0";
+++ }
+++ if (other_pacct_file_specified == 0)
+++ pacct_init(backwards);
++ add_pacct_file (optarg);
++ other_pacct_file_specified = 1;
++ break;
++@@ -186,6 +196,14 @@
++ show_paging = 1;
++ break;
++ #endif
+++ case 12:
+++ if (other_pacct_file_specified)
+++ {
+++ printf ("%s: --forwards must come before -f\n", program_name);
+++ exit (1);
+++ }
+++ backwards = 0;
+++ break;
++ case 'h':
++ case 3:
++ /* This should fall through to default! */
++@@ -196,6 +214,9 @@
++ }
++ }
++
+++ if (other_pacct_file_specified == 0)
+++ pacct_init(backwards);
+++
++ /* if we get here, we expect everything else to be a username,
++ terminal name, or command name */
++
++@@ -275,7 +296,7 @@
++ "p"
++ #endif
++ "V] [-f file] [command] ... [user] ... [terminal] ...\n"
++-" [--file <file>] [--strict-match] [--print-controls]\n"
+++" [--forwards] [--file <file>] [--strict-match] [--print-controls]\n"
++ " [--user <name>] [--tty <name>] [--command <name>] [--debug]\n"
++ " "
++ #ifdef HAVE_PAGING
+--- acct-6.4~pre1.orig/debian/patches/03-acct-file.dpatch
++++ acct-6.4~pre1/debian/patches/03-acct-file.dpatch
+@@ -0,0 +1,67 @@
++#!/bin/sh /usr/share/dpatch/dpatch-run
++## 03-acct-file.dpatch by Daniel Baumann <daniel@debian.org>
++##
++## DP: Adjusts location of the log files (Closes: #377835).
++
++@DPATCH@
++
++diff -Naur acct-6.4-pre1.orig/configure acct-6.4-pre1/configure
++--- acct-6.4-pre1.orig/configure 2006-01-07 22:24:37.000000000 +0000
+++++ acct-6.4-pre1/configure 2006-11-04 11:42:39.000000000 +0000
++@@ -6147,7 +6147,7 @@
++
++ #ifndef ACCT_FILE
++ # if defined(__FreeBSD__) || defined(__linux__)
++-# define ACCT_FILE "/var/account/pacct"
+++# define ACCT_FILE "/var/log/account/pacct"
++ # else
++ # if defined(__NetBSD__)
++ # define ACCT_FILE "/var/account/acct"
++@@ -6167,7 +6167,7 @@
++
++ #ifndef SAVACCT_FILE
++ # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
++-# define SAVACCT_FILE "/var/account/savacct"
+++# define SAVACCT_FILE "/var/log/account/savacct"
++ # else
++ # if defined(sun) || defined(AMIX)
++ # define SAVACCT_FILE "/var/adm/savacct"
++@@ -6183,7 +6183,7 @@
++
++ #ifndef USRACCT_FILE
++ # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
++-# define USRACCT_FILE "/var/account/usracct"
+++# define USRACCT_FILE "/var/log/account/usracct"
++ # else
++ # if defined(sun) || defined(AMIX)
++ # define USRACCT_FILE "/var/adm/usracct"
++diff -Naur acct-6.4-pre1.orig/configure.in acct-6.4-pre1/configure.in
++--- acct-6.4-pre1.orig/configure.in 2006-01-07 21:56:46.000000000 +0000
+++++ acct-6.4-pre1/configure.in 2006-11-04 11:43:54.000000000 +0000
++@@ -214,7 +214,7 @@
++
++ #ifndef ACCT_FILE
++ # if defined(__FreeBSD__) || defined(__linux__)
++-# define ACCT_FILE "/var/account/pacct"
+++# define ACCT_FILE "/var/log/account/pacct"
++ # else
++ # if defined(__NetBSD__)
++ # define ACCT_FILE "/var/account/acct"
++@@ -234,7 +234,7 @@
++
++ #ifndef SAVACCT_FILE
++ # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
++-# define SAVACCT_FILE "/var/account/savacct"
+++# define SAVACCT_FILE "/var/log/account/savacct"
++ # else
++ # if defined(sun) || defined(AMIX)
++ # define SAVACCT_FILE "/var/adm/savacct"
++@@ -250,7 +250,7 @@
++
++ #ifndef USRACCT_FILE
++ # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
++-# define USRACCT_FILE "/var/account/usracct"
+++# define USRACCT_FILE "/var/log/account/usracct"
++ # else
++ # if defined(sun) || defined(AMIX)
++ # define USRACCT_FILE "/var/adm/usracct"
+--- acct-6.4~pre1.orig/debian/patches/02-manpage.dpatch
++++ acct-6.4~pre1/debian/patches/02-manpage.dpatch
+@@ -0,0 +1,31 @@
++#!/bin/sh /usr/share/dpatch/dpatch-run
++## 02-manpage.dpatch by Daniel Baumann <daniel@debian.org>
++##
++## DP: Fixes manpage error
++
++@DPATCH@
++
++diff -Naur acct-6.3.99+6.4pre1.orig/accton.8 acct-6.3.99+6.4pre1/accton.8
++--- acct-6.3.99+6.4pre1.orig/accton.8 2003-06-05 16:46:12.000000000 +0000
+++++ acct-6.3.99+6.4pre1/accton.8 2006-06-23 06:06:38.000000000 +0000
++@@ -6,6 +6,10 @@
++ .na
++ .TP
++ .B accton
+++.RI [\| OPTION \|]
+++.RB on \||\| off \||\| filename
+++.TP
+++.B accton
++ [
++ .B \-V
++ |
++@@ -16,9 +20,6 @@
++ |
++ .B \-\-help
++ ]
++-[
++-.I filename
++-]
++ .SH DESCRIPTION
++ .LP
++ .B accton
+--- acct-6.4~pre1.orig/debian/patches/01-last.dpatch
++++ acct-6.4~pre1/debian/patches/01-last.dpatch
+@@ -0,0 +1,441 @@
++#!/bin/sh /usr/share/dpatch/dpatch-run
++## 01-last.dpatch by Daniel Baumann <daniel@debian.org>
++##
++## DP: Removing last, it's in the sysvinit package instead.
++
++@DPATCH@
++
++diff -Naur acct-6.3.99+6.4pre1.orig/accounting.info acct-6.3.99+6.4pre1/accounting.info
++--- acct-6.3.99+6.4pre1.orig/accounting.info 2006-01-07 22:46:25.000000000 +0000
+++++ acct-6.3.99+6.4pre1/accounting.info 2006-05-28 03:46:26.000000000 +0000
++@@ -35,7 +35,6 @@
++
++ * ac:: print statistics about connect time
++ * accton:: turns accounting on or off
++-* last:: list last logins of users and terms
++ * lastcomm:: list last commands executed
++ * sa:: print accounting statistics
++ * dump-acct:: print accounting file in human-readable form
++@@ -88,13 +87,6 @@
++ `accton'
++ turns accounting on or off.
++
++-`last'
++- lists the logins on the system, most recent first. With `last',
++- you can search the `wtmp' file for a particular user or terminal
++- name (to which the user was connected). Of special interest are
++- two fake users, `reboot' and `shutdown', which are recorded when
++- the system is shut down or reboots.
++-
++ `lastcomm'
++ lists the commands executed on the system, most recent first,
++ showing the run state of each command. With `last', you can
++@@ -458,7 +450,7 @@
++ processes.
++
++ 
++-File: accounting.info, Node: accton, Next: last, Prev: ac, Up: Top
+++File: accounting.info, Node: accton, Next: lastcom, Prev: ac, Up: Top
++
++ 2 `accton'
++ **********
++@@ -485,144 +477,9 @@
++
++
++ 
++-File: accounting.info, Node: last, Next: lastcomm, Prev: accton, Up: Top
++-
++-3 `last'
++-********
++-
++-`last' looks through the `wtmp' file (which records all logins/logouts)
++-and prints information about connect times of users. Records are
++-printed from most recent to least recent. Records can be specified by
++-tty and username. tty names can be abbreviated: `last 0' is equivalent
++-to `last tty0'.
++-
++- Multiple arguments can be specified: `last root console' will print
++-all of the entries for the user `root' and all entries logged in on the
++-`console' tty.
++-
++- The special users `reboot' and `shutdown' log in when the system
++-reboots or (surprise) shuts down. `last reboot' will produce a record
++-of reboot times.
++-
++- If `last' is interrupted by a quit signal, it prints out how far its
++-search in the `wtmp' file had reached and then quits:
++- weerapan ttyq6 132.162.32.37 Mon Feb 15 19:07 - 19:21 (00:13)
++- weerapan ttyq6 132.162.32.37 Mon Feb 15 19:07 - 19:21 (00:13)
++-
++- interrupted at Mon Feb 15 19:07:52 1993
++-
++-3.1 Flags
++-=========
++-
++-This program implements the features of regular u*x `last' with a few
++-extra flags. When `last' is invoked with no arguments, the output
++-looks like this:
++- gr151 ttyp2 ray.cs.oberlin.e Tue Feb 16 17:40 still logged in
++- jhoggard ttyp2 csts.cs.oberlin. Tue Feb 16 17:39 - 17:39 (00:00)
++- jstarr ttyp1 UNIX5.ANDREW.CMU Tue Feb 16 17:38 still logged in
++- jberman ttypb 132.162.32.25 Tue Feb 16 17:34 still logged in
++- alee ttyp7 csts.cs.oberlin. Tue Feb 16 17:34 still logged in
++- jbrick ttyp2 ocvaxa.cc.oberli Tue Feb 16 17:33 - 17:36 (00:03)
++- mbastedo ttypc ocvaxa.cc.oberli Tue Feb 16 17:25 - 17:26 (00:01)
++- rgoodste ttypb ocvaxa.cc.oberli Tue Feb 16 17:22 - 17:26 (00:03)
++- huttar ttyp9 lobby.ti.com Tue Feb 16 17:19 still logged in
++- klutz ttyp3 132.162.32.25 Tue Feb 16 17:14 still logged in
++-
++-`--no-truncate-ftp-entries'
++- When printing out the information, don't chop the number part off
++- of `ftp'XXXX entries.
++-
++-`-NUMBER'
++-`-n NUMBER'
++-`--lines NUMBER'
++- Limit the number of lines that `last' prints.
++-
++-`-f FILENAME'
++-`--file FILENAME'
++- Read from the file FILENAME instead of the system's `wtmp' file.
++-
++-`-y'
++-`--print-year'
++- Print out the year when displaying dates.
++-
++-`-s'
++-`--print-seconds'
++- Print out seconds when displaying dates and durations.
++-
++-`--complain'
++- When the `wtmp' file has a problem (a time-warp, missing record,
++- or whatever), print out an appropriate error.
++-
++-`-x'
++-`--more-records'
++- Print out run level changes, shutdowns, and time changes in
++- addition to the normal records.
++-
++-`-a'
++-`--all-records'
++- Print out all records in the `wtmp' file.
++-
++-`-i'
++-`--ip-address'
++- Some machines store the IP address of a connection in a utmp
++- record. Enabling this option makes `last' print the IP address
++- instead of the hostname.
++-
++-`--tw-leniency VALUE'
++- Set the time warp leniency value (in seconds). See the `ac'
++- chapter for information.
+++File: accounting.info, Node: lastcomm, Next: sa, Prev: accton, Up: Top
++
++-`--tw-suspicious VALUE'
++- Set the time warp suspicious value (in seconds). See the `ac'
++- chapter for information.
++-
++-`-w'
++-`--wide'
++- By default, `last' tries to print each entry within in 80 columns.
++- Use this option to instruct `last' to print out the fields in the
++- `wtmp' file with full field widths.
++-
++-`--debug'
++- Print verbose internal information.
++-
++-`-V'
++-`--version'
++- Print `last''s version number.
++-
++-`-h'
++-`--help'
++- Print `last''s usage string and default locations of system files
++- to standard output.
++-
++-3.2 Problems
++-============
++-
++-The Clock Change Problem
++-........................
++-
++-Of the `last's I've tried, all of them have had problems parsing a
++-system clock change. Instead of modifying the entries that have been
++-read, they just ignore the change and give you incorrect values. GNU
++-`last' knows about clock changes and prints the correct times.
++-
++-*TANGIBLE RESULT:* if you `diff' the output of your `last' and GNU
++-`last', entries after (before, rather) a clock change will be off by
++-the amount of the clock change.
++-
++-The Ftp Problem
++-...............
++-
++-Most `last's that I've examined have the same problem here as `ac'
++-does--they log everyone out as soon as they see an ftp entry.
++-
++-*TANGIBLE RESULT:* GNU `last' will reflect the correct time spent in an
++-ftp session, so the totals that it gives will most likely be greater
++-than those given by the system `last'.
++-
++-
++-File: accounting.info, Node: lastcomm, Next: sa, Prev: last, Up: Top
++-
++-4 `lastcomm'
+++3 `lastcomm'
++ ************
++
++ `lastcomm' prints out information about previously executed commands.
++@@ -663,7 +520,7 @@
++
++ * time the process exited
++
++-4.1 Flags
+++3.1 Flags
++ =========
++
++ This program implements the features of regular u*x `lastcomm' with a
++@@ -719,7 +576,7 @@
++ 
++ File: accounting.info, Node: sa, Next: dump-acct, Prev: lastcomm, Up: Top
++
++-5 `sa'
+++4 `sa'
++ ******
++
++ `sa' summarizes information about previously executed commands as
++@@ -777,7 +634,7 @@
++ An asterisk will appear after the name of commands that forked but
++ didn't call `exec'.
++
++-5.1 Flags
+++4.1 Flags
++ =========
++
++ The availability of these program options depends on your operating
++@@ -918,7 +775,7 @@
++ *Note*: if more than one sorting option is specified, the list will
++ be sorted by the one specified last on the command line.
++
++-5.2 Problems
+++4.2 Problems
++ ============
++
++ I haven't been able to test this on many different machines because the
++@@ -930,7 +787,7 @@
++ commands when combined with the `--user-summary' or `--print-users'
++ flags. GNU `sa' pays attention to these flags if they are applicable.
++
++-5.2.1 mips sa
+++4.2.1 mips sa
++ -------------
++
++ The average memory use is stored as a short rather than a double, so we
++@@ -940,7 +797,7 @@
++ 
++ File: accounting.info, Node: dump-acct, Prev: sa, Up: Top
++
++-6 `dump-acct'
+++5 `dump-acct'
++ *************
++
++ `dump-acct' dumps some of the contents of one or more `acct' files in
++@@ -989,7 +846,7 @@
++ all of the above columns will actually appear, depending on what
++ information your operating system provides in it's `struct acct'.
++
++-6.1 Flags
+++5.1 Flags
++ =========
++
++ `--ahz HZ'
++@@ -1041,7 +898,6 @@
++ Node: Preface1764
++ Node: ac10432
++ Node: accton18745
++-Node: last19250
++ Node: lastcomm23726
++ Node: sa26898
++ Node: dump-acct33192
++diff -Naur acct-6.3.99+6.4pre1.orig/accounting.texi acct-6.3.99+6.4pre1/accounting.texi
++--- acct-6.3.99+6.4pre1.orig/accounting.texi 2006-01-07 22:46:25.000000000 +0000
+++++ acct-6.3.99+6.4pre1/accounting.texi 2006-05-28 03:59:51.000000000 +0000
++@@ -75,7 +75,6 @@
++
++ * ac:: print statistics about connect time
++ * accton:: turns accounting on or off
++-* last:: list last logins of users and terms
++ * lastcomm:: list last commands executed
++ * sa:: print accounting statistics
++ * dump-acct:: print accounting file in human-readable form
++@@ -130,13 +129,6 @@
++ @item accton
++ turns accounting on or off.
++
++-@item last
++-lists the logins on the system, most recent first. With @code{last},
++-you can search the @code{wtmp} file for a particular user or
++-terminal name (to which the user was connected). Of special interest
++-are two fake users, @samp{reboot} and @samp{shutdown}, which are
++-recorded when the system is shut down or reboots.
++-
++ @item lastcomm
++ lists the commands executed on the system, most recent first, showing
++ the run state of each command. With @code{last}, you can search the
++@@ -515,7 +507,7 @@
++ anything but user processes.
++
++ @c ----------------------------------------------------------------------
++-@node accton, last, ac, Top
+++@node accton, lastcomm, ac, Top
++ @chapter @code{accton}
++
++ @code{accton} turns process accounting on or off. To save process
++@@ -542,146 +534,7 @@
++ @end table
++
++ @c ----------------------------------------------------------------------
++-@node last, lastcomm, accton, Top
++-@chapter @code{last}
++-
++-@code{last} looks through the @code{wtmp} file (which records
++-all logins/logouts) and prints information about connect times of users.
++-Records are printed from most recent to least recent. Records can be
++-specified by tty and username. tty names can be abbreviated: @samp{last
++-0} is equivalent to @samp{last tty0}.
++-
++-Multiple arguments can be specified: @samp{last root console} will print
++-all of the entries for the user @code{root} and all entries logged in on
++-the @code{console} tty.
++-
++-The special users @code{reboot} and @code{shutdown} log in when the
++-system reboots or (surprise) shuts down. @samp{last reboot} will
++-produce a record of reboot times.
++-
++-If @code{last} is interrupted by a quit signal, it prints out how far
++-its search in the @code{wtmp} file had reached and then
++-quits:
++-@example
++-weerapan ttyq6 132.162.32.37 Mon Feb 15 19:07 - 19:21 (00:13)
++-weerapan ttyq6 132.162.32.37 Mon Feb 15 19:07 - 19:21 (00:13)
++-
++-interrupted at Mon Feb 15 19:07:52 1993
++-@end example
++-
++-@section Flags
++-
++-This program implements the features of regular u*x @code{last} with a few
++-extra flags. When @code{last} is invoked with no arguments, the output
++-looks like this:
++-@example
++-gr151 ttyp2 ray.cs.oberlin.e Tue Feb 16 17:40 still logged in
++-jhoggard ttyp2 csts.cs.oberlin. Tue Feb 16 17:39 - 17:39 (00:00)
++-jstarr ttyp1 UNIX5.ANDREW.CMU Tue Feb 16 17:38 still logged in
++-jberman ttypb 132.162.32.25 Tue Feb 16 17:34 still logged in
++-alee ttyp7 csts.cs.oberlin. Tue Feb 16 17:34 still logged in
++-jbrick ttyp2 ocvaxa.cc.oberli Tue Feb 16 17:33 - 17:36 (00:03)
++-mbastedo ttypc ocvaxa.cc.oberli Tue Feb 16 17:25 - 17:26 (00:01)
++-rgoodste ttypb ocvaxa.cc.oberli Tue Feb 16 17:22 - 17:26 (00:03)
++-huttar ttyp9 lobby.ti.com Tue Feb 16 17:19 still logged in
++-klutz ttyp3 132.162.32.25 Tue Feb 16 17:14 still logged in
++-@end example
++-
++-@table @code
++-@item --no-truncate-ftp-entries
++-When printing out the information, don't chop the number part off of
++-@code{ftp}@var{xxxx} entries.
++-
++-@item -@var{number}
++-@itemx -n @var{number}
++-@itemx --lines @var{number}
++-Limit the number of lines that @code{last} prints.
++-
++-@item -f @var{filename}
++-@itemx --file @var{filename}
++-Read from the file @var{filename} instead of the system's
++-@code{wtmp} file.
++-
++-@item -y
++-@itemx --print-year
++-Print out the year when displaying dates.
++-
++-@item -s
++-@itemx --print-seconds
++-Print out seconds when displaying dates and durations.
++-
++-@item --complain
++-When the @code{wtmp} file has a problem (a time-warp, missing
++-record, or whatever), print out an appropriate error.
++-
++-@item -x
++-@itemx --more-records
++-Print out run level changes, shutdowns, and time changes in addition to
++-the normal records.
++-
++-@item -a
++-@itemx --all-records
++-Print out all records in the @code{wtmp} file.
++-
++-@item -i
++-@itemx --ip-address
++-Some machines store the IP address of a connection in a utmp record.
++-Enabling this option makes @code{last} print the IP address instead of
++-the hostname.
++-
++-@item --tw-leniency @var{value}
++-Set the time warp leniency value (in seconds). See the @code{ac}
++-chapter for information.
++-
++-@item --tw-suspicious @var{value}
++-Set the time warp suspicious value (in seconds). See the @code{ac}
++-chapter for information.
++-
++-@item -w
++-@itemx --wide
++-By default, @code{last} tries to print each entry within in 80 columns.
++-Use this option to instruct @code{last} to print out the fields in the
++-@code{wtmp} file with full field widths.
++-
++-@item --debug
++-Print verbose internal information.
++-
++-@item -V
++-@itemx --version
++-Print @code{last}'s version number.
++-
++-@item -h
++-@itemx --help
++-Print @code{last}'s usage string and default locations of system files
++-to standard output.
++-@end table
++-
++-@section Problems
++-
++-@unnumberedsubsubsec The Clock Change Problem
++-
++-Of the @code{last}s I've tried, all of them have had problems parsing a
++-system clock change. Instead of modifying the entries that have been
++-read, they just ignore the change and give you incorrect values. GNU
++-@code{last} knows about clock changes and prints the correct times.
++-
++-@noindent
++-@strong{TANGIBLE RESULT:} if you @code{diff} the output of your
++-@code{last} and GNU @code{last}, entries after (before, rather) a clock
++-change will be off by the amount of the clock change.
++-
++-@unnumberedsubsubsec The Ftp Problem
++-
++-Most @code{last}s that I've examined have the same problem here as
++-@code{ac} does---they log everyone out as soon as they see an ftp entry.
++-
++-@noindent
++-@strong{TANGIBLE RESULT:} GNU @code{last} will reflect the correct time
++-spent in an ftp session, so the totals that it gives will most likely be
++-greater than those given by the system @code{last}.
++-
++-@c ----------------------------------------------------------------------
++-@node lastcomm, sa, last, Top
+++@node lastcomm, sa, accton, Top
++ @chapter @code{lastcomm}
++
++ @code{lastcomm} prints out information about previously executed
+--- acct-6.4~pre1.orig/debian/patches/00list
++++ acct-6.4~pre1/debian/patches/00list
+@@ -0,0 +1,4 @@
++01-last.dpatch
++02-manpage.dpatch
++03-acct-file.dpatch
++04-lastcomm-forwards.dpatch
+--- acct-6.4~pre1.orig/debian/compat
++++ acct-6.4~pre1/debian/compat
+@@ -0,0 +1 @@
++5
+--- acct-6.4~pre1.orig/debian/manpage/dump-acct.8
++++ acct-6.4~pre1/debian/manpage/dump-acct.8
+@@ -0,0 +1,73 @@
++.TH DUMP-ACCT 8 "2006-04-22" "6.4pre1" "GNU Accounting Utilities"
++
++.SH NAME
++dump-acct \- print an acct file in human-readable format.
++
++.SH SYNOPSIS
++.B dump-acct
++.RB [\| \-r \||\| \-\-reverse \|]
++.RB [\| \-R \||\| \-\-raw \|]
++.RB [\| \-n \||\| \-\-num
++.IR recs \|]
++.RB [\| \-h \||\| \-\-help \|]
++.RB [\|
++.IR files \|]
++
++.SH DESCRIPTION
++.B dump-acct
++.I filename
++prints a list of all executed processes. This list is written by the kernel
++which must be compiled with BSD process accounting enabled (Debian kernel image
++have it already enabled). It must be started with
++.BR accton (5).
++Note that on Debian systems, this is ensured via the init script
++.IR /etc/init.d/acct .
++.LP
++All fields are separated by vertical line. Fields are:
++.IR command ,
++.IR version ,
++.IR "user time" ,
++.IR "system time" ,
++.IR "effective time" ,
++.IR uid ,
++.IR gid ,
++.IR memory ,
++.IR io ,
++.IR time .
++User, system and effective times are ticks per second. One tick is usually 1/50
++of a second. The
++.I time
++field shows the start time of the process.
++
++.SH OPTIONS
++.TP
++.B \-h, \-\-help
++Prints the usage string and default locations of system files to standard output
++and exits.
++.TP
++.B \-n, \-\-num recs
++Number of lines to print.
++.TP
++.B \-r, \-\-reverse
++Start printing from last records.
++.TP
++.B \-R, \-\-raw
++Print raw records, not human-readable.
++
++.SH FILES
++.TP
++.I acct
++The system wide process accounting file. See
++.BR acct (5)
++for further details.
++
++.SH SEE ALSO
++.BR acct (5),
++.BR ac (8).
++
++.SH AUTHOR
++The GNU accounting utilities were written by Noel Cragg <noel@gnu.ai.mit.edu>.
++.PP
++This manual page was written by Ognyan Kulev <ogi@fmi.uni-sofia.bg> and updated
++by Daniel Baumann <daniel@debian.org> for the Debian project (but may be used by
++others).
+--- acct-6.4~pre1.orig/debian/manpage/dump-utmp.8
++++ acct-6.4~pre1/debian/manpage/dump-utmp.8
+@@ -0,0 +1,65 @@
++.TH DUMP-UTMP 8 "2006-04-22" "6.4pre1" "GNU Accounting Utilities"
++
++.SH NAME
++dump-utmp \- print an utmp file in human-readable format.
++
++.SH SYNOPSIS
++.B dump-acct
++.RB [\| \-r \||\| \-\-reverse \|]
++.RB [\| \-R \||\| \-\-raw \|]
++.RB [\| \-n \||\| \-\-num
++.IR recs \|]
++.RB [\| \-h \||\| \-\-help \|]
++.RB [\|
++.IR files \|]
++
++.SH DESCRIPTION
++.B dump-acct
++.I filename
++prints a list of all logins. This list is usually written in
++.IR /var/log/wtmp .
++.LP
++All fields are separated by vertical line. Fields are:
++.IR "user name" ,
++.IR tty ,
++.IR type ,
++.IR id ,
++.IR pid ,
++.IR hostaddr ,
++.IR host ,
++.IR time .
++
++.SH OPTIONS
++.TP
++.B \-h, \-\-help
++Prints the usage string and default locations of system files to standard output
++and exits.
++.TP
++.B \-n, \-\-num recs
++Number of lines to print.
++.TP
++.B \-r, \-\-reverse
++Start printing from last records.
++.TP
++.B \-R, \-\-raw
++Print raw records, not human-readable.
++
++.SH FILES
++.TP
++.I wtmp
++The system wide login record file. See
++.BR wtmp (5)
++for further details.
++
++.SH SEE ALSO
++.BR login (1),
++.BR wtmp (5),
++.BR init (8),
++.BR sa (8).
++
++.SH AUTHOR
++The GNU accounting utilities were written by Noel Cragg <noel@gnu.ai.mit.edu>.
++.PP
++This manual page was written by Ognyan Kulev <ogi@fmi.uni-sofia.bg> and updated
++by Daniel Baumann <daniel@debian.org> for the Debian project (but may be used by
++others).
+--- acct-6.4~pre1.orig/debian/docs
++++ acct-6.4~pre1/debian/docs
+@@ -0,0 +1,4 @@
++NEWS
++README
++TODO
++accounting.html
+--- acct-6.4~pre1.orig/debian/control
++++ acct-6.4~pre1/debian/control
+@@ -0,0 +1,20 @@
++Source: acct
++Section: admin
++Priority: optional
++Maintainer: Daniel Baumann <daniel@debian.org>
++Build-Depends: debhelper (>= 5), dpatch, autotools-dev, texi2html
++Standards-Version: 3.7.3
++Homepage: http://www.gnu.org/software/acct/
++
++Package: acct
++Architecture: any
++Depends: ${shlibs:Depends}, ${misc:Depends}
++Description: The GNU Accounting utilities for process and login accounting
++ GNU Accounting Utilities is a set of utilities which reports and summarizes
++ data about user connect times and process execution statistics.
++ .
++ "Login accounting" provides summaries of system resource usage based on connect
++ time, and "process accounting" provides summaries based on the commands
++ executed on the system.
++ .
++ The 'last' command is provided by the sysvinit package and not included here.
+--- acct-6.4~pre1.orig/debian/cron.daily
++++ acct-6.4~pre1/debian/cron.daily
+@@ -0,0 +1,21 @@
++#!/bin/sh
++
++test -x /usr/sbin/accton || exit 0
++
++# Source defaults
++if [ -f /etc/default/acct ]
++then
++ . /etc/default/acct
++else
++ ACCT_LOGGING="30"
++fi
++
++# Save log file
++cd /var/log/account
++savelog -g adm -m 0640 -u root -c "${ACCT_LOGGING}" /var/log/account/pacct > /dev/null
++
++# Restart acct
++/etc/init.d/acct restart > /dev/null
++
++# This is needed because accton.c returns errno
++exit 0
+--- acct-6.4~pre1.orig/config.sub
++++ acct-6.4~pre1/config.sub
+@@ -1,9 +1,10 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
++# Free Software Foundation, Inc.
+
+-timestamp='2005-07-08'
++timestamp='2008-01-16'
+
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+@@ -71,8 +72,8 @@
+ version="\
+ GNU config.sub ($timestamp)
+
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -119,8 +120,9 @@
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+- nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+- kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
++ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
++ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+@@ -171,6 +173,10 @@
+ -hiux*)
+ os=-hiuxwe2
+ ;;
++ -sco6)
++ os=-sco5v6
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -187,6 +193,10 @@
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
++ -sco5v6*)
++ # Don't forget version if it is 3.2v4 or newer.
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -231,15 +241,16 @@
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+- | fr30 | frv \
++ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+- | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
++ | m32c | m32r | m32rle | m68000 | m68k | m88k \
++ | maxq | mb | microblaze | mcore | mep \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+@@ -257,28 +268,27 @@
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+- | ms1 \
++ | mt \
+ | msp430 \
++ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
++ | score \
++ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+- | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+- | sparcv8 | sparcv9 | sparcv9b \
+- | strongarm \
++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
++ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+- | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+- m32c)
+- basic_machine=$basic_machine-unknown
+- ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+@@ -286,6 +296,9 @@
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
++ ms1)
++ basic_machine=mt-unknown
++ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+@@ -305,18 +318,18 @@
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+- | avr-* \
++ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+- | m32r-* | m32rle-* \
++ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+@@ -336,30 +349,33 @@
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+- | ms1-* \
++ | mt-* \
+ | msp430-* \
++ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
++ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+- | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+- | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+- | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+- | xstormy16-* | xtensa-* \
++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
++ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+- m32c-*)
++ # Recognize the basic CPU types without company name, with glob match.
++ xtensa*)
++ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+@@ -431,6 +447,14 @@
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
++ blackfin)
++ basic_machine=bfin-unknown
++ os=-linux
++ ;;
++ blackfin-*)
++ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
++ os=-linux
++ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+@@ -463,8 +487,8 @@
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+- cr16c)
+- basic_machine=cr16c-unknown
++ cr16)
++ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+@@ -656,6 +680,14 @@
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
++ m68knommu)
++ basic_machine=m68k-unknown
++ os=-linux
++ ;;
++ m68knommu-*)
++ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
++ os=-linux
++ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+@@ -671,6 +703,10 @@
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
++ mingw32ce)
++ basic_machine=arm-unknown
++ os=-mingw32ce
++ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+@@ -696,6 +732,9 @@
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
++ ms1-*)
++ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
++ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+@@ -794,6 +833,14 @@
+ basic_machine=i860-intel
+ os=-osf
+ ;;
++ parisc)
++ basic_machine=hppa-unknown
++ os=-linux
++ ;;
++ parisc-*)
++ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
++ os=-linux
++ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+@@ -803,6 +850,12 @@
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
++ pc98)
++ basic_machine=i386-pc
++ ;;
++ pc98-*)
++ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+@@ -859,6 +912,10 @@
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
++ rdos)
++ basic_machine=i386-pc
++ os=-rdos
++ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+@@ -885,6 +942,10 @@
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
++ sde)
++ basic_machine=mipsisa32-sde
++ os=-elf
++ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+@@ -896,6 +957,9 @@
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
++ sh5el)
++ basic_machine=sh5le-unknown
++ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+@@ -985,6 +1049,10 @@
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
++ tile*)
++ basic_machine=tile-unknown
++ os=-linux-gnu
++ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+@@ -1101,7 +1169,7 @@
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+- sparc | sparcv8 | sparcv9 | sparcv9b)
++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+@@ -1174,21 +1242,23 @@
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
++ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+- | -mingw32* | -linux* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
++ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
++ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+- | -skyos* | -haiku*)
++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+@@ -1215,6 +1285,9 @@
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
++ -linux*)
++ os=`echo $os | sed -e 's|linux|linux-gnu|'`
++ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+@@ -1337,6 +1410,12 @@
+ # system, and we'll never get to this point.
+
+ case $basic_machine in
++ score-*)
++ os=-elf
++ ;;
++ spu-*)
++ os=-elf
++ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+@@ -1346,9 +1425,9 @@
+ arm*-semi)
+ os=-aout
+ ;;
+- c4x-* | tic4x-*)
+- os=-coff
+- ;;
++ c4x-* | tic4x-*)
++ os=-coff
++ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+@@ -1374,6 +1453,9 @@
+ m68*-cisco)
+ os=-aout
+ ;;
++ mep-*)
++ os=-elf
++ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+--- acct-6.4~pre1.orig/config.guess
++++ acct-6.4~pre1/config.guess
+@@ -1,9 +1,10 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+-# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
++# Free Software Foundation, Inc.
+
+-timestamp='2005-07-08'
++timestamp='2008-01-23'
+
+ # This file is free software; you can redistribute it and/or modify it
+ # under the terms of the GNU General Public License as published by
+@@ -55,8 +56,8 @@
+ GNU config.guess ($timestamp)
+
+ Originally written by Per Bothner.
+-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+-Free Software Foundation, Inc.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
++2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+ This is free software; see the source for copying conditions. There is NO
+ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+@@ -106,7 +107,7 @@
+ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+ : ${TMPDIR=/tmp} ;
+- { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+@@ -138,16 +139,6 @@
+ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+-case "${UNAME_MACHINE}" in
+- i?86)
+- test -z "$VENDOR" && VENDOR=pc
+- ;;
+- *)
+- test -z "$VENDOR" && VENDOR=unknown
+- ;;
+-esac
+-test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse
+-
+ # Note: order is significant - the case branches are not exclusive.
+
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+@@ -170,6 +161,7 @@
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
++ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+@@ -216,8 +208,11 @@
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
++ *:SolidBSD:*:*)
++ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
++ exit ;;
+ macppc:MirBSD:*:*)
+- echo powerppc-unknown-mirbsd${UNAME_RELEASE}
++ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+@@ -335,7 +330,7 @@
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+- i86pc:SunOS:5.*:*)
++ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+@@ -537,7 +532,7 @@
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+- *:AIX:*:[45])
++ *:AIX:*:[456])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+@@ -774,12 +769,19 @@
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
++ case ${UNAME_MACHINE} in
++ pc98)
++ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++ amd64)
++ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++ *)
++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+- i*:MINGW*:*)
++ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+@@ -789,9 +791,18 @@
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+- x86:Interix*:[34]*)
+- echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+- exit ;;
++ *:Interix*:[3456]*)
++ case ${UNAME_MACHINE} in
++ x86)
++ echo i586-pc-interix${UNAME_RELEASE}
++ exit ;;
++ EM64T | authenticamd)
++ echo x86_64-unknown-interix${UNAME_RELEASE}
++ exit ;;
++ IA64)
++ echo ia64-unknown-interix${UNAME_RELEASE}
++ exit ;;
++ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+@@ -804,7 +815,7 @@
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+- amd64:CYGWIN*:*:*)
++ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+@@ -825,25 +836,35 @@
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ eval $set_cc_for_build
++ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
++ | grep -q __ARM_EABI__
++ then
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ else
++ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
++ fi
++ exit ;;
++ avr32*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+- echo cris-axis-linux
++ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+- echo crisv32-axis-linux
++ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+- echo frv-${VENDOR}-linux
++ echo frv-unknown-linux-gnu
+ exit ;;
+ ia64:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+@@ -861,8 +882,12 @@
+ #endif
+ #endif
+ EOF
+- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+- test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux"; exit; }
++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
++ /^CPU/{
++ s: ::g
++ p
++ }'`"
++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+@@ -880,14 +905,21 @@
+ #endif
+ #endif
+ EOF
+- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+- test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux"; exit; }
++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
++ /^CPU/{
++ s: ::g
++ p
++ }'`"
++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
++ or32:Linux:*:*)
++ echo or32-unknown-linux-gnu
++ exit ;;
+ ppc:Linux:*:*)
+- echo powerpc-${VENDOR}-linux
++ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+- echo powerpc64-${VENDOR}-linux
++ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+@@ -901,33 +933,39 @@
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+- echo ${UNAME_MACHINE}-${VENDOR}-linux${LIBC}
++ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+- PA7*) echo hppa1.1-${VENDOR}-linux ;;
+- PA8*) echo hppa2.0-${VENDOR}-linux ;;
+- *) echo hppa-${VENDOR}-linux ;;
++ PA7*) echo hppa1.1-unknown-linux-gnu ;;
++ PA8*) echo hppa2.0-unknown-linux-gnu ;;
++ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+- echo hppa64-${VENDOR}-linux
++ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+- echo ${UNAME_MACHINE}-${VENDOR}-linux
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ vax:Linux:*:*)
++ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+- echo x86_64-${VENDOR}-linux
++ echo x86_64-unknown-linux-gnu
++ exit ;;
++ xtensa*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+@@ -942,18 +980,18 @@
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+- TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux"
++ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+- echo "${UNAME_MACHINE}-${VENDOR}-linuxaout"
++ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+- echo "${UNAME_MACHINE}-${VENDOR}-linuxcoff"
++ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+- # Either a pre-BFD a.out linker (linuxoldld) or
++ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+- echo "${UNAME_MACHINE}-${VENDOR}-linuxoldld"
++ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+@@ -971,7 +1009,7 @@
+ LIBC=gnulibc1
+ # endif
+ #else
+- #ifdef __INTEL_COMPILER
++ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+@@ -981,9 +1019,13 @@
+ LIBC=dietlibc
+ #endif
+ EOF
+- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
++ /^LIBC/{
++ s: ::g
++ p
++ }'`"
+ test x"${LIBC}" != x && {
+- echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" | sed 's/linux-gnu/linux/'
++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+@@ -1183,6 +1225,15 @@
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
++ SX-7:SUPER-UX:*:*)
++ echo sx7-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-8:SUPER-UX:*:*)
++ echo sx8-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-8R:SUPER-UX:*:*)
++ echo sx8r-nec-superux${UNAME_RELEASE}
++ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+@@ -1192,7 +1243,6 @@
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+- *86) UNAME_PROCESSOR=i686 ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+@@ -1271,6 +1321,9 @@
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
++ i*86:rdos:*:*)
++ echo ${UNAME_MACHINE}-pc-rdos
++ exit ;;
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+@@ -1431,9 +1484,9 @@
+ the operating system you are using. It is advised that you
+ download the most up to date version of the config scripts from
+
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
++ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+ and
+- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
++ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+ If the version you run ($0) is already up to date, please
+ send the following data and any information you think might be
diff --git a/source/ap/acct/acct.SlackBuild b/source/ap/acct/acct.SlackBuild
new file mode 100755
index 000000000..510b22a2d
--- /dev/null
+++ b/source/ap/acct/acct.SlackBuild
@@ -0,0 +1,137 @@
+#!/bin/sh
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=acct
+PKGVER=6.4-pre1
+VERSION=6.4pre1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-acct
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-$PKGVER
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$PKGVER || exit 1
+zcat $CWD/acct-6.4pre1-6.diff.gz | patch -p1 || exit 1
+cat debian/patches/* | patch -p1
+zcat $CWD/acct.logdir.fhs.diff.gz | patch -p1 || 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= \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --enable-linux-multiformat \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# The sysvinit package already installs a "last" program, so
+# rename this one:
+mv $PKG/bin/last $PKG/bin/last-acct
+
+# I know this man page still says "last" in it, but presumably
+# anyone who uses "man last-acct" knows enough that this will
+# not spook them:
+mv $PKG/usr/man/man1/last.1 $PKG//usr/man/man1/last-acct.1
+
+# Put some binaries in the location where they have traditionally
+# been installed:
+mkdir -p $PKG/usr/bin
+mv $PKG/bin/{ac,last-acct,lastcomm} $PKG/usr/bin
+mv $PKG/sbin/sa $PKG/usr/bin
+mkdir -p $PKG/usr/sbin
+mv $PKG/sbin/dump* $PKG/usr/sbin
+
+# A couple of manpages are not automatically installed:
+cp -a debian/manpage/*.8 $PKG/usr/man/man8
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
+ $PKG/usr/doc/${PKGNAM}-$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/acct-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/acct/acct.logdir.fhs.diff b/source/ap/acct/acct.logdir.fhs.diff
new file mode 100644
index 000000000..9fff1bac1
--- /dev/null
+++ b/source/ap/acct/acct.logdir.fhs.diff
@@ -0,0 +1,29 @@
+--- ./configure.in.orig 2008-11-12 12:09:44.000000000 -0600
++++ ./configure.in 2008-11-12 12:51:44.000000000 -0600
+@@ -214,7 +214,7 @@
+
+ #ifndef ACCT_FILE
+ # if defined(__FreeBSD__) || defined(__linux__)
+-# define ACCT_FILE "/var/log/account/pacct"
++# define ACCT_FILE "/var/log/pacct"
+ # else
+ # if defined(__NetBSD__)
+ # define ACCT_FILE "/var/account/acct"
+@@ -234,7 +234,7 @@
+
+ #ifndef SAVACCT_FILE
+ # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
+-# define SAVACCT_FILE "/var/log/account/savacct"
++# define SAVACCT_FILE "/var/log/savacct"
+ # else
+ # if defined(sun) || defined(AMIX)
+ # define SAVACCT_FILE "/var/adm/savacct"
+@@ -250,7 +250,7 @@
+
+ #ifndef USRACCT_FILE
+ # if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__linux__)
+-# define USRACCT_FILE "/var/log/account/usracct"
++# define USRACCT_FILE "/var/log/usracct"
+ # else
+ # if defined(sun) || defined(AMIX)
+ # define USRACCT_FILE "/var/adm/usracct"
diff --git a/source/ap/acct/slack-desc b/source/ap/acct/slack-desc
new file mode 100644
index 000000000..6cffcfcb4
--- /dev/null
+++ b/source/ap/acct/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------------------------------------------------------|
+acct: acct (process accounting utilities)
+acct:
+acct: This is a set of utilities which reports and summarizes data about
+acct: user connect times and process execution statistics. To activate
+acct: process accounting, create the log file (touch /var/log/pacct), and
+acct: then use the accton command to start it (accton /var/log/pacct).
+acct: Be aware that the log file can grow to be quite large.
+acct:
+acct: The GNU process accounting utilities were written by Noel Cragg and
+acct: the software is currently maintained by Ciaran O'Riordan,
+acct: Manuel A. Fernandez Montecelo, and Tim Schmielau.
diff --git a/source/ap/alsa-utils/alsa-utils.SlackBuild b/source/ap/alsa-utils/alsa-utils.SlackBuild
new file mode 100755
index 000000000..c918ba526
--- /dev/null
+++ b/source/ap/alsa-utils/alsa-utils.SlackBuild
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=1.0.18
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+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"
+ LIBDIRSUFFIX="64"
+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
+cd alsa-utils-$VERSION || exit 1
+zcat $CWD/alsa-utils.alsaconf.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
+
+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 \
+ --sysconfdir=/etc \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+mkdir -p $PKG/etc/rc.d
+zcat $CWD/rc.alsa.gz > $PKG/etc/rc.d/rc.alsa
+chmod 755 $PKG/etc/rc.d/rc.alsa
+
+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/alsa-utils-$VERSION
+cp -a \
+ COPYING ChangeLog 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
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/alsa-utils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/alsa-utils/alsa-utils.alsaconf.diff b/source/ap/alsa-utils/alsa-utils.alsaconf.diff
new file mode 100644
index 000000000..c20bf72e7
--- /dev/null
+++ b/source/ap/alsa-utils/alsa-utils.alsaconf.diff
@@ -0,0 +1,54 @@
+--- ./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
+@@ -16,8 +16,6 @@
+ This manual page documents briefly the
+ .B alsaconf
+ command.
+-This manual page was written for the Debian distribution because the
+-original program does not have a manual page.
+ .PP
+ \fBAlsaconf\fP is a simple shell script which tries to detect the sound cards
+ on your system and writes a suitable configuration file for ALSA. It will try
+@@ -74,13 +72,6 @@
+ Set the uid for the ALSA devices (default = 0).
+ This option is obsolete in the recent ALSA version.
+
+-.SH DEBIAN SPECIFIC
+-In Debian, the default gid of the device files is 29 (corresponding to the
+-audio group) and the default device mode is 0660.
+-
+-For the ALSA base package, see also
+-.I /usr/share/doc/alsa\-base/
+-
+ .SH SEE ALSO
+ \fB
+ alsamixer(1),
+@@ -98,5 +89,4 @@
+ Bernd Kaindl <bk@suse.de> and
+ Jan Ondrej (SAL) <ondrejj@salstar.sk>
+
+-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 --git a/source/ap/alsa-utils/rc.alsa b/source/ap/alsa-utils/rc.alsa
new file mode 100644
index 000000000..9e3cae304
--- /dev/null
+++ b/source/ap/alsa-utils/rc.alsa
@@ -0,0 +1,93 @@
+#!/bin/sh
+# Load the mixer settings and OSS compatibility for ALSA.
+# (the Advanced Linux Sound Architecture)
+
+# A function to load the ALSA mixer settings:
+load_alsa_mixer() {
+ if [ -r /etc/asound.state ]; then
+ echo "Loading ALSA mixer settings: /usr/sbin/alsactl restore"
+ /usr/sbin/alsactl restore
+ else
+ # It's possible a user might not want to set a default sound state.
+ # In that case, do this: touch /etc/no.asound.state
+ if [ ! -r /etc/no.asound.state ]; then
+ echo "Setting default ALSA mixer settings."
+ # set default mixer volumes for ALSA
+ # Taken from the alsaconfig script.
+ amixer -s -q <<EOF
+set Master 75% unmute
+set Master -12dB
+set 'Master Mono' 75% unmute
+set 'Master Mono' -12dB
+set Front 75% unmute
+set Front -12dB
+set PCM 90% unmute
+set PCM 0dB
+mixer Synth 90% unmute
+mixer Synth 0dB
+mixer CD 90% unmute
+mixer CD 0dB
+# mute mic
+set Mic 0% mute
+# ESS 1969 chipset has 2 PCM channels
+set PCM,1 90% unmute
+set PCM,1 0dB
+# Trident/YMFPCI/emu10k1
+set Wave 100% unmute
+set Music 100% unmute
+set AC97 100% unmute
+# CS4237B chipset:
+set 'Master Digital' 75% unmute
+# Envy24 chips with analog outs
+set DAC 90% unmute
+set DAC -12dB
+set DAC,0 90% unmute
+set DAC,0 -12dB
+set DAC,1 90% unmute
+set DAC,1 -12dB
+# some notebooks use headphone instead of master
+set Headphone 75% unmute
+set Headphone -12dB
+set Playback 100% unmute
+# turn off digital switches
+set "SB Live Analog/Digital Output Jack" off
+set "Audigy Analog/Digital Output Jack" off
+EOF
+ echo "Storing default ALSA mixer settings: /usr/sbin/alsactl store"
+ /usr/sbin/alsactl store
+ fi
+ fi
+}
+
+# A function to load the ALSA OSS compat modules:
+load_alsa_oss_modules() {
+ if ! cat /proc/modules | tr _ - | grep -wq snd-pcm-oss ; then
+ echo "Loading OSS compatibility modules for ALSA."
+ modprobe snd-pcm-oss
+ modprobe snd-seq-oss
+ modprobe snd-mixer-oss
+ fi
+}
+
+# If hotplug or something else has loaded the ALSA modules, then
+# simply load the mixer settings and make sure the OSS compat
+# modules are loaded:
+if [ -d /proc/asound ]; then
+ load_alsa_oss_modules
+ load_alsa_mixer
+else
+ # If there are ALSA modules defined in /etc/modprobe.conf, but
+ # ALSA is not yet loaded, then load the modules now:
+ DRIVERS=$(modprobe -c | grep -E "^[[:space:]]*alias[[:space:]]+snd-card-[[:digit:]]" | tr -s "[[:blank:]]" " " | cut -d " " -f 3)
+ if [ ! "$DRIVERS" = "" ]; then
+ echo "Loading ALSA kernel modules."
+ for module in $DRIVERS; do
+ modprobe $module
+ done
+ fi
+ # If ALSA is now up, then load the mixer settings and OSS modules:
+ if [ -d /proc/asound ]; then
+ load_alsa_oss_modules
+ load_alsa_mixer
+ fi
+fi
diff --git a/source/ap/alsa-utils/slack-desc b/source/ap/alsa-utils/slack-desc
new file mode 100644
index 000000000..06ca73c09
--- /dev/null
+++ b/source/ap/alsa-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------------------------------------------------------|
+alsa-utils: alsa-utils (Advanced Linux Sound Architecture utilities)
+alsa-utils:
+alsa-utils: The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI
+alsa-utils: functionality to the Linux operating system. This package contains
+alsa-utils: command line audio utilities for use with ALSA:
+alsa-utils: alsactl (manage soundcard settings)
+alsa-utils: arecord/aplay (capture and play audio)
+alsa-utils: amixer (adjust mixer settings from the command line)
+alsa-utils: alsamixer (an ncurses-based console mixer)
+alsa-utils:
+alsa-utils: For more information, see http://alsa-project.org
diff --git a/source/ap/amp/amp-gcc34.diff b/source/ap/amp/amp-gcc34.diff
new file mode 100644
index 000000000..6e04bebe7
--- /dev/null
+++ b/source/ap/amp/amp-gcc34.diff
@@ -0,0 +1,11 @@
+diff -Naur amp-0.7.6.orig/guicontrol.c amp-0.7.6/guicontrol.c
+--- amp-0.7.6.orig/guicontrol.c 1997-08-23 04:30:51.000000000 -0700
++++ amp-0.7.6/guicontrol.c 2004-07-07 15:27:54.694249000 -0700
+@@ -376,6 +376,7 @@
+ case GETHDR_SYN: warn("oops, we're out of sync.\n");
+ break;
+ default:
++ break;
+ }
+ break;
+ }
diff --git a/source/ap/amp/amp.SlackBuild b/source/ap/amp/amp.SlackBuild
new file mode 100755
index 000000000..db7f49fe1
--- /dev/null
+++ b/source/ap/amp/amp.SlackBuild
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=0.7.6
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-amp
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_amp.tar.gz
+
+cd $TMP
+rm -rf amp-$VERSION
+tar xzvf $CWD/amp-$VERSION.tar.gz
+cd amp-$VERSION
+zcat $CWD/amp-gcc34.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+chown -R root:root .
+./configure --prefix=/usr $ARCH-slackware-linux
+make
+strip amp
+cat amp > $PKG/usr/bin/amp
+cat amp.1 | gzip -9c > $PKG/usr/man/man1/amp.1.gz
+mkdir -p $PKG/usr/doc/amp-$VERSION
+cp -a \
+ BUGS CHANGES README TODO doc/jukebox.txt doc/layer2.txt \
+ doc/linuxrealtime.txt doc/BeOS.txt \
+ $PKG/usr/doc/amp-$VERSION
+chmod 644 $PKG/usr/doc/amp-$VERSION/*
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/amp-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/amp/license_excerpts b/source/ap/amp/license_excerpts
new file mode 100644
index 000000000..11cf9ef87
--- /dev/null
+++ b/source/ap/amp/license_excerpts
@@ -0,0 +1,42 @@
+amp MPEG audio decoder readme file (version 0.7.5)
+(C) Tomislav Uzelac 1996,1997
+
+amp is free software and can be _used_ freely by anyone. If you want to
+do anything else with it, be sure to check the Legal section of this
+document for legal issues.
+
+THERE IS NO WARRANTY FOR THIS PROGRAM. Please check out the Legal section
+of this document.
+
+
+[snip]
+
+
+6. Legal
+
+This software can be used freely for any purpose. It can be distributed
+freely, as long as it is not sold commercially without permission from
+Tomislav Uzelac <tuzelac@rasip.fer.hr>. However, including this software
+on CD_ROMs containing other free software is explicitly permitted even
+when a modest distribution fee is charged for the CD, as long as this
+software is not a primary selling argument for the CD.
+
+Building derived versions of this software is permitted, as long as they
+are not sold commercially without permission from Tomislav Uzelac
+<tuzelac@rasip.fer.hr>. Any derived versions must be clearly marked as
+such, and must be called by a name other than amp. Any derived versions
+must retain this copyright notice.
+
+/* This license is itself copied from Tatu Ylonen's ssh package. It does
+ * not mention being copyrighted itself :)
+ */
+
+THERE IS NO WARRANTY FOR THIS PROGRAM - whatsoever. You use it entirely
+at your risk, and neither Tomislav Uzelac, nor FER will be liable for
+any damages that might occur to your computer, software, etc. in
+consequence of you using this freeware program.
+
+
+Tomislav Uzelac
+<tuzelac@rasip.fer.hr>
+
diff --git a/source/ap/amp/slack-desc b/source/ap/amp/slack-desc
new file mode 100644
index 000000000..9ecfb939b
--- /dev/null
+++ b/source/ap/amp/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------------------------------------------------------|
+amp: amp (An MP3 player)
+amp:
+amp: amp (Audio Mpeg Player) is a command-line MPEG audio decoder (MP3
+amp: player). It works with both MPEG1 and MPEG2 audio streams (except for
+amp: the multichannel extensions defined in MPEG2), layers 2 and 3.
+amp:
+amp:
+amp:
+amp:
+amp:
+amp:
diff --git a/source/ap/ash/ash.SlackBuild b/source/ap/ash/ash.SlackBuild
new file mode 100755
index 000000000..deaad12d1
--- /dev/null
+++ b/source/ap/ash/ash.SlackBuild
@@ -0,0 +1,74 @@
+#!/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=0.4.0
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-ash
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+tar xzvf $CWD/ash-$VERSION.tar.gz
+cd ash-$VERSION
+chown -R root:root .
+( cd $CWD/patches
+ for file in ash-builtin.patch.gz ash-echo.patch.gz ash-getcwd.patch.gz ash-getopt.patch.gz ash-glob.patch.gz ash-jobs.patch.gz ash-kill.patch.gz ash-makefile.patch.gz ash-manpage.patch.gz ash-hetio.patch.gz ash-memout.patch.gz ash-misc.patch.gz ash-redir.patch.gz ash-setmode.patch.gz ash-syntax.patch.gz ash-test.patch.gz ash-times.patch.gz ash-debian.patch.gz ash-ppid.patch.gz ash-freebsd.patch.gz ash-sighup.patch.gz ; do
+ zcat $file
+ done ) | patch -p1 --verbose
+sed -i -e 's#= {#{#' arith.y || exit 1 # prevent "syntax error, unexpected ="
+sed -i -e '/yyerrok;/d' arith.y || exit 1 # "error: 'yyerrstatus' undeclared"
+# Fred Emmott found this on the LFS mailing list:
+sed -i -e 's#extern int hetio_inter#static int hetio_inter#' hetio.h || exit 1
+make || exit 1
+strip sh
+mkdir -p $PKG/bin
+cat sh > $PKG/bin/ash
+chmod 755 $PKG/bin/ash
+mkdir -p $PKG/usr/man/man1
+cat sh.1 | gzip -9c > $PKG/usr/man/man1/ash.1.gz
+mkdir -p $PKG/usr/doc/ash-$VERSION
+chmod 644 TOUR
+cp -a TOUR $PKG/usr/doc/ash-$VERSION
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat << EOF > $PKG/install/doinst.sh
+if grep "bin/ash" etc/shells 1> /dev/null 2> /dev/null; then
+ true
+else
+ echo "/bin/ash" >> etc/shells
+fi
+EOF
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/ash-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/ash-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/ap/ash/patches/ash-builtin.patch b/source/ap/ash/patches/ash-builtin.patch
new file mode 100644
index 000000000..b812e6375
--- /dev/null
+++ b/source/ap/ash/patches/ash-builtin.patch
@@ -0,0 +1,843 @@
+diff -urN netbsd-sh/builtins.def ash-0.3.7.orig/builtins.def
+--- netbsd-sh/builtins.def Mon Apr 10 13:02:58 2000
++++ ash-0.3.7.orig/builtins.def Mon Apr 23 22:16:46 2001
+@@ -49,12 +49,13 @@
+ #
+ # NOTE: bltincmd must come first!
+
+-bltincmd command
++bltincmd builtin
+ #alloccmd alloc
+ bgcmd -j bg
+ breakcmd break continue
+ #catfcmd catf
+ cdcmd cd chdir
++commandcmd command
+ dotcmd .
+ echocmd echo
+ evalcmd eval
+diff -urN netbsd-sh/eval.c ash-0.3.7.orig/eval.c
+--- netbsd-sh/eval.c Tue May 23 12:03:18 2000
++++ ash-0.3.7.orig/eval.c Mon Apr 23 22:16:46 2001
+@@ -45,7 +45,9 @@
+ #endif
+ #endif /* not lint */
+
++#include <sys/types.h>
+ #include <signal.h>
++#include <malloc.h>
+ #include <unistd.h>
+
+ /*
+@@ -101,6 +103,8 @@
+ STATIC void evalpipe __P((union node *));
+ STATIC void evalcommand __P((union node *, int, struct backcmd *));
+ STATIC void prehash __P((union node *));
++STATIC int is_assignment_builtin __P((const char *));
++STATIC const char *get_standard_path __P((void));
+
+
+ /*
+@@ -257,6 +261,11 @@
+ evalcase(n, flags);
+ break;
+ case NDEFUN:
++ if (is_special_builtin(n->narg.text)) {
++ outfmt(out2, "%s is a special built-in\n", n->narg.text);
++ exitstatus = 1;
++ break;
++ }
+ defun(n->narg.text, n->narg.next);
+ exitstatus = 0;
+ break;
+@@ -497,9 +507,14 @@
+ close(0);
+ copyfd(prevfd, 0);
+ close(prevfd);
++ if (pip[0] == 0) {
++ pip[0] = -1;
++ }
+ }
+ if (pip[1] >= 0) {
+- close(pip[0]);
++ if (pip[0] >= 0) {
++ close(pip[0]);
++ }
+ if (pip[1] != 1) {
+ close(1);
+ copyfd(pip[1], 1);
+@@ -607,6 +622,7 @@
+ int argc;
+ char **envp;
+ int varflag;
++ int pseudovarflag;
+ struct strlist *sp;
+ int mode;
+ int pip[2];
+@@ -619,12 +635,17 @@
+ struct localvar *volatile savelocalvars;
+ volatile int e;
+ char *lastarg;
++ int not_special;
++ const char *path;
++ const char *standard_path;
+ #if __GNUC__
+ /* Avoid longjmp clobbering */
+ (void) &argv;
+ (void) &argc;
+ (void) &lastarg;
+ (void) &flags;
++ (void) &not_special;
++ (void) &standard_path;
+ #endif
+
+ /* First expand the arguments. */
+@@ -632,21 +653,31 @@
+ setstackmark(&smark);
+ arglist.lastp = &arglist.list;
+ varlist.lastp = &varlist.list;
++ arglist.list = 0;
+ varflag = 1;
++ pseudovarflag = 0;
+ oexitstatus = exitstatus;
+ exitstatus = 0;
++ not_special = 0;
++ path = pathval();
++ standard_path = NULL;
+ for (argp = cmd->ncmd.args ; argp ; argp = argp->narg.next) {
+ char *p = argp->narg.text;
+- if (varflag && is_name(*p)) {
++ if ((varflag || pseudovarflag) && is_name(*p)) {
+ do {
+ p++;
+ } while (is_in_name(*p));
+ if (*p == '=') {
+- expandarg(argp, &varlist, EXP_VARTILDE);
++ if (varflag)
++ expandarg(argp, &varlist, EXP_VARTILDE);
++ else
++ expandarg(argp, &arglist, EXP_VARTILDE);
+ continue;
+ }
+ }
+ expandarg(argp, &arglist, EXP_FULL | EXP_TILDE);
++ if (varflag && arglist.list && is_assignment_builtin(arglist.list->text))
++ pseudovarflag = 1;
+ varflag = 0;
+ }
+ *arglist.lastp = NULL;
+@@ -688,37 +719,75 @@
+ cmdentry.u.index = BLTINCMD;
+ } else {
+ static const char PATH[] = "PATH=";
+- const char *path = pathval();
++ const char *oldpath = NULL;
++ int findflag = DO_ERR;
+
+ /*
+ * Modify the command lookup path, if a PATH= assignment
+ * is present
+ */
+ for (sp = varlist.list ; sp ; sp = sp->next)
+- if (strncmp(sp->text, PATH, sizeof(PATH) - 1) == 0)
++ if (strncmp(sp->text, PATH, sizeof(PATH) - 1) == 0) {
+ path = sp->text + sizeof(PATH) - 1;
+-
+- find_command(argv[0], &cmdentry, DO_ERR, path);
+- if (cmdentry.cmdtype == CMDUNKNOWN) { /* command not found */
+- exitstatus = 127;
+- flushout(&errout);
+- return;
+- }
+- /* implement the bltin builtin here */
+- if (cmdentry.cmdtype == CMDBUILTIN && cmdentry.u.index == BLTINCMD) {
+- for (;;) {
++ findflag |= DO_BRUTE;
++ }
++ for(;;) {
++ find_command(argv[0], &cmdentry, findflag, path);
++ if (oldpath) {
++ path = oldpath;
++ oldpath = NULL;
++ }
++ if (cmdentry.cmdtype == CMDUNKNOWN) { /* command not found */
++ exitstatus = 127;
++ flushout(&errout);
++ goto out;
++ }
++ /* implement the bltin builtin here */
++ if (cmdentry.cmdtype == CMDBUILTIN && cmdentry.u.index == BLTINCMD) {
++ not_special = 1;
++ for(;;) {
++ argv++;
++ if (--argc == 0)
++ break;
++ if ((cmdentry.u.index = find_builtin(*argv)) < 0) {
++ outfmt(&errout, "%s: not found\n", *argv);
++ exitstatus = 127;
++ flushout(&errout);
++ goto out;
++ }
++ if (cmdentry.u.index != BLTINCMD)
++ break;
++ }
++ }
++ if (cmdentry.cmdtype == CMDBUILTIN && cmdentry.u.index == COMMANDCMD) {
++ not_special = 1;
+ argv++;
+- if (--argc == 0)
+- break;
+- if ((cmdentry.u.index = find_builtin(*argv)) < 0) {
+- outfmt(&errout, "%s: not found\n", *argv);
+- exitstatus = 127;
+- flushout(&errout);
+- return;
++ if (--argc == 0) {
++ exitstatus = 0;
++ goto out;
+ }
+- if (cmdentry.u.index != BLTINCMD)
+- break;
++ if (*argv[0] == '-') {
++ if (!equal(argv[0], "-p")) {
++ argv--;
++ argc++;
++ break;
++ }
++ argv++;
++ if (--argc == 0) {
++ exitstatus = 0;
++ goto out;
++ }
++ if (!standard_path) {
++ standard_path = get_standard_path();
++ }
++ oldpath = path;
++ path = standard_path;
++ findflag |= DO_BRUTE;
++ }
++ findflag |= DO_NOFUN;
++ continue;
+ }
++ break;
+ }
+ }
+
+@@ -756,13 +825,12 @@
+ #ifdef DEBUG
+ trputs("Shell function: "); trargs(argv);
+ #endif
++ exitstatus = oexitstatus;
+ redirect(cmd->ncmd.redirect, REDIR_PUSH);
+ saveparam = shellparam;
+ shellparam.malloc = 0;
+- shellparam.reset = 1;
+ shellparam.nparam = argc - 1;
+ shellparam.p = argv + 1;
+- shellparam.optnext = NULL;
+ INTOFF;
+ savelocalvars = localvars;
+ localvars = NULL;
+@@ -772,6 +840,8 @@
+ freeparam((volatile struct shparam *)
+ &saveparam);
+ } else {
++ saveparam.optind = shellparam.optind;
++ saveparam.optoff = shellparam.optoff;
+ freeparam(&shellparam);
+ shellparam = saveparam;
+ }
+@@ -790,6 +860,8 @@
+ INTOFF;
+ poplocalvars();
+ localvars = savelocalvars;
++ saveparam.optind = shellparam.optind;
++ saveparam.optoff = shellparam.optoff;
+ freeparam(&shellparam);
+ shellparam = saveparam;
+ handler = savehandler;
+@@ -832,6 +908,8 @@
+ out1 = &output;
+ out2 = &errout;
+ freestdout();
++ if (!not_special && is_special_builtin(commandname))
++ listsetvar(cmdenviron);
+ cmdenviron = NULL;
+ if (e != EXSHELLPROC) {
+ commandname = savecmdname;
+@@ -867,7 +953,7 @@
+ for (sp = varlist.list ; sp ; sp = sp->next)
+ setvareq(sp->text, VEXPORT|VSTACK);
+ envp = environment();
+- shellexec(argv, envp, pathval(), cmdentry.u.index);
++ shellexec(argv, envp, path, cmdentry.u.index);
+ }
+ goto out;
+
+@@ -1025,4 +1111,49 @@
+ shellexec(argv + 1, environment(), pathval(), 0);
+ }
+ return 0;
++}
++
++STATIC int
++is_assignment_builtin (command)
++ const char *command;
++{
++ static const char *assignment_builtins[] = {
++ "alias", "declare", "export", "local", "readonly", "typeset",
++ (char *)NULL
++ };
++ int i;
++
++ for (i = 0; assignment_builtins[i]; i++)
++ if (strcmp(command, assignment_builtins[i]) == 0) return 1;
++ return 0;
++}
++
++int
++is_special_builtin(name)
++ const char *name;
++{
++ static const char *special_builtins[] = {
++ "break", ":", ".", "continue", "eval", "exec", "exit",
++ "export", "readonly", "return", "set", "shift", "times",
++ "trap", "unset", (char *)NULL
++ };
++ int i;
++
++ if (!name) return 0;
++ for (i = 0; special_builtins[i]; i++)
++ if (equal(name, special_builtins[i])) return 1;
++ return 0;
++}
++
++STATIC const char *
++get_standard_path()
++{
++ char *p;
++ size_t len;
++
++ len = confstr(_CS_PATH, NULL, 0);
++ p = stalloc(len + 2);
++ *p = '\0';
++ confstr(_CS_PATH, p, len);
++ return p;
+ }
+diff -urN netbsd-sh/eval.h ash-0.3.7.orig/eval.h
+--- netbsd-sh/eval.h Fri Jan 28 13:03:00 2000
++++ ash-0.3.7.orig/eval.h Mon Apr 23 22:16:46 2001
+@@ -61,6 +61,7 @@
+ int falsecmd __P((int, char **));
+ int truecmd __P((int, char **));
+ int execcmd __P((int, char **));
++int is_special_builtin __P((const char *));
+
+ /* in_function returns nonzero if we are currently evaluating a function */
+ #define in_function() funcnest
+diff -urN netbsd-sh/exec.c ash-0.3.7.orig/exec.c
+--- netbsd-sh/exec.c Fri Jan 12 17:50:35 2001
++++ ash-0.3.7.orig/exec.c Mon Apr 23 22:16:46 2001
+@@ -51,6 +51,7 @@
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <stdlib.h>
++#include <sysexits.h>
+
+ /*
+ * When commands are first encountered, they are entered in a hash table.
+@@ -108,6 +109,9 @@
+ STATIC void clearcmdentry __P((int));
+ STATIC struct tblentry *cmdlookup __P((char *, int));
+ STATIC void delete_cmd_entry __P((void));
++STATIC int describe_command __P((char *, int));
++STATIC int path_change __P((const char *, int *));
++STATIC int is_regular_builtin __P((const char *));
+
+
+
+@@ -164,7 +172,7 @@
+ char **envp;
+ {
+ int e;
+-#ifndef BSD
++#if !defined(BSD) && !defined(linux)
+ char *p;
+ #endif
+
+@@ -180,7 +188,7 @@
+ initshellproc();
+ setinputfile(cmd, 0);
+ commandname = arg0 = savestr(argv[0]);
+-#ifndef BSD
++#if !defined(BSD) && !defined(linux)
+ pgetc(); pungetc(); /* fill up input buffer */
+ p = parsenextc;
+ if (parsenleft > 2 && p[0] == '#' && p[1] == '!') {
+@@ -195,7 +203,7 @@
+ }
+
+
+-#ifndef BSD
++#if !defined(BSD) && !defined(linux)
+ /*
+ * Execute an interpreter introduced by "#!", for systems where this
+ * feature has not been built into the kernel. If the interpreter is
+@@ -351,27 +359,29 @@
+ if (*argptr == NULL) {
+ for (pp = cmdtable ; pp < &cmdtable[CMDTABLESIZE] ; pp++) {
+ for (cmdp = *pp ; cmdp ; cmdp = cmdp->next) {
+- printentry(cmdp, verbose);
++ if (cmdp->cmdtype != CMDBUILTIN) {
++ printentry(cmdp, verbose);
++ }
+ }
+ }
+ return 0;
+ }
++ c = 0;
+ while ((name = *argptr) != NULL) {
+ if ((cmdp = cmdlookup(name, 0)) != NULL
+ && (cmdp->cmdtype == CMDNORMAL
+ || (cmdp->cmdtype == CMDBUILTIN && builtinloc >= 0)))
+ delete_cmd_entry();
+ find_command(name, &entry, DO_ERR, pathval());
+- if (verbose) {
+- if (entry.cmdtype != CMDUNKNOWN) { /* if no error msg */
+- cmdp = cmdlookup(name, 0);
+- printentry(cmdp, verbose);
+- }
++ if (entry.cmdtype == CMDUNKNOWN) c = 1;
++ else if (verbose) {
++ cmdp = cmdlookup(name, 0);
++ if (cmdp) printentry(cmdp, verbose);
+ flushall();
+ }
+ argptr++;
+ }
+- return 0;
++ return c;
+ }
+
+
+@@ -435,6 +445,10 @@
+ struct stat statb;
+ int e;
+ int i;
++ int bltin;
++ int firstchange;
++ int updatetbl;
++ int regular;
+
+ /* If name contains a slash, don't use the hash table */
+ if (strchr(name, '/') != NULL) {
+@@ -459,12 +473,54 @@
+ return;
+ }
+
++ updatetbl = 1;
++ if (act & DO_BRUTE) {
++ firstchange = path_change(path, &bltin);
++ } else {
++ bltin = builtinloc;
++ firstchange = 9999;
++ }
++
+ /* If name is in the table, and not invalidated by cd, we're done */
+- if ((cmdp = cmdlookup(name, 0)) != NULL && cmdp->rehash == 0)
+- goto success;
++ if ((cmdp = cmdlookup(name, 0)) != NULL && cmdp->rehash == 0) {
++ if (cmdp->cmdtype == CMDFUNCTION) {
++ if (act & DO_NOFUN) {
++ updatetbl = 0;
++ } else {
++ goto success;
++ }
++ } else if (act & DO_BRUTE) {
++ if ((cmdp->cmdtype == CMDNORMAL &&
++ cmdp->param.index >= firstchange) ||
++ (cmdp->cmdtype == CMDBUILTIN &&
++ ((builtinloc < 0 && bltin >= 0) ?
++ bltin : builtinloc) >= firstchange)) {
++ /* need to recompute the entry */
++ } else {
++ goto success;
++ }
++ } else {
++ goto success;
++ }
++ }
++
++ if ((regular = is_regular_builtin(name))) {
++ if (cmdp && (cmdp->cmdtype == CMDBUILTIN)) {
++ goto success;
++ }
++ } else if (act & DO_BRUTE) {
++ if (firstchange == 0) {
++ updatetbl = 0;
++ }
++ }
+
+ /* If %builtin not in path, check for builtin next */
+- if (builtinloc < 0 && (i = find_builtin(name)) >= 0) {
++ if ((bltin < 0 || regular) && (i = find_builtin(name)) >= 0) {
++ if (!updatetbl) {
++ entry->cmdtype = CMDBUILTIN;
++ entry->u.index = i;
++ return;
++ }
+ INTOFF;
+ cmdp = cmdlookup(name, 1);
+ cmdp->cmdtype = CMDBUILTIN;
+@@ -475,7 +531,7 @@
+
+ /* We have to search path. */
+ prev = -1; /* where to start */
+- if (cmdp) { /* doing a rehash */
++ if (cmdp && cmdp->rehash) { /* doing a rehash */
+ if (cmdp->cmdtype == CMDBUILTIN)
+ prev = builtinloc;
+ else
+@@ -488,26 +544,38 @@
+ while ((fullname = padvance(&path, name)) != NULL) {
+ stunalloc(fullname);
+ idx++;
++ if (idx >= firstchange) {
++ updatetbl = 0;
++ }
+ if (pathopt) {
+ if (prefix("builtin", pathopt)) {
+- if ((i = find_builtin(name)) < 0)
+- goto loop;
+- INTOFF;
+- cmdp = cmdlookup(name, 1);
+- cmdp->cmdtype = CMDBUILTIN;
+- cmdp->param.index = i;
+- INTON;
+- goto success;
+- } else if (prefix("func", pathopt)) {
++ if ((i = find_builtin(name)) >= 0) {
++ if (!updatetbl) {
++ entry->cmdtype = CMDBUILTIN;
++ entry->u.index = i;
++ return;
++ }
++ INTOFF;
++ cmdp = cmdlookup(name, 1);
++ cmdp->cmdtype = CMDBUILTIN;
++ cmdp->param.index = i;
++ INTON;
++ goto success;
++ } else {
++ continue;
++ }
++ } else if (!(act & DO_NOFUN) &&
++ prefix("func", pathopt)) {
+ /* handled below */
+ } else {
+- goto loop; /* ignore unimplemented options */
++ continue; /* ignore unimplemented options */
+ }
+ }
+ /* if rehash, don't redo absolute path names */
+- if (fullname[0] == '/' && idx <= prev) {
++ if (fullname[0] == '/' && idx <= prev &&
++ idx < firstchange) {
+ if (idx < prev)
+- goto loop;
++ continue;
+ TRACE(("searchexec \"%s\": no change\n", name));
+ goto success;
+ }
+@@ -522,7 +590,7 @@
+ }
+ e = EACCES; /* if we fail, this will be the error */
+ if (!S_ISREG(statb.st_mode))
+- goto loop;
++ continue;
+ if (pathopt) { /* this is a %func directory */
+ stalloc(strlen(fullname) + 1);
+ readcmdfile(fullname);
+@@ -544,6 +612,13 @@
+ }
+ #endif
+ TRACE(("searchexec \"%s\" returns \"%s\"\n", name, fullname));
++ /* If we aren't called with DO_BRUTE and cmdp is set, it must
++ be a function and we're being called with DO_NOFUN */
++ if (!updatetbl) {
++ entry->cmdtype = CMDNORMAL;
++ entry->u.index = idx;
++ return;
++ }
+ INTOFF;
+ cmdp = cmdlookup(name, 1);
+ cmdp->cmdtype = CMDNORMAL;
+@@ -553,7 +628,7 @@
+ }
+
+ /* We failed. If there was an entry for this command, delete it */
+- if (cmdp)
++ if (cmdp && updatetbl)
+ delete_cmd_entry();
+ if (act & DO_ERR)
+ outfmt(out2, "%s: %s\n", name, errmsg(e, E_EXEC));
+@@ -618,37 +693,12 @@
+ changepath(newval)
+ const char *newval;
+ {
+- const char *old, *new;
+- int idx;
+ int firstchange;
+ int bltin;
+
+- old = pathval();
+- new = newval;
+- firstchange = 9999; /* assume no change */
+- idx = 0;
+- bltin = -1;
+- for (;;) {
+- if (*old != *new) {
+- firstchange = idx;
+- if ((*old == '\0' && *new == ':')
+- || (*old == ':' && *new == '\0'))
+- firstchange++;
+- old = new; /* ignore subsequent differences */
+- }
+- if (*new == '\0')
+- break;
+- if (*new == '%' && bltin < 0 && prefix("builtin", new + 1))
+- bltin = idx;
+- if (*new == ':') {
+- idx++;
+- }
+- new++, old++;
+- }
++ firstchange = path_change(newval, &bltin);
+ if (builtinloc < 0 && bltin >= 0)
+ builtinloc = bltin; /* zap builtins */
+- if (builtinloc >= 0 && bltin < 0)
+- firstchange = 0;
+ clearcmdentry(firstchange);
+ builtinloc = bltin;
+ }
+@@ -838,11 +888,9 @@
+ {
+ struct cmdentry entry;
+
+- INTOFF;
+ entry.cmdtype = CMDFUNCTION;
+ entry.u.func = copyfunc(func);
+ addcmdentry(name, &entry);
+- INTON;
+ }
+
+
+@@ -944,4 +992,190 @@
+ }
+ }
+ return err;
++}
++
++STATIC int
++describe_command(command, verbose)
++ char *command;
++ int verbose;
++{
++ struct cmdentry entry;
++ struct tblentry *cmdp;
++ char **pp;
++ struct alias *ap;
++ extern char *const parsekwd[];
++
++ for (pp = (char **)parsekwd; *pp; pp++)
++ if (**pp == *command && equal(*pp, command))
++ break;
++
++ if (*pp) {
++ if (verbose) {
++ out1fmt("%s is a reserved word\n", command);
++ } else {
++ out1fmt("%s\n", command);
++ }
++ return 0;
++ }
++
++ /* Then look at the aliases */
++ if ((ap = lookupalias(command, 1)) != NULL) {
++ if (verbose) {
++ out1fmt("%s is aliased to `%s'\n", command, ap->val);
++ } else {
++ out1fmt("alias %s='%s'\n", command, ap->val);
++ }
++ return 0;
++ }
++
++ /* Then check if it is a tracked alias */
++ if ((cmdp = cmdlookup(command, 0)) != NULL) {
++ entry.cmdtype = cmdp->cmdtype;
++ entry.u = cmdp->param;
++ }
++ else {
++ /* Finally use brute force */
++ find_command(command, &entry, DO_ABS, pathval());
++ }
++
++ switch (entry.cmdtype) {
++ case CMDNORMAL: {
++ int j = entry.u.index;
++ const char *path = pathval();
++ char *name;
++ if (j == -1)
++ name = command;
++ else {
++ do {
++ name = padvance(&path, command);
++ stunalloc(name);
++ } while (--j >= 0);
++ }
++ if (verbose) {
++ out1fmt("%s is %s\n", command, name);
++ } else {
++ out1fmt("%s\n", name);
++ }
++ break;
++ }
++ case CMDFUNCTION:
++ if (verbose) {
++ out1fmt("%s is a function\n", command);
++ } else {
++ out1fmt("%s\n", command);
++ }
++ break;
++ case CMDBUILTIN:
++ if (verbose) {
++ if (is_special_builtin(command)) {
++ out1fmt("%s is a special built-in utility\n", command);
++ } else {
++ out1fmt("%s is a built-in utility\n", command);
++ }
++ } else {
++ out1fmt("%s\n", command);
++ }
++ break;
++ default:
++ outfmt(out2, "%s not found\n", command);
++ return 127;
++ }
++
++ return 0;
++}
++
++int
++commandcmd(argc, argv)
++ int argc;
++ char **argv;
++{
++ int c;
++ int default_path = 0;
++ int verify_only = 0;
++ int verbose_verify_only = 0;
++
++ while ((c = nextopt("pvV")) != '\0')
++ switch (c) {
++ case 'p':
++ default_path = 1;
++ break;
++ case 'v':
++ verify_only = 1;
++ break;
++ case 'V':
++ verbose_verify_only = 1;
++ break;
++ default:
++ outfmt(out2,
++"command: nextopt returned character code 0%o\n", c);
++ return EX_SOFTWARE;
++ }
++
++ if (default_path + verify_only + verbose_verify_only > 1 ||
++ !*argptr) {
++ outfmt(out2,
++"command [-p] command [arg ...]\n");
++ outfmt(out2,
++"command {-v|-V} command\n");
++ return EX_USAGE;
++ }
++
++ if (verify_only || verbose_verify_only) {
++ return describe_command(*argptr, verbose_verify_only);
++ }
++
++ return 0;
++}
++
++STATIC int
++path_change(newval, bltin)
++ const char *newval;
++ int *bltin;
++{
++ const char *old, *new;
++ int idx;
++ int firstchange;
++
++ old = pathval();
++ new = newval;
++ firstchange = 9999; /* assume no change */
++ idx = 0;
++ *bltin = -1;
++ for (;;) {
++ if (*old != *new) {
++ firstchange = idx;
++ if ((*old == '\0' && *new == ':')
++ || (*old == ':' && *new == '\0'))
++ firstchange++;
++ old = new; /* ignore subsequent differences */
++ }
++ if (*new == '\0')
++ break;
++ if (*new == '%' && *bltin < 0 && prefix("builtin", new + 1))
++ *bltin = idx;
++ if (*new == ':') {
++ idx++;
++ }
++ new++, old++;
++ }
++ if (builtinloc >= 0 && *bltin < 0)
++ firstchange = 0;
++ return firstchange;
++}
++
++STATIC int
++is_regular_builtin(name)
++ const char *name;
++{
++ static const char *regular_builtins[] = {
++ "alias", "bg", "cd", "command", "false", "fc", "fg",
++ "getopts", "jobs", "kill", "newgrp", "read", "true",
++ "umask", "unalias", "wait", (char *)NULL
++ };
++ int i;
++
++ if (!name) return 0;
++ for (i = 0; regular_builtins[i]; i++)
++ if (equal(name, regular_builtins[i])) return 1;
++ return 0;
+ }
+diff -urN netbsd-sh/exec.h ash-0.3.7.orig/exec.h
+--- netbsd-sh/exec.h Tue May 23 12:03:19 2000
++++ ash-0.3.7.orig/exec.h Mon Apr 23 22:16:46 2001
+@@ -56,6 +56,8 @@
+
+ #define DO_ERR 1 /* find_command prints errors */
+ #define DO_ABS 2 /* find_command checks absolute paths */
++#define DO_NOFUN 4 /* find_command ignores functions */
++#define DO_BRUTE 8 /* find_command ignores hash table */
+
+ extern const char *pathopt; /* set by padvance */
+ extern int exerrno; /* last exec error */
+@@ -74,3 +76,4 @@
+ void defun __P((char *, union node *));
+ int unsetfunc __P((char *));
+ int typecmd __P((int, char **));
++int commandcmd __P((int, char **));
+
diff --git a/source/ap/ash/patches/ash-debian.patch b/source/ap/ash/patches/ash-debian.patch
new file mode 100644
index 000000000..d3e79bfcd
--- /dev/null
+++ b/source/ap/ash/patches/ash-debian.patch
@@ -0,0 +1,702 @@
+diff -urN netbsd-sh/debian/README.debian ash-0.3.7.orig/debian/README.debian
+--- netbsd-sh/debian/README.debian Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/README.debian Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,14 @@
++ash for DEBIAN
++----------------------
++
++This is a very simple port of ash taken from NetBSD-current on 1997/06/18. The
++file setmode.c was taken from src/libc/gen and is needed since the Linux libc
++does provide getmode(3) or setmode(3). History editing is disabled to avoid
++code bloat. This also means that building the package is possible without the
++BSD libedit.
++
++This port is preriodically revised to keep up to date with NetBSD's current
++release.
++
++Herbert Xu <herbert@debian.org>
++$Id: README.debian,v 1.6 2000/08/04 11:33:48 herbert Exp $
+diff -urN netbsd-sh/debian/ash-medium.README.Debian ash-0.3.7.orig/debian/ash-medium.README.Debian
+--- netbsd-sh/debian/ash-medium.README.Debian Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/ash-medium.README.Debian Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,14 @@
++ash for DEBIAN
++----------------------
++
++This is a very simple port of ash taken from NetBSD-current on 1997/06/18. The
++file setmode.c was taken from src/libc/gen and is needed since the Linux libc
++does provide getmode(3) or setmode(3). History editing is disabled to avoid
++code bloat. This also means that building the package is possible without the
++BSD libedit.
++
++This port is preriodically revised to keep up to date with NetBSD's current
++release.
++
++Herbert Xu <herbert@debian.org>
++$Id: ash-medium.README.Debian,v 1.1 2000/08/04 11:49:01 herbert Exp $
+diff -urN netbsd-sh/debian/ash-medium.dirs ash-0.3.7.orig/debian/ash-medium.dirs
+--- netbsd-sh/debian/ash-medium.dirs Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/ash-medium.dirs Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,2 @@
++usr/bin
++usr/share/man/man1
+diff -urN netbsd-sh/debian/ash-udeb.dirs ash-0.3.7.orig/debian/ash-udeb.dirs
+--- netbsd-sh/debian/ash-udeb.dirs Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/ash-udeb.dirs Mon Apr 23 22:16:46 2001
+@@ -0,0 +1 @@
++bin
+diff -urN netbsd-sh/debian/bsdyacc ash-0.3.7.orig/debian/bsdyacc
+--- netbsd-sh/debian/bsdyacc Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/bsdyacc Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,20 @@
++#!/bin/sh -e
++
++if echo "$@" | grep -q -- -o; then
++ OUTPUT=$(echo "$@" |
++ sed 's/.*-o[[:blank:]]\+\([^[:blank:]]\+\)\.c.*/\1/')
++ OPTIONS=$(echo "$@" |
++ sed 's/\(.*\)-o[[:blank:]]\+[^[:blank:]]\+\(.*\)/\1\2/')
++ NEW=1
++else
++ OUTPUT=$(echo "$@" |
++ sed -e 's/.*[[:blank:]]\+\([^[:blank:]]\+\)\.y.*/\1/')
++ OPTIONS="$@"
++ NEW=0
++fi
++
++byacc $OPTIONS
++if [ $NEW = 1 ]; then
++ mv y.tab.c $OUTPUT.c
++fi
++mv y.tab.h $OUTPUT.h
+diff -urN netbsd-sh/debian/changelog ash-0.3.7.orig/debian/changelog
+--- netbsd-sh/debian/changelog Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/changelog Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,429 @@
++ash (0.3.7-14) unstable; urgency=low
++
++ * Removed predependency from udeb (closes: #81995).
++ * Added /bin/sh symlink to udeb (closes: #81967).
++
++ -- Herbert Xu <herbert@debian.org> Sat, 13 Jan 2001 15:23:21 +1100
++
++ash (0.3.7-13) unstable; urgency=low
++
++ * Renamed the udeb to ash-udeb.
++
++ -- Herbert Xu <herbert@debian.org> Wed, 20 Dec 2000 19:32:34 +1100
++
++ash (0.3.7-12) unstable; urgency=low
++
++ * Added support for udebs (Randolph Chung, closes: #79237).
++
++ -- Herbert Xu <herbert@debian.org> Sat, 16 Dec 2000 13:53:28 +1100
++
++ash (0.3.7-11) unstable; urgency=low
++
++ * Preserve the previous exit status upon entering a function
++ (closes: #78374).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 3 Dec 2000 13:34:27 +1100
++
++ash (0.3.7-10) unstable; urgency=low
++
++ * Merged changes for GNU from Igor Khavkine.
++ * Minimise the number of sigactions.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 3 Nov 2000 20:31:52 +1100
++
++ash (0.3.7-9) unstable; urgency=low
++
++ * Predepend on the libraries.
++ * Always save fd 2 when it is redirected (closes: #75302).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 22 Oct 2000 08:40:40 +1100
++
++ash (0.3.7-8) unstable; urgency=high
++
++ * More redirection fixes (closes: #73613).
++
++ -- Herbert Xu <herbert@debian.org> Thu, 5 Oct 2000 18:22:17 +1100
++
++ash (0.3.7-7) unstable; urgency=high
++
++ * Added missing break in redirection code (closes: #72956).
++
++ -- Herbert Xu <herbert@debian.org> Tue, 3 Oct 2000 07:58:04 +1100
++
++ash (0.3.7-6) unstable; urgency=low
++
++ * command -[vV] no longer displays an error message on stdout.
++ * Redirecting to /proc/self/fd/* now works (closes: #72852).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 1 Oct 2000 12:56:39 +1100
++
++ash (0.3.7-5) unstable; urgency=low
++
++ * Implemented set -a.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 30 Sep 2000 16:00:33 +1100
++
++ash (0.3.7-4) unstable; urgency=low
++
++ * Added build-time dependency on debhelper (closes: #69920).
++ * Extended maximum length of arithmetic expansions to match 32-bit integers.
++
++ -- Herbert Xu <herbert@debian.org> Wed, 20 Sep 2000 14:28:16 +1100
++
++ash (0.3.7-3) unstable; urgency=low
++
++ * Switch to the old globbing code since glob(3) is hopelessly broken
++ (closes: #69455).
++
++ -- Herbert Xu <herbert@debian.org> Mon, 21 Aug 2000 20:37:15 +1000
++
++ash (0.3.7-2) unstable; urgency=low
++
++ * Call glob(3) with GLOB_NOMAGIC (ouch).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 6 Aug 2000 17:47:08 +1000
++
++ash (0.3.7-1) unstable; urgency=low
++
++ * NetBSD-current version as of 20000729.
++ * Use fnmatch(3) and glob(3).
++ * Fixed the use of backslashes in the pattern in parameter substitutions,
++ hopefully for the last time.
++ * Applied HETIO patch and built ash.medium (closes: #50788). Will do ash.big
++ when readline is fixed so that it doesn't leak anymore.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 4 Aug 2000 21:36:44 +1000
++
++ash (0.3.6-5) unstable; urgency=low
++
++ * Fixed manpage entry for read with patch from Kevin Ryde (closes: #62500).
++ * Fixed a file descriptor leak for pipelines.
++
++ -- Herbert Xu <herbert@debian.org> Wed, 19 Apr 2000 18:56:20 +1000
++
++ash (0.3.6-4) unstable; urgency=low
++
++ * Fixed the case of an empty command with redirections.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 7 Apr 2000 12:07:18 +1000
++
++ash (0.3.6-3) unstable; urgency=low
++
++ * ! is now recognised correctly.
++ * Ash is now more strict on the syntax, e.g., a lone ! is no longer accepted
++ as an alternative to ! true.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 7 Apr 2000 10:46:06 +1000
++
++ash (0.3.6-2) unstable; urgency=low
++
++ * Fixed a problem with fmtstr() which broke getopts.
++
++ -- Herbert Xu <herbert@debian.org> Sun, 2 Apr 2000 10:49:26 +1000
++
++ash (0.3.6-1) unstable; urgency=low
++
++ * NetBSD-current version as of 20000326.
++ * Added a Build-Depends on groff (closes: #61041).
++ * Implemented noclobber (closes: #59028).
++ * Rewrote output.c to use stream IO.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 1 Apr 2000 19:24:31 +1000
++
++ash (0.3.5-10) frozen unstable; urgency=low
++
++ * Don't stat mail boxes in non-interactive mode (closes: #59213).
++ * Added an fflush(stdout) to the times builtin (closes: #59027).
++ * Documented the times builtin.
++ * Added source depends.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 18 Mar 2000 18:58:44 +1100
++
++ash (0.3.5-9) unstable; urgency=low
++
++ * Double quotes inside paramater substitutions inside double quotes are now
++ ignored as in bash (the originial behaviour was POSIX compliant too but
++ IMHO this one makes a little bit more sense).
++ This one broke mwm (but it was actually mwm's fault).
++ * Corrected backslash/CTLESC treatment for patterns in parameter
++ substitutions.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 6 Nov 1999 18:13:19 +1100
++
++ash (0.3.5-8) unstable; urgency=low
++
++ * Replaced use of echo -n in manual page with escape codes.
++ * Made FHS compliant (closes: #47978).
++ * Restored echo's option processing ability.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 22 Oct 1999 10:20:58 +1000
++
++ash (0.3.5-7) unstable; urgency=low
++
++ * echo no longer supports options.
++ * Don't quote patterns inside parameter substitutions enclosed by double
++ quotes (closes: #47842).
++
++ -- Herbert Xu <herbert@debian.org> Wed, 20 Oct 1999 20:28:14 +1000
++
++ash (0.3.5-6) unstable; urgency=low
++
++ * Use getcwd() instead of /bin/pwd -- Zack Weinberg (closes: #46981).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 10 Oct 1999 16:31:49 +1000
++
++ash (0.3.5-5) unstable; urgency=low
++
++ * Only test for -e on simple commands (fixes #44559).
++
++ -- Herbert Xu <herbert@debian.org> Wed, 8 Sep 1999 22:18:27 +1000
++
++ash (0.3.5-4) unstable; urgency=low
++
++ * Don't wait for stopped children if job control is disabled (fixes #42814).
++ * Allow an option '(' in a case statement (fixes #42364).
++
++ -- Herbert Xu <herbert@debian.org> Thu, 12 Aug 1999 23:30:30 +1000
++
++ash (0.3.5-3) unstable; urgency=low
++
++ * OK, the fix to the esoteric problem in 0.3.5-1 actually breaks VSASSIGN
++ and VSQUESTION, they should work properly now (fixes #41327).
++
++ -- Herbert Xu <herbert@debian.org> Thu, 15 Jul 1999 22:47:13 +1000
++
++ash (0.3.5-2) unstable; urgency=low
++
++ * PATH search and execution is now correct.
++ * hash no longer shows builtins.
++ * Added kill builtin.
++ * New description from James R. van Zandt reformatted by Josip Rodin.
++
++ -- Herbert Xu <herbert@debian.org> Mon, 12 Jul 1999 18:51:42 +1000
++
++ash (0.3.5-1) unstable; urgency=low
++
++ * New upstream release.
++ * Adapted to new pmake (fixes #38737).
++ * Fixed behvaiour of backslashes preceding a closing brace for a parameter
++ substituion inside double quotes (even bash messes this one up :).
++ * Fixed command (fixes #34639).
++ * Fixed a pipe bug where stdin may be wrongly closed (fixes #35452).
++ * Revamped getopts (fixes #39694).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 4 Jul 1999 12:19:01 +1000
++
++ash (0.3.4-7) unstable; urgency=low
++
++ * Fixed a glibc 2.1 compatitibility problem.
++ * Fixed a PWD inconsistency that stuffed up the kernel compilation.
++
++ -- Herbert Xu <herbert@debian.org> Mon, 17 May 1999 23:14:57 +1000
++
++ash (0.3.4-6) unstable; urgency=low
++
++ * Fixed incorrect -e test due to the last bug fix (fixes #26509).
++
++ -- Herbert Xu <herbert@debian.org> Tue, 8 Sep 1998 10:02:46 +1000
++
++ash (0.3.4-5) unstable; urgency=low
++
++ * Use test_eaccess from bash instead of access(2) (fixes #26110).
++
++ -- Herbert Xu <herbert@debian.org> Wed, 26 Aug 1998 21:22:49 +1000
++
++ash (0.3.4-4) unstable; urgency=low
++
++ * Only upload to unstable.
++
++ -- Herbert Xu <herbert@debian.org> Tue, 5 May 1998 18:01:02 +1000
++
++ash (0.3.4-3) frozen unstable; urgency=low
++
++ * Applied sparc patch (fixes #21562).
++
++ -- Herbert Xu <herbert@debian.org> Fri, 1 May 1998 19:48:13 +1000
++
++ash (0.3.4-2) frozen unstable; urgency=low
++
++ * Fixed the incorrect trap fixes (fixes #20363).
++
++ -- Herbert Xu <herbert@debian.org> Thu, 16 Apr 1998 21:07:10 +1000
++
++ash (0.3.4-1) unstable; urgency=low
++
++ * New upstream release.
++ * Reverted word splitting change in 0.3.2-1 since the fix was broken and
++ major work (the quote removal is done too quickly at the moment) is needed
++ to fix it properly.
++ * Fixed more trap noncompliance.
++
++ -- Herbert Xu <herbert@debian.org> Thu, 19 Mar 1998 22:59:12 +1100
++
++ash (0.3.2-5) unstable; urgency=low
++
++ * Fixed a bug when doing pattern matching in parameter expansions.
++
++ -- Herbert Xu <herbert@debian.org> Tue, 10 Mar 1998 21:25:40 +1100
++
++ash (0.3.2-4) unstable; urgency=low
++
++ * Allow ] to be quoted in bracket expressions (fixes #17533).
++ * Move dh_fixperms to second last spot (fixes #18267).
++ * Don't do field splitting in evalfor.
++
++ -- Herbert Xu <herbert@debian.org> Tue, 17 Feb 1998 13:32:09 +1100
++
++ash (0.3.2-3) unstable; urgency=low
++
++ * Fixed stupid core dump.
++
++ -- Herbert Xu <herbert@debian.org> Wed, 11 Feb 1998 21:33:55 +1100
++
++ash (0.3.2-2) unstable; urgency=low
++
++ * Hack for special builtins (fixes #18055).
++ * Hack for command.
++
++ -- Herbert Xu <herbert@debian.org> Wed, 11 Feb 1998 21:19:46 +1100
++
++ash (0.3.2-1) unstable; urgency=low
++
++ * NetBSD-current version as of 19980209.
++ * Fixed a word splitting problem after parameter expansion thanks to Alexey
++ Marinichev.
++ * Converted to debhelper (fixes #14612, #15005).
++
++ -- Herbert Xu <herbert@debian.org> Mon, 9 Feb 1998 16:53:48 +1100
++
++ash (0.3.1-20) unstable; urgency=low
++
++ * Fixed -e problem with eval.
++
++ -- Herbert Xu <herbert@debian.org> Sun, 7 Dec 1997 20:19:00 +1100
++
++ash (0.3.1-19) unstable; urgency=low
++
++ * Fixed -e problem with command substitution.
++
++ -- Herbert Xu <herbert@debian.org> Sun, 7 Dec 1997 19:44:49 +1100
++
++ash (0.3.1-18) unstable; urgency=low
++
++ * Do not link with ncurses (#15485).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 30 Nov 1997 12:00:11 +1100
++
++ash (0.3.1-17) unstable; urgency=low
++
++ * Set PATH like bash (#15238).
++
++ -- Herbert Xu <herbert@debian.org> Wed, 26 Nov 1997 16:17:27 +1100
++
++ash (0.3.1-16) unstable; urgency=low
++
++ * Fixed incorrect assignment builtin code.
++
++ -- Herbert Xu <herbert@debian.org> Mon, 24 Nov 1997 16:19:10 +1100
++
++ash (0.3.1-15) unstable; urgency=low
++
++ * hash now returns error codes (needed by the Linux kernel).
++
++ -- Herbert Xu <herbert@debian.org> Sun, 23 Nov 1997 21:37:08 +1100
++
++ash (0.3.1-14) unstable; urgency=low
++
++ * Disabled word-splitting for assignment builtins.
++
++ -- Herbert Xu <herbert@debian.org> Sun, 23 Nov 1997 12:45:15 +1100
++
++ash (0.3.1-13) unstable; urgency=low
++
++ * ! is now recognised even after &&/||.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 21 Nov 1997 22:09:05 +1100
++
++ash (0.3.1-12) unstable; urgency=low
++
++ * More fixes to the handling of SIGINT when forking.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 14 Nov 1997 15:14:32 +1100
++
++ash (0.3.1-11) unstable; urgency=low
++
++ * Ignore SIGINT when forking non-interactively.
++
++ -- Herbert Xu <herbert@debian.org> Mon, 3 Nov 1997 12:00:02 +1100
++
++ash (0.3.1-10) unstable; urgency=low
++
++ * echo now handles options correctly.
++ * echo nolonger returns 0 if erorrs occured while writing to stdout.
++ * New code from GNU echo merged.
++ * Error messages from test now work.
++
++ -- Herbert Xu <herbert@debian.org> Wed, 8 Oct 1997 21:47:13 +1000
++
++ash (0.3.1-9) unstable; urgency=low
++
++ * ! is recognised at pipeline level like bash.
++
++ -- Herbert Xu <herbert@debian.org> Mon, 15 Sep 1997 23:13:45 +1000
++
++ash (0.3.1-8) unstable; urgency=medium
++
++ * Old patch regarding SIGCHLD in again.
++
++ -- Herbert Xu <herbert@debian.org> Sun, 31 Aug 1997 11:20:27 +1000
++
++ash (0.3.1-7) unstable; urgency=low
++
++ * /bin/sh -e is behaving even better now (for loops within conditionals).
++
++ -- Herbert Xu <herbert@debian.org> Sat, 23 Aug 1997 22:08:19 +1000
++
++ash (0.3.1-6) unstable; urgency=low
++
++ * /bin/sh -e is behaving better now.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 23 Aug 1997 13:16:26 +1000
++
++ash (0.3.1-5) unstable; urgency=low
++
++ * hash -v /dir/command doesn't coredump anymore.
++ * type /dir/command now works correctly.
++
++ -- Herbert Xu <herbert@debian.org> Fri, 1 Aug 1997 20:48:19 +1000
++
++ash (0.3.1-4) unstable; urgency=low
++
++ * trap now understands symbolic signal names.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 26 Jul 1997 14:04:46 +1000
++
++ash (0.3.1-3) unstable; urgency=low
++
++ * Added the builtin test command.
++
++ -- Herbert Xu <herbert@debian.org> Sun, 20 Jul 1997 15:00:14 +1000
++
++ash (0.3.1-2) unstable; urgency=medium
++
++ * Fixed a coredump involving $*.
++
++ -- Herbert Xu <herbert@debian.org> Sat, 19 Jul 1997 12:03:02 +1000
++
++ash (0.3.1-1) unstable; urgency=medium
++
++ * NetBSD-current version as of 19970715.
++ * Fixed a "use after free" bug (#11294).
++
++ -- Herbert Xu <herbert@debian.org> Fri, 18 Jul 1997 13:48:09 +1000
++
++ash (0.3-1) unstable; urgency=low
++
++ * Initial Release.
++
++ -- Herbert Xu <herbert@debian.org> Thu, 19 Jun 1997 19:29:16 +1000
++
+diff -urN netbsd-sh/debian/control ash-0.3.7.orig/debian/control
+--- netbsd-sh/debian/control Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/control Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,69 @@
++Source: ash
++Section: shells
++Priority: optional
++Maintainer: Herbert Xu <herbert@debian.org>
++Build-Depends: byacc, debhelper, flex, pmake, groff
++Standards-Version: 3.2.1
++
++Package: ash
++Architecture: any
++Pre-Depends: ${shlibs:Depends}
++Description: NetBSD /bin/sh
++ "ash" is a POSIX compliant shell that is much smaller than "bash".
++ We take advantage of that by making it the shell on the installation
++ root floppy, where space is at a premium.
++ .
++ It can be usefully installed as /bin/sh (because it executes scripts
++ somewhat faster than "bash"), or as the default shell either of root
++ or of a second user with a userid of 0 (because it depends on fewer
++ libraries, and is therefore less likely to be affected by an upgrade
++ problem or a disk failure). It is also useful for checking that a
++ script uses only POSIX syntax.
++ .
++ "bash" is a better shell for most users, since it has some nice
++ features absent from "ash", and is a required part of the system.
++
++Package: ash-medium
++Architecture: any
++Pre-Depends: ${shlibs:Depends}
++Priority: extra
++Description: NetBSD /bin/sh with HETIO
++ This is a slightly bigger version of the standard ash package with a
++ hack that provides primitive history support. It may be useful on
++ boot floppies where space is at a premium, yet users still need the
++ ability to access previous commands in the same session. If you're
++ not a boot floppies maintainer, you should probably go for ash,
++ ash.big (not yet available), or bash.
++ .
++ "ash" is a POSIX compliant shell that is much smaller than "bash".
++ We take advantage of that by making it the shell on the installation
++ root floppy, where space is at a premium.
++ .
++ It can be usefully installed as /bin/sh (because it executes scripts
++ somewhat faster than "bash"), or as the default shell either of root
++ or of a second user with a userid of 0 (because it depends on fewer
++ libraries, and is therefore less likely to be affected by an upgrade
++ problem or a disk failure). It is also useful for checking that a
++ script uses only POSIX syntax.
++ .
++ "bash" is a better shell for most users, since it has some nice
++ features absent from "ash", and is a required part of the system.
++
++Package: ash-udeb
++Architecture: any
++Section: debian-installer
++Description: NetBSD /bin/sh for boot floppies
++ "ash" is a POSIX compliant shell that is much smaller than "bash".
++ We take advantage of that by making it the shell on the installation
++ root floppy, where space is at a premium.
++ .
++ It can be usefully installed as /bin/sh (because it executes scripts
++ somewhat faster than "bash"), or as the default shell either of root
++ or of a second user with a userid of 0 (because it depends on fewer
++ libraries, and is therefore less likely to be affected by an upgrade
++ problem or a disk failure). It is also useful for checking that a
++ script uses only POSIX syntax.
++ .
++ "bash" is a better shell for most users, since it has some nice
++ features absent from "ash", and is a required part of the system.
++
+diff -urN netbsd-sh/debian/copyright ash-0.3.7.orig/debian/copyright
+--- netbsd-sh/debian/copyright Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/copyright Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,18 @@
++This package was debianized by Mark W. Eichin eichin@kitten.gen.ma.us on
++Mon, 24 Feb 1997 16:00:16 -0500.
++
++This package was re-ported from NetBSD and debianized by
++Herbert Xu herbert@debian.org on Thu, 19 Jun 1997 19:29:16 +1000.
++
++It was downloaded from ftp.netbsd.org.
++
++Copyright:
++
++Copyright (c) 1991, 1993
++ The Regents of the University of California. All rights reserved.
++
++This code is derived from software contributed to Berkeley by Kenneth Almquist.
++
++Please refer to /usr/share/common-licenses/BSD for details.
++
++$Id: copyright,v 1.3 2000/08/04 11:48:49 herbert Exp $
+diff -urN netbsd-sh/debian/dirs ash-0.3.7.orig/debian/dirs
+--- netbsd-sh/debian/dirs Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/dirs Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,2 @@
++bin
++usr/share/man/man1
+diff -urN netbsd-sh/debian/rules ash-0.3.7.orig/debian/rules
+--- netbsd-sh/debian/rules Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/debian/rules Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,92 @@
++#!/usr/bin/make -f
++# $Id: rules,v 1.22 2001/01/13 04:23:49 herbert Exp $
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++CDEF = -g -O2 -Wall -DBSD=1 -DSMALL -D_GNU_SOURCE \
++ -DGLOB_BROKEN \
++ -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -D_DIAGASSERT\(x\)=
++CDEFSM = -Os -fomit-frame-pointer -Wall -DBSD=1 -DSMALL -D_GNU_SOURCE \
++ -DGLOB_BROKEN \
++ -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -D_DIAGASSERT\(x\)=
++
++sh.hetio:
++ chmod u+x debian/bsdyacc
++ rm -f *.o
++ pmake CFLAGS='$(CDEF)' HETIO= YACC=`pwd`/debian/bsdyacc
++ mv sh sh.hetio
++
++sh:
++ chmod u+x debian/bsdyacc
++ rm -f *.o
++ pmake CFLAGS='$(CDEF)' YACC=`pwd`/debian/bsdyacc
++
++sh.udeb:
++ chmod u+x debian/bsdyacc
++ rm -f *.o
++ pmake CFLAGS='$(CDEFSM)' YACC=`pwd`/debian/bsdyacc
++ mv sh sh.udeb
++
++build: build-stamp
++build-stamp: sh.hetio sh.udeb sh
++ dh_testdir
++
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp
++
++ pmake clean HETIO=
++ rm -f sh.cat1 mksignames signames.h sh.hetio sh.udeb
++
++ dh_clean
++
++# Build architecture-independent files here.
++binary-indep: build
++# We have nothing to do by default.
++
++# Build architecture-dependent files here.
++binary-arch: build
++# dh_testversion
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++
++ install sh debian/tmp/bin/ash
++ install -m 644 sh.1 debian/tmp/usr/share/man/man1/ash.1
++ install sh.hetio debian/ash-medium/usr/bin/ash.medium
++ install -m 644 sh.1 debian/ash-medium/usr/share/man/man1/ash.medium.1
++ install sh.udeb debian/ash-udeb/bin/ash
++ ln -s ash debian/ash-udeb/bin/sh
++
++ dh_installdocs -Nash-udeb
++ dh_installexamples
++ dh_installmenu
++# dh_installinit
++ dh_installcron
++# dh_installmanpages
++# dh_undocumented
++ dh_installchangelogs -Nash-udeb
++ dh_strip
++ dh_compress
++ dh_fixperms
++ dh_suidregister
++ dh_installdeb -Nash-udeb
++ dh_shlibdeps
++ dh_gencontrol
++# dh_makeshlibs
++ dh_md5sums
++ dh_builddeb
++ for i in ../ash-udeb_*.deb; do mv $$i $${i%deb}udeb; done
++ sed '/^[^ ]*\.udeb/d; s/^\(ash-udeb_[^ ]*\.\)deb/\1udeb/' \
++ debian/files > debian/files.new
++ mv debian/files.new debian/files
++
++source diff:
++ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary
+
diff --git a/source/ap/ash/patches/ash-echo.patch b/source/ap/ash/patches/ash-echo.patch
new file mode 100644
index 000000000..89d93472f
--- /dev/null
+++ b/source/ap/ash/patches/ash-echo.patch
@@ -0,0 +1,91 @@
+diff -urN netbsd-sh/bltin/echo.c ash-0.3.7.orig/bltin/echo.c
+--- netbsd-sh/bltin/echo.c Sun Nov 3 13:06:22 1996
++++ ash-0.3.7.orig/bltin/echo.c Mon Apr 23 22:16:46 2001
+@@ -44,7 +44,13 @@
+
+ #define main echocmd
+
++#ifdef _GNU_SOURCE
++#include <stdio.h>
++
++#include "../mystring.h"
++#else
+ #include "bltin.h"
++#endif
+
+ /* #define eflag 1 */
+
+@@ -53,7 +59,6 @@
+ register char **ap;
+ register char *p;
+ register char c;
+- int count;
+ int nflag = 0;
+ #ifndef eflag
+ int eflag = 0;
+@@ -62,21 +67,26 @@
+ ap = argv;
+ if (argc)
+ ap++;
+- if ((p = *ap) != NULL) {
++ while ((p = *ap) != NULL && *p == '-') {
+ if (equal(p, "-n")) {
+- nflag++;
+- ap++;
++ nflag = 1;
+ } else if (equal(p, "-e")) {
+ #ifndef eflag
+- eflag++;
++ eflag = 1;
++#endif
++ } else if (equal(p, "-E")) {
++#ifndef eflag
++ eflag = 0;
+ #endif
+- ap++;
+ }
++ else break;
++ ap++;
+ }
+ while ((p = *ap++) != NULL) {
+ while ((c = *p++) != '\0') {
+ if (c == '\\' && eflag) {
+- switch (*p++) {
++ switch (c = *p++) {
++ case 'a': c = '\007'; break;
+ case 'b': c = '\b'; break;
+ case 'c': return 0; /* exit */
+ case 'f': c = '\f'; break;
+@@ -85,11 +95,13 @@
+ case 't': c = '\t'; break;
+ case 'v': c = '\v'; break;
+ case '\\': break; /* c = '\\' */
+- case '0':
+- c = 0;
+- count = 3;
+- while (--count >= 0 && (unsigned)(*p - '0') < 8)
+- c = (c << 3) + (*p++ - '0');
++ case '0': case '1': case '2': case '3':
++ case '4': case '5': case '6': case '7':
++ c -= '0';
++ if (*p >= '0' && *p <= '7')
++ c = c * 8 + (*p++ - '0');
++ if (*p >= '0' && *p <= '7')
++ c = c * 8 + (*p++ - '0');
+ break;
+ default:
+ p--;
+@@ -103,5 +115,12 @@
+ }
+ if (! nflag)
+ putchar('\n');
++#ifdef _GNU_SOURCE
++ fflush(stdout);
++ if (ferror(stdout)) {
++ clearerr(stdout);
++ return 1;
++ }
++#endif
+ return 0;
+ }
+
diff --git a/source/ap/ash/patches/ash-freebsd.patch b/source/ap/ash/patches/ash-freebsd.patch
new file mode 100644
index 000000000..b0b114470
--- /dev/null
+++ b/source/ap/ash/patches/ash-freebsd.patch
@@ -0,0 +1,60 @@
+diff -ur ash-0.4.0/bltin/echo.c ash-0.4.0+free/bltin/echo.c
+--- ash-0.4.0/bltin/echo.c Tue Apr 24 02:03:56 2001
++++ ash-0.4.0+free/bltin/echo.c Tue Apr 24 01:43:15 2001
+@@ -89,6 +89,7 @@
+ case 'a': c = '\007'; break;
+ case 'b': c = '\b'; break;
+ case 'c': return 0; /* exit */
++ case 'e': c = '\033'; break;
+ case 'f': c = '\f'; break;
+ case 'n': c = '\n'; break;
+ case 'r': c = '\r'; break;
+diff -ur ash-0.4.0/cd.c ash-0.4.0+free/cd.c
+--- ash-0.4.0/cd.c Tue Apr 24 02:03:56 2001
++++ ash-0.4.0+free/cd.c Tue Apr 24 01:43:57 2001
+@@ -244,6 +244,7 @@
+ curdir = NULL;
+ getpwd();
+ setvar("PWD", curdir, VEXPORT|VTEXTFIXED);
++ setvar("OLDPWD", prevdir, VEXPORT|VTEXTFIXED);
+ INTON;
+ return;
+ }
+@@ -275,6 +276,7 @@
+ prevdir = curdir;
+ curdir = savestr(stackblock());
+ setvar("PWD", curdir, VEXPORT|VTEXTFIXED);
++ setvar("OLDPWD", prevdir, VEXPORT|VTEXTFIXED);
+ INTON;
+ }
+
+diff -ur ash-0.4.0/main.c ash-0.4.0+free/main.c
+--- ash-0.4.0/main.c Tue Apr 24 02:03:57 2001
++++ ash-0.4.0+free/main.c Tue Apr 24 02:03:26 2001
+@@ -115,6 +115,9 @@
+ struct stackmark smark;
+ volatile int state;
+ char *shinit;
++ int priviliged;
++
++ priviliged = getuid() != geteuid() || getgid() != getegid();
+
+ #if PROFILE
+ monitor(4, etext, profile_buf, sizeof profile_buf, 50);
+@@ -188,11 +191,14 @@
+ read_profile("/etc/profile");
+ state1:
+ state = 2;
+- read_profile(".profile");
++ if (priviliged == 0)
++ read_profile(".profile");
++ else
++ read_profile("/etc/suid_profile");
+ }
+ state2:
+ state = 3;
+- if (getuid() == geteuid() && getgid() == getegid()) {
++ if (iflag && !priviliged) {
+ if ((shinit = lookupvar("ENV")) != NULL && *shinit != '\0') {
+ state = 3;
+ read_profile(shinit);
diff --git a/source/ap/ash/patches/ash-getcwd.patch b/source/ap/ash/patches/ash-getcwd.patch
new file mode 100644
index 000000000..f98f487e3
--- /dev/null
+++ b/source/ap/ash/patches/ash-getcwd.patch
@@ -0,0 +1,13 @@
+diff -urN netbsd-sh/cd.c ash-0.3.7.orig/cd.c
+--- netbsd-sh/cd.c Fri Jul 9 13:02:05 1999
++++ ash-0.3.7.orig/cd.c Mon Apr 23 22:16:46 2001
+@@ -319,7 +319,7 @@
+ * c implementation of getcwd, that does not open a pipe to
+ * /bin/pwd.
+ */
+-#if defined(__NetBSD__) || defined(__SVR4)
++#if defined(__NetBSD__) || defined(__SVR4) || defined(__GLIBC__)
+
+ if (getcwd(buf, sizeof(buf)) == NULL) {
+ char *pwd = getenv("PWD");
+
diff --git a/source/ap/ash/patches/ash-getopt.patch b/source/ap/ash/patches/ash-getopt.patch
new file mode 100644
index 000000000..df88ba0df
--- /dev/null
+++ b/source/ap/ash/patches/ash-getopt.patch
@@ -0,0 +1,198 @@
+diff -urN netbsd-sh/options.c ash-0.3.7.orig/options.c
+--- netbsd-sh/options.c Fri Jul 9 13:02:07 1999
++++ ash-0.3.7.orig/options.c Mon Apr 23 22:16:46 2001
+@@ -79,7 +79,7 @@
+ STATIC void options __P((int));
+ STATIC void minus_o __P((char *, int));
+ STATIC void setoption __P((int, int));
+-STATIC int getopts __P((char *, char *, char **, char ***, char **));
++STATIC int getopts __P((char *, char *, char **, int *, int *));
+
+
+ /*
+@@ -118,7 +118,8 @@
+ arg0 = *argptr++;
+
+ shellparam.p = argptr;
+- shellparam.reset = 1;
++ shellparam.optind = 1;
++ shellparam.optoff = -1;
+ /* assert(shellparam.malloc == 0 && shellparam.nparam == 0); */
+ while (*argptr) {
+ shellparam.nparam++;
+@@ -282,7 +283,8 @@
+ shellparam.malloc = 1;
+ shellparam.nparam = nparam;
+ shellparam.p = newparam;
+- shellparam.optnext = NULL;
++ shellparam.optind = 1;
++ shellparam.optoff = -1;
+ }
+
+
+@@ -330,7 +332,8 @@
+ }
+ ap2 = shellparam.p;
+ while ((*ap2++ = *ap1++) != NULL);
+- shellparam.optnext = NULL;
++ shellparam.optind = 1;
++ shellparam.optoff = -1;
+ INTON;
+ return 0;
+ }
+@@ -363,10 +366,8 @@
+ getoptsreset(value)
+ const char *value;
+ {
+- if (number(value) == 1) {
+- shellparam.optnext = NULL;
+- shellparam.reset = 1;
+- }
++ shellparam.optind = number(value);
++ shellparam.optoff = -1;
+ }
+
+ /*
+@@ -385,50 +386,58 @@
+
+ if (argc < 3)
+ error("Usage: getopts optstring var [arg]");
+- else if (argc == 3)
++ else if (argc == 3) {
+ optbase = shellparam.p;
+- else
++ if (shellparam.optind > shellparam.nparam + 1) {
++ shellparam.optind = 1;
++ shellparam.optoff = -1;
++ }
++ }
++ else {
+ optbase = &argv[3];
+-
+- if (shellparam.reset == 1) {
+- shellparam.optnext = optbase;
+- shellparam.optptr = NULL;
+- shellparam.reset = 0;
++ if (shellparam.optind > argc - 2) {
++ shellparam.optind = 1;
++ shellparam.optoff = -1;
++ }
+ }
+
+- return getopts(argv[1], argv[2], optbase, &shellparam.optnext,
+- &shellparam.optptr);
++ return getopts(argv[1], argv[2], optbase, &shellparam.optind,
++ &shellparam.optoff);
+ }
+
+ STATIC int
+-getopts(optstr, optvar, optfirst, optnext, optpptr)
++getopts(optstr, optvar, optfirst, optind, optoff)
+ char *optstr;
+ char *optvar;
+ char **optfirst;
+- char ***optnext;
+- char **optpptr;
++ int *optind;
++ int *optoff;
+ {
+ char *p, *q;
+ char c = '?';
+ int done = 0;
+- int ind = 0;
+ int err = 0;
+ char s[10];
++ char **optnext = optfirst + *optind - 1;
+
+- if ((p = *optpptr) == NULL || *p == '\0') {
++ if (*optind <= 1 || *optoff < 0 || !(*(optnext - 1)) ||
++ strlen(*(optnext - 1)) < *optoff)
++ p = NULL;
++ else
++ p = *(optnext - 1) + *optoff;
++ if (p == NULL || *p == '\0') {
+ /* Current word is done, advance */
+- if (*optnext == NULL)
++ if (optnext == NULL)
+ return 1;
+- p = **optnext;
++ p = *optnext;
+ if (p == NULL || *p != '-' || *++p == '\0') {
+ atend:
+- ind = *optnext - optfirst + 1;
+- *optnext = NULL;
++ *optind = optnext - optfirst + 1;
+ p = NULL;
+ done = 1;
+ goto out;
+ }
+- (*optnext)++;
++ optnext++;
+ if (p[0] == '-' && p[1] == '\0') /* check for "--" */
+ goto atend;
+ }
+@@ -453,7 +462,7 @@
+ }
+
+ if (*++q == ':') {
+- if (*p == '\0' && (p = **optnext) == NULL) {
++ if (*p == '\0' && (p = *optnext) == NULL) {
+ if (optstr[0] == ':') {
+ s[0] = c;
+ s[1] = '\0';
+@@ -468,30 +477,29 @@
+ goto bad;
+ }
+
+- if (p == **optnext)
+- (*optnext)++;
++ if (p == *optnext)
++ optnext++;
+ setvarsafe("OPTARG", p, 0);
+ p = NULL;
+ }
+ else
+ setvarsafe("OPTARG", "", 0);
+- ind = *optnext - optfirst + 1;
++ *optind = optnext - optfirst + 1;
+ goto out;
+
+ bad:
+- ind = 1;
+- *optnext = NULL;
++ *optind = 1;
+ p = NULL;
+ out:
+- *optpptr = p;
+- fmtstr(s, sizeof(s), "%d", ind);
++ *optoff = p ? p - *(optnext - 1) : -1;
++ fmtstr(s, sizeof(s), "%d", *optind);
+ err |= setvarsafe("OPTIND", s, VNOFUNC);
+ s[0] = c;
+ s[1] = '\0';
+ err |= setvarsafe(optvar, s, 0);
+ if (err) {
+- *optnext = NULL;
+- *optpptr = NULL;
++ *optind = 1;
++ *optoff = -1;
+ flushall();
+ exraise(EXERROR);
+ }
+diff -urN netbsd-sh/options.h ash-0.3.7.orig/options.h
+--- netbsd-sh/options.h Fri Jul 9 13:02:07 1999
++++ ash-0.3.7.orig/options.h Mon Apr 23 22:16:46 2001
+@@ -41,10 +41,9 @@
+ struct shparam {
+ int nparam; /* # of positional parameters (without $0) */
+ unsigned char malloc; /* if parameter list dynamically allocated */
+- unsigned char reset; /* if getopts has been reset */
+ char **p; /* parameter list */
+- char **optnext; /* next parameter to be processed by getopts */
+- char *optptr; /* used by getopts */
++ int optind; /* next parameter to be processed by getopts */
++ int optoff; /* used by getopts */
+ };
+
+
+
diff --git a/source/ap/ash/patches/ash-glob.patch b/source/ap/ash/patches/ash-glob.patch
new file mode 100644
index 000000000..70013536e
--- /dev/null
+++ b/source/ap/ash/patches/ash-glob.patch
@@ -0,0 +1,445 @@
+diff -urN netbsd-sh/expand.c ash-0.3.7.orig/expand.c
+--- netbsd-sh/expand.c Tue Mar 14 13:03:45 2000
++++ ash-0.3.7.orig/expand.c Mon Apr 23 22:16:46 2001
+@@ -54,6 +54,10 @@
+ #include <pwd.h>
+ #include <stdlib.h>
+ #include <stdio.h>
++#if defined(__GLIBC__) && !defined(GLOB_BROKEN)
++#include <fnmatch.h>
++#include <glob.h>
++#endif
+
+ /*
+ * Routines to expand arguments to commands. We have to deal with
+@@ -102,17 +106,30 @@
+ STATIC int subevalvar __P((char *, char *, int, int, int, int));
+ STATIC char *evalvar __P((char *, int));
+ STATIC int varisset __P((char *, int));
++STATIC char *strtodest __P((char *, int, int));
+ STATIC void varvalue __P((char *, int, int));
+ STATIC void recordregion __P((int, int, int));
+ STATIC void removerecordregions __P((int));
+ STATIC void ifsbreakup __P((char *, struct arglist *));
+ STATIC void ifsfree __P((void));
+ STATIC void expandmeta __P((struct strlist *, int));
++#if defined(__GLIBC__) && !defined(GLOB_BROKEN)
++STATIC const char *preglob __P((const char *));
++STATIC void addglob __P((const glob_t *));
++#else
+ STATIC void expmeta __P((char *, char *));
++#endif
+ STATIC void addfname __P((char *));
++#if defined(__GLIBC__) && !defined(GLOB_BROKEN)
++STATIC int patmatch __P((char *, char *, int));
++STATIC int patmatch2 __P((char *, char *, int));
++STATIC char * _rmescapes __P((char *, int));
++#else
+ STATIC struct strlist *expsort __P((struct strlist *));
+ STATIC struct strlist *msort __P((struct strlist *, int));
+ STATIC int pmatch __P((char *, char *, int));
++#define patmatch2 patmatch
++#endif
+ STATIC char *cvtnum __P((int, char *));
+
+ /*
+@@ -371,7 +388,7 @@
+ * have to rescan starting from the beginning since CTLESC
+ * characters have to be processed left to right.
+ */
+- CHECKSTRSPACE(8, expdest);
++ CHECKSTRSPACE(10, expdest);
+ USTPUTC('\0', expdest);
+ start = stackblock();
+ p = expdest - 1;
+@@ -393,7 +410,7 @@
+ if (quotes)
+ rmescapes(p+2);
+ result = arith(p+2);
+- fmtstr(p, 10, "%d", result);
++ fmtstr(p, 12, "%d", result);
+
+ while (*p++)
+ ;
+@@ -503,7 +520,7 @@
+ int amount;
+
+ herefd = -1;
+- argstr(p, 0);
++ argstr(p, subtype != VSASSIGN && subtype != VSQUESTION ? EXP_CASE : 0);
+ STACKSTRNUL(expdest);
+ herefd = saveherefd;
+ argbackq = saveargbackq;
+@@ -535,7 +552,7 @@
+ for (loc = startp; loc < str; loc++) {
+ c = *loc;
+ *loc = '\0';
+- if (patmatch(str, startp, varflags & VSQUOTE))
++ if (patmatch2(str, startp, varflags & VSQUOTE))
+ goto recordleft;
+ *loc = c;
+ if ((varflags & VSQUOTE) && *loc == CTLESC)
+@@ -547,7 +564,7 @@
+ for (loc = str - 1; loc >= startp;) {
+ c = *loc;
+ *loc = '\0';
+- if (patmatch(str, startp, varflags & VSQUOTE))
++ if (patmatch2(str, startp, varflags & VSQUOTE))
+ goto recordleft;
+ *loc = c;
+ loc--;
+@@ -564,7 +581,7 @@
+
+ case VSTRIMRIGHT:
+ for (loc = str - 1; loc >= startp;) {
+- if (patmatch(str, loc, varflags & VSQUOTE))
++ if (patmatch2(str, loc, varflags & VSQUOTE))
+ goto recordright;
+ loc--;
+ if ((varflags & VSQUOTE) && loc > startp &&
+@@ -580,7 +597,7 @@
+
+ case VSTRIMRIGHTMAX:
+ for (loc = startp; loc < str - 1; loc++) {
+- if (patmatch(str, loc, varflags & VSQUOTE))
++ if (patmatch2(str, loc, varflags & VSQUOTE))
+ goto recordright;
+ if ((varflags & VSQUOTE) && *loc == CTLESC)
+ loc++;
+@@ -819,6 +836,34 @@
+
+
+ /*
++ * Put a string on the stack.
++ */
++
++STATIC char *
++strtodest(p, quoted, allow_split)
++ char *p;
++ int quoted;
++ int allow_split;
++{
++ char const *syntax;
++
++ if (allow_split) {
++ syntax = quoted ? DQSYNTAX : BASESYNTAX;
++ while (*p) {
++ if (syntax[(int) *p] == CCTL)
++ STPUTC(CTLESC, expdest);
++ STPUTC(*p++, expdest);
++ }
++ } else
++ while (*p)
++ STPUTC(*p++, expdest);
++
++ return p;
++}
++
++
++
++/*
+ * Add the value of a specialized variable to the stack string.
+ */
+
+@@ -834,22 +879,6 @@
+ extern int oexitstatus;
+ char sep;
+ char **ap;
+- char const *syntax;
+-
+-#define STRTODEST(p) \
+- do {\
+- if (allow_split) { \
+- syntax = quoted? DQSYNTAX : BASESYNTAX; \
+- while (*p) { \
+- if (syntax[(int)*p] == CCTL) \
+- STPUTC(CTLESC, expdest); \
+- STPUTC(*p++, expdest); \
+- } \
+- } else \
+- while (*p) \
+- STPUTC(*p++, expdest); \
+- } while (0)
+-
+
+ switch (*name) {
+ case '$':
+@@ -875,7 +904,7 @@
+ case '@':
+ if (allow_split && quoted) {
+ for (ap = shellparam.p ; (p = *ap++) != NULL ; ) {
+- STRTODEST(p);
++ p = strtodest(p, quoted, allow_split);
+ if (*ap)
+ STPUTC('\0', expdest);
+ }
+@@ -888,21 +917,20 @@
+ else
+ sep = ' ';
+ for (ap = shellparam.p ; (p = *ap++) != NULL ; ) {
+- STRTODEST(p);
++ p = strtodest(p, quoted, allow_split);
+ if (*ap && sep)
+ STPUTC(sep, expdest);
+ }
+ break;
+ case '0':
+- p = arg0;
+- STRTODEST(p);
++ p = strtodest(arg0, quoted, allow_split);
+ break;
+ default:
+ if (is_digit(*name)) {
+ num = atoi(name);
+ if (num > 0 && num <= shellparam.nparam) {
+- p = shellparam.p[num - 1];
+- STRTODEST(p);
++ p = strtodest(shellparam.p[num - 1], quoted,
++ allow_split);
+ }
+ }
+ break;
+@@ -1054,6 +1082,98 @@
+ * should be escapes. The results are stored in the list exparg.
+ */
+
++#if defined(__GLIBC__) && !defined(GLOB_BROKEN)
++STATIC void
++expandmeta(str, flag)
++ struct strlist *str;
++ int flag;
++{
++ const char *p;
++ glob_t pglob;
++ /* TODO - EXP_REDIR */
++
++ while (str) {
++ if (fflag)
++ goto nometa;
++ p = preglob(str->text);
++ INTOFF;
++ switch (glob(p, GLOB_NOMAGIC, 0, &pglob)) {
++ case 0:
++ if (!(pglob.gl_flags & GLOB_MAGCHAR))
++ goto nometa2;
++ addglob(&pglob);
++ globfree(&pglob);
++ INTON;
++ break;
++ case GLOB_NOMATCH:
++nometa2:
++ globfree(&pglob);
++ INTON;
++nometa:
++ *exparg.lastp = str;
++ rmescapes(str->text);
++ exparg.lastp = &str->next;
++ break;
++ default: /* GLOB_NOSPACE */
++ error("Out of space");
++ }
++ str = str->next;
++ }
++}
++
++
++/*
++ * Prepare the string for glob(3).
++ */
++
++STATIC const char *
++preglob(str)
++ const char *str;
++{
++ const char *p;
++ char *q, *r;
++ size_t len;
++
++ p = str;
++ while (*p != CTLQUOTEMARK && *p != CTLESC) {
++ if (*p++ == '\0')
++ return str;
++ }
++ len = p - str;
++ q = r = stalloc(strlen(str) + 1);
++ if (len > 0) {
++ memcpy(q, str, len);
++ q += len;
++ }
++ do {
++ if (*p == CTLQUOTEMARK)
++ continue;
++ if (*p == CTLESC) {
++ if (*++p != '/')
++ *q++ = '\\';
++ }
++ *q++ = *p;
++ } while (*++p);
++ *q = '\0';
++ return r;
++}
++
++
++/*
++ * Add the result of glob(3) to the list.
++ */
++
++STATIC void
++addglob(pglob)
++ const glob_t *pglob;
++{
++ char **p = pglob->gl_pathv;
++
++ do {
++ addfname(*p);
++ } while (*++p);
++}
++#else
+ char *expdir;
+
+
+@@ -1238,6 +1358,7 @@
+ if (! atend)
+ endname[-1] = '/';
+ }
++#endif
+
+
+ /*
+@@ -1260,6 +1381,7 @@
+ }
+
+
++#if !(defined(__GLIBC__) && !defined(GLOB_BROKEN))
+ /*
+ * Sort the results of file name expansion. It calculates the number of
+ * strings to sort and then calls msort (short for merge sort) to do the
+@@ -1321,6 +1443,7 @@
+ }
+ return list;
+ }
++#endif
+
+
+
+@@ -1328,6 +1451,39 @@
+ * Returns true if the pattern matches the string.
+ */
+
++#if defined(__GLIBC__) && !defined(GLOB_BROKEN)
++STATIC int
++patmatch(pattern, string, squoted)
++ char *pattern;
++ char *string;
++ int squoted; /* string might have quote chars */
++ {
++ const char *p;
++ char *q;
++
++ p = preglob(pattern);
++ q = squoted ? _rmescapes(string, 1) : string;
++
++ return !fnmatch(p, q, 0);
++}
++
++
++STATIC int
++patmatch2(pattern, string, squoted)
++ char *pattern;
++ char *string;
++ int squoted; /* string might have quote chars */
++ {
++ char *p;
++ int res;
++
++ sstrnleft--;
++ p = grabstackstr(expdest);
++ res = patmatch(pattern, string, squoted);
++ ungrabstackstr(p, expdest);
++ return res;
++}
++#else
+ int
+ patmatch(pattern, string, squoted)
+ char *pattern;
+@@ -1462,6 +1618,7 @@
+ return 0;
+ return 1;
+ }
++#endif
+
+
+
+@@ -1469,6 +1626,50 @@
+ * Remove any CTLESC characters from a string.
+ */
+
++#if defined(__GLIBC__) && !defined(GLOB_BROKEN)
++void
++rmescapes(str)
++ char *str;
++{
++ _rmescapes(str, 0);
++}
++
++
++STATIC char *
++_rmescapes(str, flag)
++ char *str;
++ int flag;
++{
++ char *p, *q, *r;
++
++ p = str;
++ while (*p != CTLESC && *p != CTLQUOTEMARK) {
++ if (*p++ == '\0')
++ return str;
++ }
++ q = p;
++ r = str;
++ if (flag) {
++ size_t len = p - str;
++ q = r = stalloc(strlen(p) + len + 1);
++ if (len > 0) {
++ memcpy(q, str, len);
++ q += len;
++ }
++ }
++ while (*p) {
++ if (*p == CTLQUOTEMARK) {
++ p++;
++ continue;
++ }
++ if (*p == CTLESC)
++ p++;
++ *q++ = *p++;
++ }
++ *q = '\0';
++ return r;
++}
++#else
+ void
+ rmescapes(str)
+ char *str;
+@@ -1492,6 +1693,7 @@
+ }
+ *q = '\0';
+ }
++#endif
+
+
+
+
+diff -urN netbsd-sh/expand.h ash-0.3.7.orig/expand.h
+--- netbsd-sh/expand.h Fri Jul 9 13:02:06 1999
++++ ash-0.3.7.orig/expand.h Mon Apr 23 22:16:46 2001
+@@ -64,7 +64,9 @@
+ void expandhere __P((union node *, int));
+ void expandarg __P((union node *, struct arglist *, int));
+ void expari __P((int));
++#if !(defined(__GLIBC__) && !defined(GLOB_BROKEN))
+ int patmatch __P((char *, char *, int));
++#endif
+ void rmescapes __P((char *));
+ int casematch __P((union node *, char *));
+
diff --git a/source/ap/ash/patches/ash-hetio.patch b/source/ap/ash/patches/ash-hetio.patch
new file mode 100644
index 000000000..c416cde53
--- /dev/null
+++ b/source/ap/ash/patches/ash-hetio.patch
@@ -0,0 +1,559 @@
+diff -urN ash-0.4.0/Makefile ash-0.4.0-/Makefile
+--- ash-0.4.0/Makefile Tue Apr 24 00:57:33 2001
++++ ash-0.4.0-/Makefile Tue Apr 24 00:59:53 2001
+@@ -7,7 +7,7 @@
+ SHSRCS= alias.c cd.c echo.c error.c eval.c exec.c expand.c \
+ histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
+ mystring.c options.c parser.c redir.c show.c trap.c output.c var.c \
+- test.c setmode.c test.c
++ test.c setmode.c test.c hetio.c
+ GENSRCS=builtins.c builtins.h init.c nodes.c arith.c arith.h lex.yy.c \
+ nodes.h syntax.c syntax.h token.h signames.c
+ SRCS= ${SHSRCS} ${GENSRCS}
+@@ -17,12 +17,13 @@
+ mystring.o options.o output.o parser.o redir.o show.o \
+ trap.o var.o bltin/test.o signames.o \
+ builtins.o init.o nodes.o syntax.o arith.o lex.yy.o \
+- setmode.o bltin/times.o
++ setmode.o bltin/times.o hetio.o
+
+ OPT_FLAGS=-O2 -g
+ LDFLAGS=-g
+ CFLAGS=$(OPT_FLAGS) -DSHELL -I. -DNO_HISTORY -DBSD=1 -DSMALL -D_GNU_SOURCE \
+- -DGLOB_BROKEN -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -D_DIAGASSERT\(x\)=
++ -DGLOB_BROKEN -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -D_DIAGASSERT\(x\)= \
++ -DHETIO
+
+ all: $(PROG)
+
+diff -urN ash-0.4.0/hetio.c ash-0.4.0-/hetio.c
+--- ash-0.4.0/hetio.c Thu Jan 1 01:00:00 1970
++++ ash-0.4.0-/hetio.c Tue Apr 24 01:06:59 2001
+@@ -0,0 +1,377 @@
++/*
++ * Termios command line History and Editting for NetBSD sh (ash)
++ * Copyright (c) 1999
++ * Main code: Adam Rogoyski <rogoyski@cs.utexas.edu>
++ * Etc: Dave Cinege <dcinege@psychosis.com>
++ *
++ * You may use this code as you wish, so long as the original author(s)
++ * are attributed in any redistributions of the source code.
++ * This code is 'as is' with no warranty.
++ * This code may safely be consumed by a BSD or GPL license.
++ *
++ * v 0.5 19990328 Initial release
++ *
++ * Future plans: Simple file and path name completion. (like BASH)
++ *
++ */
++
++/*
++Usage and Known bugs:
++ Terminal key codes are not extensive, and more will probably
++ need to be added. This version was created on Debian GNU/Linux 2.x.
++ Delete, Backspace, Home, End, and the arrow keys were tested
++ to work in an Xterm and console. Ctrl-A also works as Home.
++ Ctrl-E also works as End. The binary size increase is <3K.
++
++ Editting will not display correctly for lines greater then the
++ terminal width. (more then one line.) However, history will.
++*/
++
++#include <stdio.h>
++#include <unistd.h>
++#include <stdlib.h>
++#include <string.h>
++#include <termios.h>
++#include <ctype.h>
++#include <sys/ioctl.h>
++
++#include "input.h"
++#include "output.h"
++
++#ifdef HETIO
++
++#include "hetio.h"
++
++
++#define MAX_HISTORY 15 /* Maximum length of the linked list for the command line history */
++
++#define ESC 27
++#define DEL 127
++
++static struct history *his_front = NULL; /* First element in command line list */
++static struct history *his_end = NULL; /* Last element in command line list */
++static struct termios old_term, new_term; /* Current termio and the previous termio before starting ash */
++
++static int history_counter = 0; /* Number of commands in history list */
++static int reset_term = 0; /* Set to true if the terminal needs to be reset upon exit */
++static int hetio_inter = 0;
++
++struct history
++{
++ char *s;
++ struct history *p;
++ struct history *n;
++};
++
++
++void input_delete (int);
++void input_home (int *);
++void input_end (int *, int);
++void input_backspace (int *, int *);
++
++
++
++void hetio_init(void)
++{
++ hetio_inter = 1;
++}
++
++
++void hetio_reset_term(void)
++{
++ if (reset_term)
++ tcsetattr(1, TCSANOW, &old_term);
++}
++
++
++void setIO(struct termios *new, struct termios *old) /* Set terminal IO to canonical mode, and save old term settings. */
++{
++ tcgetattr(0, old);
++ memcpy(new, old, sizeof(*new));
++ new->c_cc[VMIN] = 1;
++ new->c_cc[VTIME] = 0;
++ new->c_lflag &= ~ICANON; /* unbuffered input */
++ new->c_lflag &= ~ECHO;
++ tcsetattr(0, TCSANOW, new);
++}
++
++void input_home(int *cursor) /* Command line input routines */
++{
++ while (*cursor > 0) {
++ out1c('\b');
++ --*cursor;
++ }
++ flushout(&output);
++}
++
++
++void input_delete(int cursor)
++{
++ int j = 0;
++
++ memmove(parsenextc + cursor, parsenextc + cursor + 1,
++ BUFSIZ - cursor - 1);
++ for (j = cursor; j < (BUFSIZ - 1); j++) {
++ if (!*(parsenextc + j))
++ break;
++ else
++ out1c(*(parsenextc + j));
++ }
++
++ out1str(" \b");
++
++ while (j-- > cursor)
++ out1c('\b');
++ flushout(&output);
++}
++
++
++void input_end(int *cursor, int len)
++{
++ while (*cursor < len) {
++ out1str("\033[C");
++ ++*cursor;
++ }
++ flushout(&output);
++}
++
++
++void
++input_backspace(int *cursor, int *len)
++{
++ int j = 0;
++
++ if (*cursor > 0) {
++ out1str("\b \b");
++ --*cursor;
++ memmove(parsenextc + *cursor, parsenextc + *cursor + 1,
++ BUFSIZ - *cursor + 1);
++
++ for (j = *cursor; j < (BUFSIZ - 1); j++) {
++ if (!*(parsenextc + j))
++ break;
++ else
++ out1c(*(parsenextc + j));
++ }
++
++ out1str(" \b");
++
++ while (j-- > *cursor)
++ out1c('\b');
++
++ --*len;
++ flushout(&output);
++ }
++}
++
++int hetio_read_input(int fd)
++{
++ int nr = 0;
++
++ if (!hetio_inter) { /* Are we an interactive shell? */
++ return -255;
++ } else {
++ int len = 0;
++ int j = 0;
++ int cursor = 0;
++ int break_out = 0;
++ int ret = 0;
++ char c = 0;
++ struct history *hp = his_end;
++
++ if (!reset_term) {
++ setIO(&new_term, &old_term);
++ reset_term = 1;
++ } else {
++ tcsetattr(0, TCSANOW, &new_term);
++ }
++
++ memset(parsenextc, 0, BUFSIZ);
++
++ while (1) {
++ if ((ret = read(fd, &c, 1)) < 1)
++ return ret;
++
++ switch (c) {
++ case 1: /* Control-A Beginning of line */
++ input_home(&cursor);
++ break;
++ case 5: /* Control-E EOL */
++ input_end(&cursor, len);
++ break;
++ case 4: /* Control-D */
++#ifndef CTRL_D_DELETE
++ return 0;
++#else
++ if (cursor != len) {
++ input_delete(cursor);
++ len--;
++ }
++ break;
++#endif
++ case '\b': /* Backspace */
++ case DEL:
++ input_backspace(&cursor, &len);
++ break;
++ case '\n': /* Enter */
++ *(parsenextc + len++ + 1) = c;
++ out1c(c);
++ flushout(&output);
++ break_out = 1;
++ break;
++ case ESC: /* escape sequence follows */
++ if ((ret = read(fd, &c, 1)) < 1)
++ return ret;
++
++ if (c == '[' || c == 'O' ) { /* 91 */
++ if ((ret = read(fd, &c, 1)) < 1)
++ return ret;
++
++ switch (c) {
++ case 'A':
++ if (hp && hp->p) { /* Up */
++ hp = hp->p;
++ goto hop;
++ }
++ break;
++ case 'B':
++ if (hp && hp->n && hp->n->s) { /* Down */
++ hp = hp->n;
++ goto hop;
++ }
++ break;
++
++hop: /* hop */
++ len = strlen(parsenextc);
++
++ for (; cursor > 0; cursor--) /* return to begining of line */
++ out1c('\b');
++
++ for (j = 0; j < len; j++) /* erase old command */
++ out1c(' ');
++
++ for (j = len; j > 0; j--) /* return to begining of line */
++ out1c('\b');
++
++ strcpy (parsenextc, hp->s); /* write new command */
++ len = strlen (hp->s);
++ out1str(parsenextc);
++ flushout(&output);
++ cursor = len;
++ break;
++ case 'C': /* Right */
++ if (cursor < len) {
++ out1str("\033[C");
++ cursor++;
++ flushout(&output);
++ }
++ break;
++ case 'D': /* Left */
++ if (cursor > 0) {
++ out1str("\033[D");
++ cursor--;
++ flushout(&output);
++ }
++ break;
++ case '3': /* Delete */
++ if (cursor != len) {
++ input_delete(cursor);
++ len--;
++ }
++ break;
++ case 'H': /* Home (xterm) */
++ case '1': /* Home (Ctrl-A) */
++ input_home(&cursor);
++ break;
++ case 'F': /* End (xterm_ */
++ case '4': /* End (Ctrl-E) */
++ input_end(&cursor, len);
++ break;
++ }
++ if (c == '1' || c == '3' || c == '4')
++ if ((ret = read(fd, &c, 1)) < 1)
++ return ret; /* read 126 (~) */
++ }
++
++ c = 0;
++ break;
++
++ default: /* If it's regular input, do the normal thing */
++
++ if (!isprint(c)) /* Skip non-printable characters */
++ break;
++
++ if (len >= (BUFSIZ - 2)) /* Need to leave space for enter */
++ break;
++
++ len++;
++
++ if (cursor == (len - 1)) { /* Append if at the end of the line */
++ *(parsenextc + cursor) = c;
++ } else { /* Insert otherwise */
++ memmove(parsenextc + cursor + 1, parsenextc + cursor,
++ len - cursor - 1);
++
++ *(parsenextc + cursor) = c;
++
++ for (j = cursor; j < len; j++)
++ out1c(*(parsenextc + j));
++ for (; j > cursor; j--)
++ out1str("\033[D");
++ }
++
++ cursor++;
++ out1c(c);
++ flushout(&output);
++ break;
++ }
++
++ if (break_out) /* Enter is the command terminator, no more input. */
++ break;
++ }
++
++ nr = len + 1;
++ tcsetattr(0, TCSANOW, &old_term);
++
++
++ if (*(parsenextc)) { /* Handle command history log */
++ struct history *h = his_end;
++
++ if (!h) { /* No previous history */
++ h = his_front = malloc(sizeof (struct history));
++ h->n = malloc(sizeof (struct history));
++ h->p = NULL;
++ h->s = strdup(parsenextc);
++
++ h->n->p = h;
++ h->n->n = NULL;
++ h->n->s = NULL;
++ his_end = h->n;
++ history_counter++;
++ } else { /* Add a new history command */
++
++ h->n = malloc(sizeof (struct history));
++
++ h->n->p = h;
++ h->n->n = NULL;
++ h->n->s = NULL;
++ h->s = strdup(parsenextc);
++ his_end = h->n;
++
++ if (history_counter >= MAX_HISTORY) { /* After max history, remove the last known command */
++ struct history *p = his_front->n;
++
++ p->p = NULL;
++ free(his_front->s);
++ free(his_front);
++ his_front = p;
++ } else {
++ history_counter++;
++ }
++ }
++ }
++ }
++
++ return nr;
++}
++#endif
+diff -urN ash-0.4.0/hetio.h ash-0.4.0-/hetio.h
+--- ash-0.4.0/hetio.h Thu Jan 1 01:00:00 1970
++++ ash-0.4.0-/hetio.h Tue Apr 24 00:13:57 2001
+@@ -0,0 +1,22 @@
++/*
++ * Termios command line History and Editting for NetBSD sh (ash)
++ * Copyright (c) 1999
++ * Main code: Adam Rogoyski <rogoyski@cs.utexas.edu>
++ * Etc: Dave Cinege <dcinege@psychosis.com>
++ *
++ * You may use this code as you wish, so long as the original author(s)
++ * are attributed in any redistributions of the source code.
++ * This code is 'as is' with no warranty.
++ * This code may safely be consumed by a BSD or GPL license.
++ *
++ * v 0.5 19990328 Initial release
++ *
++ * Future plans: Simple file and path name completion. (like BASH)
++ *
++ */
++
++void hetio_init(void);
++int hetio_read_input(int fd);
++void hetio_reset_term(void);
++
++extern int hetio_inter;
+diff -urN ash-0.4.0/histedit.c ash-0.4.0-/histedit.c
+--- ash-0.4.0/histedit.c Fri Jan 12 17:50:35 2001
++++ ash-0.4.0-/histedit.c Tue Apr 24 00:13:57 2001
+@@ -60,9 +60,9 @@
+ #include "main.h"
+ #include "output.h"
+ #include "mystring.h"
+-#include "myhistedit.h"
+ #include "error.h"
+ #ifndef SMALL
++#include "myhistedit.h"
+ #include "eval.h"
+ #include "memalloc.h"
+
+@@ -219,7 +219,11 @@
+ if (argc == 1)
+ error("missing history argument");
+
++#ifdef __GLIBC__
++ optind = 1;
++#else
+ optreset = 1; optind = 1; /* initialize getopt */
++#endif
+ while (not_fcnumber(argv[optind]) &&
+ (ch = getopt(argc, argv, ":e:lnrs")) != -1)
+ switch ((char)ch) {
+diff -urN ash-0.4.0/input.c ash-0.4.0-/input.c
+--- ash-0.4.0/input.c Tue May 23 12:03:19 2000
++++ ash-0.4.0-/input.c Tue Apr 24 00:13:57 2001
+@@ -66,7 +66,13 @@
+ #include "error.h"
+ #include "alias.h"
+ #include "parser.h"
++#ifndef SMALL
+ #include "myhistedit.h"
++#endif
++
++#ifdef HETIO
++#include "hetio.h"
++#endif
+
+ #define EOF_NLEFT -99 /* value of parsenleft when EOF pushed back */
+
+@@ -108,7 +114,9 @@
+ int init_editline = 0; /* editline library initialized? */
+ int whichprompt; /* 1 == PS1, 2 == PS2 */
+
++#ifndef SMALL
+ EditLine *el; /* cookie for editline package */
++#endif
+
+ STATIC void pushfile __P((void));
+ static int preadfd __P((void));
+@@ -197,6 +205,11 @@
+ (void) strcpy(buf, rl_cp);
+ }
+ } else
++#endif
++
++#ifdef HETIO
++ nr = hetio_read_input(parsefile->fd);
++ if (nr == -255)
+ #endif
+ nr = read(parsefile->fd, buf, BUFSIZ - 1);
+
+diff -urN ash-0.4.0/main.c ash-0.4.0-/main.c
+--- ash-0.4.0/main.c Tue Apr 24 00:57:33 2001
++++ ash-0.4.0-/main.c Tue Apr 24 00:13:57 2001
+@@ -79,6 +79,10 @@
+ #include "exec.h"
+ #include "cd.h"
+
++#ifdef HETIO
++#include "hetio.h"
++#endif
++
+ #define PROFILE 0
+
+ int rootpid;
+@@ -242,6 +246,10 @@
+
+ TRACE(("cmdloop(%d) called\n", top));
+ setstackmark(&smark);
++#ifdef HETIO
++ if(iflag && top)
++ hetio_init();
++#endif
+ for (;;) {
+ if (pendingsigs)
+ dotrap();
+Binary files ash-0.4.0/mksignames and ash-0.4.0-/mksignames differ
+diff -urN ash-0.4.0/trap.c ash-0.4.0-/trap.c
+--- ash-0.4.0/trap.c Tue Apr 24 00:57:33 2001
++++ ash-0.4.0-/trap.c Tue Apr 24 00:13:57 2001
+@@ -62,7 +62,11 @@
+ #include "error.h"
+ #include "trap.h"
+ #include "mystring.h"
++#include "mail.h"
+
++#ifdef HETIO
++#include "hetio.h"
++#endif
+
+ /*
+ * Sigmode records the current value of the signal handlers for the various
+@@ -341,6 +345,7 @@
+ setsignal(SIGINT);
+ setsignal(SIGQUIT);
+ setsignal(SIGTERM);
++ chkmail(1);
+ is_interactive = on;
+ }
+
+@@ -358,6 +363,9 @@
+ char *p;
+
+ TRACE(("exitshell(%d) pid=%d\n", status, getpid()));
++#ifdef HETIO
++ hetio_reset_term();
++#endif
+ if (setjmp(loc1.loc)) {
+ goto l1;
+ }
diff --git a/source/ap/ash/patches/ash-jobs.patch b/source/ap/ash/patches/ash-jobs.patch
new file mode 100644
index 000000000..9e89118f5
--- /dev/null
+++ b/source/ap/ash/patches/ash-jobs.patch
@@ -0,0 +1,108 @@
+diff -ur netbsd-sh/jobs.c netbsd-sh-/jobs.c
+--- netbsd-sh/jobs.c Tue May 23 12:03:19 2000
++++ netbsd-sh-/jobs.c Mon Apr 23 23:31:47 2001
+@@ -92,6 +92,7 @@
+ int initialpgrp; /* pgrp of shell on invocation */
+ short curjob; /* current job */
+ #endif
++STATIC int intreceived;
+
+ STATIC void restartjob __P((struct job *));
+ STATIC void freejob __P((struct job *));
+@@ -101,8 +102,10 @@
+ STATIC int waitproc __P((int, int *));
+ STATIC void cmdtxt __P((union node *));
+ STATIC void cmdputs __P((const char *));
++STATIC void waitonint(int);
+
+
++#if JOBS
+ /*
+ * Turn job control on and off.
+ *
+@@ -171,6 +174,7 @@
+ }
+ jobctl = on;
+ }
++#endif
+
+
+ #ifdef mkinit
+@@ -594,9 +598,6 @@
+ TRACE(("Child shell %d\n", getpid()));
+ wasroot = rootshell;
+ rootshell = 0;
+- for (i = njobs, p = jobtab ; --i >= 0 ; p++)
+- if (p->used)
+- freejob(p);
+ closescript();
+ INTON;
+ clear_traps();
+@@ -642,6 +643,9 @@
+ }
+ }
+ #endif
++ for (i = njobs, p = jobtab ; --i >= 0 ; p++)
++ if (p->used)
++ freejob(p);
+ if (wasroot && iflag) {
+ setsignal(SIGINT);
+ setsignal(SIGQUIT);
+@@ -701,13 +705,33 @@
+ #endif
+ int status;
+ int st;
++ struct sigaction act, oact;
+
+ INTOFF;
++ intreceived = 0;
++#if JOBS
++ if (!jobctl) {
++#else
++ if (!iflag) {
++#endif
++ sigaction(SIGINT, 0, &act);
++ act.sa_handler = waitonint;
++ sigaction(SIGINT, &act, &oact);
++ }
+ TRACE(("waitforjob(%%%d) called\n", jp - jobtab + 1));
+ while (jp->state == 0) {
+ dowait(1, jp);
+ }
+ #if JOBS
++ if (!jobctl) {
++#else
++ if (!iflag) {
++#endif
++ extern char *trap[];
++ sigaction(SIGINT, &oact, 0);
++ if (intreceived && trap[SIGINT]) kill(getpid(), SIGINT);
++ }
++#if JOBS
+ if (jp->jobctl) {
+ #ifdef OLD_TTY_DRIVER
+ if (ioctl(2, TIOCSPGRP, (char *)&mypgrp) < 0)
+@@ -896,10 +920,10 @@
+ #ifdef BSD
+ int flags;
+
+-#if JOBS
+- flags = WUNTRACED;
+-#else
+ flags = 0;
++#if JOBS
++ if (jobctl)
++ flags |= WUNTRACED;
+ #endif
+ if (block == 0)
+ flags |= WNOHANG;
+@@ -1139,4 +1163,9 @@
+ }
+ }
+ cmdnextc = q;
++}
++
++STATIC void waitonint(int sig) {
++ intreceived = 1;
++ return;
+ }
diff --git a/source/ap/ash/patches/ash-kill.patch b/source/ap/ash/patches/ash-kill.patch
new file mode 100644
index 000000000..f2972d94c
--- /dev/null
+++ b/source/ap/ash/patches/ash-kill.patch
@@ -0,0 +1,675 @@
+diff -urN netbsd-sh/jobs.c ash-0.3.7.orig/jobs.c
+--- netbsd-sh/jobs.c Tue May 23 12:03:19 2000
++++ ash-0.3.7.orig/jobs.c Mon Apr 23 22:16:46 2001
+@@ -189,6 +193,94 @@
+
+ #if JOBS
+ int
++killcmd(argc, argv)
++ int argc;
++ char **argv;
++{
++ extern char *signal_names[];
++ int signo = -1;
++ int list = 0;
++ int i;
++ pid_t pid;
++ struct job *jp;
++
++ if (argc <= 1) {
++ error(
++"Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or\n"
++"kill -l [exitstatus]"
++ );
++ }
++
++ if (*argv[1] == '-') {
++ signo = decode_signal(argv[1]+1);
++ if (signo < 0) {
++ int c;
++
++ while ((c = nextopt("ls:")) != '\0')
++ switch (c) {
++ case 'l':
++ list = 1;
++ break;
++ case 's':
++ signo = decode_signal(optarg);
++ break;
++ default:
++ error(
++ "nextopt returned character code 0%o", c);
++ }
++ } else
++ argptr++;
++ }
++
++ if (!list && signo < 0)
++ signo = SIGTERM;
++
++ if ((signo < 0 || !*argptr) ^ list) {
++ error(
++"Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or\n"
++"kill -l [exitstatus]"
++ );
++ }
++
++ if (list) {
++ if (!*argptr) {
++ out1fmt("0\n");
++ for (i = 1; i < NSIG; i++) {
++ if (strncmp(signal_names[i], "SIGJUNK(", 8)
++ == 0)
++ continue;
++ out1fmt("%s\n", signal_names[i] + 3);
++ }
++ return 0;
++ }
++ signo = atoi(*argptr);
++ if (signo > 128)
++ signo -= 128;
++ if (0 < signo && signo < NSIG)
++ out1fmt("%s\n", signal_names[signo] + 3);
++ else
++ error("invalid signal number or exit status: %s",
++ *argptr);
++ return 0;
++ }
++
++ do {
++ if (**argptr == '%') {
++ jp = getjob(*argptr);
++ if (jp->jobctl == 0)
++ error("job %s not created under job control",
++ *argptr);
++ pid = -jp->ps[0].pid;
++ } else
++ pid = atoi(*argptr);
++ if (kill(pid, signo) != 0)
++ error("%s: %s", *argptr, strerror(errno));
++ } while (*++argptr);
++
++ return 0;
++}
++
++int
+ fgcmd(argc, argv)
+ int argc;
+ char **argv;
+
+diff -urN netbsd-sh/jobs.h ash-0.3.7.orig/jobs.h
+--- netbsd-sh/jobs.h Tue May 23 12:03:19 2000
++++ ash-0.3.7.orig/jobs.h Mon Apr 23 22:16:46 2001
+@@ -80,6 +80,7 @@
+ extern int job_warning; /* user was warned about stopped jobs */
+
+ void setjobctl __P((int));
++int killcmd __P((int, char **));
+ int fgcmd __P((int, char **));
+ int bgcmd __P((int, char **));
+ int jobscmd __P((int, char **));
+diff -urN netbsd-sh/builtins.def ash-0.3.7.orig/builtins.def
+--- netbsd-sh/builtins.def Mon Apr 10 13:02:58 2000
++++ ash-0.3.7.orig/builtins.def Mon Apr 23 22:16:46 2001
+@@ -70,6 +71,7 @@
+ hashcmd hash
+ jobidcmd jobid
+ jobscmd jobs
++killcmd -j kill
+ #linecmd line
+ localcmd local
+ #nlechocmd nlecho
+diff -urN netbsd-sh/mksignames.c ash-0.3.7.orig/mksignames.c
+--- netbsd-sh/mksignames.c Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/mksignames.c Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,400 @@
++/* signames.c -- Create and write `signames.c', which contains an array of
++ signal names. */
++
++/* Copyright (C) 1992 Free Software Foundation, Inc.
++
++ This file is part of GNU Bash, the Bourne Again SHell.
++
++ Bash is free software; you can redistribute it and/or modify it under
++ the terms of the GNU General Public License as published by the Free
++ Software Foundation; either version 2, or (at your option) any later
++ version.
++
++ Bash 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 Bash; see the file COPYING. If not, write to the Free Software
++ Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
++
++#include <stdio.h>
++#include <sys/types.h>
++#include <signal.h>
++#include <stdlib.h>
++
++#if !defined (NSIG)
++# define NSIG 64
++#endif
++
++char *signal_names[2 * NSIG];
++
++char *progname;
++
++#if defined (SIGRTMAX) || defined (SIGRTMIN)
++# define RTLEN 14
++# define RTLIM 256
++#endif
++
++void
++initialize_signames ()
++{
++ register int i;
++#if defined (SIGRTMAX) || defined (SIGRTMIN)
++ int rtmin, rtmax, rtcnt;
++#endif
++
++ for (i = 1; i < sizeof(signal_names)/sizeof(signal_names[0]); i++)
++ signal_names[i] = (char *)NULL;
++
++ /* `signal' 0 is what we do on exit. */
++ signal_names[0] = "EXIT";
++
++ /* Place signal names which can be aliases for more common signal
++ names first. This allows (for example) SIGABRT to overwrite SIGLOST. */
++
++ /* POSIX 1003.1b-1993 real time signals, but take care of incomplete
++ implementations. Acoording to the standard, both, SIGRTMIN and
++ SIGRTMAX must be defined, SIGRTMIN must be stricly less than
++ SIGRTMAX, and the difference must be at least 7, that is, there
++ must be at least eight distinct real time signals. */
++
++ /* The generated signal names are SIGRTMIN, SIGRTMIN+1, ...,
++ SIGRTMIN+x, SIGRTMAX-x, ..., SIGRTMAX-1, SIGRTMAX. If the number
++ of RT signals is odd, there is an extra SIGRTMIN+(x+1).
++ These names are the ones used by ksh and /usr/xpg4/bin/sh on SunOS5. */
++
++#if defined (SIGRTMIN)
++ rtmin = SIGRTMIN;
++ signal_names[rtmin] = "SIGRTMIN";
++#endif
++
++#if defined (SIGRTMAX)
++ rtmax = SIGRTMAX;
++ signal_names[rtmax] = "SIGRTMAX";
++#endif
++
++#if defined (SIGRTMAX) && defined (SIGRTMIN)
++ if (rtmax > rtmin)
++ {
++ rtcnt = (rtmax - rtmin - 1) / 2;
++ /* croak if there are too many RT signals */
++ if (rtcnt >= RTLIM/2)
++ {
++ rtcnt = RTLIM/2-1;
++ fprintf(stderr, "%s: error: more than %i real time signals, fix `%s'\n",
++ progname, RTLIM, progname);
++ }
++
++ for (i = 1; i <= rtcnt; i++)
++ {
++ signal_names[rtmin+i] = (char *)malloc(RTLEN);
++ sprintf (signal_names[rtmin+i], "SIGRTMIN+%d", i);
++ signal_names[rtmax-i] = (char *)malloc(RTLEN);
++ sprintf (signal_names[rtmax-i], "SIGRTMAX-%d", i);
++ }
++
++ if (rtcnt < RTLIM/2-1 && rtcnt != (rtmax-rtmin)/2)
++ {
++ /* Need an extra RTMIN signal */
++ signal_names[rtmin+rtcnt+1] = (char *)malloc(RTLEN);
++ sprintf (signal_names[rtmin+rtcnt+1], "SIGRTMIN+%d", rtcnt+1);
++ }
++ }
++#endif /* SIGRTMIN && SIGRTMAX */
++
++/* AIX */
++#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */
++ signal_names[SIGLOST] = "SIGLOST";
++#endif
++
++#if defined (SIGMSG) /* HFT input data pending */
++ signal_names[SIGMSG] = "SIGMSG";
++#endif
++
++#if defined (SIGDANGER) /* system crash imminent */
++ signal_names[SIGDANGER] = "SIGDANGER";
++#endif
++
++#if defined (SIGMIGRATE) /* migrate process to another CPU */
++ signal_names[SIGMIGRATE] = "SIGMIGRATE";
++#endif
++
++#if defined (SIGPRE) /* programming error */
++ signal_names[SIGPRE] = "SIGPRE";
++#endif
++
++#if defined (SIGVIRT) /* AIX virtual time alarm */
++ signal_names[SIGVIRT] = "SIGVIRT";
++#endif
++
++#if defined (SIGALRM1) /* m:n condition variables */
++ signal_names[SIGALRM1] = "SIGALRM1";
++#endif
++
++#if defined (SIGWAITING) /* m:n scheduling */
++ signal_names[SIGWAITING] = "SIGWAITING";
++#endif
++
++#if defined (SIGGRANT) /* HFT monitor mode granted */
++ signal_names[SIGGRANT] = "SIGGRANT";
++#endif
++
++#if defined (SIGKAP) /* keep alive poll from native keyboard */
++ signal_names[SIGKAP] = "SIGKAP";
++#endif
++
++#if defined (SIGRETRACT) /* HFT monitor mode retracted */
++ signal_names[SIGRETRACT] = "SIGRETRACT";
++#endif
++
++#if defined (SIGSOUND) /* HFT sound sequence has completed */
++ signal_names[SIGSOUND] = "SIGSOUND";
++#endif
++
++#if defined (SIGSAK) /* Secure Attention Key */
++ signal_names[SIGSAK] = "SIGSAK";
++#endif
++
++/* SunOS5 */
++#if defined (SIGLWP) /* special signal used by thread library */
++ signal_names[SIGLWP] = "SIGLWP";
++#endif
++
++#if defined (SIGFREEZE) /* special signal used by CPR */
++ signal_names[SIGFREEZE] = "SIGFREEZE";
++#endif
++
++#if defined (SIGTHAW) /* special signal used by CPR */
++ signal_names[SIGTHAW] = "SIGTHAW";
++#endif
++
++#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */
++ signal_names[SIGCANCEL] = "SIGCANCEL";
++#endif
++
++/* HP-UX */
++#if defined (SIGDIL) /* DIL signal (?) */
++ signal_names[SIGDIL] = "SIGDIL";
++#endif
++
++/* System V */
++#if defined (SIGCLD) /* Like SIGCHLD. */
++ signal_names[SIGCLD] = "SIGCLD";
++#endif
++
++#if defined (SIGPWR) /* power state indication */
++ signal_names[SIGPWR] = "SIGPWR";
++#endif
++
++#if defined (SIGPOLL) /* Pollable event (for streams) */
++ signal_names[SIGPOLL] = "SIGPOLL";
++#endif
++
++/* Unknown */
++#if defined (SIGWINDOW)
++ signal_names[SIGWINDOW] = "SIGWINDOW";
++#endif
++
++/* Common */
++#if defined (SIGHUP) /* hangup */
++ signal_names[SIGHUP] = "SIGHUP";
++#endif
++
++#if defined (SIGINT) /* interrupt */
++ signal_names[SIGINT] = "SIGINT";
++#endif
++
++#if defined (SIGQUIT) /* quit */
++ signal_names[SIGQUIT] = "SIGQUIT";
++#endif
++
++#if defined (SIGILL) /* illegal instruction (not reset when caught) */
++ signal_names[SIGILL] = "SIGILL";
++#endif
++
++#if defined (SIGTRAP) /* trace trap (not reset when caught) */
++ signal_names[SIGTRAP] = "SIGTRAP";
++#endif
++
++#if defined (SIGIOT) /* IOT instruction */
++ signal_names[SIGIOT] = "SIGIOT";
++#endif
++
++#if defined (SIGABRT) /* Cause current process to dump core. */
++ signal_names[SIGABRT] = "SIGABRT";
++#endif
++
++#if defined (SIGEMT) /* EMT instruction */
++ signal_names[SIGEMT] = "SIGEMT";
++#endif
++
++#if defined (SIGFPE) /* floating point exception */
++ signal_names[SIGFPE] = "SIGFPE";
++#endif
++
++#if defined (SIGKILL) /* kill (cannot be caught or ignored) */
++ signal_names[SIGKILL] = "SIGKILL";
++#endif
++
++#if defined (SIGBUS) /* bus error */
++ signal_names[SIGBUS] = "SIGBUS";
++#endif
++
++#if defined (SIGSEGV) /* segmentation violation */
++ signal_names[SIGSEGV] = "SIGSEGV";
++#endif
++
++#if defined (SIGSYS) /* bad argument to system call */
++ signal_names[SIGSYS] = "SIGSYS";
++#endif
++
++#if defined (SIGPIPE) /* write on a pipe with no one to read it */
++ signal_names[SIGPIPE] = "SIGPIPE";
++#endif
++
++#if defined (SIGALRM) /* alarm clock */
++ signal_names[SIGALRM] = "SIGALRM";
++#endif
++
++#if defined (SIGTERM) /* software termination signal from kill */
++ signal_names[SIGTERM] = "SIGTERM";
++#endif
++
++#if defined (SIGURG) /* urgent condition on IO channel */
++ signal_names[SIGURG] = "SIGURG";
++#endif
++
++#if defined (SIGSTOP) /* sendable stop signal not from tty */
++ signal_names[SIGSTOP] = "SIGSTOP";
++#endif
++
++#if defined (SIGTSTP) /* stop signal from tty */
++ signal_names[SIGTSTP] = "SIGTSTP";
++#endif
++
++#if defined (SIGCONT) /* continue a stopped process */
++ signal_names[SIGCONT] = "SIGCONT";
++#endif
++
++#if defined (SIGCHLD) /* to parent on child stop or exit */
++ signal_names[SIGCHLD] = "SIGCHLD";
++#endif
++
++#if defined (SIGTTIN) /* to readers pgrp upon background tty read */
++ signal_names[SIGTTIN] = "SIGTTIN";
++#endif
++
++#if defined (SIGTTOU) /* like TTIN for output if (tp->t_local&LTOSTOP) */
++ signal_names[SIGTTOU] = "SIGTTOU";
++#endif
++
++#if defined (SIGIO) /* input/output possible signal */
++ signal_names[SIGIO] = "SIGIO";
++#endif
++
++#if defined (SIGXCPU) /* exceeded CPU time limit */
++ signal_names[SIGXCPU] = "SIGXCPU";
++#endif
++
++#if defined (SIGXFSZ) /* exceeded file size limit */
++ signal_names[SIGXFSZ] = "SIGXFSZ";
++#endif
++
++#if defined (SIGVTALRM) /* virtual time alarm */
++ signal_names[SIGVTALRM] = "SIGVTALRM";
++#endif
++
++#if defined (SIGPROF) /* profiling time alarm */
++ signal_names[SIGPROF] = "SIGPROF";
++#endif
++
++#if defined (SIGWINCH) /* window changed */
++ signal_names[SIGWINCH] = "SIGWINCH";
++#endif
++
++/* 4.4 BSD */
++#if defined (SIGINFO) && !defined (_SEQUENT_) /* information request */
++ signal_names[SIGINFO] = "SIGINFO";
++#endif
++
++#if defined (SIGUSR1) /* user defined signal 1 */
++ signal_names[SIGUSR1] = "SIGUSR1";
++#endif
++
++#if defined (SIGUSR2) /* user defined signal 2 */
++ signal_names[SIGUSR2] = "SIGUSR2";
++#endif
++
++#if defined (SIGKILLTHR) /* BeOS: Kill Thread */
++ signal_names[SIGKILLTHR] = "SIGKILLTHR";
++#endif
++
++ for (i = 0; i < NSIG; i++)
++ if (signal_names[i] == (char *)NULL)
++ {
++ signal_names[i] = (char *)malloc (18);
++ sprintf (signal_names[i], "SIGJUNK(%d)", i);
++ }
++
++ signal_names[NSIG] = "DEBUG";
++}
++
++void
++write_signames (stream)
++ FILE *stream;
++{
++ register int i;
++
++ fprintf (stream, "/* This file was automatically created by %s.\n",
++ progname);
++ fprintf (stream, " Do not edit. Edit support/mksignames.c instead. */\n\n");
++ fprintf (stream, "#include <signal.h>\n\n");
++ fprintf (stream,
++ "/* A translation list so we can be polite to our users. */\n");
++ fprintf (stream, "char *signal_names[NSIG + 2] = {\n");
++
++ for (i = 0; i <= NSIG; i++)
++ fprintf (stream, " \"%s\",\n", signal_names[i]);
++
++ fprintf (stream, " (char *)0x0,\n");
++ fprintf (stream, "};\n");
++}
++
++int
++main (argc, argv)
++ int argc;
++ char **argv;
++{
++ char *stream_name;
++ FILE *stream;
++
++ progname = argv[0];
++
++ if (argc == 1)
++ {
++ stream_name = "signames.c";
++ }
++ else if (argc == 2)
++ {
++ stream_name = argv[1];
++ }
++ else
++ {
++ fprintf (stderr, "Usage: %s [output-file]\n", progname);
++ exit (1);
++ }
++
++ stream = fopen (stream_name, "w");
++ if (!stream)
++ {
++ fprintf (stderr, "%s: %s: cannot open for writing\n",
++ progname, stream_name);
++ exit (2);
++ }
++
++ initialize_signames ();
++ write_signames (stream);
++ exit (0);
++}
+diff -urN netbsd-sh/trap.c ash-0.3.7.orig/trap.c
+--- netbsd-sh/trap.c Tue May 23 12:03:19 2000
++++ ash-0.3.7.orig/trap.c Mon Apr 23 22:16:46 2001
+@@ -84,7 +88,7 @@
+ char gotsig[NSIG]; /* indicates specified signal received */
+ int pendingsigs; /* indicates some signal received */
+
+-static int getsigaction __P((int, sig_t *));
++extern char *signal_names[];
+
+ /*
+ * The trap builtin.
+@@ -107,16 +111,20 @@
+ return 0;
+ }
+ ap = argv + 1;
+- if (is_number(*ap))
++ if (argc == 2)
+ action = NULL;
+ else
+ action = *ap++;
+ while (*ap) {
+- if ((signo = number(*ap)) < 0 || signo > NSIG)
++ if ((signo = decode_signal(*ap)) < 0)
+ error("%s: bad trap", *ap);
+ INTOFF;
+- if (action)
+- action = savestr(action);
++ if (action) {
++ if (action[0] == '-' && action[1] == '\0')
++ action = NULL;
++ else
++ action = savestr(action);
++ }
+ if (trap[signo])
+ ckfree(trap[signo]);
+ trap[signo] = action;
+@@ -157,13 +165,13 @@
+ * out what it should be set to.
+ */
+
+-long
++void
+ setsignal(signo)
+ int signo;
+ {
+ int action;
+- sig_t sigact = SIG_DFL;
+ char *t;
++ struct sigaction act;
+
+ if ((t = trap[signo]) == NULL)
+ action = S_DFL;
+@@ -206,15 +214,15 @@
+ /*
+ * current setting unknown
+ */
+- if (!getsigaction(signo, &sigact)) {
++ if (sigaction(signo, 0, &act) == -1) {
+ /*
+ * Pretend it worked; maybe we should give a warning
+ * here, but other shells don't. We don't alter
+ * sigmode, so that we retry every time.
+ */
+- return 0;
++ return;
+ }
+- if (sigact == SIG_IGN) {
++ if (act.sa_handler == SIG_IGN) {
+ if (mflag && (signo == SIGTSTP ||
+ signo == SIGTTIN || signo == SIGTTOU)) {
+ *t = S_IGN; /* don't hard ignore these */
+@@ -225,31 +233,21 @@
+ }
+ }
+ if (*t == S_HARD_IGN || *t == action)
+- return 0;
++ return;
+ switch (action) {
+- case S_DFL: sigact = SIG_DFL; break;
+- case S_CATCH: sigact = onsig; break;
+- case S_IGN: sigact = SIG_IGN; break;
++ case S_CATCH:
++ act.sa_handler = onsig;
++ break;
++ case S_IGN:
++ act.sa_handler = SIG_IGN;
++ break;
++ default:
++ act.sa_handler = SIG_DFL;
+ }
+ *t = action;
+- siginterrupt(signo, 1);
+- return (long)signal(signo, sigact);
+-}
+-
+-/*
+- * Return the current setting for sig w/o changing it.
+- */
+-static int
+-getsigaction(signo, sigact)
+- int signo;
+- sig_t *sigact;
+-{
+- struct sigaction sa;
+-
+- if (sigaction(signo, (struct sigaction *)0, &sa) == -1)
+- return 0;
+- *sigact = (sig_t) sa.sa_handler;
+- return 1;
++ act.sa_flags = 0;
++ sigemptyset(&act.sa_mask);
++ sigaction(signo, &act, 0);
+ }
+
+ /*
+@@ -382,4 +384,18 @@
+ #endif
+ l2: _exit(status);
+ /* NOTREACHED */
++}
++
++int decode_signal(const char *string)
++{
++ int signo;
++
++ if (is_number(string)) return atoi(string);
++
++ for (signo=0; signo < NSIG; signo++)
++ if (strcasecmp(string, signal_names[signo]) == 0 ||
++ strcasecmp(string, &(signal_names[signo])[3]) == 0)
++ return signo;
++
++ return -1;
+ }
+diff -urN netbsd-sh/trap.h ash-0.3.7.orig/trap.h
+--- netbsd-sh/trap.h Tue May 23 12:03:19 2000
++++ ash-0.3.7.orig/trap.h Mon Apr 23 22:16:46 2001
+@@ -42,9 +42,10 @@
+
+ int trapcmd __P((int, char **));
+ void clear_traps __P((void));
+-long setsignal __P((int));
++void setsignal __P((int));
+ void ignoresig __P((int));
+ void onsig __P((int));
+ void dotrap __P((void));
+ void setinteractive __P((int));
+ void exitshell __P((int)) __attribute__((noreturn));
++int decode_signal __P((const char *));
diff --git a/source/ap/ash/patches/ash-makefile.patch b/source/ap/ash/patches/ash-makefile.patch
new file mode 100644
index 000000000..c3b16a1f5
--- /dev/null
+++ b/source/ap/ash/patches/ash-makefile.patch
@@ -0,0 +1,115 @@
+diff -u ash-0.4.0/Makefile ash-0.4.0-/Makefile
+--- ash-0.4.0/Makefile Fri Jan 12 17:50:34 2001
++++ ash-0.4.0-/Makefile Tue Apr 24 00:49:56 2001
+@@ -7,56 +7,68 @@
+ SHSRCS= alias.c cd.c echo.c error.c eval.c exec.c expand.c \
+ histedit.c input.c jobs.c mail.c main.c memalloc.c miscbltin.c \
+ mystring.c options.c parser.c redir.c show.c trap.c output.c var.c \
+- test.c
+-GENSRCS=arith.c arith.h arith_lex.c builtins.c builtins.h init.c nodes.c \
+- nodes.h syntax.c syntax.h token.h
++ test.c setmode.c test.c
++GENSRCS=builtins.c builtins.h init.c nodes.c arith.c arith.h lex.yy.c \
++ nodes.h syntax.c syntax.h token.h signames.c
+ SRCS= ${SHSRCS} ${GENSRCS}
+
+-LDADD+= -ll -ledit -ltermcap
+-DPADD+= ${LIBL} ${LIBEDIT} ${LIBTERMCAP}
++OBJS=alias.o cd.o bltin/echo.o error.o eval.o exec.o expand.o \
++ histedit.o input.o jobs.o mail.o main.o memalloc.o miscbltin.o \
++ mystring.o options.o output.o parser.o redir.o show.o \
++ trap.o var.o bltin/test.o signames.o \
++ builtins.o init.o nodes.o syntax.o arith.o lex.yy.o \
++ setmode.o bltin/times.o
++
++OPT_FLAGS=-O2 -g
++LDFLAGS=-g
++CFLAGS=$(OPT_FLAGS) -DSHELL -I. -DNO_HISTORY -DBSD=1 -DSMALL -D_GNU_SOURCE \
++ -DGLOB_BROKEN -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -D_DIAGASSERT\(x\)=
++
++all: $(PROG)
++
++$(PROG): build-tools $(GENSRCS) $(GENHDRS) $(OBJS)
++ $(CC) $(LDFLAGS) -o $(PROG) $(OBJS) $(LDLIBS) -lfl
++
++lex.yy.c: arith_lex.l
++ flex -8 $<
++
++CLEANFILES+= mkinit mkinit.o mknodes mknodes.o \
++ mksyntax mksyntax.o
++
++CLEANFILES+= ${GENSRCS} ${GENHDRS}
++
++build-tools: mkinit mknodes mksyntax
++
++.ORDER: builtins.c builtins.h
++builtins.c builtins.h: mkbuiltins builtins.def
++ sh mkbuiltins shell.h builtins.def `pwd`
++
++INIT_DEPS = alias.c eval.c exec.c input.c jobs.c options.c parser.c \
++ redir.c trap.c var.c output.c
++
++init.c: mkinit $(INIT_DEPS)
++ ./mkinit $(INIT_DEPS)
++
++mkinit: mkinit.o
++mknodes: mknodes.o
++mksyntax: mksyntax.o
+
+-LFLAGS= -8 # 8-bit lex scanner for arithmetic
+-YFLAGS= -d
+-
+-CPPFLAGS+=-DSHELL -I. -I${.CURDIR}
+-
+-.PATH: ${.CURDIR}/bltin ${.CURDIR}/../../usr.bin/printf ${.CURDIR}/../test
+-
+-CLEANFILES+= mkinit mknodes mksyntax
+-CLEANFILES+= ${GENSRCS} y.tab.h
+-
+-token.h: mktokens
+- sh ${.ALLSRC}
+-
+-builtins.c builtins.h: mkbuiltins shell.h builtins.def
+- sh ${.ALLSRC} ${.OBJDIR}
+-
+-init.c: mkinit ${SHSRCS}
+- ./${.ALLSRC}
++signames.c: mksignames
++ ./mksignames
+
+ nodes.c nodes.h: mknodes nodetypes nodes.c.pat
+- ./${.ALLSRC}
++ ./mknodes ./nodetypes ./nodes.c.pat
+
+ syntax.c syntax.h: mksyntax
+- ./${.ALLSRC}
+-
+-mkinit: mkinit.c
+- ${HOST_LINK.c} -o mkinit ${.IMPSRC}
+-
+-mknodes: mknodes.c
+- ${HOST_LINK.c} -o mknodes ${.IMPSRC}
++ ./mksyntax
+
+-.if (${MACHINE_ARCH} == "powerpc") || \
+- (${MACHINE_ARCH} == "arm32") || \
+- (${MACHINE_ARCH} == "arm26")
+-TARGET_CHARFLAG= -DTARGET_CHAR="u_int8_t"
+-.else
+-TARGET_CHARFLAG= -DTARGET_CHAR="int8_t"
+-.endif
++arith.c arith.h: arith.y
++ yacc -d arith.y
++ mv y.tab.h arith.h
++ mv y.tab.c arith.c
+
+-mksyntax: mksyntax.c
+- ${HOST_LINK.c} ${TARGET_CHARFLAG} -o mksyntax ${.IMPSRC}
+-
+-.include <bsd.prog.mk>
++token.h: mktokens
++ sh ./mktokens
+
+-${OBJS}: builtins.h nodes.h syntax.h token.h
++clean:
++ rm -f $(PROG) $(OBJS) $(CLEANFILES) core
diff --git a/source/ap/ash/patches/ash-manpage.patch b/source/ap/ash/patches/ash-manpage.patch
new file mode 100644
index 000000000..458367e79
--- /dev/null
+++ b/source/ap/ash/patches/ash-manpage.patch
@@ -0,0 +1,42 @@
+diff -urN netbsd-sh/sh.1 ash-0.3.7.orig/sh.1
+--- netbsd-sh/sh.1 Fri Jan 12 17:50:40 2001
++++ ash-0.3.7.orig/sh.1 Mon Apr 23 22:16:46 2001
+@@ -649,7 +649,7 @@
+ they were one program:
+ .Pp
+ .Bd -literal -offset indent
+-{ echo -n \*q hello \*q ; echo \*q world" } > greeting
++{ echo \*q hello \\c\*q ; echo \*q world" } > greeting
+ .Ed
+ .Pp
+ .Ss Functions
+@@ -1306,14 +1306,16 @@
+ will continue to print the old name for the directory.
+ .It Xo read Op Fl p Ar prompt
+ .Op Fl r
+-.Op Ar variable...
++.Ar variable...
+ .Xc
+ The prompt is printed if the
+ .Fl p
+ option is specified and the standard input is a terminal. Then a line is
+ read from the standard input. The trailing newline is deleted from the
+ line and the line is split as described in the section on word splitting
+-above, and the pieces are assigned to the variables in order. If there are
++above, and the pieces are assigned to the variables in order.
++At least one variable must be specified.
++If there are
+ more pieces than variables, the remaining pieces (along with the
+ characters in
+ .Ev IFS
+@@ -1394,6 +1396,9 @@
+ by one. If there are zero positional parameters,
+ .Ic shift
+ does nothing.
++.It times
++Print the accumulated user and system times for the shell and for processes
++run from the shell. The return status is 0.
+ .It Xo trap
+ .Op Ar action
+ .Ar signal...
+
diff --git a/source/ap/ash/patches/ash-memout.patch b/source/ap/ash/patches/ash-memout.patch
new file mode 100644
index 000000000..1bfedadaa
--- /dev/null
+++ b/source/ap/ash/patches/ash-memout.patch
@@ -0,0 +1,333 @@
+diff -u ash-0.4.0/eval.c ash-0.4.0-/eval.c
+--- ash-0.4.0/eval.c Tue Apr 24 00:53:12 2001
++++ ash-0.4.0-/eval.c Tue Apr 24 00:13:57 2001
+@@ -879,9 +879,13 @@
+ #endif
+ mode = (cmdentry.u.index == EXECCMD)? 0 : REDIR_PUSH;
+ if (flags == EV_BACKCMD) {
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ openmemout();
++#else
+ memout.nleft = 0;
+ memout.nextc = memout.buf;
+ memout.bufsize = 64;
++#endif
+ mode |= REDIR_BACKQ;
+ }
+ redirect(cmd->ncmd.redirect, mode);
+@@ -928,10 +932,18 @@
+ if (cmdentry.u.index != EXECCMD)
+ popredir();
+ if (flags == EV_BACKCMD) {
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ closememout();
++#endif
+ backcmd->buf = memout.buf;
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ backcmd->nleft = memout.bufsize;
++#else
+ backcmd->nleft = memout.nextc - memout.buf;
++#endif
+ memout.buf = NULL;
+ }
++ cmdenviron = NULL;
+ } else {
+ #ifdef DEBUG
+ trputs("normal command: "); trargs(argv);
+Common subdirectories: ash-0.4.0/funcs and ash-0.4.0-/funcs
+diff -u ash-0.4.0/output.c ash-0.4.0-/output.c
+--- ash-0.4.0/output.c Fri Jan 12 17:50:39 2001
++++ ash-0.4.0-/output.c Tue Apr 24 00:43:44 2001
+@@ -65,6 +65,10 @@
+ #include <errno.h>
+ #include <unistd.h>
+ #include <stdlib.h>
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++#undef CEOF /* get rid of the redefine warning */
++#include <fcntl.h>
++#endif
+
+ #include "shell.h"
+ #include "syntax.h"
+@@ -79,9 +83,15 @@
+ #define OUTPUT_ERR 01 /* error occurred on output */
+
+
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++struct output output = {NULL, NULL, 0, NULL, 0, 1, 0};
++struct output errout = {NULL, NULL, 0, NULL, 0, 2, 0};
++struct output memout = {NULL, NULL, 0, NULL, 0, MEM_OUT, 0};
++#else
+ struct output output = {NULL, 0, NULL, OUTBUFSIZ, 1, 0};
+ struct output errout = {NULL, 0, NULL, 100, 2, 0};
+ struct output memout = {NULL, 0, NULL, 0, MEM_OUT, 0};
++#endif
+ struct output *out1 = &output;
+ struct output *out2 = &errout;
+
+@@ -92,9 +102,19 @@
+ INCLUDE "output.h"
+ INCLUDE "memalloc.h"
+
++INIT {
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ initstreams();
++#endif
++}
++
+ RESET {
+ out1 = &output;
+ out2 = &errout;
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ if (memout.stream != NULL)
++ closememout();
++#endif
+ if (memout.buf != NULL) {
+ ckfree(memout.buf);
+ memout.buf = NULL;
+@@ -124,33 +144,22 @@
+
+
+ void
+-out1str(p)
+- const char *p;
+- {
+- outstr(p, out1);
+-}
+-
+-
+-void
+-out2str(p)
+- const char *p;
+- {
+- outstr(p, out2);
+-}
+-
+-
+-void
+ outstr(p, file)
+ const char *p;
+ struct output *file;
+ {
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ fputs(p, file->stream);
++#else
+ while (*p)
+ outc(*p++, file);
++#endif
+ if (file == out2)
+ flushout(file);
+ }
+
+
++#if !defined(_GNU_SOURCE) || defined(__UCLIBC__)
+ char out_junk[16];
+
+
+@@ -183,6 +192,7 @@
+ }
+ dest->nleft--;
+ }
++#endif
+
+
+ void
+@@ -192,11 +202,11 @@
+ }
+
+
++#if !defined(_GNU_SOURCE) || defined(__UCLIBC__)
+ void
+ flushout(dest)
+ struct output *dest;
+ {
+-
+ if (dest->buf == NULL || dest->nextc == dest->buf || dest->fd < 0)
+ return;
+ if (xwrite(dest->fd, dest->buf, dest->nextc - dest->buf) < 0)
+@@ -204,6 +214,7 @@
+ dest->nextc = dest->buf;
+ dest->nleft = dest->bufsize;
+ }
++#endif
+
+
+ void
+@@ -264,6 +275,7 @@
+ va_end(ap);
+ }
+
++#if !defined(__GLIBC__) && !defined(__UCLIBC__)
+ void
+ #ifdef __STDC__
+ dprintf(const char *fmt, ...)
+@@ -285,6 +297,7 @@
+ va_end(ap);
+ flushout(out2);
+ }
++#endif
+
+ void
+ #ifdef __STDC__
+@@ -295,7 +308,9 @@
+ #endif
+ {
+ va_list ap;
++#if !defined(_GNU_SOURCE) || defined(__UCLIBC__)
+ struct output strout;
++#endif
+ #ifndef __STDC__
+ char *outbuf;
+ size_t length;
+@@ -308,6 +323,9 @@
+ #else
+ va_start(ap, fmt);
+ #endif
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ vsnprintf(outbuf, length, fmt, ap);
++#else
+ strout.nextc = outbuf;
+ strout.nleft = length;
+ strout.fd = BLOCK_OUT;
+@@ -316,8 +334,10 @@
+ outc('\0', &strout);
+ if (strout.flags & OUTPUT_ERR)
+ outbuf[length - 1] = '\0';
++#endif
+ }
+
++#if !defined(_GNU_SOURCE) || defined(__UCLIBC__)
+ /*
+ * Formatted output. This routine handles a subset of the printf formats:
+ * - Formats supported: d, u, o, p, X, s, and c.
+@@ -534,7 +554,7 @@
+ }
+ #endif /* !HAVE_VASPRINTF */
+ }
+-
++#endif
+
+
+ /*
+@@ -544,7 +564,7 @@
+ int
+ xwrite(fd, buf, nbytes)
+ int fd;
+- char *buf;
++ const char *buf;
+ int nbytes;
+ {
+ int ntry;
+@@ -570,6 +590,8 @@
+ }
+
+
++
++#ifdef notdef
+ /*
+ * Version of ioctl that retries after a signal is caught.
+ * XXX unused function
+@@ -586,3 +608,27 @@
+ while ((i = ioctl(fd, request, arg)) == -1 && errno == EINTR);
+ return i;
+ }
++#endif
++
++
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++void initstreams() {
++ output.stream = stdout;
++ errout.stream = stderr;
++}
++
++
++void
++openmemout() {
++ memout.stream = open_memstream(&memout.buf, &memout.bufsize);
++}
++
++
++void
++closememout() {
++ INTOFF;
++ fclose(memout.stream);
++ memout.stream = NULL;
++ INTON;
++}
++#endif
+diff -u ash-0.4.0/output.h ash-0.4.0-/output.h
+--- ash-0.4.0/output.h Sat Jan 31 19:28:11 1998
++++ ash-0.4.0-/output.h Tue Apr 24 00:13:57 2001
+@@ -45,13 +45,19 @@
+ #else
+ #include <varargs.h>
+ #endif
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++#include <stdio.h>
++#endif
+
+ struct output {
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++ FILE *stream;
++#endif
+ char *nextc;
+ int nleft;
+ char *buf;
+ int bufsize;
+- short fd;
++ int fd;
+ short flags;
+ };
+
+@@ -61,29 +67,44 @@
+ extern struct output *out1;
+ extern struct output *out2;
+
+-void open_mem __P((char *, int, struct output *));
+-void out1str __P((const char *));
+-void out2str __P((const char *));
+ void outstr __P((const char *, struct output *));
++#ifndef _GNU_SOURCE
+ void emptyoutbuf __P((struct output *));
++#endif
+ void flushall __P((void));
++#ifndef _GNU_SOURCE
+ void flushout __P((struct output *));
++#endif
+ void freestdout __P((void));
+ void outfmt __P((struct output *, const char *, ...))
+ __attribute__((__format__(__printf__,2,3)));
+ void out1fmt __P((const char *, ...))
+ __attribute__((__format__(__printf__,1,2)));
++#if !defined(__GLIBC__) && !defined(__UCLIBC__)
+ void dprintf __P((const char *, ...))
+ __attribute__((__format__(__printf__,1,2)));
++#endif
+ void fmtstr __P((char *, size_t, const char *, ...))
+ __attribute__((__format__(__printf__,3,4)));
++#ifndef _GNU_SOURCE
+ void doformat __P((struct output *, const char *, va_list));
+-int xwrite __P((int, char *, int));
+-int xioctl __P((int, unsigned long, char *));
++#endif
++int xwrite __P((int, const char *, int));
++#if defined(_GNU_SOURCE) && !defined(__UCLIBC__)
++void initstreams __P((void));
++void openmemout __P((void));
++void closememout __P((void));
+
++#define outc(c, o) putc(c, (o)->stream)
++#define flushout(o) fflush((o)->stream)
++#define doformat(d, f, a) vfprintf((d)->stream, f, a)
++#else
+ #define outc(c, file) (--(file)->nleft < 0? (emptyoutbuf(file), *(file)->nextc++ = (c)) : (*(file)->nextc++ = (c)))
+-#define out1c(c) outc(c, out1);
+-#define out2c(c) outc(c, out2);
++#endif
++#define out1c(c) outc(c, out1)
++#define out2c(c) outc(c, out2)
++#define out1str(s) outstr(s, out1)
++#define out2str(s) outstr(s, out2)
+
+ #define OUTPUT_INCL
+ #endif
diff --git a/source/ap/ash/patches/ash-misc.patch b/source/ap/ash/patches/ash-misc.patch
new file mode 100644
index 000000000..9845a2325
--- /dev/null
+++ b/source/ap/ash/patches/ash-misc.patch
@@ -0,0 +1,122 @@
+diff -urN netbsd-sh/error.c ash-0.3.7.orig/error.c
+--- netbsd-sh/error.c Fri Jan 12 17:50:35 2001
++++ ash-0.3.7.orig/error.c Mon Apr 23 22:16:46 2001
+@@ -233,6 +233,7 @@
+ { ENOTDIR, E_CREAT,"directory nonexistent" },
+ { ENOTDIR, E_EXEC, "not found" },
+ { EISDIR, ALL, "is a directory" },
++ { EEXIST, E_CREAT,"file exists" },
+ #ifdef notdef
+ { EMFILE, ALL, "too many open files" },
+ #endif
+diff -urN netbsd-sh/error.h ash-0.3.7.orig/error.h
+--- netbsd-sh/error.h Fri Jul 9 13:02:05 1999
++++ ash-0.3.7.orig/error.h Mon Apr 23 22:16:46 2001
+@@ -102,7 +102,7 @@
+ * so we use _setjmp instead.
+ */
+
+-#if defined(BSD) && !defined(__SVR4)
++#if defined(BSD) && !defined(__SVR4) && !defined(__GLIBC__)
+ #define setjmp(jmploc) _setjmp(jmploc)
+ #define longjmp(jmploc, val) _longjmp(jmploc, val)
+ #endif
+diff -urN netbsd-sh/bltin/bltin.h ash-0.3.7.orig/bltin/bltin.h
+--- netbsd-sh/bltin/bltin.h Sat Jul 5 13:12:37 1997
++++ ash-0.3.7.orig/bltin/bltin.h Mon Apr 23 22:16:46 2001
+@@ -46,8 +46,10 @@
+
+ #include "../shell.h"
+ #include "../mystring.h"
++#include "../memalloc.h"
+ #ifdef SHELL
+ #include "../output.h"
++#ifndef _GNU_SOURCE
+ #define stdout out1
+ #define stderr out2
+ #define printf out1fmt
+@@ -56,12 +58,13 @@
+ #define fprintf outfmt
+ #define fputs outstr
+ #define fflush flushout
+-#define INITARGS(argv)
+ #define warnx(a, b, c) { \
+ char buf[64]; \
+ (void)snprintf(buf, sizeof(buf), a, b, c); \
+ error("%s", buf); \
+ }
++#endif
++#define INITARGS(argv)
+
+ #else
+ #undef NULL
+diff -urN netbsd-sh/main.c ash-0.3.7.orig/main.c
+--- netbsd-sh/main.c Fri Jan 12 17:50:36 2001
++++ ash-0.3.7.orig/main.c Mon Apr 23 22:16:46 2001
+@@ -115,6 +119,9 @@
+ #if PROFILE
+ monitor(4, etext, profile_buf, sizeof profile_buf, 50);
+ #endif
++#if defined(linux) || defined(__GNU__)
++ signal(SIGCHLD, SIG_DFL);
++#endif
+ state = 0;
+ if (setjmp(jmploc.loc)) {
+ /*
+diff -urN netbsd-sh/var.c ash-0.3.7.orig/var.c
+--- netbsd-sh/var.c Fri Jan 12 17:50:40 2001
++++ ash-0.3.7.orig/var.c Mon Apr 23 22:19:54 2001
+@@ -114,7 +114,7 @@
+ NULL },
+ { &vmpath, VSTRFIXED|VTEXTFIXED|VUNSET, "MAILPATH=",
+ NULL },
+- { &vpath, VSTRFIXED|VTEXTFIXED, "PATH=" _PATH_DEFPATH,
++ { &vpath, VSTRFIXED|VTEXTFIXED, "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
+ changepath },
+ /*
+ * vps1 depends on uid
+@@ -138,13 +138,16 @@
+
+ /*
+ * Initialize the varable symbol tables and import the environment
++ * Setting PWD added by herbert
+ */
+
+ #ifdef mkinit
++INCLUDE "cd.h"
+ INCLUDE "var.h"
+ INIT {
+ char **envp;
+ extern char **environ;
++ extern char *curdir;
+
+ initvar();
+ for (envp = environ ; *envp ; envp++) {
+@@ -152,6 +155,9 @@
+ setvareq(*envp, VEXPORT|VTEXTFIXED);
+ }
+ }
++
++ getpwd();
++ setvar("PWD", curdir, VEXPORT|VTEXTFIXED);
+ }
+ #endif
+
+@@ -283,6 +289,7 @@
+ struct var *vp, **vpp;
+
+ vpp = hashvar(s);
++ flags |= (VEXPORT & (((unsigned) (1 - aflag)) - 1));
+ for (vp = *vpp ; vp ; vp = vp->next) {
+ if (varequal(s, vp->text)) {
+ if (vp->flags & VREADONLY) {
+@@ -305,7 +312,8 @@
+ * We could roll this to a function, to handle it as
+ * a regular variable function callback, but why bother?
+ */
+- if (vp == &vmpath || (vp == &vmail && ! mpathset()))
++ if (iflag &&
++ (vp == &vmpath || (vp == &vmail && ! mpathset())))
+ chkmail(1);
+ INTON;
+ return;
diff --git a/source/ap/ash/patches/ash-ppid.patch b/source/ap/ash/patches/ash-ppid.patch
new file mode 100644
index 000000000..954b509d4
--- /dev/null
+++ b/source/ap/ash/patches/ash-ppid.patch
@@ -0,0 +1,21 @@
+diff -ur ash-0.4.0/var.c ash-0.4.0-ppid/var.c
+--- ash-0.4.0/var.c Tue Apr 24 01:23:17 2001
++++ ash-0.4.0-ppid/var.c Tue Apr 24 01:22:07 2001
+@@ -172,6 +172,7 @@
+ const struct varinit *ip;
+ struct var *vp;
+ struct var **vpp;
++ char ppid[30];
+
+ for (ip = varinit ; (vp = ip->var) != NULL ; ip++) {
+ if ((vp->flags & VEXPORT) == 0) {
+@@ -193,6 +194,9 @@
+ vps1.text = strdup(geteuid() ? "PS1=$ " : "PS1=# ");
+ vps1.flags = VSTRFIXED|VTEXTFIXED;
+ }
++
++ snprintf(ppid, 29, "%ld", (long)getppid());
++ setvar("PPID", ppid, VREADONLY|VNOFUNC);
+ }
+
+ /*
diff --git a/source/ap/ash/patches/ash-redir.patch b/source/ap/ash/patches/ash-redir.patch
new file mode 100644
index 000000000..40cdbe9ac
--- /dev/null
+++ b/source/ap/ash/patches/ash-redir.patch
@@ -0,0 +1,463 @@
+diff -ur netbsd-sh/eval.c netbsd-sh-/eval.c
+--- netbsd-sh/eval.c Tue May 23 12:03:18 2000
++++ netbsd-sh-/eval.c Mon Apr 23 23:33:34 2001
+@@ -442,6 +442,7 @@
+ case NFROM:
+ case NTO:
+ case NAPPEND:
++ case NTOOV:
+ expandarg(redir->nfile.fname, &fn, EXP_TILDE | EXP_REDIR);
+ redir->nfile.expfname = fn.list->text;
+ break;
+diff -ur netbsd-sh/exec.c netbsd-sh-/exec.c
+--- netbsd-sh/exec.c Fri Jan 12 17:50:35 2001
++++ netbsd-sh-/exec.c Mon Apr 23 23:33:34 2001
+@@ -125,6 +125,10 @@
+ char *cmdname;
+ int e;
+
++ if (fd2 >= 0 && fd2 != 2) {
++ close(fd2);
++ }
++
+ if (strchr(argv[0], '/') != NULL) {
+ tryexec(argv[0], argv, envp);
+ e = errno;
+diff -ur netbsd-sh/jobs.c netbsd-sh-/jobs.c
+--- netbsd-sh/jobs.c Mon Apr 23 23:34:53 2001
++++ netbsd-sh-/jobs.c Mon Apr 23 23:34:30 2001
+@@ -129,9 +129,9 @@
+ if (on) {
+ do { /* while we are in the background */
+ #ifdef OLD_TTY_DRIVER
+- if (ioctl(2, TIOCGPGRP, (char *)&initialpgrp) < 0) {
++ if (ioctl(fd2, TIOCGPGRP, (char *)&initialpgrp) < 0) {
+ #else
+- initialpgrp = tcgetpgrp(2);
++ initialpgrp = tcgetpgrp(fd2);
+ if (initialpgrp < 0) {
+ #endif
+ out2str("sh: can't access tty; job control turned off\n");
+@@ -146,7 +146,7 @@
+ }
+ } while (0);
+ #ifdef OLD_TTY_DRIVER
+- if (ioctl(2, TIOCGETD, (char *)&ldisc) < 0 || ldisc != NTTYDISC) {
++ if (ioctl(fd2, TIOCGETD, (char *)&ldisc) < 0 || ldisc != NTTYDISC) {
+ out2str("sh: need new tty driver to run job control; job control turned off\n");
+ mflag = 0;
+ return;
+@@ -157,16 +157,16 @@
+ setsignal(SIGTTIN);
+ setpgid(0, rootpid);
+ #ifdef OLD_TTY_DRIVER
+- ioctl(2, TIOCSPGRP, (char *)&rootpid);
++ ioctl(fd2, TIOCSPGRP, (char *)&rootpid);
+ #else
+- tcsetpgrp(2, rootpid);
++ tcsetpgrp(fd2, rootpid);
+ #endif
+ } else { /* turning job control off */
+ setpgid(0, initialpgrp);
+ #ifdef OLD_TTY_DRIVER
+- ioctl(2, TIOCSPGRP, (char *)&initialpgrp);
++ ioctl(fd2, TIOCSPGRP, (char *)&initialpgrp);
+ #else
+- tcsetpgrp(2, initialpgrp);
++ tcsetpgrp(fd2, initialpgrp);
+ #endif
+ setsignal(SIGTSTP);
+ setsignal(SIGTTOU);
+@@ -206,9 +206,9 @@
+ error("job not created under job control");
+ pgrp = jp->ps[0].pid;
+ #ifdef OLD_TTY_DRIVER
+- ioctl(2, TIOCSPGRP, (char *)&pgrp);
++ ioctl(fd2, TIOCSPGRP, (char *)&pgrp);
+ #else
+- tcsetpgrp(2, pgrp);
++ tcsetpgrp(fd2, pgrp);
+ #endif
+ restartjob(jp);
+ INTOFF;
+@@ -612,10 +612,10 @@
+ if (mode == FORK_FG) {
+ /*** this causes superfluous TIOCSPGRPS ***/
+ #ifdef OLD_TTY_DRIVER
+- if (ioctl(2, TIOCSPGRP, (char *)&pgrp) < 0)
++ if (ioctl(fd2, TIOCSPGRP, (char *)&pgrp) < 0)
+ error("TIOCSPGRP failed, errno=%d", errno);
+ #else
+- if (tcsetpgrp(2, pgrp) < 0)
++ if (tcsetpgrp(fd2, pgrp) < 0)
+ error("tcsetpgrp failed, errno=%d", errno);
+ #endif
+ }
+@@ -734,10 +734,10 @@
+ #if JOBS
+ if (jp->jobctl) {
+ #ifdef OLD_TTY_DRIVER
+- if (ioctl(2, TIOCSPGRP, (char *)&mypgrp) < 0)
++ if (ioctl(fd2, TIOCSPGRP, (char *)&mypgrp) < 0)
+ error("TIOCSPGRP failed, errno=%d\n", errno);
+ #else
+- if (tcsetpgrp(2, mypgrp) < 0)
++ if (tcsetpgrp(fd2, mypgrp) < 0)
+ error("tcsetpgrp failed, errno=%d\n", errno);
+ #endif
+ }
+@@ -1092,6 +1092,8 @@
+ p = ">>"; i = 1; goto redir;
+ case NTOFD:
+ p = ">&"; i = 1; goto redir;
++ case NTOOV:
++ p = ">|"; i = 1; goto redir;
+ case NFROM:
+ p = "<"; i = 0; goto redir;
+ case NFROMFD:
+Only in netbsd-sh-: jobs.c.orig
+diff -ur netbsd-sh/nodetypes netbsd-sh-/nodetypes
+--- netbsd-sh/nodetypes Fri Feb 5 13:04:52 1999
++++ netbsd-sh-/nodetypes Mon Apr 23 23:33:34 2001
+@@ -119,6 +119,7 @@
+ NFROM nfile # fd< fname
+ NFROMTO nfile # fd<> fname
+ NAPPEND nfile # fd>> fname
++NTOOV nfile # fd>| fname
+ type int
+ next nodeptr # next redirection in list
+ fd int # file descriptor being redirected
+diff -ur netbsd-sh/parser.c netbsd-sh-/parser.c
+--- netbsd-sh/parser.c Fri Jan 12 17:50:39 2001
++++ netbsd-sh-/parser.c Mon Apr 23 23:33:34 2001
+@@ -1125,6 +1125,8 @@
+ np->type = NAPPEND;
+ else if (c == '&')
+ np->type = NTOFD;
++ else if (c == '|')
++ np->type = NTOOV;
+ else {
+ np->type = NTO;
+ pungetc();
+diff -ur netbsd-sh/redir.c netbsd-sh-/redir.c
+--- netbsd-sh/redir.c Tue May 23 12:03:19 2000
++++ netbsd-sh-/redir.c Mon Apr 23 23:33:34 2001
+@@ -45,6 +45,7 @@
+ #endif
+ #endif /* not lint */
+
++#include <sys/stat.h>
+ #include <sys/types.h>
+ #include <sys/param.h> /* PIPE_BUF */
+ #include <signal.h>
+@@ -66,6 +67,7 @@
+ #include "output.h"
+ #include "memalloc.h"
+ #include "error.h"
++#include "options.h"
+
+
+ #define EMPTY -2 /* marks an unused slot in redirtab */
+@@ -92,8 +94,15 @@
+ */
+ int fd0_redirected = 0;
+
+-STATIC void openredirect __P((union node *, char[10 ]));
++/*
++ * We also keep track of where fd2 goes.
++ */
++int fd2 = 2;
++
++STATIC int openredirect __P((union node *));
++STATIC void dupredirect __P((union node *, int, char[10 ]));
+ STATIC int openhere __P((union node *));
++STATIC int noclobberopen __P((const char *));
+
+
+ /*
+@@ -113,6 +122,7 @@
+ struct redirtab *sv = NULL;
+ int i;
+ int fd;
++ int newfd;
+ int try;
+ char memory[10]; /* file descriptors to write to memory */
+
+@@ -133,36 +143,47 @@
+ n->ndup.dupfd == fd)
+ continue; /* redirect from/to same file descriptor */
+
+- if ((flags & REDIR_PUSH) && sv->renamed[fd] == EMPTY) {
+- INTOFF;
+-again:
+- if ((i = fcntl(fd, F_DUPFD, 10)) == -1) {
++ INTOFF;
++ newfd = openredirect(n);
++ if (((flags & REDIR_PUSH) && sv->renamed[fd] == EMPTY) ||
++ (fd == fd2)) {
++ if (newfd == fd) {
++ try++;
++ } else if ((i = fcntl(fd, F_DUPFD, 10)) == -1) {
+ switch (errno) {
+ case EBADF:
+ if (!try) {
+- openredirect(n, memory);
++ dupredirect(n, newfd, memory);
+ try++;
+- goto again;
++ break;
+ }
+ /* FALLTHROUGH*/
+ default:
++ if (newfd >= 0) {
++ close(newfd);
++ }
+ INTON;
+ error("%d: %s", fd, strerror(errno));
+ /* NOTREACHED */
+ }
+ }
+ if (!try) {
+- sv->renamed[fd] = i;
+ close(fd);
++ if (flags & REDIR_PUSH) {
++ sv->renamed[fd] = i;
++ }
++ if (fd == fd2) {
++ fd2 = i;
++ }
+ }
+- INTON;
+- } else {
++ } else if (fd != newfd) {
+ close(fd);
+ }
+ if (fd == 0)
+ fd0_redirected++;
+ if (!try)
+- openredirect(n, memory);
++ dupredirect(n, newfd, memory);
++ INTON;
+ }
+ if (memory[1])
+ out1 = &memout;
+@@ -171,22 +192,13 @@
+ }
+
+
+-STATIC void
+-openredirect(redir, memory)
++STATIC int
++openredirect(redir)
+ union node *redir;
+- char memory[10];
+ {
+- int fd = redir->nfile.fd;
+ char *fname;
+ int f;
+
+- /*
+- * We suppress interrupts so that we won't leave open file
+- * descriptors around. This may not be such a good idea because
+- * an open of a device or a fifo can block indefinitely.
+- */
+- INTOFF;
+- memory[fd] = 0;
+ switch (redir->nfile.type) {
+ case NFROM:
+ fname = redir->nfile.expfname;
+@@ -199,6 +211,14 @@
+ goto ecreate;
+ break;
+ case NTO:
++ /* Take care of noclobber mode. */
++ if (Cflag) {
++ fname = redir->nfile.expfname;
++ if ((f = noclobberopen(fname)) < 0)
++ goto ecreate;
++ break;
++ }
++ case NTOOV:
+ fname = redir->nfile.expfname;
+ #ifdef O_CREAT
+ if ((f = open(fname, O_WRONLY|O_CREAT|O_TRUNC, 0666)) < 0)
+@@ -222,32 +242,48 @@
+ break;
+ case NTOFD:
+ case NFROMFD:
++ f = -1;
++ break;
++ case NHERE:
++ case NXHERE:
++ f = openhere(redir);
++ break;
++ default:
++ abort();
++ }
++
++ return f;
++ecreate:
++ error("cannot create %s: %s", fname, errmsg(errno, E_CREAT));
++eopen:
++ error("cannot open %s: %s", fname, errmsg(errno, E_OPEN));
++}
++
++
++STATIC void
++dupredirect(redir, f, memory)
++ union node *redir;
++ int f;
++ char memory[10];
++ {
++ int fd = redir->nfile.fd;
++
++ memory[fd] = 0;
++ if (redir->nfile.type == NTOFD || redir->nfile.type == NFROMFD) {
+ if (redir->ndup.dupfd >= 0) { /* if not ">&-" */
+ if (memory[redir->ndup.dupfd])
+ memory[fd] = 1;
+ else
+ copyfd(redir->ndup.dupfd, fd);
+ }
+- INTON;
+ return;
+- case NHERE:
+- case NXHERE:
+- f = openhere(redir);
+- break;
+- default:
+- abort();
+ }
+
+ if (f != fd) {
+ copyfd(f, fd);
+ close(f);
+ }
+- INTON;
+ return;
+-ecreate:
+- error("cannot create %s: %s", fname, errmsg(errno, E_CREAT));
+-eopen:
+- error("cannot open %s: %s", fname, errmsg(errno, E_OPEN));
+ }
+
+
+@@ -304,6 +340,7 @@
+ struct redirtab *rp = redirlist;
+ int i;
+
++ INTOFF;
+ for (i = 0 ; i < 10 ; i++) {
+ if (rp->renamed[i] != EMPTY) {
+ if (i == 0)
+@@ -313,9 +350,11 @@
+ copyfd(rp->renamed[i], i);
+ close(rp->renamed[i]);
+ }
++ if (rp->renamed[i] == fd2) {
++ fd2 = i;
++ }
+ }
+ }
+- INTOFF;
+ redirlist = rp->next;
+ ckfree(rp);
+ INTON;
+@@ -359,6 +398,9 @@
+ for (i = 0 ; i < 10 ; i++) {
+ if (rp->renamed[i] >= 0) {
+ close(rp->renamed[i]);
++ if (rp->renamed[i] == fd2) {
++ fd2 = -1;
++ }
+ }
+ rp->renamed[i] = EMPTY;
+ }
+@@ -388,4 +430,63 @@
+ error("%d: %s", from, strerror(errno));
+ }
+ return newfd;
++}
++
++/*
++ * Open a file in noclobber mode.
++ * The code was copied from bash.
++ */
++int
++noclobberopen(fname)
++ const char *fname;
++{
++ int r, fd;
++ struct stat finfo, finfo2;
++
++ /*
++ * If the file exists and is a regular file, return an error
++ * immediately.
++ */
++ r = stat(fname, &finfo);
++ if (r == 0 && S_ISREG(finfo.st_mode)) {
++ errno = EEXIST;
++ return -1;
++ }
++
++ /*
++ * If the file was not present (r != 0), make sure we open it
++ * exclusively so that if it is created before we open it, our open
++ * will fail. Make sure that we do not truncate an existing file.
++ * Note that we don't turn on O_EXCL unless the stat failed -- if the
++ * file was not a regular file, we leave O_EXCL off.
++ */
++ if (r != 0)
++ return open(fname, O_WRONLY|O_CREAT|O_EXCL, 0666);
++ fd = open(fname, O_WRONLY|O_CREAT, 0666);
++
++ /* If the open failed, return the file descriptor right away. */
++ if (fd < 0)
++ return fd;
++
++ /*
++ * OK, the open succeeded, but the file may have been changed from a
++ * non-regular file to a regular file between the stat and the open.
++ * We are assuming that the O_EXCL open handles the case where FILENAME
++ * did not exist and is symlinked to an existing file between the stat
++ * and open.
++ */
++
++ /*
++ * If we can open it and fstat the file descriptor, and neither check
++ * revealed that it was a regular file, and the file has not been
++ * replaced, return the file descriptor.
++ */
++ if (fstat(fd, &finfo2) == 0 && !S_ISREG(finfo2.st_mode) &&
++ finfo.st_dev == finfo2.st_dev && finfo.st_ino == finfo2.st_ino)
++ return fd;
++
++ /* The file has been replaced. badness. */
++ close(fd);
++ errno = EEXIST;
++ return -1;
+ }
+Only in netbsd-sh-: redir.c.orig
+diff -ur netbsd-sh/redir.h netbsd-sh-/redir.h
+--- netbsd-sh/redir.h Tue May 23 12:03:19 2000
++++ netbsd-sh-/redir.h Mon Apr 23 23:33:34 2001
+@@ -42,6 +42,8 @@
+ #define REDIR_PUSH 01 /* save previous values of file descriptors */
+ #define REDIR_BACKQ 02 /* save the command output in memory */
+
++extern int fd2;
++
+ union node;
+ void redirect __P((union node *, int));
+ void popredir __P((void));
+diff -ur netbsd-sh/show.c netbsd-sh-/show.c
+--- netbsd-sh/show.c Sat Oct 9 13:02:09 1999
++++ netbsd-sh-/show.c Mon Apr 23 23:33:34 2001
+@@ -155,6 +155,7 @@
+ case NTO: s = ">"; dftfd = 1; break;
+ case NAPPEND: s = ">>"; dftfd = 1; break;
+ case NTOFD: s = ">&"; dftfd = 1; break;
++ case NTOOV: s = ">|"; dftfd = 1; break;
+ case NFROM: s = "<"; dftfd = 0; break;
+ case NFROMFD: s = "<&"; dftfd = 0; break;
+ case NFROMTO: s = "<>"; dftfd = 0; break;
diff --git a/source/ap/ash/patches/ash-setmode.patch b/source/ap/ash/patches/ash-setmode.patch
new file mode 100644
index 000000000..b9a26d9ca
--- /dev/null
+++ b/source/ap/ash/patches/ash-setmode.patch
@@ -0,0 +1,510 @@
+diff -urN netbsd-sh/miscbltin.c ash-0.3.7.orig/miscbltin.c
+--- netbsd-sh/miscbltin.c Fri Jan 12 17:50:37 2001
++++ ash-0.3.7.orig/miscbltin.c Mon Apr 23 22:16:46 2001
+@@ -70,6 +70,15 @@
+
+ #undef rflag
+
++#ifdef __GLIBC__
++mode_t getmode(const void *, mode_t);
++void *setmode(const char *);
++
++#if !defined(__GLIBC__) || __GLIBC__ == 2 && __GLIBC_MINOR__ < 1
++typedef enum __rlimit_resource rlim_t;
++#endif
++#endif
++
+ extern char **argptr; /* argument list for builtin command */
+
+
+diff -urN netbsd-sh/setmode.c ash-0.3.7.orig/setmode.c
+--- netbsd-sh/setmode.c Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/setmode.c Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,486 @@
++/* $NetBSD: setmode.c,v 1.28 2000/01/25 15:43:43 enami Exp $ */
++
++/*
++ * Copyright (c) 1989, 1993, 1994
++ * The Regents of the University of California. All rights reserved.
++ *
++ * This code is derived from software contributed to Berkeley by
++ * Dave Borman at Cray Research, Inc.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. All advertising materials mentioning features or use of this software
++ * must display the following acknowledgement:
++ * This product includes software developed by the University of
++ * California, Berkeley and its contributors.
++ * 4. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++#include <sys/cdefs.h>
++#if defined(LIBC_SCCS) && !defined(lint)
++#if 0
++static char sccsid[] = "@(#)setmode.c 8.2 (Berkeley) 3/25/94";
++#else
++__RCSID("$NetBSD: setmode.c,v 1.28 2000/01/25 15:43:43 enami Exp $");
++#endif
++#endif /* LIBC_SCCS and not lint */
++
++#include <sys/types.h>
++#include <sys/stat.h>
++
++#include <assert.h>
++#include <ctype.h>
++#include <errno.h>
++#include <signal.h>
++#include <stdlib.h>
++#include <unistd.h>
++
++#ifdef SETMODE_DEBUG
++#include <stdio.h>
++#endif
++
++#ifdef __weak_alias
++__weak_alias(getmode,_getmode)
++__weak_alias(setmode,_setmode)
++#endif
++
++#ifdef __GLIBC__
++#define S_ISTXT __S_ISVTX
++#endif
++
++#define SET_LEN 6 /* initial # of bitcmd struct to malloc */
++#define SET_LEN_INCR 4 /* # of bitcmd structs to add as needed */
++
++typedef struct bitcmd {
++ char cmd;
++ char cmd2;
++ mode_t bits;
++} BITCMD;
++
++#define CMD2_CLR 0x01
++#define CMD2_SET 0x02
++#define CMD2_GBITS 0x04
++#define CMD2_OBITS 0x08
++#define CMD2_UBITS 0x10
++
++static BITCMD *addcmd __P((BITCMD *, int, int, int, u_int));
++static void compress_mode __P((BITCMD *));
++#ifdef SETMODE_DEBUG
++static void dumpmode __P((BITCMD *));
++#endif
++
++/*
++ * Given the old mode and an array of bitcmd structures, apply the operations
++ * described in the bitcmd structures to the old mode, and return the new mode.
++ * Note that there is no '=' command; a strict assignment is just a '-' (clear
++ * bits) followed by a '+' (set bits).
++ */
++mode_t
++getmode(bbox, omode)
++ const void *bbox;
++ mode_t omode;
++{
++ const BITCMD *set;
++ mode_t clrval, newmode, value;
++
++ _DIAGASSERT(bbox != NULL);
++
++ set = (const BITCMD *)bbox;
++ newmode = omode;
++ for (value = 0;; set++)
++ switch(set->cmd) {
++ /*
++ * When copying the user, group or other bits around, we "know"
++ * where the bits are in the mode so that we can do shifts to
++ * copy them around. If we don't use shifts, it gets real
++ * grundgy with lots of single bit checks and bit sets.
++ */
++ case 'u':
++ value = (newmode & S_IRWXU) >> 6;
++ goto common;
++
++ case 'g':
++ value = (newmode & S_IRWXG) >> 3;
++ goto common;
++
++ case 'o':
++ value = newmode & S_IRWXO;
++common: if (set->cmd2 & CMD2_CLR) {
++ clrval =
++ (set->cmd2 & CMD2_SET) ? S_IRWXO : value;
++ if (set->cmd2 & CMD2_UBITS)
++ newmode &= ~((clrval<<6) & set->bits);
++ if (set->cmd2 & CMD2_GBITS)
++ newmode &= ~((clrval<<3) & set->bits);
++ if (set->cmd2 & CMD2_OBITS)
++ newmode &= ~(clrval & set->bits);
++ }
++ if (set->cmd2 & CMD2_SET) {
++ if (set->cmd2 & CMD2_UBITS)
++ newmode |= (value<<6) & set->bits;
++ if (set->cmd2 & CMD2_GBITS)
++ newmode |= (value<<3) & set->bits;
++ if (set->cmd2 & CMD2_OBITS)
++ newmode |= value & set->bits;
++ }
++ break;
++
++ case '+':
++ newmode |= set->bits;
++ break;
++
++ case '-':
++ newmode &= ~set->bits;
++ break;
++
++ case 'X':
++ if (omode & (S_IFDIR|S_IXUSR|S_IXGRP|S_IXOTH))
++ newmode |= set->bits;
++ break;
++
++ case '\0':
++ default:
++#ifdef SETMODE_DEBUG
++ (void)printf("getmode:%04o -> %04o\n", omode, newmode);
++#endif
++ return (newmode);
++ }
++}
++
++#define ADDCMD(a, b, c, d) do { \
++ if (set >= endset) { \
++ BITCMD *newset; \
++ setlen += SET_LEN_INCR; \
++ newset = realloc(saveset, sizeof(BITCMD) * setlen); \
++ if (newset == NULL) { \
++ free(saveset); \
++ return (NULL); \
++ } \
++ set = newset + (set - saveset); \
++ saveset = newset; \
++ endset = newset + (setlen - 2); \
++ } \
++ set = addcmd(set, (a), (b), (c), (d)); \
++} while (/*CONSTCOND*/0)
++
++#define STANDARD_BITS (S_ISUID|S_ISGID|S_IRWXU|S_IRWXG|S_IRWXO)
++
++void *
++setmode(p)
++ const char *p;
++{
++ int perm, who;
++ char op, *ep;
++ BITCMD *set, *saveset, *endset;
++ sigset_t sigset, sigoset;
++ mode_t mask;
++ int equalopdone = 0; /* pacify gcc */
++ int permXbits, setlen;
++
++ if (!*p)
++ return (NULL);
++
++ /*
++ * Get a copy of the mask for the permissions that are mask relative.
++ * Flip the bits, we want what's not set. Since it's possible that
++ * the caller is opening files inside a signal handler, protect them
++ * as best we can.
++ */
++ sigfillset(&sigset);
++ (void)sigprocmask(SIG_BLOCK, &sigset, &sigoset);
++ (void)umask(mask = umask(0));
++ mask = ~mask;
++ (void)sigprocmask(SIG_SETMASK, &sigoset, NULL);
++
++ setlen = SET_LEN + 2;
++
++ if ((set = malloc((u_int)(sizeof(BITCMD) * setlen))) == NULL)
++ return (NULL);
++ saveset = set;
++ endset = set + (setlen - 2);
++
++ /*
++ * If an absolute number, get it and return; disallow non-octal digits
++ * or illegal bits.
++ */
++ if (isdigit((unsigned char)*p)) {
++ perm = (mode_t)strtol(p, &ep, 8);
++ if (*ep || perm & ~(STANDARD_BITS|S_ISTXT)) {
++ free(saveset);
++ return (NULL);
++ }
++ ADDCMD('=', (STANDARD_BITS|S_ISTXT), perm, mask);
++ set->cmd = 0;
++ return (saveset);
++ }
++
++ /*
++ * Build list of structures to set/clear/copy bits as described by
++ * each clause of the symbolic mode.
++ */
++ for (;;) {
++ /* First, find out which bits might be modified. */
++ for (who = 0;; ++p) {
++ switch (*p) {
++ case 'a':
++ who |= STANDARD_BITS;
++ break;
++ case 'u':
++ who |= S_ISUID|S_IRWXU;
++ break;
++ case 'g':
++ who |= S_ISGID|S_IRWXG;
++ break;
++ case 'o':
++ who |= S_IRWXO;
++ break;
++ default:
++ goto getop;
++ }
++ }
++
++getop: if ((op = *p++) != '+' && op != '-' && op != '=') {
++ free(saveset);
++ return (NULL);
++ }
++ if (op == '=')
++ equalopdone = 0;
++
++ who &= ~S_ISTXT;
++ for (perm = 0, permXbits = 0;; ++p) {
++ switch (*p) {
++ case 'r':
++ perm |= S_IRUSR|S_IRGRP|S_IROTH;
++ break;
++ case 's':
++ /*
++ * If specific bits where requested and
++ * only "other" bits ignore set-id.
++ */
++ if (who == 0 || (who & ~S_IRWXO))
++ perm |= S_ISUID|S_ISGID;
++ break;
++ case 't':
++ /*
++ * If specific bits where requested and
++ * only "other" bits ignore set-id.
++ */
++ if (who == 0 || (who & ~S_IRWXO)) {
++ who |= S_ISTXT;
++ perm |= S_ISTXT;
++ }
++ break;
++ case 'w':
++ perm |= S_IWUSR|S_IWGRP|S_IWOTH;
++ break;
++ case 'X':
++ permXbits = S_IXUSR|S_IXGRP|S_IXOTH;
++ break;
++ case 'x':
++ perm |= S_IXUSR|S_IXGRP|S_IXOTH;
++ break;
++ case 'u':
++ case 'g':
++ case 'o':
++ /*
++ * When ever we hit 'u', 'g', or 'o', we have
++ * to flush out any partial mode that we have,
++ * and then do the copying of the mode bits.
++ */
++ if (perm) {
++ ADDCMD(op, who, perm, mask);
++ perm = 0;
++ }
++ if (op == '=')
++ equalopdone = 1;
++ if (op == '+' && permXbits) {
++ ADDCMD('X', who, permXbits, mask);
++ permXbits = 0;
++ }
++ ADDCMD(*p, who, op, mask);
++ break;
++
++ default:
++ /*
++ * Add any permissions that we haven't already
++ * done.
++ */
++ if (perm || (op == '=' && !equalopdone)) {
++ if (op == '=')
++ equalopdone = 1;
++ ADDCMD(op, who, perm, mask);
++ perm = 0;
++ }
++ if (permXbits) {
++ ADDCMD('X', who, permXbits, mask);
++ permXbits = 0;
++ }
++ goto apply;
++ }
++ }
++
++apply: if (!*p)
++ break;
++ if (*p != ',')
++ goto getop;
++ ++p;
++ }
++ set->cmd = 0;
++#ifdef SETMODE_DEBUG
++ (void)printf("Before compress_mode()\n");
++ dumpmode(saveset);
++#endif
++ compress_mode(saveset);
++#ifdef SETMODE_DEBUG
++ (void)printf("After compress_mode()\n");
++ dumpmode(saveset);
++#endif
++ return (saveset);
++}
++
++static BITCMD *
++addcmd(set, op, who, oparg, mask)
++ BITCMD *set;
++ int oparg, who;
++ int op;
++ u_int mask;
++{
++
++ _DIAGASSERT(set != NULL);
++
++ switch (op) {
++ case '=':
++ set->cmd = '-';
++ set->bits = who ? who : STANDARD_BITS;
++ set++;
++
++ op = '+';
++ /* FALLTHROUGH */
++ case '+':
++ case '-':
++ case 'X':
++ set->cmd = op;
++ set->bits = (who ? who : mask) & oparg;
++ break;
++
++ case 'u':
++ case 'g':
++ case 'o':
++ set->cmd = op;
++ if (who) {
++ set->cmd2 = ((who & S_IRUSR) ? CMD2_UBITS : 0) |
++ ((who & S_IRGRP) ? CMD2_GBITS : 0) |
++ ((who & S_IROTH) ? CMD2_OBITS : 0);
++ set->bits = (mode_t)~0;
++ } else {
++ set->cmd2 = CMD2_UBITS | CMD2_GBITS | CMD2_OBITS;
++ set->bits = mask;
++ }
++
++ if (oparg == '+')
++ set->cmd2 |= CMD2_SET;
++ else if (oparg == '-')
++ set->cmd2 |= CMD2_CLR;
++ else if (oparg == '=')
++ set->cmd2 |= CMD2_SET|CMD2_CLR;
++ break;
++ }
++ return (set + 1);
++}
++
++#ifdef SETMODE_DEBUG
++static void
++dumpmode(set)
++ BITCMD *set;
++{
++
++ _DIAGASSERT(set != NULL);
++
++ for (; set->cmd; ++set)
++ (void)printf("cmd: '%c' bits %04o%s%s%s%s%s%s\n",
++ set->cmd, set->bits, set->cmd2 ? " cmd2:" : "",
++ set->cmd2 & CMD2_CLR ? " CLR" : "",
++ set->cmd2 & CMD2_SET ? " SET" : "",
++ set->cmd2 & CMD2_UBITS ? " UBITS" : "",
++ set->cmd2 & CMD2_GBITS ? " GBITS" : "",
++ set->cmd2 & CMD2_OBITS ? " OBITS" : "");
++}
++#endif
++
++/*
++ * Given an array of bitcmd structures, compress by compacting consecutive
++ * '+', '-' and 'X' commands into at most 3 commands, one of each. The 'u',
++ * 'g' and 'o' commands continue to be separate. They could probably be
++ * compacted, but it's not worth the effort.
++ */
++static void
++compress_mode(set)
++ BITCMD *set;
++{
++ BITCMD *nset;
++ int setbits, clrbits, Xbits, op;
++
++ _DIAGASSERT(set != NULL);
++
++ for (nset = set;;) {
++ /* Copy over any 'u', 'g' and 'o' commands. */
++ while ((op = nset->cmd) != '+' && op != '-' && op != 'X') {
++ *set++ = *nset++;
++ if (!op)
++ return;
++ }
++
++ for (setbits = clrbits = Xbits = 0;; nset++) {
++ if ((op = nset->cmd) == '-') {
++ clrbits |= nset->bits;
++ setbits &= ~nset->bits;
++ Xbits &= ~nset->bits;
++ } else if (op == '+') {
++ setbits |= nset->bits;
++ clrbits &= ~nset->bits;
++ Xbits &= ~nset->bits;
++ } else if (op == 'X')
++ Xbits |= nset->bits & ~setbits;
++ else
++ break;
++ }
++ if (clrbits) {
++ set->cmd = '-';
++ set->cmd2 = 0;
++ set->bits = clrbits;
++ set++;
++ }
++ if (setbits) {
++ set->cmd = '+';
++ set->cmd2 = 0;
++ set->bits = setbits;
++ set++;
++ }
++ if (Xbits) {
++ set->cmd = 'X';
++ set->cmd2 = 0;
++ set->bits = Xbits;
++ set++;
++ }
++ }
++}
+
diff --git a/source/ap/ash/patches/ash-sighup.patch b/source/ap/ash/patches/ash-sighup.patch
new file mode 100644
index 000000000..b4d1bc041
--- /dev/null
+++ b/source/ap/ash/patches/ash-sighup.patch
@@ -0,0 +1,18 @@
+--- ash-0.4.0/jobs.c.orig Tue Jul 3 19:10:28 2001
++++ ash-0.4.0/jobs.c Tue Jul 3 19:12:11 2001
+@@ -712,6 +712,7 @@
+ } else if (mode == FORK_BG) {
+ ignoresig(SIGINT);
+ ignoresig(SIGQUIT);
++ ignoresig(SIGHUP);
+ if ((jp == NULL || jp->nprocs == 0) &&
+ ! fd0_redirected_p ()) {
+ close(0);
+@@ -723,6 +724,7 @@
+ if (mode == FORK_BG) {
+ ignoresig(SIGINT);
+ ignoresig(SIGQUIT);
++ ignoresig(SIGHUP);
+ if ((jp == NULL || jp->nprocs == 0) &&
+ ! fd0_redirected_p ()) {
+ close(0);
diff --git a/source/ap/ash/patches/ash-syntax.patch b/source/ap/ash/patches/ash-syntax.patch
new file mode 100644
index 000000000..43ce78660
--- /dev/null
+++ b/source/ap/ash/patches/ash-syntax.patch
@@ -0,0 +1,270 @@
+diff -urN netbsd-sh/mksyntax.c ash-0.3.7.orig/mksyntax.c
+--- netbsd-sh/mksyntax.c Fri Jan 12 17:50:38 2001
++++ ash-0.3.7.orig/mksyntax.c Mon Apr 23 22:16:46 2001
+@@ -238,14 +238,14 @@
+ add("$", "CVAR");
+ add("}", "CENDVAR");
+ /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
+- add("!*?[=~:/-", "CCTL");
++ add("!*?[=~:/-]", "CCTL");
+ print("dqsyntax");
+ init();
+ fputs("\n/* syntax table used when in single quotes */\n", cfile);
+ add("\n", "CNL");
+ add("'", "CENDQUOTE");
+ /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
+- add("!*?[=~:/-", "CCTL");
++ add("!*?[=~:/-]\\", "CCTL");
+ print("sqsyntax");
+ init();
+ fputs("\n/* syntax table used when in arithmetic */\n", cfile);
+diff -urN netbsd-sh/parser.c ash-0.3.7.orig/parser.c
+--- netbsd-sh/parser.c Fri Jan 12 17:50:39 2001
++++ ash-0.3.7.orig/parser.c Mon Apr 23 22:16:46 2001
+@@ -221,6 +221,7 @@
+ union node *n1, *n2, *n3;
+ int t;
+
++ checkkwd = 1;
+ n1 = pipeline();
+ for (;;) {
+ if ((t = readtoken()) == TAND) {
+@@ -231,6 +232,7 @@
+ tokpushback++;
+ return n1;
+ }
++ checkkwd = 2;
+ n2 = pipeline();
+ n3 = (union node *)stalloc(sizeof (struct nbinary));
+ n3->type = t;
+@@ -250,9 +252,11 @@
+
+ negate = 0;
+ TRACE(("pipeline: entered\n"));
+- while (readtoken() == TNOT)
++ if (readtoken() == TNOT) {
+ negate = !negate;
+- tokpushback++;
++ checkkwd = 1;
++ } else
++ tokpushback++;
+ n1 = command();
+ if (readtoken() == TPIPE) {
+ pipenode = (union node *)stalloc(sizeof (struct npipe));
+@@ -264,6 +268,7 @@
+ do {
+ prev = lp;
+ lp = (struct nodelist *)stalloc(sizeof (struct nodelist));
++ checkkwd = 2;
+ lp->n = command();
+ prev->next = lp;
+ } while (readtoken() == TPIPE);
+@@ -288,9 +293,8 @@
+ union node *ap, **app;
+ union node *cp, **cpp;
+ union node *redir, **rpp;
+- int t, negate = 0;
++ int t;
+
+- checkkwd = 2;
+ redir = NULL;
+ n1 = NULL;
+ rpp = &redir;
+@@ -303,12 +307,6 @@
+ }
+ tokpushback++;
+
+- while (readtoken() == TNOT) {
+- TRACE(("command: TNOT recognized\n"));
+- negate = !negate;
+- }
+- tokpushback++;
+-
+ switch (readtoken()) {
+ case TIF:
+ n1 = (union node *)stalloc(sizeof (struct nif));
+@@ -417,6 +415,8 @@
+ cpp = &n1->ncase.cases;
+ checkkwd = 2, readtoken();
+ do {
++ if (lasttoken == TLP)
++ readtoken();
+ *cpp = cp = (union node *)stalloc(sizeof (struct nclist));
+ cp->type = NCLIST;
+ app = &cp->nclist.pattern;
+@@ -464,21 +464,22 @@
+ break;
+ /* Handle an empty command like other simple commands. */
+ case TSEMI:
++ case TAND:
++ case TOR:
++ case TNL:
++ case TEOF:
++ case TRP:
++ case TBACKGND:
+ /*
+ * An empty command before a ; doesn't make much sense, and
+ * should certainly be disallowed in the case of `if ;'.
+ */
+ if (!redir)
+ synexpect(-1);
+- case TAND:
+- case TOR:
+- case TNL:
+- case TEOF:
+ case TWORD:
+- case TRP:
+ tokpushback++;
+ n1 = simplecmd(rpp, redir);
+- goto checkneg;
++ return n1;
+ default:
+ synexpect(-1);
+ /* NOTREACHED */
+@@ -502,15 +503,7 @@
+ n1->nredir.redirect = redir;
+ }
+
+-checkneg:
+- if (negate) {
+- n2 = (union node *)stalloc(sizeof (struct nnot));
+- n2->type = NNOT;
+- n2->nnot.com = n1;
+- return n2;
+- }
+- else
+- return n1;
++ return n1;
+ }
+
+
+@@ -520,8 +513,7 @@
+ {
+ union node *args, **app;
+ union node **orig_rpp = rpp;
+- union node *n = NULL, *n2;
+- int negate = 0;
++ union node *n = NULL;
+
+ /* If we don't have any redirections already, then we must reset */
+ /* rpp to be the address of the local redir variable. */
+@@ -537,12 +529,6 @@
+ */
+ orig_rpp = rpp;
+
+- while (readtoken() == TNOT) {
+- TRACE(("command: TNOT recognized\n"));
+- negate = !negate;
+- }
+- tokpushback++;
+-
+ for (;;) {
+ if (readtoken() == TWORD) {
+ n = (union node *)stalloc(sizeof (struct narg));
+@@ -565,8 +551,9 @@
+ synerror("Bad function name");
+ #endif
+ n->type = NDEFUN;
++ checkkwd = 2;
+ n->narg.next = command();
+- goto checkneg;
++ return n;
+ } else {
+ tokpushback++;
+ break;
+@@ -579,16 +566,7 @@
+ n->ncmd.backgnd = 0;
+ n->ncmd.args = args;
+ n->ncmd.redirect = redir;
+-
+-checkneg:
+- if (negate) {
+- n2 = (union node *)stalloc(sizeof (struct nnot));
+- n2->type = NNOT;
+- n2->nnot.com = n;
+- return n2;
+- }
+- else
+- return n;
++ return n;
+ }
+
+ STATIC union node *
+@@ -743,7 +721,7 @@
+ }
+ }
+ out:
+- checkkwd = (t == TNOT) ? savecheckkwd : 0;
++ checkkwd = 0;
+ }
+ #ifdef DEBUG
+ if (!alreadyseen)
+@@ -882,6 +860,7 @@
+ int varnest; /* levels of variables expansion */
+ int arinest; /* levels of arithmetic expansion */
+ int parenlevel; /* levels of parens in arithmetic */
++ int dqvarnest; /* levels of variables expansion within double quotes */
+ int oldstyle;
+ char const *prevsyntax; /* syntax before arithmetic */
+ #if __GNUC__
+@@ -892,6 +871,7 @@
+ (void) &varnest;
+ (void) &arinest;
+ (void) &parenlevel;
++ (void) &dqvarnest;
+ (void) &oldstyle;
+ (void) &prevsyntax;
+ (void) &syntax;
+@@ -906,6 +886,7 @@
+ varnest = 0;
+ arinest = 0;
+ parenlevel = 0;
++ dqvarnest = 0;
+
+ STARTSTACKSTR(out);
+ loop: { /* for each line, until end of word */
+@@ -938,7 +919,8 @@
+ USTPUTC(c, out);
+ break;
+ case CCTL:
+- if (eofmark == NULL || dblquote)
++ if ((eofmark == NULL || dblquote) &&
++ dqvarnest == 0)
+ USTPUTC(CTLESC, out);
+ USTPUTC(c, out);
+ break;
+@@ -983,7 +965,8 @@
+ if (arinest) {
+ syntax = ARISYNTAX;
+ dblquote = 0;
+- } else if (eofmark == NULL) {
++ } else if (eofmark == NULL &&
++ dqvarnest == 0) {
+ syntax = BASESYNTAX;
+ dblquote = 0;
+ }
+@@ -996,6 +979,9 @@
+ case CENDVAR: /* '}' */
+ if (varnest > 0) {
+ varnest--;
++ if (dqvarnest > 0) {
++ dqvarnest--;
++ }
+ USTPUTC(CTLENDVAR, out);
+ } else {
+ USTPUTC(c, out);
+@@ -1260,8 +1248,12 @@
+ if (dblquote || arinest)
+ flags |= VSQUOTE;
+ *(stackblock() + typeloc) = subtype | flags;
+- if (subtype != VSNORMAL)
++ if (subtype != VSNORMAL) {
+ varnest++;
++ if (dblquote) {
++ dqvarnest++;
++ }
++ }
+ }
+ goto parsesub_return;
+ }
+
diff --git a/source/ap/ash/patches/ash-test.patch b/source/ap/ash/patches/ash-test.patch
new file mode 100644
index 000000000..14c9f6802
--- /dev/null
+++ b/source/ap/ash/patches/ash-test.patch
@@ -0,0 +1,588 @@
+diff -urN netbsd-sh/bltin/test.c ash-0.3.7.orig/bltin/test.c
+--- netbsd-sh/bltin/test.c Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/bltin/test.c Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,583 @@
++/* $NetBSD: test.c,v 1.22 2000/04/09 23:24:59 christos Exp $ */
++
++/*
++ * test(1); version 7-like -- author Erik Baalbergen
++ * modified by Eric Gisin to be used as built-in.
++ * modified by Arnold Robbins to add SVR3 compatibility
++ * (-x -c -b -p -u -g -k) plus Korn's -L -nt -ot -ef and new -S (socket).
++ * modified by J.T. Conklin for NetBSD.
++ *
++ * This program is in the Public Domain.
++ */
++
++#include <sys/cdefs.h>
++#ifndef lint
++__RCSID("$NetBSD: test.c,v 1.22 2000/04/09 23:24:59 christos Exp $");
++#endif
++
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <unistd.h>
++#include <ctype.h>
++#include <errno.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <err.h>
++#ifdef __STDC__
++#include <stdarg.h>
++#else
++#include <varargs.h>
++#endif
++
++/* test(1) accepts the following grammar:
++ oexpr ::= aexpr | aexpr "-o" oexpr ;
++ aexpr ::= nexpr | nexpr "-a" aexpr ;
++ nexpr ::= primary | "!" primary
++ primary ::= unary-operator operand
++ | operand binary-operator operand
++ | operand
++ | "(" oexpr ")"
++ ;
++ unary-operator ::= "-r"|"-w"|"-x"|"-f"|"-d"|"-c"|"-b"|"-p"|
++ "-u"|"-g"|"-k"|"-s"|"-t"|"-z"|"-n"|"-o"|"-O"|"-G"|"-L"|"-S";
++
++ binary-operator ::= "="|"!="|"-eq"|"-ne"|"-ge"|"-gt"|"-le"|"-lt"|
++ "-nt"|"-ot"|"-ef";
++ operand ::= <any legal UNIX file name>
++*/
++
++enum token {
++ EOI,
++ FILRD,
++ FILWR,
++ FILEX,
++ FILEXIST,
++ FILREG,
++ FILDIR,
++ FILCDEV,
++ FILBDEV,
++ FILFIFO,
++ FILSOCK,
++ FILSYM,
++ FILGZ,
++ FILTT,
++ FILSUID,
++ FILSGID,
++ FILSTCK,
++ FILNT,
++ FILOT,
++ FILEQ,
++ FILUID,
++ FILGID,
++ STREZ,
++ STRNZ,
++ STREQ,
++ STRNE,
++ STRLT,
++ STRGT,
++ INTEQ,
++ INTNE,
++ INTGE,
++ INTGT,
++ INTLE,
++ INTLT,
++ UNOT,
++ BAND,
++ BOR,
++ LPAREN,
++ RPAREN,
++ OPERAND
++};
++
++enum token_types {
++ UNOP,
++ BINOP,
++ BUNOP,
++ BBINOP,
++ PAREN
++};
++
++static struct t_op {
++ const char *op_text;
++ short op_num, op_type;
++} const ops [] = {
++ {"-r", FILRD, UNOP},
++ {"-w", FILWR, UNOP},
++ {"-x", FILEX, UNOP},
++ {"-e", FILEXIST,UNOP},
++ {"-f", FILREG, UNOP},
++ {"-d", FILDIR, UNOP},
++ {"-c", FILCDEV,UNOP},
++ {"-b", FILBDEV,UNOP},
++ {"-p", FILFIFO,UNOP},
++ {"-u", FILSUID,UNOP},
++ {"-g", FILSGID,UNOP},
++ {"-k", FILSTCK,UNOP},
++ {"-s", FILGZ, UNOP},
++ {"-t", FILTT, UNOP},
++ {"-z", STREZ, UNOP},
++ {"-n", STRNZ, UNOP},
++ {"-h", FILSYM, UNOP}, /* for backwards compat */
++ {"-O", FILUID, UNOP},
++ {"-G", FILGID, UNOP},
++ {"-L", FILSYM, UNOP},
++ {"-S", FILSOCK,UNOP},
++ {"=", STREQ, BINOP},
++ {"!=", STRNE, BINOP},
++ {"<", STRLT, BINOP},
++ {">", STRGT, BINOP},
++ {"-eq", INTEQ, BINOP},
++ {"-ne", INTNE, BINOP},
++ {"-ge", INTGE, BINOP},
++ {"-gt", INTGT, BINOP},
++ {"-le", INTLE, BINOP},
++ {"-lt", INTLT, BINOP},
++ {"-nt", FILNT, BINOP},
++ {"-ot", FILOT, BINOP},
++ {"-ef", FILEQ, BINOP},
++ {"!", UNOT, BUNOP},
++ {"-a", BAND, BBINOP},
++ {"-o", BOR, BBINOP},
++ {"(", LPAREN, PAREN},
++ {")", RPAREN, PAREN},
++ {0, 0, 0}
++};
++
++static char **t_wp;
++static struct t_op const *t_wp_op;
++static gid_t *group_array = NULL;
++static int ngroups;
++
++static void syntax __P((const char *, const char *));
++static int oexpr __P((enum token));
++static int aexpr __P((enum token));
++static int nexpr __P((enum token));
++static int primary __P((enum token));
++static int binop __P((void));
++static int filstat __P((char *, enum token));
++static enum token t_lex __P((char *));
++static int isoperand __P((void));
++static int getn __P((const char *));
++static int newerf __P((const char *, const char *));
++static int olderf __P((const char *, const char *));
++static int equalf __P((const char *, const char *));
++static int test_eaccess();
++static int bash_group_member();
++static void initialize_group_array();
++
++#if defined(SHELL)
++extern void error __P((const char *, ...)) __attribute__((__noreturn__));
++#else
++static void error __P((const char *, ...)) __attribute__((__noreturn__));
++
++static void
++#ifdef __STDC__
++error(const char *msg, ...)
++#else
++error(va_alist)
++ va_dcl
++#endif
++{
++ va_list ap;
++#ifndef __STDC__
++ const char *msg;
++
++ va_start(ap);
++ msg = va_arg(ap, const char *);
++#else
++ va_start(ap, msg);
++#endif
++ verrx(2, msg, ap);
++ /*NOTREACHED*/
++ va_end(ap);
++}
++#endif
++
++#ifdef SHELL
++int testcmd __P((int, char **));
++
++int
++testcmd(argc, argv)
++ int argc;
++ char **argv;
++#else
++int main __P((int, char **));
++
++int
++main(argc, argv)
++ int argc;
++ char **argv;
++#endif
++{
++ int res;
++
++
++ if (strcmp(argv[0], "[") == 0) {
++ if (strcmp(argv[--argc], "]"))
++ error("missing ]");
++ argv[argc] = NULL;
++ }
++
++ if (argc < 2)
++ return 1;
++
++ t_wp = &argv[1];
++ res = !oexpr(t_lex(*t_wp));
++
++ if (*t_wp != NULL && *++t_wp != NULL)
++ syntax(*t_wp, "unexpected operator");
++
++ return res;
++}
++
++static void
++syntax(op, msg)
++ const char *op;
++ const char *msg;
++{
++ if (op && *op)
++ error("%s: %s", op, msg);
++ else
++ error("%s", msg);
++}
++
++static int
++oexpr(n)
++ enum token n;
++{
++ int res;
++
++ res = aexpr(n);
++ if (t_lex(*++t_wp) == BOR)
++ return oexpr(t_lex(*++t_wp)) || res;
++ t_wp--;
++ return res;
++}
++
++static int
++aexpr(n)
++ enum token n;
++{
++ int res;
++
++ res = nexpr(n);
++ if (t_lex(*++t_wp) == BAND)
++ return aexpr(t_lex(*++t_wp)) && res;
++ t_wp--;
++ return res;
++}
++
++static int
++nexpr(n)
++ enum token n; /* token */
++{
++ if (n == UNOT)
++ return !nexpr(t_lex(*++t_wp));
++ return primary(n);
++}
++
++static int
++primary(n)
++ enum token n;
++{
++ enum token nn;
++ int res;
++
++ if (n == EOI)
++ return 0; /* missing expression */
++ if (n == LPAREN) {
++ if ((nn = t_lex(*++t_wp)) == RPAREN)
++ return 0; /* missing expression */
++ res = oexpr(nn);
++ if (t_lex(*++t_wp) != RPAREN)
++ syntax(NULL, "closing paren expected");
++ return res;
++ }
++ if (t_wp_op && t_wp_op->op_type == UNOP) {
++ /* unary expression */
++ if (*++t_wp == NULL)
++ syntax(t_wp_op->op_text, "argument expected");
++ switch (n) {
++ case STREZ:
++ return strlen(*t_wp) == 0;
++ case STRNZ:
++ return strlen(*t_wp) != 0;
++ case FILTT:
++ return isatty(getn(*t_wp));
++ default:
++ return filstat(*t_wp, n);
++ }
++ }
++
++ if (t_lex(t_wp[1]), t_wp_op && t_wp_op->op_type == BINOP) {
++ return binop();
++ }
++
++ return strlen(*t_wp) > 0;
++}
++
++static int
++binop()
++{
++ const char *opnd1, *opnd2;
++ struct t_op const *op;
++
++ opnd1 = *t_wp;
++ (void) t_lex(*++t_wp);
++ op = t_wp_op;
++
++ if ((opnd2 = *++t_wp) == (char *)0)
++ syntax(op->op_text, "argument expected");
++
++ switch (op->op_num) {
++ case STREQ:
++ return strcmp(opnd1, opnd2) == 0;
++ case STRNE:
++ return strcmp(opnd1, opnd2) != 0;
++ case STRLT:
++ return strcmp(opnd1, opnd2) < 0;
++ case STRGT:
++ return strcmp(opnd1, opnd2) > 0;
++ case INTEQ:
++ return getn(opnd1) == getn(opnd2);
++ case INTNE:
++ return getn(opnd1) != getn(opnd2);
++ case INTGE:
++ return getn(opnd1) >= getn(opnd2);
++ case INTGT:
++ return getn(opnd1) > getn(opnd2);
++ case INTLE:
++ return getn(opnd1) <= getn(opnd2);
++ case INTLT:
++ return getn(opnd1) < getn(opnd2);
++ case FILNT:
++ return newerf (opnd1, opnd2);
++ case FILOT:
++ return olderf (opnd1, opnd2);
++ case FILEQ:
++ return equalf (opnd1, opnd2);
++ default:
++ abort();
++ /* NOTREACHED */
++ }
++}
++
++static int
++filstat(nm, mode)
++ char *nm;
++ enum token mode;
++{
++ struct stat s;
++
++ if (mode == FILSYM ? lstat(nm, &s) : stat(nm, &s))
++ return 0;
++
++ switch (mode) {
++ case FILRD:
++ return test_eaccess(nm, R_OK) == 0;
++ case FILWR:
++ return test_eaccess(nm, W_OK) == 0;
++ case FILEX:
++ return test_eaccess(nm, X_OK) == 0;
++ case FILEXIST:
++ return 1;
++ case FILREG:
++ return S_ISREG(s.st_mode);
++ case FILDIR:
++ return S_ISDIR(s.st_mode);
++ case FILCDEV:
++ return S_ISCHR(s.st_mode);
++ case FILBDEV:
++ return S_ISBLK(s.st_mode);
++ case FILFIFO:
++ return S_ISFIFO(s.st_mode);
++ case FILSOCK:
++ return S_ISSOCK(s.st_mode);
++ case FILSYM:
++ return S_ISLNK(s.st_mode);
++ case FILSUID:
++ return (s.st_mode & S_ISUID) != 0;
++ case FILSGID:
++ return (s.st_mode & S_ISGID) != 0;
++ case FILSTCK:
++ return (s.st_mode & S_ISVTX) != 0;
++ case FILGZ:
++ return s.st_size > (off_t)0;
++ case FILUID:
++ return s.st_uid == geteuid();
++ case FILGID:
++ return s.st_gid == getegid();
++ default:
++ return 1;
++ }
++}
++
++static enum token
++t_lex(s)
++ char *s;
++{
++ struct t_op const *op = ops;
++
++ if (s == 0) {
++ t_wp_op = (struct t_op *)0;
++ return EOI;
++ }
++ while (op->op_text) {
++ if (strcmp(s, op->op_text) == 0) {
++ if ((op->op_type == UNOP && isoperand()) ||
++ (op->op_num == LPAREN && *(t_wp+1) == 0))
++ break;
++ t_wp_op = op;
++ return op->op_num;
++ }
++ op++;
++ }
++ t_wp_op = (struct t_op *)0;
++ return OPERAND;
++}
++
++static int
++isoperand()
++{
++ struct t_op const *op = ops;
++ char *s;
++ char *t;
++
++ if ((s = *(t_wp+1)) == 0)
++ return 1;
++ if ((t = *(t_wp+2)) == 0)
++ return 0;
++ while (op->op_text) {
++ if (strcmp(s, op->op_text) == 0)
++ return op->op_type == BINOP &&
++ (t[0] != ')' || t[1] != '\0');
++ op++;
++ }
++ return 0;
++}
++
++/* atoi with error detection */
++static int
++getn(s)
++ const char *s;
++{
++ char *p;
++ long r;
++
++ errno = 0;
++ r = strtol(s, &p, 10);
++
++ if (errno != 0)
++ error("%s: out of range", s);
++
++ while (isspace((unsigned char)*p))
++ p++;
++
++ if (*p)
++ error("%s: bad number", s);
++
++ return (int) r;
++}
++
++static int
++newerf (f1, f2)
++const char *f1, *f2;
++{
++ struct stat b1, b2;
++
++ return (stat (f1, &b1) == 0 &&
++ stat (f2, &b2) == 0 &&
++ b1.st_mtime > b2.st_mtime);
++}
++
++static int
++olderf (f1, f2)
++const char *f1, *f2;
++{
++ struct stat b1, b2;
++
++ return (stat (f1, &b1) == 0 &&
++ stat (f2, &b2) == 0 &&
++ b1.st_mtime < b2.st_mtime);
++}
++
++static int
++equalf (f1, f2)
++const char *f1, *f2;
++{
++ struct stat b1, b2;
++
++ return (stat (f1, &b1) == 0 &&
++ stat (f2, &b2) == 0 &&
++ b1.st_dev == b2.st_dev &&
++ b1.st_ino == b2.st_ino);
++}
++
++/* Do the same thing access(2) does, but use the effective uid and gid,
++ and don't make the mistake of telling root that any file is
++ executable. */
++static int
++test_eaccess (path, mode)
++char *path;
++int mode;
++{
++ struct stat st;
++ int euid = geteuid();
++
++ if (stat (path, &st) < 0)
++ return (-1);
++
++ if (euid == 0) {
++ /* Root can read or write any file. */
++ if (mode != X_OK)
++ return (0);
++
++ /* Root can execute any file that has any one of the execute
++ bits set. */
++ if (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))
++ return (0);
++ }
++
++ if (st.st_uid == euid) /* owner */
++ mode <<= 6;
++ else if (bash_group_member (st.st_gid))
++ mode <<= 3;
++
++ if (st.st_mode & mode)
++ return (0);
++
++ return (-1);
++}
++
++static void
++initialize_group_array ()
++{
++ ngroups = getgroups(0, NULL);
++ group_array = malloc(ngroups * sizeof(gid_t));
++ if (!group_array)
++ error(strerror(ENOMEM));
++ getgroups(ngroups, group_array);
++}
++
++/* Return non-zero if GID is one that we have in our groups list. */
++static int
++bash_group_member (gid)
++gid_t gid;
++{
++ register int i;
++
++ /* Short-circuit if possible, maybe saving a call to getgroups(). */
++ if (gid == getgid() || gid == getegid())
++ return (1);
++
++ if (ngroups == 0)
++ initialize_group_array ();
++
++ /* Search through the list looking for GID. */
++ for (i = 0; i < ngroups; i++)
++ if (gid == group_array[i])
++ return (1);
++
++ return (0);
++}
+
diff --git a/source/ap/ash/patches/ash-times.patch b/source/ap/ash/patches/ash-times.patch
new file mode 100644
index 000000000..4c24f9a66
--- /dev/null
+++ b/source/ap/ash/patches/ash-times.patch
@@ -0,0 +1,42 @@
+diff -urN netbsd-sh/bltin/times.c ash-0.3.7.orig/bltin/times.c
+--- netbsd-sh/bltin/times.c Thu Jan 1 01:00:00 1970
++++ ash-0.3.7.orig/bltin/times.c Mon Apr 23 22:16:46 2001
+@@ -0,0 +1,30 @@
++#ifdef _GNU_SOURCE
++/*
++ * Copyright (c) 1999 Herbert Xu <herbert@debian.org>
++ * This file contains code for the times builtin.
++ * $Id: times.c,v 1.4 2000/04/01 09:23:02 herbert Exp $
++ */
++
++#include <stdio.h>
++#include <sys/times.h>
++#include <unistd.h>
++
++#define main timescmd
++
++int main() {
++ struct tms buf;
++ long int clk_tck = sysconf(_SC_CLK_TCK);
++
++ times(&buf);
++ printf("%dm%fs %dm%fs\n%dm%fs %dm%fs\n",
++ (int) (buf.tms_utime / clk_tck / 60),
++ ((double) buf.tms_utime) / clk_tck,
++ (int) (buf.tms_stime / clk_tck / 60),
++ ((double) buf.tms_stime) / clk_tck,
++ (int) (buf.tms_cutime / clk_tck / 60),
++ ((double) buf.tms_cutime) / clk_tck,
++ (int) (buf.tms_cstime / clk_tck / 60),
++ ((double) buf.tms_cstime) / clk_tck);
++ return 0;
++}
++#endif /* _GNU_SOURCE */
+diff -urN netbsd-sh/builtins.def ash-0.3.7.orig/builtins.def
+--- netbsd-sh/builtins.def Mon Apr 10 13:02:58 2000
++++ ash-0.3.7.orig/builtins.def Mon Apr 23 22:16:46 2001
+@@ -91,3 +93,4 @@
+ aliascmd alias
+ ulimitcmd ulimit
+ testcmd test [
++timescmd times
diff --git a/source/ap/ash/slack-desc b/source/ap/ash/slack-desc
new file mode 100644
index 000000000..e8d2c9c29
--- /dev/null
+++ b/source/ap/ash/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------------------------------------------------------|
+ash: ash (Kenneth Almquist's ash shell)
+ash:
+ash: A lightweight (92K) Bourne compatible shell. Great for machines with
+ash: low memory, but does not provide all the extras of shells like bash,
+ash: tcsh, and zsh. Runs most shell scripts compatible with the Bourne
+ash: shell. Note that under Linux, most scripts seem to use at least some
+ash: bash-specific syntax. The Slackware setup scripts are a notable
+ash: exception, since ash is the shell used on the install disks. NetBSD
+ash: uses ash as its /bin/sh.
+ash:
+ash:
diff --git a/source/ap/at/at.SlackBuild b/source/ap/at/at.SlackBuild
new file mode 100755
index 000000000..2751bfc9e
--- /dev/null
+++ b/source/ap/at/at.SlackBuild
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-3.1.10}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+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-at
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf at-$VERSION
+tar xvf $CWD/at-${VERSION}.tar.bz2 || exit 1
+cd at-$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 {} \;
+
+# Or else /var/spool/cron will be used:
+mkdir -p /var/spool/at{jobs,spool}
+chmod 770 /var/spool/at{jobs,spool}
+chown daemon:daemon /var/spool/at{jobs,spool}
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ $ARCH-slackware-linux
+
+# Does not like parallel builds:
+make || exit 1
+make install IROOT=$PKG || exit
+
+mv $PKG/etc/at.deny $PKG/etc/at.deny.new
+chown root:root $PKG/var $PKG/var/spool
+
+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
+ 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 -rf $PKG/usr/doc/at
+mkdir -p $PKG/usr/doc/at-$VERSION
+cp -a \
+ COPYING ChangeLog debian/copyright Problems README timespec \
+ $PKG/usr/doc/at-$VERSION
+mv $PKG/usr/doc/at-$VERSION/copyright $PKG/usr/doc/at-$VERSION/Copyright
+chmod 644 $PKG/usr/doc/at-$VERSION/Copyright
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/at-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/at/doinst.sh b/source/ap/at/doinst.sh
new file mode 100644
index 000000000..555d8319b
--- /dev/null
+++ b/source/ap/at/doinst.sh
@@ -0,0 +1,30 @@
+#!/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/at.deny.new
+if [ ! -r var/spool/atjobs/.SEQ ]; then
+ touch var/spool/atjobs/.SEQ
+ chmod 660 var/spool/atjobs/.SEQ
+ chown daemon.daemon var/spool/atjobs/.SEQ
+fi
+( cd usr/bin ; rm -rf atq )
+( cd usr/bin ; ln -sf at atq )
+( cd usr/bin ; rm -rf atrm )
+( cd usr/bin ; ln -sf at atrm )
+( cd usr/man/man1 ; rm -rf atq.1.gz )
+( cd usr/man/man1 ; ln -sf at.1.gz atq.1.gz )
+( cd usr/man/man1 ; rm -rf atrm.1.gz )
+( cd usr/man/man1 ; ln -sf at.1.gz atrm.1.gz )
+( cd usr/man/man1 ; rm -rf batch.1.gz )
+( cd usr/man/man1 ; ln -sf at.1.gz batch.1.gz )
+( cd usr/man/man5 ; rm -rf at_deny.5.gz )
+( cd usr/man/man5 ; ln -sf at_allow.5.gz at_deny.5.gz )
diff --git a/source/ap/at/slack-desc b/source/ap/at/slack-desc
new file mode 100644
index 000000000..ba276df62
--- /dev/null
+++ b/source/ap/at/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------------------------------------------------------|
+at: at (delayed command execution)
+at:
+at: at and batch read shell commands from standard input (or a specified
+at: file) storing them as a job to be scheduled for execution at a later
+at: time.
+at:
+at: The 'at' command was written by David Parsons and Thomas Koenig.
+at:
+at:
+at:
+at:
diff --git a/source/ap/aumix/aumix.SlackBuild b/source/ap/aumix/aumix.SlackBuild
new file mode 100755
index 000000000..7261ba64e
--- /dev/null
+++ b/source/ap/aumix/aumix.SlackBuild
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=2.8
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-aumix
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf aumix-$VERSION
+tar xjvf $CWD/aumix-$VERSION.tar.bz2
+cd aumix-$VERSION
+zcat $CWD/aumix.alsa.diff.gz | patch -p1 --verbose --backup --suffix=.orig
+chown -R root:root .
+CFLAGS="$SLKCFLAGS" \
+./configure --prefix=/usr \
+ --without-gtk1
+make || exit 1
+make install DESTDIR=$PKG
+strip $PKG/usr/bin/*
+mkdir -p $PKG/usr/doc/aumix-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS BUGS COPYING INSTALL NEWS README TODO \
+ $PKG/usr/doc/aumix-$VERSION
+# This is obsolete (besides being broken)
+rm -f $PKG/usr/bin/xaumix $PKG/usr/man/man1/xaumix.1
+# More fluff, doesn't deserve mainsteam placement
+mv $PKG/usr/bin/mute $PKG/usr/doc/aumix-$VERSION/mute.sh
+gzip -9 $PKG/usr/man/man1/*
+mkdir $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/aumix-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/aumix/aumix.alsa.diff b/source/ap/aumix/aumix.alsa.diff
new file mode 100644
index 000000000..6d632cf5f
--- /dev/null
+++ b/source/ap/aumix/aumix.alsa.diff
@@ -0,0 +1,34 @@
+--- ./src/common.h.orig 2002-10-29 13:27:51.000000000 -0800
++++ ./src/common.h 2003-08-28 23:16:53.000000000 -0700
+@@ -55,7 +55,7 @@
+ #endif /* HAVE_SYS_SOUNDCARD_H */
+
+ #ifdef HAVE_ALSA
+-#include <sys/asoundlib.h>
++#include <alsa/asoundlib.h>
+ #endif /* HAVE_ALSA */
+ #define MAXLEVEL 100 /* highest level permitted by OSS drivers */
+ enum {
+--- ./configure.orig 2002-11-24 17:35:48.000000000 -0800
++++ ./configure 2003-08-28 23:14:46.000000000 -0700
+@@ -1890,16 +1890,16 @@
+ fi
+
+ if test $alsa_must = on; then
+- ac_safe=`echo "sys/asoundlib.h" | sed 'y%./+-%__p_%'`
+-echo $ac_n "checking for sys/asoundlib.h""... $ac_c" 1>&6
+-echo "configure:1896: checking for sys/asoundlib.h" >&5
++ ac_safe=`echo "alsa/asoundlib.h" | sed 'y%./+-%__p_%'`
++echo $ac_n "checking for alsa/asoundlib.h""... $ac_c" 1>&6
++echo "configure:1896: checking for alsa/asoundlib.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+ #line 1901 "configure"
+ #include "confdefs.h"
+-#include <sys/asoundlib.h>
++#include <alsa/asoundlib.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+ { (eval echo configure:1906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
diff --git a/source/ap/aumix/slack-desc b/source/ap/aumix/slack-desc
new file mode 100644
index 000000000..70e780877
--- /dev/null
+++ b/source/ap/aumix/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------------------------------------------------------|
+aumix: aumix (GTK+/ncurses audio mixer)
+aumix:
+aumix: This is a program for adjusting audio mixers from the command line or
+aumix: scripts, or interactively at the console or a terminal with a
+aumix: full-screen, ncurses-based interface or a GTK-based X interface.
+aumix:
+aumix:
+aumix:
+aumix:
+aumix:
+aumix:
diff --git a/source/ap/bc/bc.SlackBuild b/source/ap/bc/bc.SlackBuild
new file mode 100755
index 000000000..a8ebb8ebc
--- /dev/null
+++ b/source/ap/bc/bc.SlackBuild
@@ -0,0 +1,111 @@
+#!/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=bc
+VERSION=${VERSION:-1.06.95}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --with-readline \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# 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 COPYING.LIB Examples FAQ INSTALL NEWS README Test \
+ $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
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/bc/slack-desc b/source/ap/bc/slack-desc
new file mode 100644
index 000000000..765f6d824
--- /dev/null
+++ b/source/ap/bc/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------------------------------------------------------|
+bc: bc (An arbitrary precision calculator language)
+bc:
+bc: bc is an arbitrary precision numeric processing language. Syntax is
+bc: similar to C, but differs in many substantial areas. It supports
+bc: interactive execution of statements. bc is a utility included in the
+bc: POSIX P1003.2/D11 draft standard.
+bc:
+bc: The GNU version of bc was written by Philip A. Nelson.
+bc:
+bc:
+bc:
diff --git a/source/ap/bpe/bpe.SlackBuild b/source/ap/bpe/bpe.SlackBuild
new file mode 100755
index 000000000..44fde4c8f
--- /dev/null
+++ b/source/ap/bpe/bpe.SlackBuild
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=2.01.00
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-bpe
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf bpe-$VERSION
+tar xzvf $CWD/bpe-$VERSION.tar.gz
+cd bpe-$VERSION
+chown -R root:root .
+find . -perm 777 -exec chmod 755 {} \;
+find . -perm 664 -exec chmod 644 {} \;
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr
+make
+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
+)
+mkdir -p $PKG/usr/doc/bpe-$VERSION
+cp -a \
+ HISTORY LICENSE README-bpe \
+ $PKG/usr/doc/bpe-$VERSION
+gzip -9 $PKG/usr/man/man?/*.?
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/bpe-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/bpe/slack-desc b/source/ap/bpe/slack-desc
new file mode 100644
index 000000000..7c2de23c7
--- /dev/null
+++ b/source/ap/bpe/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------------------------------------------------------|
+bpe: bpe (Binary Patch Editor)
+bpe:
+bpe: bpe is a simple, screen-oriented editor for searching and editing
+bpe: ordinary files in either ASCII or hexadecimal modes.
+bpe:
+bpe: bpe was written by Andreas Pleschutznig. Bill Davidsen contributed
+bpe: additional features, as did Ralphe Neill (the current maintainer).
+bpe:
+bpe:
+bpe:
+bpe:
diff --git a/source/ap/cdparanoia/cdparanoia-III-10.2_cdda_private.patch b/source/ap/cdparanoia/cdparanoia-III-10.2_cdda_private.patch
new file mode 100644
index 000000000..9181218f4
--- /dev/null
+++ b/source/ap/cdparanoia/cdparanoia-III-10.2_cdda_private.patch
@@ -0,0 +1,481 @@
+Index: /trunk/cdparanoia/interface/test_interface.c
+===================================================================
+--- /trunk/cdparanoia/interface/test_interface.c (revision 15299)
++++ /trunk/cdparanoia/interface/test_interface.c (revision 15338)
+@@ -67,7 +67,7 @@
+
+ if(begin<lastread)
+- d->private->last_milliseconds=20;
++ d->private_data->last_milliseconds=20;
+ else
+- d->private->last_milliseconds=sectors;
++ d->private_data->last_milliseconds=sectors;
+
+ #ifdef CDDA_TEST_UNDERRUN
+Index: /trunk/cdparanoia/interface/cdda_interface.h
+===================================================================
+--- /trunk/cdparanoia/interface/cdda_interface.h (revision 15290)
++++ /trunk/cdparanoia/interface/cdda_interface.h (revision 15338)
+@@ -85,5 +85,5 @@
+ int is_mmc;
+
+- cdda_private_data_t *private;
++ cdda_private_data_t *private_data;
+ void *reserved;
+ unsigned char inqbytes[4];
+Index: /trunk/cdparanoia/interface/interface.c
+===================================================================
+--- /trunk/cdparanoia/interface/interface.c (revision 15314)
++++ /trunk/cdparanoia/interface/interface.c (revision 15338)
+@@ -40,7 +40,7 @@
+ if(d->cdda_fd!=-1)close(d->cdda_fd);
+ if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
+- if(d->private){
+- if(d->private->sg_hd)free(d->private->sg_hd);
+- free(d->private);
++ if(d->private_data){
++ if(d->private_data->sg_hd)free(d->private_data->sg_hd);
++ free(d->private_data);
+ }
+
+@@ -128,5 +128,5 @@
+ }
+ }
+- if(ms)*ms=d->private->last_milliseconds;
++ if(ms)*ms=d->private_data->last_milliseconds;
+ return(sectors);
+ }
+Index: /trunk/cdparanoia/interface/scsi_interface.c
+===================================================================
+--- /trunk/cdparanoia/interface/scsi_interface.c (revision 15314)
++++ /trunk/cdparanoia/interface/scsi_interface.c (revision 15338)
+@@ -16,11 +16,11 @@
+ struct timespec tv1;
+ struct timespec tv2;
+- int ret1=clock_gettime(d->private->clock,&tv1);
++ int ret1=clock_gettime(d->private_data->clock,&tv1);
+ int ret2=ioctl(fd, command,arg);
+- int ret3=clock_gettime(d->private->clock,&tv2);
++ int ret3=clock_gettime(d->private_data->clock,&tv2);
+ if(ret1<0 || ret3<0){
+- d->private->last_milliseconds=-1;
++ d->private_data->last_milliseconds=-1;
+ }else{
+- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+ }
+ return ret2;
+@@ -97,5 +97,5 @@
+ fd_set fdset;
+ struct timeval tv;
+- struct sg_header *sg_hd=d->private->sg_hd;
++ struct sg_header *sg_hd=d->private_data->sg_hd;
+ int flag=0;
+
+@@ -186,5 +186,5 @@
+ int tret1,tret2;
+ int status = 0;
+- struct sg_header *sg_hd=d->private->sg_hd;
++ struct sg_header *sg_hd=d->private_data->sg_hd;
+ long writebytes=SG_OFF+cmd_len+in_size;
+
+@@ -196,5 +196,5 @@
+ memset(sg_hd,0,sizeof(sg_hd));
+ memset(sense_buffer,0,SG_MAX_SENSE);
+- memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
++ memcpy(d->private_data->sg_buffer,cmd,cmd_len+in_size);
+ sg_hd->twelve_byte = cmd_len == 12;
+ sg_hd->result = 0;
+@@ -210,5 +210,5 @@
+
+ if(bytecheck && out_size>in_size){
+- memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
++ memset(d->private_data->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size);
+ /* the size does not remove cmd_len due to the way the kernel
+ driver copies buffers */
+@@ -244,5 +244,5 @@
+
+ sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
+- tret1=clock_gettime(d->private->clock,&tv1);
++ tret1=clock_gettime(d->private_data->clock,&tv1);
+ errno=0;
+ status = write(d->cdda_fd, sg_hd, writebytes );
+@@ -290,5 +290,5 @@
+ }
+
+- tret2=clock_gettime(d->private->clock,&tv2);
++ tret2=clock_gettime(d->private_data->clock,&tv2);
+ errno=0;
+ status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
+@@ -314,5 +314,5 @@
+ long i,flag=0;
+ for(i=in_size;i<out_size;i++)
+- if(d->private->sg_buffer[i]!=bytefill){
++ if(d->private_data->sg_buffer[i]!=bytefill){
+ flag=1;
+ break;
+@@ -327,7 +327,7 @@
+ errno=0;
+ if(tret1<0 || tret2<0){
+- d->private->last_milliseconds=-1;
++ d->private_data->last_milliseconds=-1;
+ }else{
+- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
+ }
+ return(0);
+@@ -348,5 +348,5 @@
+ memset(&hdr,0,sizeof(hdr));
+ memset(sense,0,sizeof(sense));
+- memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
++ memcpy(d->private_data->sg_buffer,cmd+cmd_len,in_size);
+
+ hdr.cmdp = cmd;
+@@ -356,5 +356,5 @@
+ hdr.timeout = 50000;
+ hdr.interface_id = 'S';
+- hdr.dxferp = d->private->sg_buffer;
++ hdr.dxferp = d->private_data->sg_buffer;
+ hdr.flags = SG_FLAG_DIRECT_IO; /* direct IO if we can get it */
+
+@@ -401,5 +401,5 @@
+ long i,flag=0;
+ for(i=in_size;i<out_size;i++)
+- if(d->private->sg_buffer[i]!=bytefill){
++ if(d->private_data->sg_buffer[i]!=bytefill){
+ flag=1;
+ break;
+@@ -413,5 +413,5 @@
+
+ /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
+- /* d->private->last_milliseconds = hdr.duration; */
++ /* d->private_data->last_milliseconds = hdr.duration; */
+
+ errno = 0;
+@@ -446,7 +446,7 @@
+ handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
+
+- key = d->private->sg_buffer[2] & 0xf;
+- ASC = d->private->sg_buffer[12];
+- ASCQ = d->private->sg_buffer[13];
++ key = d->private_data->sg_buffer[2] & 0xf;
++ ASC = d->private_data->sg_buffer[12];
++ ASCQ = d->private_data->sg_buffer[13];
+
+ if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
+@@ -493,5 +493,5 @@
+
+ {
+- unsigned char *b=d->private->sg_buffer;
++ unsigned char *b=d->private_data->sg_buffer;
+ if(b[0])return(1); /* Handles only up to 256 bytes */
+ if(b[6])return(1); /* Handles only up to 256 bytes */
+@@ -605,6 +605,6 @@
+ if(mode_sense(d,12,0x01))return(-1);
+
+- d->orgdens = d->private->sg_buffer[4];
+- return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
++ d->orgdens = d->private_data->sg_buffer[4];
++ return(d->orgsize = ((int)(d->private_data->sg_buffer[10])<<8)+d->private_data->sg_buffer[11]);
+ }
+
+@@ -665,6 +665,6 @@
+ }
+
+- first=d->private->sg_buffer[2];
+- last=d->private->sg_buffer[3];
++ first=d->private_data->sg_buffer[2];
++ last=d->private_data->sg_buffer[3];
+ tracks=last-first+1;
+
+@@ -684,5 +684,5 @@
+ }
+ {
+- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
+
+ d->disc_toc[i-first].bFlags=toc->bFlags;
+@@ -705,5 +705,5 @@
+ }
+ {
+- scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++ scsi_TOC *toc=(scsi_TOC *)(d->private_data->sg_buffer+4);
+
+ d->disc_toc[i-first].bFlags=toc->bFlags;
+@@ -739,5 +739,5 @@
+
+ /* copy to our structure and convert start sector */
+- tracks = d->private->sg_buffer[1];
++ tracks = d->private_data->sg_buffer[1];
+ if (tracks > MAXTRK) {
+ cderror(d,"003: CDROM reporting illegal number of tracks\n");
+@@ -755,31 +755,31 @@
+ }
+
+- d->disc_toc[i].bFlags = d->private->sg_buffer[10];
++ d->disc_toc[i].bFlags = d->private_data->sg_buffer[10];
+ d->disc_toc[i].bTrack = i + 1;
+
+ d->disc_toc[i].dwStartSector= d->adjust_ssize *
+- (((signed char)(d->private->sg_buffer[2])<<24) |
+- (d->private->sg_buffer[3]<<16)|
+- (d->private->sg_buffer[4]<<8)|
+- (d->private->sg_buffer[5]));
++ (((signed char)(d->private_data->sg_buffer[2])<<24) |
++ (d->private_data->sg_buffer[3]<<16)|
++ (d->private_data->sg_buffer[4]<<8)|
++ (d->private_data->sg_buffer[5]));
+ }
+
+ d->disc_toc[i].bFlags = 0;
+ d->disc_toc[i].bTrack = i + 1;
+- memcpy (&foo, d->private->sg_buffer+2, 4);
+- memcpy (&bar, d->private->sg_buffer+6, 4);
++ memcpy (&foo, d->private_data->sg_buffer+2, 4);
++ memcpy (&bar, d->private_data->sg_buffer+6, 4);
+ d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
+ be32_to_cpu(bar));
+
+ d->disc_toc[i].dwStartSector= d->adjust_ssize *
+- ((((signed char)(d->private->sg_buffer[2])<<24) |
+- (d->private->sg_buffer[3]<<16)|
+- (d->private->sg_buffer[4]<<8)|
+- (d->private->sg_buffer[5]))+
++ ((((signed char)(d->private_data->sg_buffer[2])<<24) |
++ (d->private_data->sg_buffer[3]<<16)|
++ (d->private_data->sg_buffer[4]<<8)|
++ (d->private_data->sg_buffer[5]))+
+
+- ((((signed char)(d->private->sg_buffer[6])<<24) |
+- (d->private->sg_buffer[7]<<16)|
+- (d->private->sg_buffer[8]<<8)|
+- (d->private->sg_buffer[9]))));
++ ((((signed char)(d->private_data->sg_buffer[6])<<24) |
++ (d->private_data->sg_buffer[7]<<16)|
++ (d->private_data->sg_buffer[8]<<8)|
++ (d->private_data->sg_buffer[9]))));
+
+
+@@ -818,5 +818,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -837,5 +837,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -855,5 +855,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -873,5 +873,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -891,5 +891,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -909,5 +909,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -923,5 +923,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -937,5 +937,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -951,5 +951,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -965,5 +965,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -979,5 +979,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -993,5 +993,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -1027,5 +1027,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -1040,5 +1040,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -1053,5 +1053,5 @@
+ if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+ return(ret);
+- if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++ if(p)memcpy(p,d->private_data->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+ return(0);
+ }
+@@ -1276,5 +1276,5 @@
+ long i;
+ for(i=2351;i>=0;i--)
+- if(d->private->sg_buffer[i]!=(unsigned char)'\177')
++ if(d->private_data->sg_buffer[i]!=(unsigned char)'\177')
+ return(((i+3)>>2)<<2);
+
+@@ -1285,5 +1285,5 @@
+ long i,flag=0;
+ for(i=0;i<2352;i++)
+- if(d->private->sg_buffer[i]!=0){
++ if(d->private_data->sg_buffer[i]!=0){
+ flag=1;
+ break;
+@@ -1622,5 +1622,5 @@
+ if(mode_sense(d,22,0x2A)==0){
+
+- b=d->private->sg_buffer;
++ b=d->private_data->sg_buffer;
+ b+=b[3]+4;
+
+@@ -1670,5 +1670,5 @@
+ return(NULL);
+ }
+- return (d->private->sg_buffer);
++ return (d->private_data->sg_buffer);
+ }
+
+@@ -1726,6 +1726,6 @@
+
+ d->error_retry=1;
+- d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
+- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++ d->private_data->sg_hd=realloc(d->private_data->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
+ d->report_all=1;
+ return(0);
+Index: /trunk/cdparanoia/interface/cooked_interface.c
+===================================================================
+--- /trunk/cdparanoia/interface/cooked_interface.c (revision 15202)
++++ /trunk/cdparanoia/interface/cooked_interface.c (revision 15338)
+@@ -14,11 +14,11 @@
+ struct timespec tv1;
+ struct timespec tv2;
+- int ret1=clock_gettime(d->private->clock,&tv1);
++ int ret1=clock_gettime(d->private_data->clock,&tv1);
+ int ret2=ioctl(fd, command,arg);
+- int ret3=clock_gettime(d->private->clock,&tv2);
++ int ret3=clock_gettime(d->private_data->clock,&tv2);
+ if(ret1<0 || ret3<0){
+- d->private->last_milliseconds=-1;
++ d->private_data->last_milliseconds=-1;
+ }else{
+- d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++ d->private_data->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+ }
+ return ret2;
+Index: /trunk/cdparanoia/interface/scan_devices.c
+===================================================================
+--- /trunk/cdparanoia/interface/scan_devices.c (revision 15202)
++++ /trunk/cdparanoia/interface/scan_devices.c (revision 15338)
+@@ -265,9 +265,9 @@
+ d->bigendianp=-1; /* We don't know yet... */
+ d->nsectors=-1;
+- d->private=calloc(1,sizeof(*d->private));
++ d->private_data=calloc(1,sizeof(*d->private_data));
+ {
+ /* goddamnit */
+ struct timespec tv;
+- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+ }
+ idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
+@@ -675,13 +675,13 @@
+ d->nsectors=-1;
+ d->messagedest = messagedest;
+- d->private=calloc(1,sizeof(*d->private));
++ d->private_data=calloc(1,sizeof(*d->private_data));
+ {
+ /* goddamnit */
+ struct timespec tv;
+- d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++ d->private_data->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+ }
+ if(use_sgio){
+ d->interface=SGIO_SCSI;
+- d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
++ d->private_data->sg_buffer=(unsigned char *)(d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
+ g_fd=d->cdda_fd=dup(d->ioctl_fd);
+ }else{
+@@ -697,6 +697,6 @@
+
+ /* malloc our big buffer for scsi commands */
+- d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
+- d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++ d->private_data->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
++ d->private_data->sg_buffer=((unsigned char *)d->private_data->sg_hd)+SG_OFF;
+ }
+
+@@ -773,7 +773,7 @@
+ if(g_fd!=-1)close(g_fd);
+ if(d){
+- if(d->private){
+- if(d->private->sg_hd)free(d->private->sg_hd);
+- free(d->private);
++ if(d->private_data){
++ if(d->private_data->sg_hd)free(d->private_data->sg_hd);
++ free(d->private_data);
+ }
+ free(d);
+@@ -822,5 +822,5 @@
+ d->bigendianp=-1; /* We don't know yet... */
+ d->nsectors=-1;
+- d->private=calloc(1,sizeof(*d->private));
++ d->private_data=calloc(1,sizeof(*d->private_data));
+ d->drive_model=copystring("File based test interface");
+ idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
+
diff --git a/source/ap/cdparanoia/cdparanoia.SlackBuild b/source/ap/cdparanoia/cdparanoia.SlackBuild
new file mode 100755
index 000000000..200fc6bbe
--- /dev/null
+++ b/source/ap/cdparanoia/cdparanoia.SlackBuild
@@ -0,0 +1,122 @@
+#!/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=III-10.2
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cdparanoia
+
+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 cdparanoia-${VERSION}
+tar xvf $CWD/cdparanoia-$VERSION.src.tar.gz || exit 1
+cd cdparanoia-$VERSION || exit 1
+# Patch for changes in cdda headers:
+zcat $CWD/cdparanoia-III-10.2_cdda_private.patch.gz | patch -p3 --verbose --backup --suffix=.orig || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+OPT="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --includedir=/usr/include/cdda \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS OPT="$SLKCFLAGS" || make OPT="$SLKCFLAGS" || exit 1
+
+# Manual install:
+install -d $PKG/usr/bin
+install -d $PKG/usr/include/cdda
+install -d $PKG/usr/lib${LIBDIRSUFFIX}
+install -d $PKG/usr/man/man1
+install -m 0755 cdparanoia $PKG/usr/bin/
+install -m 0644 cdparanoia.1 $PKG/usr/man/man1/
+install -m 0644 utils.h paranoia/cdda_paranoia.h interface/cdda_interface.h \
+ $PKG/usr/include/cdda/
+install -m 0755 paranoia/libcdda_paranoia.so.0.10.? \
+ interface/libcdda_interface.so.0.10.? \
+ $PKG/usr/lib${LIBDIRSUFFIX}/
+install -m 0644 paranoia/libcdda_paranoia.a interface/libcdda_interface.a \
+ $PKG/usr/lib${LIBDIRSUFFIX}/
+
+ldconfig -n $PKG/usr/lib${LIBDIRSUFFIX}
+
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ ln -sf libcdda_paranoia.so.0.10.? libcdda_paranoia.so
+ ln -sf libcdda_interface.so.0.10.? libcdda_interface.so
+)
+
+mkdir -p $PKG/usr/man/jp/man1
+cp -a cdparanoia.1.jp $PKG/usr/man/jp/man1/cdparanoia.1
+
+# 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/cdparanoia-$VERSION
+cp -a \
+ FAQ.txt GPL* COPYING* README* \
+ $PKG/usr/doc/cdparanoia-$VERSION
+chown -R root:root $PKG/usr/doc/cdparanoia-$VERSION
+chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/libcdda*.so
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/cdparanoia-$(echo $VERSION | tr '-' '_')-$ARCH-$BUILD.txz
+
diff --git a/source/ap/cdparanoia/slack-desc b/source/ap/cdparanoia/slack-desc
new file mode 100644
index 000000000..0c3057ed7
--- /dev/null
+++ b/source/ap/cdparanoia/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------------------------------------------------------|
+cdparanoia: cdparanoia (digital audio extraction tool)
+cdparanoia:
+cdparanoia: cdparanoia is a Compact Disc Digital Audio (CDDA) extraction tool,
+cdparanoia: commonly known on the net as a 'ripper'. It reads digital audio data
+cdparanoia: from a Compact Disc and saves it to sound files. cdparanoia has been
+cdparanoia: designed to read correct audio data even using cheap CD-ROM drives
+cdparanoia: prone to misalignment, frame jitter and loss of streaming.
+cdparanoia: cdparanoia will also read and repair data from CDs that have been
+cdparanoia: damaged in some way.
+cdparanoia:
+cdparanoia:
diff --git a/source/ap/cdrdao/cdrdao.SlackBuild b/source/ap/cdrdao/cdrdao.SlackBuild
new file mode 100755
index 000000000..fccf3ab83
--- /dev/null
+++ b/source/ap/cdrdao/cdrdao.SlackBuild
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=1.2.1
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cdrdao
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf cdrdao-$VERSION
+tar xvf $CWD/cdrdao-$VERSION.tar.bz2 || exit 1
+cd cdrdao-$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} \
+ $ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+gzip -9 $PKG/usr/man/man1/*.?
+
+mkdir -p $PKG/usr/doc/cdrdao-$VERSION
+cp -a \
+ AUTHORS COPYING CREDITS INSTALL NEWS README* \
+ cdrdao.lsm \
+ contrib \
+ $PKG/usr/doc/cdrdao-$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/cdrdao-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/cdrdao/slack-desc b/source/ap/cdrdao/slack-desc
new file mode 100644
index 000000000..e3c037fed
--- /dev/null
+++ b/source/ap/cdrdao/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------------------------------------------------------|
+cdrdao: cdrdao (CD burning utility)
+cdrdao:
+cdrdao: cdrdao burns proper disc-at-once (DAO) audio discs. In DAO mode the
+cdrdao: disc is written in one shot, so you don't have to have irritating 2
+cdrdao: second gaps interrupting a live recording.
+cdrdao:
+cdrdao:
+cdrdao:
+cdrdao:
+cdrdao:
+cdrdao:
diff --git a/source/ap/cdrtools/cdrtools.SlackBuild b/source/ap/cdrtools/cdrtools.SlackBuild
new file mode 100755
index 000000000..49aa08c08
--- /dev/null
+++ b/source/ap/cdrtools/cdrtools.SlackBuild
@@ -0,0 +1,138 @@
+#!/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.01.01a57
+ZISOFSTOOLS=1.0.8
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-3}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cdrtools
+
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+
+cd $TMP
+rm -rf cdrtools-$(echo $VERSION | cut -f 1 -d a)
+tar xvf $CWD/cdrtools-$VERSION.tar.bz2 || exit 1
+cd cdrtools-$(echo $VERSION | cut -f 1 -d a) || 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 {} \;
+
+INS_BASE=/usr make -e $NUMJOBS || 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
+
+# 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 \
+ *GPL* INSTALL README* START \
+ $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
+ cp -a \
+ COPYING* ChangeLog* README* RELEASE TODO \
+ $PKG/usr/doc/cdrtools-$VERSION/mkisofs
+ chown root:root $PKG/usr/doc/cdrtools-$VERSION/mkisofs/*
+ chmod 644 $PKG/usr/doc/cdrtools-$VERSION/mkisofs/*
+)
+(
+ cd cdda2wav
+ mkdir -p $PKG/usr/doc/cdrtools-$VERSION/cdda2wav
+ cp -a \
+ Changelog FAQ Frontends HOWTOUSE NEEDED OtherProgs README THANKS TODO \
+ $PKG/usr/doc/cdrtools-$VERSION/cdda2wav
+ 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
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Add the mkzftree tool for zisofs:
+cd $TMP
+rm -rf zisofs-tools-$ZISOFSTOOLS
+tar xf $CWD/zisofs-tools-$ZISOFSTOOLS.tar.bz2 || exit 1
+cd zisofs-tools-$ZISOFSTOOLS
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+./configure --prefix=/usr
+make $NUMJOBS || make || exit 1
+cat mkzftree > $PKG/usr/bin/mkzftree
+chmod 755 $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
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/cdrtools-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/cdrtools/doinst.sh b/source/ap/cdrtools/doinst.sh
new file mode 100644
index 000000000..78d62faa9
--- /dev/null
+++ b/source/ap/cdrtools/doinst.sh
@@ -0,0 +1,14 @@
+#!/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/default/cdrecord.new
+config etc/default/rscsi.new
diff --git a/source/ap/cdrtools/slack-desc b/source/ap/cdrtools/slack-desc
new file mode 100644
index 000000000..b858d4f63
--- /dev/null
+++ b/source/ap/cdrtools/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------------------------------------------------------|
+cdrtools: cdrtools (CD-R, ISO and related tools)
+cdrtools:
+cdrtools: Tools for mastering and writing compact discs.
+cdrtools:
+cdrtools: cdda2wav -- CD audio sampling utility.
+cdrtools: cdrecord -- burn discs in most ATAPI and SCSI CD-R drives.
+cdrtools: mkisofs -- create ISO9660/HFS/Joliet CD-ROM images.
+cdrtools: mkzftree -- compress a file tree to make a compressed CD-ROM.
+cdrtools:
+cdrtools:
+cdrtools:
diff --git a/source/ap/cdrtools/zisofs-tools-1.0.8.tar.bz2.sign b/source/ap/cdrtools/zisofs-tools-1.0.8.tar.bz2.sign
new file mode 100644
index 000000000..b88c45f71
--- /dev/null
+++ b/source/ap/cdrtools/zisofs-tools-1.0.8.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.7 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBGS/EFyGugalF9Dw4RAmlCAJ9LvLxlqLTQBMTiExL8bLDxP78CwACeMYVb
+Dp91koXYTyTrYDA5zfj6khE=
+=l8pk
+-----END PGP SIGNATURE-----
diff --git a/source/ap/cupsddk/cupsddk.SlackBuild b/source/ap/cupsddk/cupsddk.SlackBuild
new file mode 100755
index 000000000..48157ffc9
--- /dev/null
+++ b/source/ap/cupsddk/cupsddk.SlackBuild
@@ -0,0 +1,87 @@
+#!/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
new file mode 100644
index 000000000..e4afd3522
--- /dev/null
+++ b/source/ap/cupsddk/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------------------------------------------------------|
+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/dc3dd/dc3dd.SlackBuild b/source/ap/dc3dd/dc3dd.SlackBuild
new file mode 100755
index 000000000..87324faca
--- /dev/null
+++ b/source/ap/dc3dd/dc3dd.SlackBuild
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# Slackware build script for dc3dd
+
+# Copyright 2008 Barry J. Grundy <http://www.linuxleo.com>
+# 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=dc3dd
+VERSION=${VERSION:-6.12.3}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+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"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+rm -rf $TMP/$PRGNAM-$VERSION
+cd $TMP
+tar xvf $CWD/$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 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+make -j3 || 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
+
+( cd $PKG/usr/man || exit 1
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog INSTALL NEWS Options_Reference.txt \
+ README* Sample_Commands.txt THANKS THANKS-to-translators TODO \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/dc3dd/slack-desc b/source/ap/dc3dd/slack-desc
new file mode 100644
index 000000000..1dfd5e024
--- /dev/null
+++ b/source/ap/dc3dd/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-------------------------------------------------------|
+dc3dd: dc3dd (version of dd designed for computer forensics)
+dc3dd:
+dc3dd: dc3dd is a patched version of GNU dd to include a number of features
+dc3dd: useful for computer forensics. Many of these features were inspired by
+dc3dd: dcfldd, but were rewritten for dc3dd. Added features include robust
+dc3dd: error handling, logging, progress meter, image verification, split
+dc3dd: output and more.
+dc3dd:
+dc3dd: http://dc3dd.sourceforge.net/
+dc3dd:
+dc3dd:
diff --git a/source/ap/diffstat/diffstat.SlackBuild b/source/ap/diffstat/diffstat.SlackBuild
new file mode 100755
index 000000000..5066f215c
--- /dev/null
+++ b/source/ap/diffstat/diffstat.SlackBuild
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=diffstat
+VERSION=${VERSION:-1.43}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${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 \
+ $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 \
+ CHANGES README \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/diffstat/slack-desc b/source/ap/diffstat/slack-desc
new file mode 100644
index 000000000..1ca1fded9
--- /dev/null
+++ b/source/ap/diffstat/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------------------------------------------------------|
+diffstat: diffstat (produces statistics from diff output)
+diffstat:
+diffstat: DiffStat is a simple filter that reads the output of the 'diff'
+diffstat: program and displays a histogram of insertions, deletions, and
+diffstat: modifications per-file. It is useful for reviewing large, complex
+diffstat: patch files.
+diffstat:
+diffstat: Thomas E. Dickey is the author of DiffStat.
+diffstat:
+diffstat:
+diffstat:
diff --git a/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch b/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch
new file mode 100644
index 000000000..a41b11648
--- /dev/null
+++ b/source/ap/diffutils/diffutils-sdiff-no-waitpid.patch
@@ -0,0 +1,23 @@
+--- 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 @@
+ ck_fclose (out);
+
+ {
+- int wstatus;
++ int wstatus = 0;
+ int werrno = 0;
+
+ #if ! (HAVE_WORKING_FORK || HAVE_WORKING_VFORK)
+@@ -701,11 +701,6 @@
+ werrno = errno;
+ #else
+ ck_fclose (diffout);
+- while (waitpid (diffpid, &wstatus, 0) < 0)
+- if (errno == EINTR)
+- checksigs ();
+- else
+- perror_fatal ("waitpid");
+ diffpid = 0;
+ #endif
+
diff --git a/source/ap/diffutils/diffutils.SlackBuild b/source/ap/diffutils/diffutils.SlackBuild
new file mode 100755
index 000000000..50ac985d3
--- /dev/null
+++ b/source/ap/diffutils/diffutils.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=2.8.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-diffutils
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf diffutils-$VERSION
+tar xzvf $CWD/diffutils-$VERSION.tar.gz
+cd diffutils-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/diffutils-sdiff-no-waitpid.patch.gz | patch -p1 || exit 1
+# Prevent ruining sdiff.1 by touching it so it won't "regenerate":
+touch man/sdiff.1
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --program-prefix="" \
+ --program-suffix="" \
+ $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
+)
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info pages and purge "dir" file from the package:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir -p $PKG/usr/doc/diffutils-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING INSTALLME NEWS README THANKS \
+ $PKG/usr/doc/diffutils-$VERSION
+
+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
+
diff --git a/source/ap/diffutils/doinst.sh b/source/ap/diffutils/doinst.sh
new file mode 100644
index 000000000..cf23d0928
--- /dev/null
+++ b/source/ap/diffutils/doinst.sh
@@ -0,0 +1,16 @@
+if [ -x /usr/bin/install-info ] ; then
+ install-info --info-dir=/usr/info /usr/info/diff.info.gz 2>/dev/null
+elif ! grep "diff3" usr/info/dir 1> /dev/null 2> /dev/null ; then
+cat << EOF >> usr/info/dir
+
+GNU packages
+* Diff: (diff). Comparing and merging files.
+
+Individual utilities
+* cmp: (diff)Invoking cmp. Compare 2 files byte by byte.
+* diff3: (diff)Invoking diff3. Compare 3 files line by line.
+* diff: (diff)Invoking diff. Compare 2 files line by line.
+* patch: (diff)Invoking patch. Apply a patch to a file.
+* sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side.
+EOF
+fi
diff --git a/source/ap/diffutils/slack-desc b/source/ap/diffutils/slack-desc
new file mode 100644
index 000000000..79873c066
--- /dev/null
+++ b/source/ap/diffutils/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------------------------------------------------------|
+diffutils: diffutils (finds differences between files)
+diffutils:
+diffutils: The GNU diff utilities finds differences between files. A major use
+diffutils: for this package is to make source code patches.
+diffutils:
+diffutils:
+diffutils:
+diffutils:
+diffutils:
+diffutils:
+diffutils:
diff --git a/source/ap/dmapi/dmapi.SlackBuild b/source/ap/dmapi/dmapi.SlackBuild
new file mode 100755
index 000000000..9b57b2fdd
--- /dev/null
+++ b/source/ap/dmapi/dmapi.SlackBuild
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=2.2.10
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-dmapi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf dmapi-$(echo $VERSION | cut -f 1 -d '-')
+tar xvf $CWD/dmapi-$VERSION.tar.?z* || exit 1
+cd dmapi-$(echo $VERSION | cut -f 1 -d '-')
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Add DESTDIR support and improve docs install location:
+zcat $CWD/dmapi.destdir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+
+# Make sure you have the same version of autoconf as the
+# developers did... ;-)
+autoconf
+
+./configure \
+ --prefix=/ \
+ --exec-prefix=/ \
+ --sbindir=/bin \
+ --bindir=/usr/bin \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --libexecdir=/usr/lib${LIBDIRSUFFIX} \
+ --includedir=/usr/include \
+ --mandir=/usr/man \
+ --datadir=/usr/share
+
+make || exit 1
+make install DESTDIR=$PKG
+make install-dev DESTDIR=$PKG
+make install-lib DESTDIR=$PKG
+
+mv $PKG/usr/share/doc $PKG/usr
+( cd $PKG/usr/doc ; mv dmapi dmapi-$VERSION )
+#It would be nice to keep the same timestamps that the files have in the source:
+rm -rf $PKG/usr/doc/dmapi-$VERSION/ea-conv
+cp -a \
+ README doc/COPYING doc/PORTING doc/ea-conv \
+ $PKG/usr/doc/dmapi-$VERSION
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
+
+# Remove bogus files:
+rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/libdm.so $PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+# Make /usr/lib/libdm.so a symlink to /lib:
+if [ -f $PKG/lib${LIBDIRSUFFIX}/libdm.so.0 ]; then
+ ( cd $PKG/usr/lib${LIBDIRSUFFIX} ; rm -f libdm.so ; ln -sf /lib${LIBDIRSUFFIX}/libdm.so.0 libdm.so )
+else
+ exit 1
+ # and fix yer script!!!
+fi
+# Fix shared library perms:
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
+
+# Gzip the man pages:
+( cd $PKG/usr/man
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+ gzip -9 */*.?
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/dmapi-$(echo $VERSION | tr - _ )-$ARCH-$BUILD.txz
+
diff --git a/source/ap/dmapi/dmapi.destdir.diff b/source/ap/dmapi/dmapi.destdir.diff
new file mode 100644
index 000000000..829d14e7f
--- /dev/null
+++ b/source/ap/dmapi/dmapi.destdir.diff
@@ -0,0 +1,36 @@
+--- ./include/buildmacros.orig 2007-01-22 23:56:41.000000000 -0600
++++ ./include/buildmacros 2008-04-01 00:04:57.000000000 -0500
+@@ -26,7 +26,7 @@
+ $(LFILES:.l=.o) \
+ $(YFILES:%.y=%.tab.o)
+
+-INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL = $(TOPDIR)/install-sh
+
+ SHELL = /bin/sh
+ IMAGES_DIR = $(TOPDIR)/all-images
+--- ./include/builddefs.in.orig 2007-05-28 02:00:24.000000000 -0500
++++ ./include/builddefs.in 2008-04-01 00:04:57.000000000 -0500
+@@ -23,14 +23,14 @@
+ PKG_VERSION = @pkg_version@
+ PKG_PLATFORM = @pkg_platform@
+ PKG_DISTRIBUTION= @pkg_distribution@
+-PKG_BIN_DIR = @bindir@
+-PKG_SBIN_DIR = @sbindir@
+-PKG_LIB_DIR = @libdir@@libdirsuffix@
+-PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@
+-PKG_INC_DIR = @includedir@/xfs
+-PKG_MAN_DIR = @mandir@
+-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
+-PKG_LOCALE_DIR = @datadir@/locale
++PKG_BIN_DIR = $(DESTDIR)@bindir@
++PKG_SBIN_DIR = $(DESTDIR)@sbindir@
++PKG_LIB_DIR = $(DESTDIR)@libdir@@libdirsuffix@
++PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@@libdirsuffix@
++PKG_INC_DIR = $(DESTDIR)@includedir@/xfs
++PKG_MAN_DIR = $(DESTDIR)@mandir@
++PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@
++PKG_LOCALE_DIR = $(DESTDIR)@datadir@/locale
+
+ CC = @cc@
+ AWK = @awk@
diff --git a/source/ap/dmapi/slack-desc b/source/ap/dmapi/slack-desc
new file mode 100644
index 000000000..c5acf4919
--- /dev/null
+++ b/source/ap/dmapi/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------------------------------------------------------|
+dmapi: dmapi (Data Management API library)
+dmapi:
+dmapi: A library required to use the Data Management API (DMAPI).
+dmapi: This interface is defined in the X/Open document 'Systems Management:
+dmapi: Data Storage Managment (XDSM) API' dated February 1997.
+dmapi:
+dmapi: The DMAPI library is used by the xfsdump utility.
+dmapi:
+dmapi:
+dmapi:
+dmapi:
diff --git a/source/ap/dmidecode/dmidecode.SlackBuild b/source/ap/dmidecode/dmidecode.SlackBuild
new file mode 100755
index 000000000..2a897acee
--- /dev/null
+++ b/source/ap/dmidecode/dmidecode.SlackBuild
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=dmidecode
+VERSION=${VERSION:-2.10}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || 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 {} \;
+
+zcat $CWD/dmidecode.makefile.diff.gz | patch -p1 --verbose || exit 1
+
+# 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
+mv $PKG/usr/share/doc/${PKGNAM} $PKG/usr/doc/${PKGNAM}-$VERSION
+rmdir $PKG/usr/share/doc
+rmdir $PKG/usr/share
+
+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/dmidecode/dmidecode.makefile.diff b/source/ap/dmidecode/dmidecode.makefile.diff
new file mode 100644
index 000000000..08326774b
--- /dev/null
+++ b/source/ap/dmidecode/dmidecode.makefile.diff
@@ -0,0 +1,14 @@
+--- ./Makefile.orig 2007-02-16 05:00:12.000000000 -0600
++++ ./Makefile 2007-05-02 14:54:09.000000000 -0500
+@@ -22,9 +22,9 @@
+ LDFLAGS =
+
+ DESTDIR =
+-prefix = /usr/local
++prefix = /usr
+ sbindir = $(prefix)/sbin
+-mandir = $(prefix)/share/man
++mandir = $(prefix)/man
+ man8dir = $(mandir)/man8
+ docdir = $(prefix)/share/doc/dmidecode
+
diff --git a/source/ap/dmidecode/slack-desc b/source/ap/dmidecode/slack-desc
new file mode 100644
index 000000000..d7fd45cd9
--- /dev/null
+++ b/source/ap/dmidecode/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------------------------------------------------------|
+dmidecode: dmidecode (DMI table decoder)
+dmidecode:
+dmidecode: dmidecode is a tool for dumping a computer's DMI table (some say
+dmidecode: SMBIOS) contents in a human-readable format. This table contains a
+dmidecode: description of the system's hardware components, as well as other
+dmidecode: useful pieces of information such as serial numbers and BIOS
+dmidecode: revision.
+dmidecode:
+dmidecode: dmidecode was written by Alan Cox and Jean Delvare.
+dmidecode:
+dmidecode:
diff --git a/source/ap/dvd+rw-tools/dvd+rw-tools.SlackBuild b/source/ap/dvd+rw-tools/dvd+rw-tools.SlackBuild
new file mode 100755
index 000000000..ac149131d
--- /dev/null
+++ b/source/ap/dvd+rw-tools/dvd+rw-tools.SlackBuild
@@ -0,0 +1,78 @@
+#!/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.
+
+
+# Why do people do things like this?
+VERSION=7.1
+PKGVER=7.1
+DIRVER=7.1
+
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-dvd+rw-tools
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf dvd+rw-tools-$VERSION
+tar xvf $CWD/dvd+rw-tools-$VERSION.tar.gz || exit 1
+cd dvd+rw-tools-$DIRVER
+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/dvd+rw-tools.limits.h.diff.gz | patch -p1 --verbose || exit 1
+
+make $NUMJOBS || make || exit 1
+
+mkdir -p $PKG/usr/bin
+cat dvd+rw-booktype > $PKG/usr/bin/dvd+rw-booktype
+cat dvd+rw-format > $PKG/usr/bin/dvd+rw-format
+cat dvd+rw-mediainfo > $PKG/usr/bin/dvd+rw-mediainfo
+cat dvd-ram-control > $PKG/usr/bin/dvd-ram-control
+cat growisofs > $PKG/usr/bin/growisofs
+strip $PKG/usr/bin/*
+chmod 755 $PKG/usr/bin/*
+
+mkdir -p $PKG/usr/man/man1
+cat growisofs.1 | gzip -9c > $PKG/usr/man/man1/growisofs.1.gz
+
+mkdir -p $PKG/usr/doc/dvd+rw-tools-$VERSION
+cp -a \
+ index.html \
+ LICENSE \
+ $PKG/usr/doc/dvd+rw-tools-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/dvd+rw-tools-$PKGVER-$ARCH-$BUILD.txz
+
diff --git a/source/ap/dvd+rw-tools/dvd+rw-tools.limits.h.diff b/source/ap/dvd+rw-tools/dvd+rw-tools.limits.h.diff
new file mode 100644
index 000000000..e8b8d986c
--- /dev/null
+++ b/source/ap/dvd+rw-tools/dvd+rw-tools.limits.h.diff
@@ -0,0 +1,10 @@
+--- ./transport.hxx.orig 2008-03-01 04:34:43.000000000 -0600
++++ ./transport.hxx 2008-04-06 23:05:58.000000000 -0500
+@@ -9,6 +9,7 @@
+ #if defined(__unix) || defined(__unix__)
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <limits.h>
+ #include <unistd.h>
+ #include <string.h>
+ #include <sys/types.h>
diff --git a/source/ap/dvd+rw-tools/dvd+rw-tools.url b/source/ap/dvd+rw-tools/dvd+rw-tools.url
new file mode 100644
index 000000000..0a8eb6bf3
--- /dev/null
+++ b/source/ap/dvd+rw-tools/dvd+rw-tools.url
@@ -0,0 +1 @@
+http://fy.chalmers.se/~appro/linux/DVD+RW/tools/
diff --git a/source/ap/dvd+rw-tools/slack-desc b/source/ap/dvd+rw-tools/slack-desc
new file mode 100644
index 000000000..ba1be820b
--- /dev/null
+++ b/source/ap/dvd+rw-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------------------------------------------------------|
+dvd+rw-tools: dvd+rw-tools (DVD+-RW tools)
+dvd+rw-tools:
+dvd+rw-tools: A collection of tools to master DVD+RW/+R/-R/-RW media. For further
+dvd+rw-tools: information see http://fy.chalmers.se/~appro/linux/DVD+RW/.
+dvd+rw-tools:
+dvd+rw-tools: The DVD+RW tools were written by Andy Polyakov.
+dvd+rw-tools:
+dvd+rw-tools:
+dvd+rw-tools:
+dvd+rw-tools:
+dvd+rw-tools:
diff --git a/source/ap/enscript/enscript.SlackBuild b/source/ap/enscript/enscript.SlackBuild
new file mode 100755
index 000000000..e7bc7ff97
--- /dev/null
+++ b/source/ap/enscript/enscript.SlackBuild
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=1.6.3
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+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-enscript
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf enscript-$VERSION
+tar xvf $CWD/enscript-$VERSION.tar.gz || exit 1
+cd enscript-$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 \
+ --with-media=Letter \
+ --sysconfdir=/etc \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install prefix=$PKG/usr sysconfdir=$PKG/etc || 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
+
+( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+)
+
+( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+)
+
+mkdir -p $PKG/usr/doc/enscript-$VERSION
+cp -a \
+ *.txt ABOUT-NLS AUTHORS COPYING ChangeLog docs/FAQ.html INSTALL NEWS \
+ README* THANKS TODO \
+ $PKG/usr/doc/enscript-$VERSION
+chmod 644 $PKG/usr/doc/enscript-$VERSION/*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/enscript-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/enscript/slack-desc b/source/ap/enscript/slack-desc
new file mode 100644
index 000000000..877b8a480
--- /dev/null
+++ b/source/ap/enscript/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------------------------------------------------------|
+enscript: enscript (converts text files to PostScript and other formats)
+enscript:
+enscript: Enscript converts text files to PostScript and spools the generated
+enscript: output to a printer or saves it to a file. If no input files are
+enscript: given, enscript processes standard input. Enscript can be extended to
+enscript: handle different output media and it has many options for customizing
+enscript: printouts.
+enscript:
+enscript:
+enscript:
+enscript:
diff --git a/source/ap/flac/flac.SlackBuild b/source/ap/flac/flac.SlackBuild
new file mode 100755
index 000000000..7f2d02d31
--- /dev/null
+++ b/source/ap/flac/flac.SlackBuild
@@ -0,0 +1,109 @@
+#!/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=1.2.1
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+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-flac
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf flac-$VERSION
+tar xvf $CWD/flac-$VERSION.tar.bz2 || exit 1
+cd flac-$VERSION
+zcat $CWD/flac.man.diff.gz | patch -p1 --verbose --backup --suffix=.orig
+
+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 {} \;
+
+if [ "$ARCH" != "x86_64" ]; then
+ # We disable assembly optimizations to ensure compatibility with older
+ # hardware, but you're welcome to comment this out and give it a try.
+ # I've heard it gives a noticable speedup.
+ DISABLE_ASM_OPTIMIZATIONS=${DISABLE_ASM_OPTIMIZATIONS:-"--disable-asm-optimizations"}
+else
+ DISABLE_ASM_OPTIMIZATIONS=${DISABLE_ASM_OPTIMIZATIONS:-""}
+fi
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ $DISABLE_ASM_OPTIMIZATIONS \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Adjust docs to traditional Slackware location:
+mv $PKG/usr/share/doc $PKG/usr
+rm $PKG/usr/doc/flac-$VERSION/FLAC.tag
+mv $PKG/usr/doc/flac-$VERSION/html/* $PKG/usr/doc/flac-$VERSION
+rmdir $PKG/usr/doc/flac-$VERSION/html
+# we're not putting 3MB of API docs in the binary package...
+( cd $PKG/usr/doc/flac-$VERSION/api && rm -r * )
+cat << EOF > $PKG/usr/doc/flac-$VERSION/api/README
+Full HTML based API documentation may be found in the FLAC
+source package. It is not included in the binary package due
+to size.
+EOF
+# Add a few more docs:
+cp -a \
+ AUTHORS COPYING* README \
+ $PKG/usr/doc/flac-$VERSION
+
+# Strip files
+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 $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/flac-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/flac/flac.man.diff b/source/ap/flac/flac.man.diff
new file mode 100644
index 000000000..f96eebc60
--- /dev/null
+++ b/source/ap/flac/flac.man.diff
@@ -0,0 +1,12 @@
+--- ./man/flac.1.orig 2007-09-14 10:08:05.000000000 -0500
++++ ./man/flac.1 2008-03-08 15:48:37.000000000 -0600
+@@ -325,7 +325,8 @@
+ .PP
+ metaflac(1).
+ .PP
+-The programs are documented fully by HTML format documentation, available in \fI/usr/share/doc/flac/html\fR on Debian GNU/Linux systems.
++The programs are documented fully by HTML format documentation, available in \fI/usr/doc/flac-*.*.*/html\fR on Slackware GNU/Linux systems.
+ .SH "AUTHOR"
+ .PP
++The flac program was developed by Josh Coalson.
+ This manual page was written by Matt Zimmerman <mdz@debian.org> for the Debian GNU/Linux system (but may be used by others).
diff --git a/source/ap/flac/slack-desc b/source/ap/flac/slack-desc
new file mode 100644
index 000000000..9fde39d4e
--- /dev/null
+++ b/source/ap/flac/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------------------------------------------------------|
+flac: flac (Free Lossless Audio Codec)
+flac:
+flac: FLAC stands for Free Lossless Audio Codec. Grossly oversimplified,
+flac: FLAC is similar to MP3, but lossless. "Free" means that the
+flac: specification of the stream format is in the public domain, and that
+flac: neither the FLAC format nor any of the implemented encoding/decoding
+flac: methods are covered by any patent. It also means that the sources for
+flac: libFLAC and libFLAC++ are available under the LGPL and the sources for
+flac: flac, metaflac, and the plugins are available under the GPL.
+flac:
+flac: FLAC was developed by Josh Coalson.
diff --git a/source/ap/foomatic-filters/doinst.sh b/source/ap/foomatic-filters/doinst.sh
new file mode 100644
index 000000000..d7bcdf8bd
--- /dev/null
+++ b/source/ap/foomatic-filters/doinst.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/foomatic/filter.conf.new
diff --git a/source/ap/foomatic-filters/foomatic-filters.SlackBuild b/source/ap/foomatic-filters/foomatic-filters.SlackBuild
new file mode 100755
index 000000000..fbf949039
--- /dev/null
+++ b/source/ap/foomatic-filters/foomatic-filters.SlackBuild
@@ -0,0 +1,123 @@
+#!/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=foomatic-filters
+VERSION=${VERSION:-4.0.2}
+ARCH=${ARCH:-x86_64}
+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"
+ LIBDIRSUFFIX="64"
+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.gz || 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 {} \;
+
+sed -i -e "s#/usr/lib/cups#/usr/lib${LIBDIRSUFFIX}/cups#" \
+ -e "s#/usr/lib/pdq#/usr/lib${LIBDIRSUFFIX}/pdq#" \
+ -e "s#/usr/lib/ppr#/usr/lib${LIBDIRSUFFIX}/ppr#" \
+ -e "s#^LIBSEARCHPATH=#LIBSEARCHPATH=\${prefix}/lib${LIBDIRSUFFIX}:\${prefix}/usr/lib${LIBDIRSUFFIX}:#" \
+ configure
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mv $PKG/etc/foomatic/filter.conf $PKG/etc/foomatic/filter.conf.new
+rm -f $PKG/etc/foomatic/filter.conf.sample
+
+# 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 \
+ COPYING ChangeLog README STANDARD_installation TODO USAGE \
+ $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}-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz
+
diff --git a/source/ap/foomatic-filters/slack-desc b/source/ap/foomatic-filters/slack-desc
new file mode 100644
index 000000000..fcb34ffd6
--- /dev/null
+++ b/source/ap/foomatic-filters/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------------------------------------------------------|
+foomatic-filters: foomatic-filters (Universal print filter/RIP wrapper)
+foomatic-filters:
+foomatic-filters: foomatic-rip is a universal print filter, which is used by CUPS with
+foomatic-filters: the gutenprint and hplip printer drivers. It translates PostScript
+foomatic-filters: (and also other file formats) to the printer's native language,
+foomatic-filters: usually using Ghostscript (gs) as the external renderer. The way
+foomatic-filters: this translation is done is described in a PPD file.
+foomatic-filters:
+foomatic-filters: For more information on foomatic, see: http://linuxprinting.org
+foomatic-filters:
+foomatic-filters:
diff --git a/source/ap/ghostscript-fonts-std/doinst.sh b/source/ap/ghostscript-fonts-std/doinst.sh
new file mode 100644
index 000000000..3d8d40100
--- /dev/null
+++ b/source/ap/ghostscript-fonts-std/doinst.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Update the X font indexes:
+if [ -x /usr/bin/fc-cache ]; then
+ /usr/bin/fc-cache -f
+fi
+if [ -x /usr/bin/mkfontdir -o -x /usr/X11R6/bin/mkfontdir ]; then
+ ( cd /usr/share/fonts/Type1
+ mkfontdir .
+ mkfontscale .
+ )
+fi
diff --git a/source/ap/ghostscript-fonts-std/ghostscript-fonts-std.SlackBuild b/source/ap/ghostscript-fonts-std/ghostscript-fonts-std.SlackBuild
new file mode 100755
index 000000000..635789495
--- /dev/null
+++ b/source/ap/ghostscript-fonts-std/ghostscript-fonts-std.SlackBuild
@@ -0,0 +1,68 @@
+#!/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=ghostscript-fonts-std
+VERSION=${VERSION:-8.11}
+ARCH=${ARCH:-noarch}
+BUILD=${BUILD:-1}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf fonts
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd fonts || 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 -o -perm 500 \) \
+ -exec chmod 644 {} \;
+
+# Move everything:
+mkdir -p $PKG/usr/share/fonts/Type1
+mv * $PKG/usr/share/fonts/Type1
+mkdir -p $PKG/usr/share/ghostscript
+( cd $PKG/usr/share/ghostscript ; ln -sf /usr/share/fonts/Type1 fonts )
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+( cd $PKG/usr/share/fonts/Type1
+ mv \
+ COPYING ChangeLog README* TODO \
+ $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
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/ghostscript-fonts-std/slack-desc b/source/ap/ghostscript-fonts-std/slack-desc
new file mode 100644
index 000000000..a2b9459ed
--- /dev/null
+++ b/source/ap/ghostscript-fonts-std/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------------------------------------------------------|
+ghostscript-fonts-std: ghostscript-fonts-std (fonts for the Ghostscript interpreter)
+ghostscript-fonts-std:
+ghostscript-fonts-std: These fonts are used by the GhostScript interpreter.
+ghostscript-fonts-std:
+ghostscript-fonts-std:
+ghostscript-fonts-std:
+ghostscript-fonts-std:
+ghostscript-fonts-std:
+ghostscript-fonts-std:
+ghostscript-fonts-std:
+ghostscript-fonts-std:
diff --git a/source/ap/ghostscript/cidfmap b/source/ap/ghostscript/cidfmap
new file mode 100644
index 000000000..0303f66f5
--- /dev/null
+++ b/source/ap/ghostscript/cidfmap
@@ -0,0 +1,118 @@
+%!
+% $Id: cidfmap 6300 2005-12-28 19:56:24Z giles $
+% This is a sample map file for CIDFont category.
+
+%
+% The map is a set of records, which must use one of the two formats :
+%
+% 1. A substutution of a CIF font with another CID font :
+%
+% /substituted /original ;
+%
+% Where 'substituted' is a name being used in a document,
+% 'original' is a name of an available resource.
+%
+% 2. A substutution of a CIF font with a True Type font :
+%
+% /substituted << /FileType /TrueType /Path (path) /SunfontID 1 /CSI [(ordering) supplement] >> ;
+%
+% Where 'substituted' is a name being used in a document,
+% 'path' is a path to a True Type font file,
+% 'ordering' is a value of Ordering required for CIDSystemInfo dictionary,
+% 'supplement' is a value of Supplement required for CIDSystemInfo dictionary.
+%
+% Examples :
+%
+% /ShinGo-Bold /HeiseiKakuGo-W5 ;
+% /Ryumin-Medium << /FileType /TrueType /Path (H:/AuxFiles/Fonts/BATANG.TTC) /SubfontID 3 /CSI [(Japan1) 2] >> ;
+%
+
+
+%% cidfmap.zh_CN (simplified Chinese ; zh_CN)
+%% This font will produce better results than the wqy-zenhei.ttf that we use
+%% to get out-of-the-box output.
+%% If you install it, uncomment the line below and comment the one below that.
+%/BousungEG-Light-GB << /FileType /TrueType /Path (uming.ttf) /CSI [(GB1) 4] >> ;
+/BousungEG-Light-GB << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(GB1) 4] >> ;
+%% This font will produce better results than the wqy-zenhei.ttf that we use
+%% to get out-of-the-box output.
+%% If you install it, uncomment the line below and comment the one below that.
+%/GBZenKai-Medium << /FileType /TrueType /Path (ukai.ttf) /CSI [(GB1) 4] >> ;
+/GBZenKai-Medium << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(GB1) 4] >> ;
+/MSungGBK-Light << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(GB1) 4] >> ;
+/MSung-Light /MSungGBK-Light ;
+/MSung-Medium /GBZenKai-Medium ;
+/MHei-Medium /BousungEG-Light-GB ;
+/MKai-Medium /GBZenKai-Medium ;
+/STSong-Light /BousungEG-Light-GB ;
+/STFangsong-Light /BousungEG-Light-GB ;
+/STHeiti-Regular /MSungGBK-Light ;
+/STKaiti-Regular /GBZenKai-Medium ;
+/Adobe-GB1 /BousungEG-Light-GB ;
+
+%% cidfmap.zh_TW (traditional Chinese ; zh_TW)
+%% To use this example, install the missing uming.ttf and ukai.ttf fonts, and
+%% uncomment everything in the block below. Also, fix the simplified Chinese
+%% block as described above for "better output" so that there is no
+%% interference (or comment the whole block out).
+%/BousungEG-Light-GB << /FileType /TrueType /Path (uming.ttf) /CSI [(CNS1) 4] >> ;
+%/ZenKai-Medium << /FileType /TrueType /Path (ukai.ttf) /CSI [(CNS1) 4] >> ;
+%/ShanHeiSun-Light << /FileType /TrueType /Path (wqy-zenhei.ttf) /CSI [(CNS1) 4] >> ;
+%/STSong-Light /BousungEG-Light-GB ;
+%/STKaiti-Regular /ZenKai-Medium-GB ;
+%/STFangsong-Light /BousungEG-Light ;
+%/STHeiti-Regular /MHei-Medium ;
+%/MSung-Light /BousungEG-Light-GB ;
+%/MSung-Medium /ZenKai-Medium ;
+%/MHei-Medium /ShanHeiSun-Light ;
+%/MKai-Medium /ZenKai-Medium ;
+%/Adobe-CNS1 /BousungEG-Light-GB ;
+
+%% cidfmap.ja
+/Sazanami-Gothic << /FileType /TrueType /Path (sazanami-gothic.ttf) /CSI [(Japan1) 6] >> ;
+/Sazanami-Gothic-Regular /Sazanami-Gothic ;
+/Sazanami-Gothic-JaH << /FileType /TrueType /Path (sazanami-gothic.ttf) /CSI [(Japan2) 0] >> ;
+/Sazanami-Gothic-Regular-JaH /Sazanami-Gothic-JaH ;
+/Sazanami-Mincho << /FileType /TrueType /Path (sazanami-mincho.ttf) /CSI [(Japan1) 6] >> ;
+/Sazanami-Mincho-Regular /Sazanami-Mincho ;
+/Sazanami-Mincho-JaH << /FileType /TrueType /Path (sazanami-mincho.ttf) /CSI [(Japan2) 0] >> ;
+/Sazanami-Mincho-Regular-JaH /Sazanami-Mincho-JaH ;
+/Ryumin-Light /Sazanami-Mincho ;
+/Ryumin-Light-H /Sazanami-Mincho ;
+/GothicBBB-Medium /Sazanami-Gothic ;
+/GothicBBB-Medium-V /Sazanami-Gothic ;
+/HeiseiMin-W3 /Ryumin-Light ;
+/HeiseiKakuGo-W5 /GothicBBB-Medium ;
+/HeiseiMin-W3-Acro /Ryumin-Light ;
+/HeiseiKaKuGo-W5-Acro /GothicBBB-Medium ;
+/Kochi-Gothic /Sazanami-Gothic ;
+/Kochi-Mincho /Sazanami-Mincho ;
+/WadaMin-Regular /Sazanami-Mincho ;
+/WadaMin-Bold /Sazanami-Mincho ;
+/WadaGo-Regular /Sazanami-Gothic ;
+/WadaGo-Bold /Sazanami-Gothic ;
+/Adobe-Japan1 /Sazanami-Gothic ;
+/Adobe-Japan2 /Sazanami-Gothic-JaH ;
+
+%% cidfmap.ko
+%% To enable Korean printing support, install the fonts shown in the example
+%% here and uncomment the block below:
+%/Baekmuk-Batang << /FileType /TrueType /Path (batang.ttf) /CSI [(Korea1) 2] >> ;
+%/Baekmuk-Batang-Regular /Baekmuk-Batang ;
+%/Baekmuk-Dotum << /FileType /TrueType /Path (dotum.ttf) /CSI [(Korea1) 2] >> ;
+%/Baekmuk-Dotum-Regular /Baekmuk-Dotum ;
+%/Baekmuk-Gulim << /FileType /TrueType /Path (gulim.ttf) /CSI [(Korea1) 2] >> ;
+%/Baekmuk-Gulim-Regular /Baekmuk-Gulim ;
+%/Baekmuk-Headline << /FileType /TrueType /Path (hline.ttf) /CSI [(Korea1) 2] >> ;
+%/Baekmuk-Headline-Regular /Baekmuk-Headline ;
+%/Adobe-Korea1 /Baekmuk-Batang ;
+
+%/BousungEG-Light-GB << /FileType /TrueType /Path (uming.ttf) /CSI [(GB1) 4] >> ;
+%/GBZenKai-Medium << /FileType /TrueType /Path (ukai.ttf) /CSI [(GB1) 4] >> ;
+%/MSungGBK-Light /BousungEG-Light-GB ;
+%/Adobe-GB1 /BousungEG-Light-GB ;
+
+%/ZenKai-Medium << /FileType /TrueType /Path (ukai.ttf) /CSI [(CNS1) 4] >> ;
+%/ShanHeiSun-Light << /FileType /TrueType /Path (uming.ttf) /CSI [(CNS1) 4] >> ;
+%/Adobe-CNS1 /ShanHeiSun-Light ;
+
diff --git a/source/ap/ghostscript/ghostscript.SlackBuild b/source/ap/ghostscript/ghostscript.SlackBuild
new file mode 100755
index 000000000..b0bb34ba3
--- /dev/null
+++ b/source/ap/ghostscript/ghostscript.SlackBuild
@@ -0,0 +1,176 @@
+#!/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=ghostscript
+VERSION=${VERSION:-8.70}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.?z* || exit 1
+cd ${PKGNAM}-$VERSION
+
+## Regenerate ./configure:
+#sh autogen.sh
+
+# 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/install IJS:
+( cd ijs
+ if [ ! -r configure ]; then
+ sh autogen.sh
+ fi
+ CFLAGS="$SLKCFLAGS" \
+ ./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+ make
+ make install
+ make install DESTDIR=$PKG
+) || exit 1
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --with-fontpath=/usr/share/fonts/TTF \
+ --with-ijs \
+ --disable-compile-inits \
+ --enable-dynamic \
+ --enable-cairo=no \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+make clean || exit 1
+make so || exit 1
+make soinstall DESTDIR=$PKG || exit 1
+
+# Replace the default cidfmap with one containing additional
+# support for CJK printing:
+
+if [ -r $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap ]; then
+ mv $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.default.ghostscript-${VERSION}
+ zcat $CWD/cidfmap.gz > $PKG/usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.new
+fi
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+( cd doc
+ cp -a \
+ COPYING ../LICENSE README \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+)
+( cd $PKG/usr/doc/${PKGNAM}-$VERSION
+ ln -sf /usr/share/ghostscript/$VERSION/doc doc
+)
+
+cd $TMP
+cp -a ${PKGNAM}-${VERSION}/examples/cjk $PKG/usr/share/ghostscript/${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 usr/share/ghostscript/${VERSION}/Resource/Init/cidfmap.new
+EOF
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/ghostscript/slack-desc b/source/ap/ghostscript/slack-desc
new file mode 100644
index 000000000..1ac40827a
--- /dev/null
+++ b/source/ap/ghostscript/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------------------------------------------------------|
+ghostscript: ghostscript (GPL Ghostscript)
+ghostscript:
+ghostscript: GPL Ghostscript is an interpreter of Adobe Systems' PostScript(tm)
+ghostscript: and Portable Document Format (PDF) languages. Ghostscript is an
+ghostscript: essential part of the printing subsystem, taking PostScript output
+ghostscript: from applications and converting it into an appropriate printer or
+ghostscript: display format. Ghostscript supports many printers directly, and
+ghostscript: more are supported through add-on packages.
+ghostscript:
+ghostscript:
+ghostscript:
diff --git a/source/ap/gphoto2/gphoto2.SlackBuild b/source/ap/gphoto2/gphoto2.SlackBuild
new file mode 100755
index 000000000..9670b082f
--- /dev/null
+++ b/source/ap/gphoto2/gphoto2.SlackBuild
@@ -0,0 +1,98 @@
+#!/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.
+
+
+PRGNAM=gphoto2
+VERSION=2.4.5
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+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
+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 \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/gphoto2-${VERSION} \
+ --without-cdk \
+ --enable-static=no \
+ --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 link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README TODO \
+ $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/ap/gphoto2/slack-desc b/source/ap/gphoto2/slack-desc
new file mode 100644
index 000000000..681c45dfa
--- /dev/null
+++ b/source/ap/gphoto2/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-------------------------------------------------------|
+gphoto2: gphoto2 (A command-line frontend to libgphoto2)
+gphoto2:
+gphoto2: libgphoto2 is a cross-platform digital camera library, and gphoto2 is
+gphoto2: a command-line client for it.
+gphoto2:
+gphoto2: Visit the gphoto project online: http://www.gphoto.org
+gphoto2:
+gphoto2:
+gphoto2:
+gphoto2:
+gphoto2:
diff --git a/source/ap/groff/groff.SlackBuild b/source/ap/groff/groff.SlackBuild
new file mode 100755
index 000000000..e9b35d3ee
--- /dev/null
+++ b/source/ap/groff/groff.SlackBuild
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+# Copyright 2005-2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-1.20.1}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j7}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-groff
+
+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 groff-$VERSION
+tar xvf $CWD/groff-$VERSION.tar.bz2 || exit 1
+cd groff-$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 this thing respect our declared docdir setting
+zcat $CWD/groff.docdir.diff.gz | patch -p1 --verbose || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/groff-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd src/devices/xditview
+ mkdir -p $PKG/etc/X11/app-defaults
+ cp -a GXditview.ad $PKG/etc/X11/app-defaults/GXditview
+)
+
+mkdir -p $PKG/usr/doc/groff-$VERSION/xditview
+cp -a \
+ BUG-REPORT COPYING FDL INSTALL INSTALL.gen MORE.STUFF \
+ NEWS PROBLEMS PROJECTS README TODO VERSION \
+ $PKG/usr/doc/groff-$VERSION
+cp -a src/devices/xditview/{README,TODO} $PKG/usr/doc/groff-$VERSION/xditview
+
+# If you want all this stuff, it's in the source tarball:
+rm -rf $PKG/usr/doc/groff-$VERSION/*.ps \
+ $PKG/usr/doc/groff-$VERSION/examples \
+ $PKG/usr/doc/groff-$VERSION/html \
+ $PKG/usr/doc/groff-$VERSION/pdf
+
+( 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/*
+
+# Do not use color ANSI output by default for man pages.
+# A silly "innovation" if ever there was one, sure to break
+# a ton of existing scripts otherwise...
+zcat $CWD/groff.man.mdoc.local.gz >> $PKG/usr/share/groff/site-tmac/man.local
+zcat $CWD/groff.man.mdoc.local.gz >> $PKG/usr/share/groff/site-tmac/mdoc.local
+
+( cd $PKG/usr/bin
+ rm -rf geqn ; ln -sf eqn geqn
+ rm -rf gindxbib ; ln -sf indxbib gindxbib
+ rm -rf gpic ; ln -sf pic gpic
+ rm -rf grefer ; ln -sf refer grefer
+ rm -rf gsoelim ; ln -sf soelim gsoelim
+ rm -rf zsoelim ; ln -sf soelim zsoelim
+ rm -rf gtbl ; ln -sf tbl gtbl
+ rm -rf gtroff ; ln -sf troff gtroff
+ rm -rf glookbib ; ln -sf lookbib glookbib
+ rm -rf gnroff ; ln -sf nroff gnroff
+ rm -rf gneqn ; ln -sf neqn gneqn
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/groff-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/groff/groff.docdir.diff b/source/ap/groff/groff.docdir.diff
new file mode 100644
index 000000000..a73a3bf59
--- /dev/null
+++ b/source/ap/groff/groff.docdir.diff
@@ -0,0 +1,12 @@
+diff -Nur groff-1.20.orig/Makefile.in groff-1.20/Makefile.in
+--- groff-1.20.orig/Makefile.in 2009-01-05 14:45:13.000000000 -0600
++++ groff-1.20/Makefile.in 2009-01-13 22:14:58.237116441 -0600
+@@ -146,7 +146,7 @@
+ infodir=@infodir@
+
+ # `docdir' says where to install documentation files.
+-docdir=$(datadir)/doc/groff/$(version)$(revision)
++docdir=@docdir@
+
+ # `exampledir' says where to install example files.
+ exampledir=$(docdir)/examples
diff --git a/source/ap/groff/groff.man.mdoc.local b/source/ap/groff/groff.man.mdoc.local
new file mode 100644
index 000000000..4de5a0f1a
--- /dev/null
+++ b/source/ap/groff/groff.man.mdoc.local
@@ -0,0 +1,24 @@
+.
+.if n \{\
+. \" Map \(oq to ' rather than ` in nroff mode for devices other
+. \" than utf8.
+. if !'\*[.T]'utf8' \
+. tr \[oq]'
+.
+. \" Disable the use of SGR (ANSI colour) escape sequences by
+. \" grotty.
+. if '\V[GROFF_SGR]'' \
+. output x X tty: sgr 0
+.
+. \" Map \- to the Unicode HYPHEN-MINUS character, to make
+. \" searching in man pages easier.
+. if '\*[.T]'utf8' \
+. char \- \N'45'
+.
+. \" Many UTF-8 man pages use "-" instead of "\-" for dashes such as those
+. \" in command-line options. This is a bug in those pages, but if you want
+. \" all hyphens to be rendered as the ASCII-compatible HYPHEN-MINUS
+. \" anyway, then uncomment this.
+. \" if '\*[.T]'utf8' \
+. \" char - \N'45'
+.\}
diff --git a/source/ap/groff/slack-desc b/source/ap/groff/slack-desc
new file mode 100644
index 000000000..b9e5af829
--- /dev/null
+++ b/source/ap/groff/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------------------------------------------------------|
+groff: groff (document formatting system)
+groff:
+groff: The GNU groff package provides versions of troff, nroff, eqn, tbl, and
+groff: other Unix text-formatting utilities. Groff is used to 'compile' man
+groff: pages stored in groff/nroff format into a form which can be printed or
+groff: displayed on the screen. These man pages are stored in compressed
+groff: form in the /usr/man/man? directories.
+groff:
+groff:
+groff:
+groff:
diff --git a/source/ap/gutenprint/gutenprint.SlackBuild b/source/ap/gutenprint/gutenprint.SlackBuild
new file mode 100755
index 000000000..94fb1cbc0
--- /dev/null
+++ b/source/ap/gutenprint/gutenprint.SlackBuild
@@ -0,0 +1,115 @@
+#!/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=5.2.4
+ARCH=${ARCH:-x86_64}
+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"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gutenprint
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf gutenprint-${VERSION}
+tar xvf $CWD/gutenprint-${VERSION}.tar.?z* || exit 1
+cd gutenprint-${VERSION}
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --with-cups \
+ --with-gimp2 \
+ --with-gimp2-as-gutenprint \
+ --disable-libgutenprintui \
+ --enable-libgutenprintui2 \
+ --enable-escputil \
+ --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/gutenprint-${VERSION}
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* \
+ $PKG/usr/doc/gutenprint-${VERSION}
+ ( cd $PKG/usr/doc/gutenprint-${VERSION}
+ ln -sf /usr/share/gutenprint/samples .
+ )
+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
+
+# Big... again, 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
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg --prepend -l y -c n $TMP/gutenprint-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/gutenprint/slack-desc b/source/ap/gutenprint/slack-desc
new file mode 100644
index 000000000..ac2bdb93e
--- /dev/null
+++ b/source/ap/gutenprint/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------------------------------------------------------|
+gutenprint: gutenprint (IJS printer driver for Ghostscript and CUPS)
+gutenprint:
+gutenprint: Gutenprint (formerly named Gimp-Print) is a suite of printer drivers
+gutenprint: that may be used with most common print spooling systems, including
+gutenprint: CUPS, LPRng, or others. These drivers provide high quality printing
+gutenprint: in many cases equal to or better than proprietary vendor-supplied
+gutenprint: drivers. Gutenprint also includes an enhanced print plug-in for the
+gutenprint: GIMP image editor.
+gutenprint:
+gutenprint:
+gutenprint:
diff --git a/source/ap/hplip/doinst.sh b/source/ap/hplip/doinst.sh
new file mode 100644
index 000000000..8f9648e07
--- /dev/null
+++ b/source/ap/hplip/doinst.sh
@@ -0,0 +1,4 @@
+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/ap/hplip/hplip.SlackBuild b/source/ap/hplip/hplip.SlackBuild
new file mode 100755
index 000000000..64462a78e
--- /dev/null
+++ b/source/ap/hplip/hplip.SlackBuild
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+# Slackware build script for hplip
+
+# Copyright 2006-2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2006-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PRGNAM=hplip
+VERSION=${VERSION:-3.9.4b}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+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"
+ LIBDIRSUFFIX="64"
+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 {} \;
+
+# 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
+sed -i 's%OWNER="lp"%OWNER="root"%g' data/rules/*.rules
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-cupsbackenddir=/usr/lib${LIBDIRSUFFIX}/cups/backend \
+ --with-cupsfilterdir=/usr/lib${LIBDIRSUFFIX}/cups/filter \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --docdir=/usr/doc/hplip-$VERSION \
+ --with-docdir=/usr/doc/hplip-$VERSION \
+ --with-hpppddir=/usr/share/cups/model/HP \
+ --with-drvdir=/usr/share/cups/drv/hp \
+ --enable-shadow-build \
+ --enable-scan-build \
+ --enable-gui-build \
+ --enable-fax-build \
+ --enable-foomatic-rip-hplip-install \
+ --disable-foomatic-ppd-install \
+ --enable-foomatic-drv-install \
+ --enable-network-build=yes \
+ --enable-qt4 \
+ --build=$ARCH-slackware-linux \
+ --host=$ARCH-slackware-linux \
+ || exit 1
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG rulesdir=/lib/udev/rules.d || 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
+
+# No thanks, we don't replace/add files which are part of other packages
+rm -rf $PKG/etc/sane.d
+
+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/ap/hplip/hplip.prevent_segfault.diff b/source/ap/hplip/hplip.prevent_segfault.diff
new file mode 100644
index 000000000..1021a2e65
--- /dev/null
+++ b/source/ap/hplip/hplip.prevent_segfault.diff
@@ -0,0 +1,23 @@
+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/hplip/slack-desc b/source/ap/hplip/slack-desc
new file mode 100644
index 000000000..874e6ed69
--- /dev/null
+++ b/source/ap/hplip/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--------------------------------------------------------|
+hplip: hplip (HP print/scan/fax support)
+hplip:
+hplip: HPLIP is an HP developed solution for printing, scanning, and faxing
+hplip: with HP inkjet and laser based printers in Linux. The HPLIP project
+hplip: provides printing support for more than 1400 HP printer models,
+hplip: including Deskjet, Officejet, Photosmart, PSC (Print Scan Copy),
+hplip: Business Inkjet, LaserJet, and LaserJet MFP.
+hplip:
+hplip: For more information, see: http://hplipopensource.com
+hplip:
+hplip:
diff --git a/source/ap/ispell/ispell.SlackBuild b/source/ap/ispell/ispell.SlackBuild
new file mode 100755
index 000000000..cf6b4c6b2
--- /dev/null
+++ b/source/ap/ispell/ispell.SlackBuild
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+# Copyright 2002-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=3.2.06
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-ispell
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $PKG $PKG
+
+cd $TMP
+rm -rf ispell-$VERSION
+tar xvf $CWD/ispell-$VERSION.tar.gz || exit 1
+cd ispell-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/ispell.diff.gz | patch -p1 --verbose
+sed -i -e "s#/usr/lib/#/usr/lib${LIBDIRSUFFIX}/#" local.h
+
+make || exit 1
+
+sleep 2 # to make absolutely sure that config will have a later timestamp
+ # than local.h and will not get rebuilt by `make install`
+sed -i -e "s#/usr#$PKG&#g" config.sh
+
+mkdir -p $PKG/usr/{bin,lib${LIBDIRSUFFIX},man}
+make install
+
+( cd $PKG/usr/lib${LIBDIRSUFFIX}/ispell
+ ln -sf americanmed.hash american.hash
+ ln -sf americanmed.hash english.hash
+)
+
+# 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 documentation to the package:
+mkdir -p $PKG/usr/doc/ispell-$VERSION
+cp -a \
+ Contributors Magiclines README WISHES \
+ $PKG/usr/doc/ispell-$VERSION
+chown -R root:root $PKG/usr/doc/ispell-$VERSION
+
+# Add the package description:
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Make the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/ispell-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/ispell/ispell.diff b/source/ap/ispell/ispell.diff
new file mode 100644
index 000000000..23f9aa9de
--- /dev/null
+++ b/source/ap/ispell/ispell.diff
@@ -0,0 +1,484 @@
+--- ./local.h.orig Fri Jun 8 13:44:56 2001
++++ ./local.h Fri Jun 8 13:51:33 2001
+@@ -0,0 +1,112 @@
++/*
++ * $Id: local.h.samp,v 1.18 2001/05/30 21:14:47 geoff Exp $
++ */
++
++/*
++ * Copyright 1992, 1993, 1999, Geoff Kuenning, Claremont, CA
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. All modifications to the source code must be clearly marked as
++ * such. Binary redistributions based on modified source code
++ * must be clearly marked as modified versions in the documentation
++ * and/or other materials provided with the distribution.
++ * 4. All advertising materials mentioning features or use of this software
++ * must display the following acknowledgment:
++ * This product includes software developed by Geoff Kuenning and
++ * other unpaid contributors.
++ * 5. The name of Geoff Kuenning may not be used to endorse or promote
++ * products derived from this software without specific prior
++ * written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
++
++/*
++ * This file is a sample local.h file. It shows what I believe nearly every
++ * site will want to include in their local.h. You will probably want to
++ * expand this file; see "config.X" to learn of #defines that you might
++ * like to add to.
++ */
++
++/*
++ * $Log: local.h.samp,v $
++ * Revision 1.18 2001/05/30 21:14:47 geoff
++ * Invert the fcntl/mkstemp options so they will default to being used.
++ *
++ * Revision 1.17 2001/05/30 21:04:25 geoff
++ * Add HAS_FCNTL_H and HAS_MKSTEMP. Also give better comments on the USG
++ * option.
++ *
++ * Revision 1.16 1999/01/08 04:34:43 geoff
++ * Get rid of ELISPDIR and TEXINFODIR
++ *
++ * Revision 1.15 1999/01/07 01:57:57 geoff
++ * Update the copyright.
++ *
++ * Revision 1.14 1995/01/08 23:23:56 geoff
++ * Do some minor clarification of the instructional comments.
++ *
++ * Revision 1.13 1994/05/17 06:37:25 geoff
++ * Add one more item of warning advice to the comments.
++ *
++ * Revision 1.12 1994/02/07 06:00:00 geoff
++ * Add a warning about shell processing restrictions
++ *
++ * Revision 1.11 1994/01/25 07:11:50 geoff
++ * Get rid of all old RCS log lines in preparation for the 3.1 release.
++ *
++ */
++
++/*
++ * WARNING WARNING WARNING
++ *
++ * This file is *NOT* a normal C header file! Although it uses C
++ * syntax and is included in C programs, it is also processed by shell
++ * scripts that are very stupid about format.
++ *
++ * Do not try to use #if constructs to configure this file for more
++ * than one configuration. Do not place whitespace after the "#" in
++ * "#define". Do not attempt to disable lines by commenting them out.
++ * Do not use backslashes to reduce the length of long lines.
++ * None of these things will work the way you expect them to.
++ *
++ * WARNING WARNING WARNING
++ */
++
++#define MINIMENU /* Display a mini-menu at the bottom of the screen */
++#undef NO8BIT /* Remove this if you use ISO character sets */
++#define USG /* Define on System V or if term.c won't compile */
++#undef NO_FCNTL_H /* Define if you get compile errors on fcntl.h */
++#undef NO_MKSTEMP /* Define if you get compile or link errors */
++#define CFLAGS "-O2 -Wall -I ."
++
++/*
++ * Important directory paths
++ */
++#define BINDIR "/usr/bin"
++#define LIBDIR "/usr/lib/ispell"
++#define MAN1DIR "/usr/man/man1"
++#define MAN4DIR "/usr/man/man4"
++
++/*
++ * Place any locally-required #include statements here
++ */
+--- ./string.h.orig Fri Jun 8 13:49:03 2001
++++ ./string.h Fri Jun 8 13:50:38 2001
+@@ -0,0 +1,366 @@
++/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
++ This file is part of the GNU C Library.
++
++ The GNU C Library is free software; you can redistribute it and/or
++ modify it under the terms of the GNU Library General Public License as
++ published by the Free Software Foundation; either version 2 of the
++ License, or (at your option) any later version.
++
++ The GNU C 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
++ Library General Public License for more details.
++
++ You should have received a copy of the GNU Library General Public
++ License along with the GNU C Library; see the file COPYING.LIB. If not,
++ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++ Boston, MA 02111-1307, USA. */
++
++/*
++ * ISO C99 Standard: 7.21 String handling <string.h>
++ */
++
++#ifndef _STRING_H
++#define _STRING_H 1
++
++#include <features.h>
++
++__BEGIN_DECLS
++
++/* Get size_t and NULL from <stddef.h>. */
++#define __need_size_t
++#define __need_NULL
++#include <stddef.h>
++
++
++/* Copy N bytes of SRC to DEST. */
++extern void *memcpy (void *__restrict __dest,
++ __const void *__restrict __src, size_t __n) __THROW;
++/* Copy N bytes of SRC to DEST, guaranteeing
++ correct behavior for overlapping strings. */
++extern void *memmove (void *__dest, __const void *__src, size_t __n)
++ __THROW;
++
++/* Copy no more than N bytes of SRC to DEST, stopping when C is found.
++ Return the position in DEST one byte past where C was copied,
++ or NULL if C was not found in the first N bytes of SRC. */
++#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN
++extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
++ int __c, size_t __n)
++ __THROW;
++#endif /* SVID. */
++
++
++/* Set N bytes of S to C. */
++extern void *memset (void *__s, int __c, size_t __n) __THROW;
++
++/* Compare N bytes of S1 and S2. */
++extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
++ __THROW __attribute_pure__;
++
++/* Search N bytes of S for C. */
++extern void *memchr (__const void *__s, int __c, size_t __n)
++ __THROW __attribute_pure__;
++
++#ifdef __USE_GNU
++/* Search in S for C. This is similar to `memchr' but there is no
++ length limit. */
++extern void *rawmemchr (__const void *__s, int __c) __THROW __attribute_pure__;
++
++/* Search N bytes of S for the final occurrence of C. */
++extern void *memrchr (__const void *__s, int __c, size_t __n)
++ __THROW __attribute_pure__;
++#endif
++
++
++/* Copy SRC to DEST. */
++extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
++ __THROW;
++/* Copy no more than N characters of SRC to DEST. */
++extern char *strncpy (char *__restrict __dest,
++ __const char *__restrict __src, size_t __n) __THROW;
++
++/* Append SRC onto DEST. */
++extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
++ __THROW;
++/* Append no more than N characters from SRC onto DEST. */
++extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
++ size_t __n) __THROW;
++
++/* Compare S1 and S2. */
++extern int strcmp (__const char *__s1, __const char *__s2)
++ __THROW __attribute_pure__;
++/* Compare N characters of S1 and S2. */
++extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
++ __THROW __attribute_pure__;
++
++/* Compare the collated forms of S1 and S2. */
++extern int strcoll (__const char *__s1, __const char *__s2)
++ __THROW __attribute_pure__;
++/* Put a transformation of SRC into no more than N bytes of DEST. */
++extern size_t strxfrm (char *__restrict __dest,
++ __const char *__restrict __src, size_t __n) __THROW;
++
++#ifdef __USE_GNU
++/* The following functions are equivalent to the both above but they
++ take the locale they use for the collation as an extra argument.
++ This is not standardsized but something like will come. */
++# include <xlocale.h>
++
++/* Compare the collated forms of S1 and S2 using rules from L. */
++extern int __strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
++ __THROW __attribute_pure__;
++/* Put a transformation of SRC into no more than N bytes of DEST. */
++extern size_t __strxfrm_l (char *__dest, __const char *__src, size_t __n,
++ __locale_t __l) __THROW;
++#endif
++
++#if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
++/* Duplicate S, returning an identical malloc'd string. */
++extern char *strdup (__const char *__s) __THROW __attribute_malloc__;
++#endif
++
++/* Return a malloc'd copy of at most N bytes of STRING. The
++ resultant string is terminated even if no null terminator
++ appears before STRING[N]. */
++#if defined __USE_GNU
++extern char *strndup (__const char *__string, size_t __n)
++ __THROW __attribute_malloc__;
++#endif
++
++#if defined __USE_GNU && defined __GNUC__
++/* Duplicate S, returning an identical alloca'd string. */
++# define strdupa(s) \
++ (__extension__ \
++ ({ \
++ __const char *__old = (s); \
++ size_t __len = strlen (__old) + 1; \
++ char *__new = (char *) __builtin_alloca (__len); \
++ (char *) memcpy (__new, __old, __len); \
++ }))
++
++/* Return an alloca'd copy of at most N bytes of string. */
++# define strndupa(s, n) \
++ (__extension__ \
++ ({ \
++ __const char *__old = (s); \
++ size_t __len = strnlen (__old, (n)); \
++ char *__new = (char *) __builtin_alloca (__len + 1); \
++ __new[__len] = '\0'; \
++ (char *) memcpy (__new, __old, __len); \
++ }))
++#endif
++
++/* Find the first occurrence of C in S. */
++extern char *strchr (__const char *__s, int __c) __THROW __attribute_pure__;
++/* Find the last occurrence of C in S. */
++extern char *strrchr (__const char *__s, int __c) __THROW __attribute_pure__;
++
++#ifdef __USE_GNU
++/* This funciton is similar to `strchr'. But it returns a pointer to
++ the closing NUL byte in case C is not found in S. */
++extern char *strchrnul (__const char *__s, int __c) __THROW __attribute_pure__;
++#endif
++
++/* Return the length of the initial segment of S which
++ consists entirely of characters not in REJECT. */
++extern size_t strcspn (__const char *__s, __const char *__reject)
++ __THROW __attribute_pure__;
++/* Return the length of the initial segment of S which
++ consists entirely of characters in ACCEPT. */
++extern size_t strspn (__const char *__s, __const char *__accept)
++ __THROW __attribute_pure__;
++/* Find the first occurrence in S of any character in ACCEPT. */
++extern char *strpbrk (__const char *__s, __const char *__accept)
++ __THROW __attribute_pure__;
++/* Find the first occurrence of NEEDLE in HAYSTACK. */
++extern char *strstr (__const char *__haystack, __const char *__needle)
++ __THROW __attribute_pure__;
++
++#ifdef __USE_GNU
++/* Similar to `strstr' but this function ignores the case of both strings. */
++extern char *strcasestr (__const char *__haystack, __const char *__needle)
++ __THROW __attribute_pure__;
++#endif
++
++/* Divide S into tokens separated by characters in DELIM. */
++extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
++ __THROW;
++
++/* Divide S into tokens separated by characters in DELIM. Information
++ passed between calls are stored in SAVE_PTR. */
++extern char *__strtok_r (char *__restrict __s,
++ __const char *__restrict __delim,
++ char **__restrict __save_ptr) __THROW;
++#if defined __USE_POSIX || defined __USE_MISC
++extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
++ char **__restrict __save_ptr) __THROW;
++#endif
++
++#ifdef __USE_GNU
++/* Find the first occurrence of NEEDLE in HAYSTACK.
++ NEEDLE is NEEDLELEN bytes long;
++ HAYSTACK is HAYSTACKLEN bytes long. */
++extern void *memmem (__const void *__haystack, size_t __haystacklen,
++ __const void *__needle, size_t __needlelen)
++ __THROW __attribute_pure__;
++
++/* Copy N bytes of SRC to DEST, return pointer to bytes after the
++ last written byte. */
++extern void *__mempcpy (void *__restrict __dest,
++ __const void *__restrict __src, size_t __n) __THROW;
++extern void *mempcpy (void *__restrict __dest,
++ __const void *__restrict __src, size_t __n) __THROW;
++#endif
++
++
++/* Return the length of S. */
++extern size_t strlen (__const char *__s) __THROW __attribute_pure__;
++
++#ifdef __USE_GNU
++/* Find the length of STRING, but scan at most MAXLEN characters.
++ If no '\0' terminator is found in that many characters, return MAXLEN. */
++extern size_t strnlen (__const char *__string, size_t __maxlen)
++ __THROW __attribute_pure__;
++#endif
++
++
++/* Return a string describing the meaning of the `errno' code in ERRNUM. */
++extern char *strerror (int __errnum) __THROW;
++#ifdef __USE_MISC
++/* Reentrant version of `strerror'. If a temporary buffer is required, at
++ most BUFLEN bytes of BUF will be used. */
++extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW;
++#endif
++
++/* We define this function always since `bzero' is sometimes needed when
++ the namespace rules does not allow this. */
++extern void __bzero (void *__s, size_t __n) __THROW;
++
++#undef __USE_BSD
++#if defined __USE_BSD
++/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
++extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW;
++
++/* Set N bytes of S to 0. */
++extern void bzero (void *__s, size_t __n) __THROW;
++
++/* Compare N bytes of S1 and S2 (same as memcmp). */
++extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
++ __THROW __attribute_pure__;
++
++/* Find the first occurrence of C in S (same as strchr). */
++extern char *index (__const char *__s, int __c) __THROW __attribute_pure__;
++
++/* Find the last occurrence of C in S (same as strrchr). */
++extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__;
++
++/* Return the position of the first bit set in I, or 0 if none are set.
++ The least-significant bit is position 1, the most-significant 32. */
++extern int ffs (int __i) __THROW __attribute__ ((__const__));
++
++/* The following two functions are non-standard but necessary for non-32 bit
++ platforms. */
++# ifdef __USE_GNU
++extern int ffsl (long int __l) __THROW __attribute__ ((__const__));
++# ifdef __GNUC__
++__extension__ extern int ffsll (long long int __ll)
++ __THROW __attribute__ ((__const__));
++# endif
++# endif
++
++/* Compare S1 and S2, ignoring case. */
++extern int strcasecmp (__const char *__s1, __const char *__s2)
++ __THROW __attribute_pure__;
++
++/* Compare no more than N chars of S1 and S2, ignoring case. */
++extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
++ __THROW __attribute_pure__;
++#endif /* Use BSD. */
++
++#ifdef __USE_GNU
++/* Again versions of a few functions which use the given locale instead
++ of the global one. */
++extern int __strcasecmp_l (__const char *__s1, __const char *__s2,
++ __locale_t __loc) __THROW __attribute_pure__;
++
++extern int __strncasecmp_l (__const char *__s1, __const char *__s2,
++ size_t __n, __locale_t __loc)
++ __THROW __attribute_pure__;
++#endif
++
++#ifdef __USE_BSD
++/* Return the next DELIM-delimited token from *STRINGP,
++ terminating it with a '\0', and update *STRINGP to point past it. */
++extern char *strsep (char **__restrict __stringp,
++ __const char *__restrict __delim) __THROW;
++#endif
++
++#ifdef __USE_GNU
++/* Compare S1 and S2 as strings holding name & indices/version numbers. */
++extern int strverscmp (__const char *__s1, __const char *__s2)
++ __THROW __attribute_pure__;
++
++/* Return a string describing the meaning of the signal number in SIG. */
++extern char *strsignal (int __sig) __THROW;
++
++/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
++extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
++ __THROW;
++extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
++ __THROW;
++
++/* Copy no more than N characters of SRC to DEST, returning the address of
++ the last character written into DEST. */
++extern char *__stpncpy (char *__restrict __dest,
++ __const char *__restrict __src, size_t __n) __THROW;
++extern char *stpncpy (char *__restrict __dest,
++ __const char *__restrict __src, size_t __n) __THROW;
++
++/* Sautee STRING briskly. */
++extern char *strfry (char *__string) __THROW;
++
++/* Frobnicate N bytes of S. */
++extern void *memfrob (void *__s, size_t __n) __THROW;
++
++# ifndef basename
++/* Return the file name within directory of FILENAME. We don't
++ declare the function if the `basename' macro is available (defined
++ in <libgen.h>) which makes the XPG version of this function
++ available. */
++extern char *basename (__const char *__filename) __THROW;
++# endif
++#endif
++
++
++#if defined __GNUC__ && __GNUC__ >= 2
++# if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ && !defined __cplusplus
++/* When using GNU CC we provide some optimized versions of selected
++ functions from this header. There are two kinds of optimizations:
++
++ - machine-dependent optimizations, most probably using inline
++ assembler code; these might be quite expensive since the code
++ size can increase significantly.
++ These optimizations are not used unless the symbol
++ __USE_STRING_INLINES
++ is defined before including this header.
++
++ - machine-independent optimizations which do not increase the
++ code size significantly and which optimize mainly situations
++ where one or more arguments are compile-time constants.
++ These optimizations are used always when the compiler is
++ taught to optimize.
++
++ One can inhibit all optimizations by defining __NO_STRING_INLINES. */
++
++/* Get the machine-dependent optimizations (if any). */
++# include <bits/string.h>
++
++/* These are generic optimizations which do not add too much inline code. */
++# include <bits/string2.h>
++# endif
++#endif
++
++__END_DECLS
++
++#endif /* string.h */
diff --git a/source/ap/ispell/slack-desc b/source/ap/ispell/slack-desc
new file mode 100644
index 000000000..46c648623
--- /dev/null
+++ b/source/ap/ispell/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------------------------------------------------------|
+ispell: ispell (spelling checker)
+ispell:
+ispell: Ispell is a fast screen-oriented spelling checker that shows you your
+ispell: errors in the context of the original file, and suggests possible
+ispell: corrections when it can figure them out. Compared to UNIX spell, it
+ispell: is faster and much easier to use. Ispell can also handle languages
+ispell: other than English. Ispell has a long history, and many people have
+ispell: contributed to the current version -- some of the major contributors
+ispell: include R. E. Gorin, Pace Willisson, Walt Buehring, and Geoff
+ispell: Kuenning.
+ispell:
diff --git a/source/ap/jed/jed.SlackBuild b/source/ap/jed/jed.SlackBuild
new file mode 100755
index 000000000..68c851ff8
--- /dev/null
+++ b/source/ap/jed/jed.SlackBuild
@@ -0,0 +1,96 @@
+#!/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=0.99-18
+PKGVER=0.99_18
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-3}
+
+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
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-jed
+rm -rf $PKG
+mkdir -p $TMP $PKG
+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 . \
+ \( -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 {} \;
+
+JED_ROOT=/usr/share/jed \
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --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
+
+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
+( cd $PKG/usr/doc ; rm -f jed-$VERSION )
+( cd $PKG/usr/doc ; ln -sf /usr/share/jed jed-$VERSION )
+( cd $PKG/usr/share/jed
+ rm -rf info
+ ln -sf /usr/info info
+)
+
+gzip -9 $PKG/usr/man/man1/*
+
+cp -a COPYING COPYRIGHT INSTALL INSTALL.unx README changes.txt \
+ $PKG/usr/share/jed
+
+mkdir -p $PKG/usr/info
+for file in info/jed* ; do
+ cat $file | gzip -9c > $PKG/usr/$file.gz
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/jed-$PKGVER-$ARCH-$BUILD.txz
+
diff --git a/source/ap/jed/jed.mouse.diff b/source/ap/jed/jed.mouse.diff
new file mode 100644
index 000000000..4ff607169
--- /dev/null
+++ b/source/ap/jed/jed.mouse.diff
@@ -0,0 +1,17 @@
+--- ./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
new file mode 100644
index 000000000..266fece72
--- /dev/null
+++ b/source/ap/jed/jed.multibyte.diff
@@ -0,0 +1,11 @@
+--- ./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/jed/slack-desc b/source/ap/jed/slack-desc
new file mode 100644
index 000000000..8c7b15192
--- /dev/null
+++ b/source/ap/jed/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------------------------------------------------------|
+jed: jed (programmer's editor)
+jed:
+jed: JED (by John E. Davis) is an extremely powerful but small emacs-like
+jed: programmer's editor that is extensible in a C-like macro language and
+jed: can do color syntax highlighting. Among the many features:
+jed: Emacs, wordstar, EDT emulation;
+jed: C, Fortran, TeX, text editing modes; Full undo;
+jed: GNU Emacs compatible info reader, and lots more.
+jed:
+jed: JED is also 8 bit clean, so you can even edit binary files!
+jed:
diff --git a/source/ap/joe/joe.SlackBuild b/source/ap/joe/joe.SlackBuild
new file mode 100755
index 000000000..f3672e24e
--- /dev/null
+++ b/source/ap/joe/joe.SlackBuild
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=3.5
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-joe
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf joe-$VERSION
+tar xvf $CWD/joe-$VERSION.tar.bz2 || exit 1
+cd joe-$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 \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --program-prefix="" \
+ --program-suffix="" \
+ $ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Wrong place for this...
+rm -rf $PKG/etc/joe/doc
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd $PKG/usr/man
+ find . -type f -name "*.?" -exec gzip -9 {} \;
+)
+
+mkdir -p $PKG/usr/doc/joe-$VERSION
+cp -a \
+ COPYING HACKING HINTS LIST NEWS README TODO docs/help-system.html \
+ $PKG/usr/doc/joe-$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/joe-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/joe/slack-desc b/source/ap/joe/slack-desc
new file mode 100644
index 000000000..2827441f1
--- /dev/null
+++ b/source/ap/joe/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------------------------------------------------------|
+joe: joe (Joe text editor)
+joe:
+joe: Joseph H. Allen's easy to use text editor, similar to WordStar[tm].
+joe:
+joe:
+joe:
+joe:
+joe:
+joe:
+joe:
+joe:
diff --git a/source/ap/jove/jove.SlackBuild b/source/ap/jove/jove.SlackBuild
new file mode 100755
index 000000000..0fa524d05
--- /dev/null
+++ b/source/ap/jove/jove.SlackBuild
@@ -0,0 +1,95 @@
+#!/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=4.16.0.70
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+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"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-jove
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf jove$VERSION
+tar xvf $CWD/jove$VERSION.tar.?z* || exit 1
+cd jove$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/jove.makefile.diff.gz | patch -p1 --verbose --backup
+# More patching needed now:
+sed -i -e "s#/lib/jove#/lib${LIBDIRSUFFIX}/jove#" \
+ -e "s#^OPTFLAGS = .*#OPTFLAGS = $SLKCFLAGS#" Makefile
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Create jove-recover symlink
+( cd $PKG/usr/bin
+ ln -s ../lib${LIBDIRSUFFIX}/jove/recover jove-recover
+)
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress man pages
+( cd $PKG/usr/man
+ rm man1/jovetool.1 man1/xjove.1
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz ; rm $i
+ done
+)
+
+# Copy program documentation into the package
+mkdir -p $PKG/usr/doc/jove$VERSION
+cp -a \
+ README* $PKG/usr/doc/jove$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/jove-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/jove/jove.makefile.diff b/source/ap/jove/jove.makefile.diff
new file mode 100644
index 000000000..8bf2be4bc
--- /dev/null
+++ b/source/ap/jove/jove.makefile.diff
@@ -0,0 +1,132 @@
+--- jove4.16.0.70/Makefile 2005-09-30 19:14:41.000000000 -0300
++++ jove4.16.0.70.new/Makefile 2009-03-04 02:01:26.000000000 -0300
+@@ -21,13 +21,14 @@
+ # If they don't exist, this makefile will try to create the directories
+ # LIBDIR and SHAREDIR. All others must already exist.
+
+-JOVEHOME = /usr/local
++JOVEHOME = /usr
+ SHAREDIR = $(JOVEHOME)/lib/jove
+ LIBDIR = $(JOVEHOME)/lib/jove
+ BINDIR = $(JOVEHOME)/bin
+ XEXT=
+ MANDIR = $(JOVEHOME)/man/man$(MANEXT)
+ MANEXT = 1
++DESTDIR := ${DESTDIR}
+
+ # TMPDIR is where the tmp files get stored, usually /tmp, /var/tmp, or
+ # /usr/tmp. If you wish to be able to recover buffers after a system
+@@ -56,12 +57,12 @@
+ INSTALLFLAGS = # -g bin -o root
+
+ # to install executable files
+-XINSTALL=cp
++XINSTALL=/usr/bin/install -c -m 755 -D
+ #XINSTALL=/usr/ucb/install $(INSTALLFLAGS) -c -m 755 # -s
+ #CYGWIN32: XINSTALL=install $(INSTALLFLAGS) -c -m 755
+
+ # to install text files
+-TINSTALL=cp
++TINSTALL=/usr/bin/install -c -m 644 -D
+ #TINSTALL=/usr/ucb/install $(INSTALLFLAGS) -c -m 644
+ #CYGWIN32: TINSTALL=install $(INSTALLFLAGS) -c -m 644
+
+@@ -137,7 +138,7 @@
+ # Add -DUSE_EXIT if you're profiling or using purify (this causes Jove
+ # to exit using exit(), instead of _exit()).
+
+-SYSDEFS = -DBSDPOSIX_STDC
++SYSDEFS = -DSYSVR4 -D_XOPEN_SOURCE=500
+
+ # Select optimization level (flags passed to compiling and linking steps).
+ # On most systems: -g for debugging, -O for optimization.
+@@ -146,7 +147,7 @@
+ # On DEC OSF/1 and Digital UNIX VV4.0, add -std1 to enable ANSI C features
+ # and perhaps -g3 for more debugging info with optimization.
+
+-OPTFLAGS = -O
++OPTFLAGS := ${OPTFLAGS}
+
+ # For making dependencies under BSD systems
+ DEPENDFLAG = -M
+@@ -360,7 +361,7 @@
+ install: $(LIBDIR) $(SHAREDIR) \
+ $(TEACH-JOVE) $(CMDS.DOC) $(TERMSDIR)docs \
+ $(PORTSRVINST) $(RECOVER) $(JOVE) $(TEACHJOVE) $(MANUALS)
+- $(TINSTALL) doc/jove.rc $(JOVERC)
++ $(TINSTALL) doc/jove.rc $(DESTDIR)$(JOVERC)
+ @echo See the README about changes to /etc/rc or /etc/rc.local
+ @echo so that the system recovers jove files on reboot after a crash
+
+@@ -371,7 +372,7 @@
+ test -d $(SHAREDIR) || mkdir $(SHAREDIR)
+
+ $(TEACH-JOVE): doc/teach-jove
+- $(TINSTALL) doc/teach-jove $(TEACH-JOVE)
++ $(TINSTALL) doc/teach-jove $(DESTDIR)$(TEACH-JOVE)
+
+ doc/cmds.doc: doc/cmds.macros.nr doc/cmds.nr
+ $(NROFF) doc/cmds.macros.nr doc/cmds.nr > doc/cmds.doc
+@@ -383,25 +384,25 @@
+ ( cd doc; tbl intro.nr | $(TROFF) -ms - cmds.nr contents.nr $(TROFFPOST) >jove.man.ps )
+
+ $(CMDS.DOC): doc/cmds.doc
+- $(TINSTALL) doc/cmds.doc $(CMDS.DOC)
++ $(TINSTALL) doc/cmds.doc $(DESTDIR)$(CMDS.DOC)
+
+ $(JOVERC): doc/jove.rc
+- $(TINSTALL) doc/jove.rc $(JOVERC)
++ $(TINSTALL) doc/jove.rc $(DESTDIR)$(JOVERC)
+
+ $(TERMSDIR)docs: $(DOCTERMS)
+- $(TINSTALL) $(DOCTERMS) $(TERMSDIR)
++ $(TINSTALL) $(DOCTERMS) $(DESTDIR)$(TERMSDIR)
+
+ $(PORTSRV): portsrv$(XEXT)
+- $(XINSTALL) portsrv$(XEXT) $(PORTSRV)
++ $(XINSTALL) portsrv$(XEXT) $(DESTDIR)$(PORTSRV)
+
+ $(RECOVER): recover$(XEXT)
+- $(XINSTALL) recover$(XEXT) $(RECOVER)
++ $(XINSTALL) recover$(XEXT) $(DESTDIR)$(RECOVER)
+
+ $(JOVE): jjove$(XEXT)
+- $(XINSTALL) jjove$(XEXT) $(JOVE)
++ $(XINSTALL) jjove$(XEXT) $(DESTDIR)$(JOVE)
+
+ $(TEACHJOVE): teachjove$(XEXT)
+- $(XINSTALL) teachjove$(XEXT) $(TEACHJOVE)
++ $(XINSTALL) teachjove$(XEXT) $(DESTDIR)$(TEACHJOVE)
+
+ doc/jove.$(MANEXT): doc/jove.nr
+ sed -e 's;<TMPDIR>;$(TMPDIR);' \
+@@ -410,7 +411,7 @@
+ -e 's;<SHELL>;$(DFLTSHELL);' doc/jove.nr > doc/jove.$(MANEXT)
+
+ $(JOVEM): doc/jove.$(MANEXT)
+- $(TINSTALL) doc/jove.$(MANEXT) $(JOVEM)
++ $(TINSTALL) doc/jove.$(MANEXT) $(DESTDIR)$(JOVEM)
+
+ # doc/jove.doc is the formatted manpage (only needed by DOS)
+ # Building it should be like building $(JOVEM) except that we
+@@ -427,17 +428,17 @@
+ -e 's;<SHELL>;$(DFLTSHELL);' doc/teachjove.nr > doc/teachjove.$(MANEXT)
+
+ $(TEACHJOVEM): doc/teachjove.$(MANEXT)
+- $(TINSTALL) doc/teachjove.$(MANEXT) $(TEACHJOVEM)
++ $(TINSTALL) doc/teachjove.$(MANEXT) $(DESTDIR)$(TEACHJOVEM)
+
+ $(XJOVEM): doc/xjove.nr
+- $(TINSTALL) doc/xjove.nr $(XJOVEM)
++ $(TINSTALL) doc/xjove.nr $(DESTDIR)$(XJOVEM)
+
+ doc/jovetool.$(MANEXT): doc/jovetool.nr
+ sed -e 's;<MANDIR>;$(MANDIR);' \
+ -e 's;<MANEXT>;$(MANEXT);' doc/jovetool.nr > doc/jovetool.$(MANEXT)
+
+ $(JOVETOOLM): doc/jovetool.$(MANEXT)
+- $(TINSTALL) doc/jovetool.$(MANEXT) $(JOVETOOLM)
++ $(TINSTALL) doc/jovetool.$(MANEXT) $(DESTDIR)$(JOVETOOLM)
+
+ echo:
+ @echo $(C-FILES) $(HEADERS)
diff --git a/source/ap/jove/slack-desc b/source/ap/jove/slack-desc
new file mode 100644
index 000000000..ea95435ff
--- /dev/null
+++ b/source/ap/jove/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------------------------------------------------------|
+jove: jove (Jonathan's Own Version of Emacs)
+jove:
+jove: A mostly Emacs compatible text editor, with man pages and the
+jove: 'teachjove' tutorial program. If you'd rather have the real thing,
+jove: the actual Emacs editor/environment is available in series 'E'.
+jove:
+jove: JOVE was written by Jonathan Payne.
+jove:
+jove:
+jove:
+jove:
diff --git a/source/ap/ksh93/CPL b/source/ap/ksh93/CPL
new file mode 100644
index 000000000..50c6364c0
--- /dev/null
+++ b/source/ap/ksh93/CPL
@@ -0,0 +1,245 @@
++------------------------------------------------------------------------------+
+| This license covers all software that refers to the URL |
+| http://www.opensource.org/licenses/cpl1.0.txt |
++------------------------------------------------------------------------------+
+
+Common Public License Version 1.0
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON
+ PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+ THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+ 1. DEFINITIONS
+
+ "Contribution" means:
+
+ a) in the case of the initial Contributor, the initial code and
+ documentation distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+
+ i) changes to the Program, and
+
+ ii) additions to the Program;
+
+ where such changes and/or additions to the Program originate from
+ and are distributed by that particular Contributor. A Contribution
+ 'originates' from a Contributor if it was added to the Program by
+ such Contributor itself or anyone acting on such Contributor's
+ behalf. Contributions do not include additions to the Program
+ which: (i) are separate modules of software distributed in
+ conjunction with the Program under their own license agreement, and
+ (ii) are not derivative works of the Program.
+
+ "Contributor" means any person or entity that distributes the Program.
+
+ "Licensed Patents " mean patent claims licensable by a Contributor
+ which are necessarily infringed by the use or sale of its Contribution
+ alone or when combined with the Program.
+
+ "Program" means the Contributions distributed in accordance with this
+ Agreement.
+
+ "Recipient" means anyone who receives the Program under this
+ Agreement, including all Contributors.
+
+ 2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare derivative works of, publicly
+ display, publicly perform, distribute and sublicense the
+ Contribution of such Contributor, if any, and such derivative
+ works, in source code and object code form.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in source code and object code form. This patent license
+ shall apply to the combination of the Contribution and the Program
+ if, at the time the Contribution is added by the Contributor, such
+ addition of the Contribution causes such combination to be covered
+ by the Licensed Patents. The patent license shall not apply to any
+ other combinations which include the Contribution. No hardware per
+ se is licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient 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, each Recipient hereby
+ assumes sole responsibility to secure any other intellectual
+ property rights needed, if any. For example, if a third party
+ patent license is required to allow Recipient to distribute the
+ Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to grant
+ the copyright license set forth in this Agreement.
+
+ 3. REQUIREMENTS
+
+ A Contributor may choose to distribute the Program in object code form
+ under its own license agreement, provided that:
+
+ a) it complies with the terms and conditions of this Agreement; and
+
+ b) its license agreement:
+
+ i) effectively disclaims on behalf of all Contributors all
+ warranties and conditions, express and implied, including
+ warranties or conditions of title and non-infringement, and implied
+ warranties or conditions of merchantability and fitness for a
+ particular purpose;
+
+ ii) effectively excludes on behalf of all Contributors all
+ liability for damages, including direct, indirect, special,
+ incidental and consequential damages, such as lost profits;
+
+ iii) states that any provisions which differ from this Agreement
+ are offered by that Contributor alone and not by any other party;
+ and
+
+ iv) states that source code for the Program is available from such
+ Contributor, and informs licensees how to obtain it in a reasonable
+ manner on or through a medium customarily used for software
+ exchange.
+
+ When the Program is made available in source code form:
+
+ a) it must be made available under this Agreement; and
+
+ b) a copy of this Agreement must be included with each copy of the
+ Program.
+
+ Contributors may not remove or alter any copyright notices contained
+ within the Program.
+
+ Each Contributor must identify itself as the originator of its
+ Contribution, if any, in a manner that reasonably allows subsequent
+ Recipients to identify the originator of the Contribution.
+
+ 4. COMMERCIAL DISTRIBUTION
+
+ Commercial distributors of software may accept certain
+ responsibilities with respect to end users, business partners and the
+ like. While this license is intended to facilitate the commercial use
+ of the Program, the Contributor who includes the Program in a
+ commercial product offering should do so in a manner which does not
+ create potential liability for other Contributors. Therefore, if a
+ Contributor includes the Program in a commercial product offering,
+ such Contributor ("Commercial Contributor") hereby agrees to defend
+ and indemnify every other Contributor ("Indemnified Contributor")
+ against any losses, damages and costs (collectively "Losses") arising
+ from claims, lawsuits and other legal actions brought by a third party
+ against the Indemnified Contributor to the extent caused by the acts
+ or omissions of such Commercial Contributor in connection with its
+ distribution of the Program in a commercial product offering. The
+ obligations in this section do not apply to any claims or Losses
+ relating to any actual or alleged intellectual property infringement.
+ In order to qualify, an Indemnified Contributor must: a) promptly
+ notify the Commercial Contributor in writing of such claim, and b)
+ allow the Commercial Contributor to control, and cooperate with the
+ Commercial Contributor in, the defense and any related settlement
+ negotiations. The Indemnified Contributor may participate in any such
+ claim at its own expense.
+
+ For example, a Contributor might include the Program in a commercial
+ product offering, Product X. That Contributor is then a Commercial
+ Contributor. If that Commercial Contributor then makes performance
+ claims, or offers warranties related to Product X, those performance
+ claims and warranties are such Commercial Contributor's responsibility
+ alone. Under this section, the Commercial Contributor would have to
+ defend claims against the other Contributors related to those
+ performance claims and warranties, and if a court requires any other
+ Contributor to pay any damages as a result, the Commercial Contributor
+ must pay those damages.
+
+ 5. NO WARRANTY
+
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+ PROVIDED 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. Each Recipient is solely
+ responsible for determining the appropriateness of using and
+ distributing the Program and assumes all risks associated with its
+ exercise of rights under this Agreement, including but not limited to
+ the risks and costs of program errors, compliance with applicable
+ laws, damage to or loss of data, programs or equipment, and
+ unavailability or interruption of operations.
+
+ 6. DISCLAIMER OF LIABILITY
+
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+ WITHOUT LIMITATION LOST PROFITS), 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 OR
+ DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+ HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ 7. GENERAL
+
+ If any provision of this Agreement is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of
+ the remainder of the terms of this Agreement, and without further
+ action by the parties hereto, such provision shall be reformed to the
+ minimum extent necessary to make such provision valid and enforceable.
+
+ If Recipient institutes patent litigation against a Contributor with
+ respect to a patent applicable to software (including a cross-claim or
+ counterclaim in a lawsuit), then any patent licenses granted by that
+ Contributor to such Recipient under this Agreement shall terminate as
+ of the date such litigation is filed. In addition, if Recipient
+ institutes patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Program
+ itself (excluding combinations of the Program with other software or
+ hardware) infringes such Recipient's patent(s), then such Recipient's
+ rights granted under Section 2(b) shall terminate as of the date such
+ litigation is filed.
+
+ All Recipient's rights under this Agreement shall terminate if it
+ fails to comply with any of the material terms or conditions of this
+ Agreement and does not cure such failure in a reasonable period of
+ time after becoming aware of such noncompliance. If all Recipient's
+ rights under this Agreement terminate, Recipient agrees to cease use
+ and distribution of the Program as soon as reasonably practicable.
+ However, Recipient's obligations under this Agreement and any licenses
+ granted by Recipient relating to the Program shall continue and
+ survive.
+
+ Everyone is permitted to copy and distribute copies of this Agreement,
+ but in order to avoid inconsistency the Agreement is copyrighted and
+ may only be modified in the following manner. The Agreement Steward
+ reserves the right to publish new versions (including revisions) of
+ this Agreement from time to time. No one other than the Agreement
+ Steward has the right to modify this Agreement. IBM is the initial
+ Agreement Steward. IBM may assign the responsibility to serve as the
+ Agreement Steward to a suitable separate entity. Each new version of
+ the Agreement will be given a distinguishing version number. The
+ Program (including Contributions) may always be distributed subject to
+ the version of the Agreement under which it was received. In addition,
+ after a new version of the Agreement is published, Contributor may
+ elect to distribute the Program (including its Contributions) under
+ the new version. Except as expressly stated in Sections 2(a) and 2(b)
+ above, Recipient receives no rights or licenses to the intellectual
+ property of any Contributor under this Agreement, whether expressly,
+ by implication, estoppel or otherwise. All rights in the Program not
+ expressly granted under this Agreement are reserved.
+
+ This Agreement is governed by the laws of the State of New York and
+ the intellectual property laws of the United States of America. No
+ party to this Agreement will bring a legal action under this Agreement
+ more than one year after the cause of action arose. Each party waives
+ its rights to a jury trial in any resulting litigation.
+
+Copyright (c) 2004 by the Open Source Initiative
+This is a copy of the license posted on 2004-10-06 at:
+ http://www.opensource.org/licenses/cpl
diff --git a/source/ap/ksh93/ksh93.SlackBuild b/source/ap/ksh93/ksh93.SlackBuild
new file mode 100755
index 000000000..8653c89de
--- /dev/null
+++ b/source/ap/ksh93/ksh93.SlackBuild
@@ -0,0 +1,151 @@
+#!/bin/sh
+# Copyright 2001 BSDi, Inc. Concord, CA, USA
+# Copyright 2004 Slackware Linux, Inc. Concord, CA, USA
+# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=2007-03-28
+PKGVER=2007_03_28
+# ast still considers this an i386 arch, so we'll humor it
+# but package with our real arch label...
+ARCH=${ARCH:-x86_64}
+if [ "$ARCH" = "x86_64" ]; then
+ SARCH=i386-64
+else
+ SARCH=i386
+fi
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=/tmp/build-ksh93
+PKG=/tmp/package-ksh93
+
+rm -rf $TMP $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+
+mkdir -p ast-base/lib/package/tgz
+cp $CWD/*.tgz ast-base/lib/package/tgz
+cd ast-base/
+
+tar -xzf lib/package/tgz/INIT.$VERSION.tgz || 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 {} \;
+
+bin/package read || exit 1
+bin/package make SHELL=/bin/ash || exit 1
+
+mkdir -p $PKG/bin
+cp arch/linux.$SARCH/bin/ksh $PKG/bin/ksh.new
+strip --strip-unneeded $PKG/bin/ksh.new
+
+#cp arch/linux.$SARCH/lib/libshell.so.1.1 /usr/lib
+#cp arch/linux.$SARCH/lib/libshell.a /usr/lib
+#cp arch/linux.$SARCH/lib/libast.so.5.4 /usr/lib
+#cp arch/linux.$SARCH/lib/libast.a /usr/lib
+#cp arch/linux.$SARCH/src/cmd/ksh93/cc-g,-fpic/libshell.so.1.1 /usr/lib
+#cp arch/linux.$SARCH/src/cmd/ksh93/cc-g,-fpic/libshell.a /usr/lib
+#cp arch/linux.$SARCH/src/lib/libast/libast.so.5.4 /usr/lib
+#cp arch/linux.$SARCH/src/cmd/ksh93/cc-g,-fpic/libast.a /usr/lib
+#strip /usr/lib/libast.so.5.4 /usr/lib/libshell.so.1.1
+
+mkdir -p $PKG/usr/man/man1
+sed -e "s#\.nr Z 0#\.nr Z 1#g" src/cmd/ksh93/sh.1 > \
+ $PKG/usr/man/man1/ksh.1
+#mkdir -p $PKG/usr/man/man1
+#cp src/cmd/ksh93/shell.3 $PKG/usr/man/man3
+#cp src/cmd/ksh93/nval.3 $PKG/usr/man/man3
+gzip -9 $PKG/usr/man/man?/*
+
+# Install locale files:
+mkdir -p $PKG/usr/share
+cp -a share/lib/locale $PKG/usr/share
+chown -R root:root $PKG/usr/share
+( cd $PKG/usr/share
+ find . -type d -exec chmod 755 {} \;
+ find . -type f -exec chmod 644 {} \;
+)
+
+#cp src/cmd/ksh93/include/shell.h /usr/include
+
+# If anyone is actually using the ksh libraries, drop me some mail
+# and explain which libs you use and what they're for. As it is, I
+# don't see a compeling reason to include them, as ksh itself doesn't
+# use them.
+#( cd /usr/lib ; ln -sf libshell.so.1.1 libshell.so )
+#( cd /usr/lib rm -rf libast.so ; ln -sf libast.so.5.4 libast.so )
+
+( cd $PKG/bin ; ln -sf ksh rksh )
+( cd $PKG/usr/man/man1 ; ln -sf ksh.1.gz rksh.1.gz )
+
+mkdir -p $PKG/usr/doc/ksh93-$VERSION
+( cd src/cmd/ksh93
+ cp -a COMPATIBILITY DESIGN OBSOLETE PROMO.mm README RELEASE* \
+ $PKG/usr/doc/ksh93-$VERSION
+)
+( cd /tmp/build-ksh93/ast-base
+ mkdir -p $PKG/usr/doc/ksh93-$VERSION/LICENSE
+ cp -a README $PKG/usr/doc/ksh93-$VERSION/LICENSE
+ cp -a $CWD/CPL $PKG/usr/doc/ksh93-$VERSION
+ chmod 644 $PKG/usr/doc/ksh93-$VERSION/CPL
+ chown root:root $PKG/usr/doc/ksh93-$VERSION/CPL
+ cp -a lib/package/LICENSES/ast $PKG/usr/doc/ksh93-$VERSION/LICENSE/LICENSE.ast )
+
+chown -R root:root $PKG/usr/doc/ksh93-$VERSION
+find $PKG/usr/doc/ksh93-$VERSION -type f -exec chmod 644 "{}" \;
+find $PKG/usr/doc/ksh93-$VERSION -type d -exec chmod 755 "{}" \;
+
+#chmod 755 $PKG/usr/lib/libshell.so.1.1
+#chmod 755 $PKG/usr/lib/libast.so.5.4
+
+mkdir -p $PKG/install
+cat <<EOF >> $PKG/install/doinst.sh
+# Backup the old copy if we find one, move the new one in place
+if [ -f bin/ksh ]; then
+ mv bin/ksh bin/ksh.old
+fi
+mv bin/ksh.new bin/ksh
+if [ -f bin/ksh.old ]; then
+ rm -f bin/ksh.old
+fi
+
+# Add entries to /etc/shells if we need them
+if [ ! -r etc/shells ] ; then
+ touch etc/shells
+ chmod 644 etc/shells
+fi
+
+if ! grep -q "/bin/ksh" etc/shells ; then
+ echo "/bin/ksh" >> etc/shells
+fi
+EOF
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n /tmp/ksh93-$PKGVER-$ARCH-$BUILD.txz
+
diff --git a/source/ap/ksh93/slack-desc b/source/ap/ksh93/slack-desc
new file mode 100644
index 000000000..b2e7d5624
--- /dev/null
+++ b/source/ap/ksh93/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------------------------------------------------------|
+ksh93: ksh (AT&T Korn Shell 93)
+ksh93:
+ksh93: The KornShell language and interactive shell were designed by
+ksh93: David G. Korn at AT&T Bell Laboratories. Besides offering a powerful
+ksh93: interactive shell, it also offers a robust programming language with
+ksh93: such features as associative arrays and built in integer math
+ksh93: operations. ksh is an excellent choice for system administration
+ksh93: scripts and for everyday interactive use.
+ksh93:
+ksh93: The official site for the Korn Shell is http://www.kornshell.com/
+ksh93:
diff --git a/source/ap/libx86/libx86.SlackBuild b/source/ap/libx86/libx86.SlackBuild
new file mode 100755
index 000000000..02c54a098
--- /dev/null
+++ b/source/ap/libx86/libx86.SlackBuild
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Slackware build script for libx86
+
+# Copyright 2008 Robby Workman, Northport, Alabama, USA
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=${VERSION:-1.1}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-libx86
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf libx86-$VERSION
+tar xvf $CWD/libx86-$VERSION.tar.gz
+cd libx86-$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 {} \;
+
+# Add a patch from Gentoo to make this build on 2.6.26+
+zcat $CWD/lrmi.c.diff.gz | patch -p1 || exit 1
+
+make BACKEND=x86emu LIBDIR=/usr/lib${LIBDIRSUFFIX} || exit 1
+make install DESTDIR=$PKG LIBDIR=/usr/lib${LIBDIRSUFFIX}
+
+# Kill the static library; we shouldn't need it
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libx86.a
+
+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/libx86-$VERSION
+cp -a COPYRIGHT $PKG/usr/doc/libx86-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/libx86-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/libx86/libx86.info b/source/ap/libx86/libx86.info
new file mode 100644
index 000000000..1b9bef5c2
--- /dev/null
+++ b/source/ap/libx86/libx86.info
@@ -0,0 +1,2 @@
+HOMEPAGE="http://www.codon.org.uk/~mjg59/libx86/"
+DOWNLOAD="http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-1.1.tar.gz"
diff --git a/source/ap/libx86/lrmi.c.diff b/source/ap/libx86/lrmi.c.diff
new file mode 100644
index 000000000..24f4510ff
--- /dev/null
+++ b/source/ap/libx86/lrmi.c.diff
@@ -0,0 +1,18 @@
+# Patch from Gentoo: http://bugs.gentoo.org/235599
+
+--- old/lrmi.c 2006-10-30 21:10:16.000000000 +0100
++++ new/lrmi.c 2008-08-27 11:32:40.000000000 +0200
+@@ -64,6 +64,13 @@
+ #define DEFAULT_STACK_SIZE 0x1000
+ #define RETURN_TO_32_INT 255
+
++#ifndef IF_MASK
++#define IF_MASK X86_EFLAGS_VIF
++#define IOPL_MASK X86_EFLAGS_IOPL
++#define VIF_MASK X86_EFLAGS_VIF
++#define TF_MASK X86_EFLAGS_TF
++#endif
++
+ #if defined(__linux__)
+ #define CONTEXT_REGS context.vm.regs
+ #define REG(x)
diff --git a/source/ap/libx86/slack-desc b/source/ap/libx86/slack-desc
new file mode 100644
index 000000000..b1e743932
--- /dev/null
+++ b/source/ap/libx86/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--------------------------------------------------|
+libx86: libx86 (hardware-independent library for x86 code execution)
+libx86:
+libx86: libx86 is a hardware-independent library for executing
+libx86: real-mode x86 code, such as bios calls, from userspace.
+libx86:
+libx86: Homepage: http://www.codon.org.uk/~mjg59/libx86/
+libx86:
+libx86:
+libx86:
+libx86:
+libx86:
diff --git a/source/ap/linuxdoc-tools/ChangeLog.txt b/source/ap/linuxdoc-tools/ChangeLog.txt
new file mode 100644
index 000000000..86f1eb7f8
--- /dev/null
+++ b/source/ap/linuxdoc-tools/ChangeLog.txt
@@ -0,0 +1,113 @@
+Sun Aug 2 19:07:43 BST 2009
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.56, build 5.
+ * Replace /usr/share/xml/docbook/xml-dtd-4.5/ent/isogrk4.ent with
+ the Unicode-4 entity map from sgml-common, to fix errors such as
+ ""1D6C2" is not a character number in the document character set"
+ Thanks to Niels Horn for the fix and Ron Parker for the report.
+
+Thu Jul 30 15:56:10 BST 2009
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.56, build 4.
+* Upgraded to:
+ docbook-xsl-1.75.1
+ docbook-xsl-doc-1.75.1
+ gnome-doc-utils-0.17.2
+ asciidoc-8.4.5
+ OpenJade-1.3.3-pre1
+
+This package has a problem producing simple docbook documents
+though, as reported by Ron Parker.
+
+ For example:
+ # cat << EOF > /tmp/test.txt
+Hello
+this will not work yet
+EOF
+ # asciidoc -b docbook /tmp/test.txt
+ # db2rtf /tmp/test.xml
+You'll see this error:
+jade:/usr/share/xml/docbook/xml-dtd-4.5/ent/isogrk4.ent:42:30:E: "1D6C2" is not a character number in the document character set
+
+I've been reading a few URLs:
+http://lists.oasis-open.org/archives/docbook-apps/200511/msg00119.html
+http://bugs.gentoo.org/238785
+
+The majority of the build process for Docbook and supporting tools
+is taken verbatim from Linux From Scratch:
+http://www.linuxfromscratch.org/blfs/view/svn/index.html
+I have in the past looked at Fedora and Debian spec & rules files
+but LFS has great documentation and makes maintaining this package
+a lot easier, so I'm very keen to keep to their build process
+(including file/directory paths) as much as possible.
+
+If anybody knows how to resolve this, please let me know!
+
+Fri May 29 18:48:41 BST 2009
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.56, build 3.
+ * Remove orphaned *.pyc (Python compiled) files.
+ The addition of GNOME doc-tools causes some Python *.py
+ files to be recompiled, resulting in them appearing in this
+ package. These files belonged to the Python package and
+ therefore caused an overlap.
+
+Mon May 25 14:29:26 BST 2009
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.56, build 2.
+ * Added missing asciidoc filters.
+ Thanks to 'one forall' for the report.
+ Now use asciidoc's 'make install' target to install
+ rather than hand crafted script.
+
+Tue May 12 18:34:38 BST 2009
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.56, build 1.
+ * Upgraded to linuxdoc-tools 0.9.56
+ * Patched OpenSP to prevent segfaulting on the ARM platform:
+ https://bugzilla.redhat.com/show_bug.cgi?id=245104
+ * Added gnome-doc-utils-0.16.0, for gtkdoc.
+ * Upgraded to gtkdoc-1.11
+ * Upgraded to xmlto-0.0.22
+ * Upgraded to asciidoc-8.4.4
+
+Thu Feb 28 17:47:21 CST 2008 <pjv>
+ Upgraded these source files:
+ asciidoc-8.2.5.tar.gz
+ docbook-utils-0.6.14-13.fc9.src.rpm
+ docbook-xsl-1.73.2.tar.bz2
+ docbook-xsl-doc-1.73.2.tar.bz2
+ gtk-doc-1.9.tar.bz2
+ libsgmls-perl_1.03ii-32.diff.gz
+ linuxdoc-tools_0.9.21-0.11.tar.gz
+ sgml-common-0.6.3-23.fc9.src.rpm
+ xmlto-0.0.20.tar.bz2
+
+Sat May 5 13:38:46 BST 2007
+ Stuart Winter <mozes@slackware.com>
+ linuxdoc-tools-0.9.21, build 4
+ * Converted from docbook RPM source builds to direct source build, with
+ the build script code by: Jerome Pinot
+ based on the Linux From Scratch documentation.
+ Merged some of Jerome's code back into the original linuxdoc-tools.build
+ script.
+ This fixes many bugs with the previous package, with broken catalogs
+ and so on.
+ * Upgraded to gtk-doc v1.8
+ * Upgraded to DocBook SGML DTD v4.5
+ * Upgraded to DocBook DSSSL Stylesheets v1.79
+ * Upgraded to DocBook XML DTD v4.5
+ * Upgraded to DocBook XSL Stylesheets v1.72.0 & docs
+ * Added AsciiDoc v8.2.1
+ * Added xmlto v0.0.18
+ * Removed unused build script code cruft from linuxdoc-tools.build
+ * Re-ordered the build script since OpenSP v1.5.2 requires xmlto,
+ and xmlto requires the docbook stuff to be installed.
+ * Removed buildDocBookCatalog script. If you delete your system's SGML or XML
+ catalog scripts, thinking that this script can repopulate them, it won't.
+ If you're adding docbook data to your system, you need to read the docs that
+ come with the new data you're installing.
+ * Thanks to Red Hat for the loan of a laptop on which to test this build ;-)
+
+Sat Oct 01 2005
+ * Previous releases
diff --git a/source/ap/linuxdoc-tools/arm/build b/source/ap/linuxdoc-tools/arm/build
new file mode 100755
index 000000000..d59da3271
--- /dev/null
+++ b/source/ap/linuxdoc-tools/arm/build
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# armel/build
+# Check package dependencies, set metadata and launch
+# package build script.
+# by Stuart Winter <stuart@armedslack.org>
+#
+source /usr/share/slackdev/buildkit.sh
+
+# Package metadata:
+export PKGNAM=linuxdoc-tools
+export VERSION=${VERSION:-0.9.56}
+export PKGARCH=${PKGARCH:-arm}
+export BUILD=${BUILD:-1}
+export PKGSERIES=${PKGSERIES:-ap}
+export SLACKPACKAGE=$PKGNAM-$VERSION-$PKGARCH-$BUILD.tgz
+export PKGEXT=${PKGEXT:-tgz}
+
+# Ensure base ARM packages are installed first:
+slackbasedeps
+
+# Ensure $PKGNAM isn't already installed:
+slackfailpkgdeps $PKGNAM || removepkg $PKGNAM
+
+# Ensure specific build dependencies - libraries and development tools.
+# There are many more dependencies but these are the core ones I picked out
+# as I was building the software included within this package.
+#
+#slackcheckpkgdeps libxml2 || installpkg $PKGSTORE/l/libxml2-*.tgz
+# to unpack some SRPMs:
+#slackcheckpkgdeps rpm || installpkg $PKGSTORE/ap/rpm-*.tgz
+# for OpenJade:
+#slackcheckpkgdeps tetex || installpkg $PKGSTORE/t/tetex-[0-9]*.tgz
+# for AsciiDoc:
+#slackcheckpkgdeps python || installpkg $PKGSTORE/d/python-[0-9]*.tgz
+# Ensure the packages are installed; exit if not.
+#slackcheckpkgdeps python,libxml2,rpm,tetex || exit 99
+
+# Stop daemons/processes which tend to modify the contents of the filesystem:
+altertrackprep
+
+# Launch the package build script:
+BUILDLOG=$( basename $SLACKPACKAGE .tgz ).build.log
+# ( ./$PKGNAM.SlackBuild ) >& /dev/stdout | tee $BUILDLOG
+( ./trackbuild.$PKGNAM ) >& /dev/stdout | tee $BUILDLOG
+
+# Compress the build log:
+bzip2 -9f $BUILDLOG
diff --git a/source/ap/linuxdoc-tools/linuxdoc-tools.SlackBuild b/source/ap/linuxdoc-tools/linuxdoc-tools.SlackBuild
new file mode 100755
index 000000000..7c2f20540
--- /dev/null
+++ b/source/ap/linuxdoc-tools/linuxdoc-tools.SlackBuild
@@ -0,0 +1 @@
+./trackbuild.linuxdoc-tools
diff --git a/source/ap/linuxdoc-tools/linuxdoc-tools.build b/source/ap/linuxdoc-tools/linuxdoc-tools.build
new file mode 100755
index 000000000..8d28ea332
--- /dev/null
+++ b/source/ap/linuxdoc-tools/linuxdoc-tools.build
@@ -0,0 +1,946 @@
+#!/bin/bash
+
+###############################################################################
+# Script: linuxdoc-tools.build
+# Purpose: Build & install all components that form the linuxdoc-tools
+# Slackware Package.
+# Credit: written by Stuart Winter <mozes@slackware.com>
+# with the docbook build code by Jerome Pinot <ngc891@gmail.com>
+# and some script code taken from Debian, Red Hat/Fedora &
+# Linux From Scratch documentation
+# http://www.linuxfromscratch.org/blfs/view/svn/index.html
+# http://cblfs.cross-lfs.org/index.php/Category:DocBook_SGML
+# Thanks guys! :-)
+###############################################################################
+
+# Version of LDT (which is also the .t?z package version)
+LINUXDOCTOOLSVER=0.9.56
+
+# Bundled package versions:
+SGMLDTD3VER=3.1
+SGMLDTD4VER=4.5
+XMLDTDVER=4.5
+XSLSTYLESHEETSVER=1.75.1
+DSSSLSTYLESHEETSVER=1.79
+SGMLCOMMONVER=0.6.3
+OPENJADEVER=1.3.3-pre1
+OPENSPVER=1.5.2
+GNOMEDOCUTILSVER=0.17.2
+GTKDOCVER=1.11
+SGMLSPLVER=1.03ii
+XMLTOVER=0.0.22
+ASCIIDOCVER=8.4.5
+DOCBOOKUTILSVER=0.6.14
+
+# Determine the general CFLAGS for the known architectures:
+case $ARCH in
+ arm) export SLKCFLAGS="-O2 -march=armv4t"
+ export LIBDIRSUFFIX=""
+ export HOSTTARGET="-gnueabi"
+ ;;
+ i486) export SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ export LIBDIRSUFFIX=""
+ export HOSTTARGET=""
+ ;;
+ s390) export SLKCFLAGS="-O2"
+ export LIBDIRSUFFIX=""
+ export HOSTTARGET=""
+ ;;
+ x86_64) export SLKCFLAGS="-O2 -fPIC"
+ export LIBDIRSUFFIX="64"
+ export HOSTTARGET=""
+ ;;
+esac
+
+# The build order is purposive.
+# The build order for the XML style sheets & docbook stuff comes from
+# the Linux from Scratch documentation; the other rest is because of
+# dependency build order.
+
+####################### Build AsciiDoc ##############################
+
+# Extract source:
+cd $TMP
+tar xvf $CWD/sources/asciidoc-$ASCIIDOCVER.tar.gz || exit 1
+cd asciidoc-$ASCIIDOCVER
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --docdir=/usr/doc/asciidoc-$ASCIIDOCVER \
+ --mandir=/usr/man || exit 1
+
+# Install:
+make install && make docs || exit 1
+find /etc/asciidoc -type f -print0 | xargs -0 chmod 644
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/asciidoc-$ASCIIDOCVER
+cp -fav \
+ BUGS CHANGELOG COPY* README \
+ /usr/doc/asciidoc-$ASCIIDOCVER/
+
+####################### Build sgml-common ############################
+
+# Extract source. We're using a source RPM since it contains a number of
+# patches that we need:
+cd $TMP
+rpm2tgz $CWD/sources/sgml-common-${SGMLCOMMONVER}*.src.rpm
+tar xvf sgml-common-*src.tgz
+cd sgml-common-$SGMLCOMMONVER-* || 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
+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 {} \;
+
+# Apply patches (these are included in the source rpm):
+for i in \
+ sgml-common-0.6.3-docdir.patch \
+ sgml-common-automake.patch \
+ sgml-common-quotes.patch \
+ sgml-common-umask.patch ; do
+ patch --verbose -p1 < ../$i
+done || exit 1
+
+# Configure:
+#aclocal
+#automake --add-missing --copy
+autoreconf -vif
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --with-docdir=/usr/doc \
+ --sysconfdir=/etc \
+ || exit 1
+
+# Build & install:
+make -e 'mkdir_p=mkdir -p' install || exit 1
+
+# Create catalog:
+install-catalog --add /etc/sgml/sgml-ent.cat \
+ /usr/share/sgml/sgml-iso-entities-8879.1986/catalog
+install-catalog --add /etc/sgml/sgml-docbook.cat \
+ /etc/sgml/sgml-ent.cat
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/sgml-common-$SGMLCOMMONVER
+cp -fav \
+ COPYING AUTHORS INSTALL NEWS README ChangeLog ../sgml-common-CHANGES \
+ /usr/doc/sgml-common-$SGMLCOMMONVER
+
+####################### Install docbooks ############################
+
+# Extract source:
+cd $TMP
+mkdir sgml-dtd
+cd sgml-dtd
+# Debian handily package all docbooks past and present in one archive
+# 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
+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 {} \;
+
+
+###############
+## sgml-dtd3 ##
+###############
+
+( cd docbook-$SGMLDTD3VER
+
+ # Remove the ENT definitions from the catalog file:
+ sed -i -e '/ISO 8879/d' docbook.cat
+ # Replace the DTDDECL catalog entry, which is not supported by Linux SGML tools,
+ # with the SGMLDECL catalog entry
+ sed -i -e 's|DTDDECL "-//OASIS//DTD Docbook V3.1//EN"|SGMLDECL|g' docbook.cat
+
+ # Install:
+ mkdir -vpm755 /etc/sgml
+ mkdir -vpm755 /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD3VER
+ install -vpm644 docbook.cat /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD3VER/catalog
+ install -vpm644 *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD3VER/
+
+ # Update SGML catalog:
+ install-catalog --add /etc/sgml/sgml-docbook-dtd-$SGMLDTD3VER.cat \
+ /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD3VER/catalog
+ install-catalog --add /etc/sgml/sgml-docbook-dtd-$SGMLDTD3VER.cat \
+ /etc/sgml/sgml-docbook.cat
+
+# Use only the most current 3.x version of DocBook SGML DTD:
+cat >> /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD3VER/catalog << "EOF"
+ -- Begin Single Major Version catalog changes --
+
+PUBLIC "-//Davenport//DTD DocBook V3.0//EN" "docbook.dtd"
+
+ -- End Single Major Version catalog changes --
+EOF
+
+ # Copy docs:
+ mkdir -vpm755 /usr/doc/sgml-dtd-$SGMLDTD3VER
+ cp -fav \
+ ChangeLog *.txt \
+ /usr/doc/sgml-dtd-$SGMLDTD3VER/
+)
+
+###############
+## sgml-dtd4 ##
+###############
+# For reference:
+# http://cblfs.cross-lfs.org/index.php/DocBook_SGML_DTD-4.x
+# http://www.linuxfromscratch.org/blfs/view/svn/pst/sgml-dtd.html
+
+
+( cd docbook-$SGMLDTD4VER
+
+ # Remove the ENT definitions from the catalog file:
+ sed -i -e '/ISO 8879/d' -e '/gml/d' docbook.cat
+
+ # Install:
+ mkdir -vpm755 /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER
+ install -vpm644 docbook.cat /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER/catalog
+ cp -fav *.dtd *.mod *.dcl /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER
+ # Update SGML catalog:
+ install-catalog --add /etc/sgml/sgml-docbook-dtd-$SGMLDTD4VER.cat \
+ /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER/catalog
+ install-catalog --add /etc/sgml/sgml-docbook-dtd-$SGMLDTD4VER.cat \
+ /etc/sgml/sgml-docbook.cat
+
+ # Use only the most current 4.x version of DocBook SGML DTD :
+ # When you upgrade sgml-dtd4, put the PREVIOUS version number in
+ # with the lines below.
+cat << EOF >> /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER/catalog
+ -- Begin Single Major Version catalog changes --
+EOF
+for i in 4.4 4.3 4.2 4.1 4.0; do
+cat << EOF >> /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER/catalog
+PUBLIC "-//OASIS//DTD DocBook V${i}//EN" "docbook.dtd"
+EOF
+done
+cat << EOF >> /usr/share/sgml/docbook/sgml-dtd-$SGMLDTD4VER/catalog
+
+ -- End Single Major Version catalog changes --
+EOF
+
+ # Copy docs:
+ mkdir -vpm755 /usr/doc/sgml-dtd4-$SGMLDTD4VER
+ cp -fav \
+ ChangeLog README \
+ /usr/doc/sgml-dtd4-$SGMLDTD4VER/
+
+)
+
+####################### Build OpenSP ############################
+
+# Extract source:
+cd $TMP
+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
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+sed -i 's:32,:253,:' lib/Syntax.cxx
+sed -i 's:LITLEN 240 :LITLEN 8092:' unicode/{gensyntax.pl,unicode.syn}
+
+# Stop OpenJade from segfaulting:
+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.
+#
+# 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
+# get working.
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --datadir=/usr/share \
+ --infodir=/usr/info \
+ --disable-dependency-tracking \
+ --disable-static \
+ --disable-doc-build \
+ --enable-http \
+ --enable-default-catalog=/etc/sgml/catalog \
+ --enable-default-search-path=/usr/share/sgml \
+ || exit 1
+
+# Build:
+make pkgdatadir=/usr/share/sgml/OpenSP-$OPENSPVER || exit 1
+
+# Install:
+make install DESTDIR=/ || exit 1
+
+# This allows OpenJade to link with OpenSP.
+( cd /usr/lib${LIBDIRSUFFIX} && ln -vsf libosp.so libsp.so )
+
+# 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
+ 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
+)
+
+# Rename docs directory:
+mv -fv /usr/doc/OpenSP /usr/doc/OpenSP-$OPENSPVER
+
+####################### Build OpenJade ############################
+# Reference:
+# http://cblfs.cross-lfs.org/index.php/OpenJade
+
+# Extract source:
+cd $TMP
+tar xvf $CWD/sources/openjade-${OPENJADEVER}.tar.gz
+cd openjade-${OPENJADEVER} || 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 {} \;
+
+# Apply patches:
+sed -i "s/iostream.h/iostream/g" style/MultiLineInlineNote.cxx
+
+# Configure without optimisation.
+# OpenSP & OpenJade are sensitive to optimisations and can result
+# in segfaults with anything other than O2 - particularly on the ARM
+# platform.
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --enable-splibdir=/usr/lib${LIBDIRSUFFIX} \
+ --disable-static \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --disable-static \
+ --enable-http \
+ --enable-default-catalog=/etc/sgml/catalog \
+ --enable-default-search-path=/usr/share/sgml \
+ --datadir=/usr/share/sgml/openjade-$OPENJADEVER \
+ || exit 1
+
+# Build:
+make || exit 1
+
+# Install:
+mkdir -p /etc/sgml
+make install || exit 1
+make install-man || exit 1
+( cd /usr/bin && ln -vfs openjade jade )
+( cd /usr/man/man1 && ln -vfs openjade.1 jade.1 )
+ln -vsf libogrove.so /usr/lib${LIBDIRSUFFIX}/libgrove.so
+ln -vsf libospgrove.so /usr/lib${LIBDIRSUFFIX}/libspgrove.so
+ln -vsf libostyle.so /usr/lib${LIBDIRSUFFIX}/libstyle.so
+install -vpm644 dsssl/catalog /usr/share/sgml/openjade-$OPENJADEVER
+install -vpm644 dsssl/*.{dtd,dsl,sgm} /usr/share/sgml/openjade-$OPENJADEVER
+
+# Update SGML catalog:
+install-catalog --add /etc/sgml/openjade-$OPENJADEVER.cat \
+ /usr/share/sgml/openjade-$OPENJADEVER/catalog
+install-catalog --add /etc/sgml/sgml-docbook.cat \
+ /etc/sgml/openjade-$OPENJADEVER.cat
+
+# Update system configuration:
+echo "SYSTEM \"http://www.oasis-open.org/docbook/xml/${XMLDTDVER}/docbookx.dtd\" \
+ \"/usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/docbookx.dtd\"" >> \
+ /usr/share/sgml/openjade-${OPENJADEVER}/catalog
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/openjade-$OPENJADEVER
+cp -fav \
+ COPYING NEWS README VERSION \
+ doc/* dsssl/README.jadetex pubtext jadedoc unicode \
+ /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:
+cd $TMP
+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
+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:
+install -pm755 bin/collateindex.pl /usr/bin
+install -pm644 bin/collateindex.pl.1 /usr/man/man1
+# Eeek! Debian trim this down but we'll leave it for the moment:
+mkdir -vpm755 /usr/share/sgml/docbook/dsssl-stylesheets-$DSSSLSTYLESHEETSVER/common
+cp -fav * /usr/share/sgml/docbook/dsssl-stylesheets-$DSSSLSTYLESHEETSVER
+
+# Update catalog:
+install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
+ /usr/share/sgml/docbook/dsssl-stylesheets-$DSSSLSTYLESHEETSVER/catalog
+install-catalog --add /etc/sgml/dsssl-docbook-stylesheets.cat \
+ /usr/share/sgml/docbook/dsssl-stylesheets-$DSSSLSTYLESHEETSVER/common/catalog
+install-catalog --add /etc/sgml/sgml-docbook.cat \
+ /etc/sgml/dsssl-docbook-stylesheets.cat
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/dsssl-stylesheets-$DSSSLSTYLESHEETSVER
+cp -fav \
+ WhatsNew VERSION RELEASE-NOTES.txt README ChangeLog BUGS \
+ /usr/doc/dsssl-stylesheets-$DSSSLSTYLESHEETSVER
+cp -fav \
+ frames/README \
+ /usr/doc/dsssl-stylesheets-$DSSSLSTYLESHEETSVER/README.frames
+
+####################### Build docbook-utils ########################
+
+# docbook-utils requires some of the docbook docs to be installed
+# prior to being built.
+
+# Extract source:
+cd $TMP
+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
+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 {} \;
+
+# Apply patches:
+for i in \
+ docbook-utils-2ndspaces.patch \
+ docbook-utils-grepnocolors.patch \
+ docbook-utils-spaces.patch \
+ docbook-utils-w3mtxtconvert.patch ; do
+ patch --verbose -p1 < ../$i
+done || exit 1
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ || exit 1
+
+# Build:
+make || exit 1
+
+# Install:
+make install htmldir=/usr/doc/docbook-utils-$DOCBOOKUTILSVER/html || exit 1
+
+# db2html is not just a symlink, as it has to create the output directory:
+rm -f /usr/bin/db2html
+install -vpm755 ../db2html /usr/bin
+install -vpm644 ../gdp-both.dsl /usr/share/sgml/docbook/utils-$DOCBOOKUTILSVER/docbook-utils.dsl
+
+# Make binary symlinks:
+( cd /usr/bin
+ for util in dvi html pdf ps rtf ; do
+ rm -f db2$util
+ ln -vfs docbook2$util db2$util
+ done
+)
+
+# Make man page symlinks:
+( cd /usr/man/man1
+ for util in dvi html pdf ps rtf ; do
+ rm -f db2$util.1*
+ ln -vfs jw.1 db2$util.1
+ done
+)
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/docbook-utils-$DOCBOOKUTILSVER
+cp -fav \
+ AUTHORS NEWS README TODO \
+ /usr/doc/docbook-utils-$DOCBOOKUTILSVER
+
+############################
+## xml-dtd / docbook-xml ##
+############################
+
+# Extract source:
+cd $TMP
+mkdir xml-dtd-$XMLDTDVER
+cd xml-dtd-$XMLDTDVER
+unzip $CWD/sources/docbook-xml-$XMLDTDVER.zip || 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 4.x catalog:
+mkdir -vpm755 /usr/share/xml/docbook/xml-dtd-$XMLDTDVER
+cp -fav docbook.cat *.dtd *.mod ent/ \
+ /usr/share/xml/docbook/xml-dtd-$XMLDTDVER
+
+# Use the Unicode-4 entities from sgml-common to fix errors such as
+# "1D6C2" is not a character number in the document character set
+( cd /usr/share/xml/docbook/xml-dtd-$XMLDTDVER/ent
+ rm -fv isogrk4.ent
+ ln -vfs ../../../../sgml/xml-iso-entities-*.*/ISOgrk4.ent isogrk4.ent )
+
+# Create config files:
+mkdir -vpm755 /etc/xml
+
+# This code is taken directly from:
+# http://www.linuxfromscratch.org/blfs/view/svn/pst/xml.html#DocBook
+#
+# Populate /etc/xml/docbook:
+#
+if [ ! -e /etc/xml/docbook ]; then
+ xmlcatalog --noout --create /etc/xml/docbook
+fi &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD DocBook XML V${XMLDTDVER}//EN" \
+ "http://www.oasis-open.org/docbook/xml/${XMLDTDVER}/docbookx.dtd" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD DocBook XML CALS Table Model V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/calstblx.dtd" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/soextblx.dtd" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//ELEMENTS DocBook XML Information Pool V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/dbpoolx.mod" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//ELEMENTS DocBook XML Document Hierarchy V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/dbhierx.mod" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//ELEMENTS DocBook XML HTML Tables V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/htmltblx.mod" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//ENTITIES DocBook XML Notations V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/dbnotnx.mod" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//ENTITIES DocBook XML Character Entities V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/dbcentx.mod" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "public" \
+ "-//OASIS//ENTITIES DocBook XML Additional General Entities V${XMLDTDVER}//EN" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}/dbgenent.mod" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "rewriteSystem" \
+ "http://www.oasis-open.org/docbook/xml/${XMLDTDVER}" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}" \
+ /etc/xml/docbook &&
+xmlcatalog --noout --add "rewriteURI" \
+ "http://www.oasis-open.org/docbook/xml/${XMLDTDVER}" \
+ "file:///usr/share/xml/docbook/xml-dtd-${XMLDTDVER}" \
+ /etc/xml/docbook
+
+#
+# Populate /etc/xml/catalog:
+#
+if [ ! -e /etc/xml/catalog ]; then
+ xmlcatalog --noout --create /etc/xml/catalog
+fi &&
+xmlcatalog --noout --add "delegatePublic" \
+ "-//OASIS//ENTITIES DocBook XML" \
+ "file:///etc/xml/docbook" \
+ /etc/xml/catalog &&
+xmlcatalog --noout --add "delegatePublic" \
+ "-//OASIS//DTD DocBook XML" \
+ "file:///etc/xml/docbook" \
+ /etc/xml/catalog &&
+xmlcatalog --noout --add "delegateSystem" \
+ "http://www.oasis-open.org/docbook/" \
+ "file:///etc/xml/docbook" \
+ /etc/xml/catalog &&
+xmlcatalog --noout --add "delegateURI" \
+ "http://www.oasis-open.org/docbook/" \
+ "file:///etc/xml/docbook" \
+ /etc/xml/catalog
+
+# Rewrites for older docbooks. This allows older docbooks to be referenced.
+# It means, however, that you __*shouldn't* have these older docbooks__
+# installed on your system;
+# so if you just keep the Slackware linuxdoc-tools package you'll be fine:
+#
+for DTDVERSION in 4.1.2 4.2 4.3 4.4
+do
+ xmlcatalog --noout --add "public" \
+ "-//OASIS//DTD DocBook XML V$DTDVERSION//EN" \
+ "http://www.oasis-open.org/docbook/xml/$DTDVERSION/docbookx.dtd" \
+ /etc/xml/docbook
+ xmlcatalog --noout --add "rewriteSystem" \
+ "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
+ "file:///usr/share/xml/docbook/xml-dtd-$XMLDTDVER" \
+ /etc/xml/docbook
+ xmlcatalog --noout --add "rewriteURI" \
+ "http://www.oasis-open.org/docbook/xml/$DTDVERSION" \
+ "file:///usr/share/xml/docbook/xml-dtd-$XMLDTDVER" \
+ /etc/xml/docbook
+ xmlcatalog --noout --add "delegateSystem" \
+ "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
+ "file:///etc/xml/docbook" \
+ /etc/xml/catalog
+ xmlcatalog --noout --add "delegateURI" \
+ "http://www.oasis-open.org/docbook/xml/$DTDVERSION/" \
+ "file:///etc/xml/docbook" \
+ /etc/xml/catalog
+done
+
+# Copy docs:
+mkdir -pm755 /usr/doc/xml-dtd-$XMLDTDVER
+cp -favv \
+ ChangeLog README \
+ /usr/doc/xml-dtd-$XMLDTDVER
+
+###############################
+## docbook-xsl (stylesheets) ##
+###############################
+
+# Extract source:
+cd $TMP
+mkdir docbook-xsl-$XSLSTYLESHEETSVER
+cd docbook-xsl-$XSLSTYLESHEETSVER
+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
+
+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 {} \;
+
+# Apply patches:
+for i in \
+ docbook-xsl-list-item-body.patch \
+ docbook-xsl-marginleft.patch \
+ docbook-xsl-newmethods.patch \
+ docbook-xsl-non-constant-expressions.patch \
+ docbook-xsl-pagesetup.patch ; do
+ patch --verbose -p1 < ../$i
+done || exit 1
+
+# Install:
+mkdir -vpm755 /usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER
+cp -fav \
+ VERSION common eclipse extensions fo highlighting html \
+ htmlhelp images javahelp lib manpages params profiling \
+ slides template tools website wordml xhtml \
+ /usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER
+
+# Create config files:
+if [ ! -d /etc/xml ]; then install -v -m755 -d /etc/xml; fi
+if [ ! -f /etc/xml/catalog ]; then
+ xmlcatalog --noout --create /etc/xml/catalog
+fi
+
+# Configure system:
+xmlcatalog --noout --add "rewriteSystem" \
+ "http://docbook.sourceforge.net/release/xsl/$XSLSTYLESHEETSVER" \
+ "/usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER" \
+ /etc/xml/catalog
+
+xmlcatalog --noout --add "rewriteURI" \
+ "http://docbook.sourceforge.net/release/xsl/$XSLSTYLESHEETSVER" \
+ "/usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER" \
+ /etc/xml/catalog
+
+xmlcatalog --noout --add "rewriteSystem" \
+ "http://docbook.sourceforge.net/release/xsl/current" \
+ "/usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER" \
+ /etc/xml/catalog
+
+xmlcatalog --noout --add "rewriteURI" \
+ "http://docbook.sourceforge.net/release/xsl/current" \
+ "/usr/share/xml/docbook/xsl-stylesheets-$XSLSTYLESHEETSVER" \
+ /etc/xml/catalog
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/docbook-xsl-$XSLSTYLESHEETSVER
+cp -fav doc/* README* RELEASE-NOTES* NEWS* \
+ /usr/doc/docbook-xsl-$XSLSTYLESHEETSVER
+
+####################### Build xmlto ################################
+
+# Extract source:
+cd $TMP
+tar xvf $CWD/sources/xmlto-$XMLTOVER.tar.bz2 || exit 1
+cd xmlto-$XMLTOVER
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ || exit 1
+
+# Build:
+make || exit 1
+
+# Install:
+make install || exit 1
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/xmlto-$XMLTOVER
+cp -fav \
+ AUTHORS COPYING ChangeLog FAQ INSTALL NEWS README \
+ /usr/doc/xmlto-$XMLTOVER
+
+####################### Build SGMLSPL ##############################
+
+# Extract source:
+cd $TMP
+tar xvf $CWD/sources/libsgmls-perl_$SGMLSPLVER.orig.tar.gz || exit 1
+cd libsgmls-perl-$SGMLSPLVER.orig
+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/sources/libsgmls-perl_$SGMLSPLVER-*.diff.gz | patch -p1 || exit 1
+
+# Configure:
+perl Makefile.PL INSTALLDIRS=vendor || exit 1
+sed -i 's?/share/man?/man/?g' Makefile
+
+# Build:
+make OPTIMIZE="$SLKCFLAGS" || exit 1
+
+# Install:
+make install PREFIX=/usr
+sed 's?usr/share/doc/sgmls-doc/?usr/doc/sgmlspl-'"$SGMLSPLVER"'/?g' sgmlspl.1 > /usr/man/man1/sgmlspl.1
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/sgmlspl-$SGMLSPLVER
+cp -fav \
+ BUGS COPYING README TODO \
+ /usr/doc/sgmlspl-$SGMLSPLVER
+cp -fav \
+ DOC/HTML/{SGMLSpm,sgmlspl} \
+ /usr/doc/sgmlspl-$SGMLSPLVER
+
+####################### Build linuxdoc-tools ########################
+
+# 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
+cd linuxdoc-tools-$LINUXDOCTOOLSVER || 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 {} \;
+
+# 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
+
+# Find out what our Vendor perl directory is:
+eval $(perl '-V:installvendorlib')
+mkdir -p $PKG/$installvendorlib
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --with-perllibdir=$installvendorlib \
+ --mandir=/usr/man \
+ --with-installed-nsgmls \
+ --infodir=/usr/info \
+ || exit 1
+# --with-installed-iso-entities \
+# --with-texdir=/usr/share/texmf/tex/latex/ \
+
+# Adjust doc dir location:
+sed -i 's?share/doc/linuxdoc-tools?doc/linuxdoc-tools-'"$$LINUXDOCTOOLSVER"'?g' Makefile
+
+#( cd entity-map && autoconf && ./configure )
+
+# Build serial. This does build in parallel but
+# I find linuxdoc-tools to be fragile between versions:
+make \
+ perl5libdir=$PKG/$installvendorlib \
+ OPTIMIZE="$SLKCFLAGS" \
+ PERL=/usr/bin/perl \
+ DESTDIR=/ \
+ LINUXDOCDOC=/usr/doc/linuxdoc-tools-$LINUXDOCTOOLSVER || exit 1
+
+# Install:
+make install \
+ PERL=/usr/bin/perl \
+ perl5libdir=$PKG/$installvendorlib \
+ DESTDIR=/ \
+ LINUXDOCDOC=/usr/doc/linuxdoc-tools-$LINUXDOCTOOLSVER || exit 1
+
+# 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; \
+done
+
+# Install info page:
+cat debian/linuxdoc-tools.info-base doc/guide.info > /usr/info/linuxdoc-sgml.info
+
+# This package contains a number of programs.
+# We maintain our own change log for this package. Since the package name is
+# 'linuxdoc-tools', let's put our changelog into here:
+install -vpm644 $CWD/ChangeLog.txt /usr/doc/linuxdoc-tools-$LINUXDOCTOOLSVER/Slackware-ChangeLog.txt
+
+####################### Build gnome-doc-utils #######################
+
+# Extract source:
+cd $TMP
+tar xvf $CWD/sources/gnome-doc-utils-$GNOMEDOCUTILSVER.tar.bz2
+cd gnome-doc-utils-*
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --disable-scrollkeeper \
+ --build=$ARCH-slackware-linux$HOSTTARGET || exit 1
+
+# No parallel build here because it doesn't work:
+make || exit 1
+
+# Install:
+make install DESTDIR=/ || exit 1
+
+# Copy docs:
+mkdir -p $PKG/usr/doc/gnome-doc-utils-$GNOMEDOCUTILSVER
+cp -fav \
+ AUTHORS ChangeLog COPYING* INSTALL NEWS README \
+ /usr/doc/gnome-doc-utils-$GNOMEDOCUTILSVER
+
+####################### Build gtk-doc ###############################
+
+# Extract source:
+cd $TMP
+tar xvf $CWD/sources/gtk-doc-$GTKDOCVER.tar.bz2 || exit 1
+cd gtk-doc-$GTKDOCVER
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --enable-public-id \
+ --disable-scrollkeeper \
+ || exit 1
+
+# Build:
+make || exit 1
+
+# Install:
+make install || exit 1
+
+# Copy docs:
+mkdir -vpm755 /usr/doc/gtk-doc-$GTKDOCVER
+cp -fav \
+ AUTHORS COPYING INSTALL MAINTAINERS NEWS README TODO \
+ /usr/doc/gtk-doc-$GTKDOCVER
+
+#######################################################################
+
+# Install the package description:
+rm -rf /install
+mkdir -vpm755 /install
+install -vpm644 $CWD/slack-desc /install
diff --git a/source/ap/linuxdoc-tools/postbuildfixes.sh b/source/ap/linuxdoc-tools/postbuildfixes.sh
new file mode 100755
index 000000000..b9e305eec
--- /dev/null
+++ b/source/ap/linuxdoc-tools/postbuildfixes.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+
+# Once altertrack 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
+# do nothing else with the contents of the package after the execution
+# of this script.
+
+# If you modify anything here, be careful *not* to include the full
+# path name - only use relative paths (ie rm usr/bin/foo *not* rm /usr/bin/foo).
+
+# Enter the package's contents:
+cd $SLACKTRACKFAKEROOT
+
+# OpenSP creates this symlink; we delete it.
+if [ -L usr/share/doc ]; then
+ rm -f usr/share/doc
+fi
+
+# Incase you had CUPS running:
+rm -rf etc/cups etc/printcap
+# crond:
+rm -rf var/spool/cron
+rmdir var/spool
+
+# perllocal.pod files don't belong in packages.
+# SGMLSPL creates this:
+find . -name perllocal.pod -print0 | xargs -0 rm -f
+
+# Some doc dirs have attracted setuid.
+# We don't need setuid for anything in this package:
+chmod -R a-s .
+
+# Ensure some permissions.
+# I don't know why but these dirs are installed chmod 1755:
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/pk/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/pk/ljfour/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/pk/ljfour/jknappen/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/pk/ljfour/jknappen/ec/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/source/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/source/jknappen/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/source/jknappen/ec/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/tfm/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/tfm/jknappen/
+#drwxr-xr-t root/root 0 2006-05-27 15:42:44 var/lib/texmf/tfm/jknappen/ec/
+#find var/lib/texmf -type d -print0 | xargs -0 chmod 755
+# This directory needs these permissions to permit pleb accounts to make
+# fonts:
+#chmod 1777 var/lib/texmf
+#
+# Never mind: I think this stuff is surplus to requirements:
+rm -rf var/lib/texmf
+# Now to prevent deletion of anything else that lives in the package's '/var'
+rmdir var/lib
+rmdir var
+
+# There's no reason to include huge redundant documentation:
+cd usr/doc
+find . -name "*.txt" | while read docfile ; do
+ basedocname=$(echo $docfile | rev | cut -f 2- -d . | rev)
+ rm -fv ${basedocname}.{html,pdf,xml}
+ rm -fv docbook-xsl*/reference.pdf.gz
+done
+
+# Now you should manually extract the .tgz
+# - check through the install/doinst.sh script;
+# - check the contents, permissions and ownerships in the package archive.
diff --git a/source/ap/linuxdoc-tools/slack-desc b/source/ap/linuxdoc-tools/slack-desc
new file mode 100644
index 000000000..3b9eec9fb
--- /dev/null
+++ b/source/ap/linuxdoc-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------------------------------------------------------|
+linuxdoc-tools: linuxdoc-tools (utilities for working with DocBook and SGML)
+linuxdoc-tools:
+linuxdoc-tools: SGML stands for Standard Generalized Markup Language. This is a
+linuxdoc-tools: system which allows you to produce LaTeX, HTML, GNU info, LyX, RTF,
+linuxdoc-tools: and plain text (via groff) from a single source file in SGML. It is
+linuxdoc-tools: often used for technical software documentation, such as the Linux
+linuxdoc-tools: HOWTO documents.
+linuxdoc-tools:
+linuxdoc-tools: This package includes everything you need to use SGML -- all of the
+linuxdoc-tools: standard SGML tools; OpenJade; tools for working with DocBook
+linuxdoc-tools: documents (various DTDs); xmlto and AsciiDoc.
diff --git a/source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff b/source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff
new file mode 100644
index 000000000..1993d3f62
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/docbook_4.5-4.diff
@@ -0,0 +1,1589 @@
+--- 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/libsgmls-perl_1.03ii-32.diff b/source/ap/linuxdoc-tools/sources/libsgmls-perl_1.03ii-32.diff
new file mode 100644
index 000000000..917e834c0
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/libsgmls-perl_1.03ii-32.diff
@@ -0,0 +1,949 @@
+--- libsgmls-perl-1.03ii.orig/sgmlspl.pl
++++ libsgmls-perl-1.03ii/sgmlspl.pl
+@@ -238,7 +238,7 @@
+ package main;
+
+ $ARGV = shift;
+-unless ($ARGV eq '' || do $ARGV) {
++unless ($ARGV eq '' || do 'sgmlspl-specs/' . $ARGV || do $ARGV) {
+ if (!-e $ARGV) {
+ die "FATAL: $ARGV does not exist.\n";
+ } elsif (!-r $ARGV) {
+--- libsgmls-perl-1.03ii.orig/Refs.pm
++++ libsgmls-perl-1.03ii/Refs.pm
+@@ -2,11 +2,11 @@
+
+ use Carp;
+
+-$version = '$Id: Refs.pm,v 1.5 1995/12/03 21:28:36 david Exp $';
++$version = '$Id: Refs.pm,v 1.1 1999/10/26 19:30:45 ardo Exp $';
+
+ =head1 NAME
+
+-SGMLS::Refs
++SGMLS::Refs - Forward reference handling
+
+ =head1 SYNOPSIS
+
+--- libsgmls-perl-1.03ii.orig/Output.pm
++++ libsgmls-perl-1.03ii/Output.pm
+@@ -5,7 +5,7 @@
+ @ISA = Exporter;
+ @EXPORT = qw(output push_output pop_output);
+
+-$version = '$Id: Output.pm,v 1.6 1995/12/05 12:21:51 david Exp $';
++$version = '$Id: Output.pm,v 1.1 1999/10/26 19:30:45 ardo Exp $';
+
+ =head1 NAME
+
+--- libsgmls-perl-1.03ii.orig/sgmlspl.1
++++ libsgmls-perl-1.03ii/sgmlspl.1
+@@ -0,0 +1,47 @@
++.\" -*- nroff -*-
++.\" ----------------------------------------------------------------------
++.TH SGMLSPL 1 "October 26, 1999" "SGMLSPL" "SGMLSPL"
++.\"
++.\" ----------------------------------------------------------------------
++.SH "NAME"
++sgmlspl \- a simple post-processor for nsgmls
++.\"
++.\" ----------------------------------------------------------------------
++.SH "SYNOPSIS"
++.B sgmlspl
++.I "spec file"
++.\"
++.\" ----------------------------------------------------------------------
++.SH "DESCRIPTION"
++sgmlspl is a sample application to convert SGML documents to other
++formats by providing a specification file detailing exactly how to
++handle each element, external data entity, subdocument entity, CDATA
++string, record end, SDATA string, and processing instruction.
++
++To use sgmlspl, prepare a specification file containing regular perl5
++code. If the SGML document were named doc.sgml, the sgmlspl
++specification file were named, spec.pl, and the name of the new file
++were doc.latex, then use the following command in a Unix shell to
++convert the SGML document:
++
++nsgmls doc.sgml | sgmlspl spec.pl > doc.latex
++
++sgmlspl will pass any additional arguments on to the specification
++file, which can then process them in the regular perl5 fashion.
++.\"
++.\" ----------------------------------------------------------------------
++.SH "SEE ALSO"
++.TP
++.BR /usr/share/doc/sgmls-doc/sgmlspl/sgmlspl.html
++sgmlspl documentation in HTML format
++.TP
++.BR /usr/share/doc/sgmls-doc/SGMLSpm/sgmls.html
++SGMLS documentation in HTML format
++.TP
++.BR nsgmls (1)
++.\"
++.\" ----------------------------------------------------------------------
++.SH "AUTHOR"
++Ardo van Rangelrooij <ardo@debian.org>
++.\"
++.\" ----------------------------------------------------------------------
+--- libsgmls-perl-1.03ii.orig/Makefile.PL
++++ libsgmls-perl-1.03ii/Makefile.PL
+@@ -0,0 +1,17 @@
++use ExtUtils::MakeMaker;
++# See lib/ExtUtils/MakeMaker.pm for details of how to influence
++# the contents of the Makefile that is written.
++WriteMakefile(
++ 'NAME' => 'SGMLS',
++ 'VERSION' => '1.03ii',
++ 'PM' => { 'SGMLS.pm' => '$(INST_LIBDIR)/SGMLS.pm',
++ 'Output.pm' => '$(INST_LIBDIR)/SGMLS/Output.pm',
++ 'Refs.pm' => '$(INST_LIBDIR)/SGMLS/Refs.pm',
++ 'skel.pl' => '$(INST_LIBDIR)/sgmlspl-specs/skel.pl',
++ },
++ 'MAN3PODS'=> { 'SGMLS.pm' => '$(INST_MAN3DIR)/SGMLS.3pm',
++ 'Output.pm' => '$(INST_MAN3DIR)/SGMLS::Output.3pm',
++ 'Refs.pm' => '$(INST_MAN3DIR)/SGMLS::Refs.3pm',
++ },
++ 'EXE_FILES' => [ 'sgmlspl', ],
++);
+--- libsgmls-perl-1.03ii.orig/Makefile
++++ libsgmls-perl-1.03ii/Makefile
+@@ -94,5 +94,5 @@
+ mv /tmp/${DIST} SGMLSpm
+
+ clean:
+- cd DOC; make clean
++ #cd DOC; make clean
+ rm -f *~ core *.tar *.tar.gz
+--- libsgmls-perl-1.03ii.orig/SGMLS.pm
++++ libsgmls-perl-1.03ii/SGMLS.pm
+@@ -1,7 +1,7 @@
+ package SGMLS;
+ use Carp;
+
+-$version = '$Revision: 1.14 $';
++$version = '$Revision: 1.1 $';
+
+ =head1 NAME
+
+--- libsgmls-perl-1.03ii.orig/debian/libsgmls-perl.examples
++++ libsgmls-perl-1.03ii/debian/libsgmls-perl.examples
+@@ -0,0 +1 @@
++DOC/sample.pl
+--- libsgmls-perl-1.03ii.orig/debian/sgmls-doc.doc-base.SGMLSpm
++++ libsgmls-perl-1.03ii/debian/sgmls-doc.doc-base.SGMLSpm
+@@ -0,0 +1,9 @@
++Document: SGMLSpm
++Title: SGMLSpm
++Author: David Megginson
++Abstract: This manual describes the SGMLS Perl modules
++Section: Text
++
++Format: HTML
++Index: /usr/share/doc/sgmls-doc/SGMLSpm/index.html
++Files: /usr/share/doc/sgmls-doc/SGMLSpm/*.html
+--- libsgmls-perl-1.03ii.orig/debian/rules
++++ libsgmls-perl-1.03ii/debian/rules
+@@ -0,0 +1,76 @@
++#!/usr/bin/make -f
++## ----------------------------------------------------------------------
++## debian/rules : package script for libsgmls-perl
++## ----------------------------------------------------------------------
++
++## ----------------------------------------------------------------------
++## uncomment this to turn on verbose mode
++#export DH_VERBOSE=1
++
++## ----------------------------------------------------------------------
++TMP_DIR := $(CURDIR)/debian/tmp
++
++## ----------------------------------------------------------------------
++CFLAGS = -Wall -g
++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
++ CFLAGS += -O0
++else
++ CFLAGS += -O2
++endif
++
++## ----------------------------------------------------------------------
++## targets
++
++clean:
++ dh_testdir
++ dh_testroot
++ [ ! -f Makefile ] || $(MAKE) clean
++ dh_clean build-stamp install-stamp
++
++build: build-stamp
++build-stamp:
++ dh_testdir
++ perl Makefile.PL INSTALLDIRS=vendor
++ $(MAKE) OPTIMIZE="$(CFLAGS)"
++ $(MAKE) test
++ touch build-stamp
++
++install: install-stamp
++install-stamp: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++ $(MAKE) install DESTDIR=$(TMP_DIR) PREFIX=/usr
++ touch install-stamp
++
++binary-indep: build install
++ dh_testdir
++ dh_testroot
++ dh_install --sourcedir=$(TMP_DIR)
++ dh_installman
++ dh_installdocs
++ dh_installexamples
++ dh_installchangelogs ChangeLog
++ dh_link
++ dh_compress
++ dh_fixperms
++ dh_installdeb
++ dh_perl
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary-arch:
++
++binary: binary-indep binary-arch
++
++.PHONY: clean build install binary-indep binary-arch binary
++
++## ----------------------------------------------------------------------
++## Copyright 1994,1995 by Ian Jackson.
++## I hereby give you perpetual unlimited permission to copy,
++## modify and relicense this file, provided that you do not remove
++## my name from the file itself. (I assert my moral right of
++## paternity under the Copyright, Designs and Patents Act 1988.)
++## ----------------------------------------------------------------------
+--- libsgmls-perl-1.03ii.orig/debian/control
++++ libsgmls-perl-1.03ii/debian/control
+@@ -0,0 +1,48 @@
++Source: libsgmls-perl
++Section: perl
++Priority: optional
++Maintainer: Debian XML/SGML Group <debian-xml-sgml-pkgs@lists.alioth.debian.org>
++Uploaders: Ardo van Rangelrooij <ardo@debian.org>
++Vcs-Browser: http://alioth.debian.org/plugins/scmcvs/cvsweb.php/packages/libsgmls-perl/?cvsroot=debian-xml-sgml
++Vcs-Cvs: :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/debian-xml-sgml/packages/libsgmls-perl
++Standards-Version: 3.7.3
++Build-Depends: debhelper (>= 5.0)
++Build-Depends-Indep: perl
++
++Package: libsgmls-perl
++Section: perl
++Priority: optional
++Architecture: all
++Conflicts: sgmlspm
++Depends: ${perl:Depends}
++Recommends: sp
++Replaces: sgmlspm
++Suggests: sgmlspl, sgmls-doc
++Description: Perl modules for processing SGML parser output
++ This is a set of Perl5 routines for processing the output from the
++ sgmls and nsgmls SGML parsers. To make sensible use of this package
++ you will need to install a suitable SGML parser as well.
++
++Package: sgmlspl
++Section: text
++Priority: optional
++Architecture: all
++Conflicts: sgmlspm
++Depends: ${perl:Depends}, libsgmls-perl
++Replaces: sgmlspm
++Suggests: sgmls-doc
++Description: SGMLS-based example Perl script for processing SGML parser output
++ This is an example of a Perl script to post-process SGML parser output
++ using the SGMLS Perl modules. To make sensible use of this package
++ you will need to install a suitable SGML parser as well.
++
++Package: sgmls-doc
++Section: doc
++Priority: optional
++Architecture: all
++Conflicts: sgmlspm
++Replaces: sgmlspm
++Suggests: libsgmls-perl, sgmlspl
++Description: HTML documentation of libsgmls-perl and sgmlspl
++ This package contains the documentation in HTML format of the
++ packages libsgmls-perl and sgmlspl.
+--- libsgmls-perl-1.03ii.orig/debian/sgmlspl.manpages
++++ libsgmls-perl-1.03ii/debian/sgmlspl.manpages
+@@ -0,0 +1 @@
++sgmlspl.1
+--- libsgmls-perl-1.03ii.orig/debian/changelog
++++ libsgmls-perl-1.03ii/debian/changelog
+@@ -0,0 +1,262 @@
++libsgmls-perl (1.03ii-32) unstable; urgency=low
++
++ * Refs.pm: fixed typo
++ (closes: Bug#414110)
++ * debian/compat: bumped version to 5
++ * debian/control:
++ * moved debhelper from 'Build-Depends-Indep' to 'Build-Depends'
++ (detected by lintian)
++ * changed build dependency on 'debhelper' to '(>= 5.0)'
++ * upgraded to Debian Policy 3.7.3 (no changes)
++ * added Vcs-Browser and Vcs-Cvs fields
++ * debian/watch: bumped version to 3
++ * debian/copyright: updated FSF address
++ (detected by lintian)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Fri, 04 Jan 2008 10:48:06 -0600
++
++libsgmls-perl (1.03ii-31) unstable; urgency=low
++
++ * Added 'debian/watch'
++ * debiam/rules: various small improvements
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Wed, 24 Nov 2004 12:23:21 -0600
++
++libsgmls-perl (1.03ii-30) unstable; urgency=low
++
++ * Makefile: commented out documentation clean
++ (closes: Bug#240645)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 28 Mar 2004 10:29:33 -0600
++
++libsgmls-perl (1.03ii-29) unstable; urgency=low
++
++ * debian/control: changed maintainer's email address to the new Debian
++ XML/SGML Group's packages mailing list
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 29 Feb 2004 10:48:45 -0600
++
++libsgmls-perl (1.03ii-28) unstable; urgency=low
++
++ * debian/control: changed 'Maintainer' to 'Debian XML/SGML Group
++ <debian-xml-sgml-devel@lists.alioth.debian.org>' and added current
++ maintainer as 'Uploader'
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 22 Feb 2004 19:38:41 -0600
++
++libsgmls-perl (1.03ii-27) unstable; urgency=low
++
++ * debian/control: upgraded to Debian Policy 3.6.1 (no changes)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sat, 7 Feb 2004 22:31:22 -0600
++
++libsgmls-perl (1.03ii-26) unstable; urgency=low
++
++ * Fixed missing documentation
++ (closes: Bug#226085)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 4 Jan 2004 10:56:51 -0600
++
++libsgmls-perl (1.03ii-25) unstable; urgency=low
++
++ * sgmlspl.1: fixed references to HTML documentation
++ (closes: Bug#202985)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sat, 26 Jul 2003 23:06:50 -0500
++
++libsgmls-perl (1.03ii-24) unstable; urgency=low
++
++ * debian/rules: moved debhelper compatibility level setting to
++ 'debian/compat' per latest debhelper best practices
++ * debian/control: updated sections according to latest archive changes:
++ - 'libsgmls-perl' from 'text' to 'perl'
++ * debian/control: changed build dependency on 'debhelper' to '(>= 4.1)'
++ * debian/control: upgraded to Debian Policy 3.6.0 (no changes)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sat, 26 Jul 2003 22:15:48 -0500
++
++libsgmls-perl (1.03ii-23) unstable; urgency=low
++
++ * debian/sgmls-doc.links: fixed broken symlink
++ (closes: Bug#158923)
++ * debian/control: added dependency on perl for sgmlspl (warning from linda)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Thu, 19 Sep 2002 19:45:17 -0500
++
++libsgmls-perl (1.03ii-22) unstable; urgency=low
++
++ * debian/rules: added erroneously removed 'dh_testroot' to 'binary-indep'
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 4 Aug 2002 16:33:00 -0500
++
++libsgmls-perl (1.03ii-21) unstable; urgency=low
++
++ * debian/rules: upgraded to debhelper v4
++ * debian/control: changed build dependency on debhelper accordingly
++ * debian/rules: migrated from 'dh_movefiles' to 'dh_install'
++ * debian/rules: split off 'install' target from 'binary-indep' target
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 4 Aug 2002 09:41:59 -0500
++
++libsgmls-perl (1.03ii-20) unstable; urgency=low
++
++ * Removed explicit support of dhelp since doc-base now takes care of this
++ * debian/control: upgraded to Debian Policy 3.5.6
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 4 Nov 2001 16:13:15 -0600
++
++libsgmls-perl (1.03ii-19) unstable; urgency=low
++
++ * debian/control: upgraded to Debian Policy 3.5.5
++ * debian/control: upgraded to Debian Perl Policy 1.20
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sat, 1 Sep 2001 22:03:51 -0500
++
++libsgmls-perl (1.03ii-18) unstable; urgency=low
++
++ * Makefile.PL: removed handling of manpage sgmlspl.1
++ * debian/control: added handling of manpage sgmlspl.1
++ (closes: Bug#94518)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Mon, 30 Apr 2001 21:26:08 -0500
++
++libsgmls-perl (1.03ii-17) unstable; urgency=low
++
++ * debian/control: updated debhelper dependency to remove dh_testversion
++ * debian/control: upgraded to Debian Policy 3.5.2
++ * debian/control: upgraded to Debian Perl Policy 1.17
++ * debian/rules: upgraded to Debian Perl Policy 1.17
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sat, 14 Apr 2001 20:49:19 -0500
++
++sgmlspm (1.03ii-16) unstable; urgency=low
++
++ * debian/control: upgraded to Debian Policy 3.2.1
++ * debian/rules: upgraded to debhelper v3
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Mon, 15 Jan 2001 19:35:32 -0600
++
++sgmlspm (1.03ii-15) unstable; urgency=low
++
++ * debian/control: updated short descriptions
++ * debian/control: added missing Build-Depends
++ * debian/rules: added missing `$(MAKE) test`
++ * debian/rules: added missing build-stamp stuff
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 11 Jun 2000 19:40:09 +0200
++
++sgmlspm (1.03ii-14) frozen unstable; urgency=high
++
++ * sgmlspl.pl: updated to reflect change in spec files location
++ (closes: #58443) (thanks Yann!!!)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sun, 20 Feb 2000 09:35:08 +0100
++
++sgmlspm (1.03ii-13) unstable; urgency=high
++
++ * sgmlspl.pl: updated to reflect change in spec files location
++ (closes: #58443) (thanks Yann!!!)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Sat, 19 Feb 2000 19:38:22 +0100
++
++sgmlspm (1.03ii-12) unstable; urgency=low
++
++ * Moved HTML documentation to separate package sgmls-doc
++ (closes: #52856) (thanks Andreas!)
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Thu, 30 Dec 1999 11:42:02 +0100
++
++sgmlspm (1.03ii-11) unstable; urgency=low
++
++ * Removed test-SGMLS.pl from examples
++ * Moved skel.pl from libsgmls-perl to sgmlspl and into a new direcotry
++ /usr/lib/perl5/sgmlspl-specs
++ (closes: #52169) (thanks Yann!)
++ * Upgraded to Debian Policy 3.1.1
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Mon, 13 Dec 1999 21:54:48 +0100
++
++sgmlspm (1.03ii-10) unstable; urgency=low
++
++ * Split binary package into libsgmls-perl and sgmlspl. The former only
++ contains the SGMLS Perl modules, documentation and examples. The
++ latter only contains the (example) Perl script `sgmlspl' and its
++ documentation
++ * Turned libsgmls-perl into a 'real' Perl package with Makefile.PL and all
++ (closes: #39684)
++ * Added doc-base support
++ (closes: #31181)
++ * Added manual page for sgmlspl
++ (closes: #17909)
++ * Upgraded to Debian Policy 3.0.1
++ * Upgraded to Debian Perl Policy 1.1
++ * Made lintian-free
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Tue, 26 Oct 1999 19:58:37 +0200
++
++sgmlspm (1.03ii-9) unstable; urgency=low
++
++ * Complies with Perl packaging standard 1.0
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Tue, 13 Jul 1999 19:19:39 -0500
++
++sgmlspm (1.03ii-8) unstable; urgency=low
++
++ * debian/control: fixed typo in description
++ (closes: Bug#27441)
++ * Maintainer's email address changed
++
++ -- Ardo van Rangelrooij <ardo@debian.org> Mon, 5 Oct 1998 19:14:22 +0200
++
++sgmlspm (1.03ii-7) frozen unstable; urgency=low
++
++ * debian/rules: corrected upstream ChangeLog installation (lintian bug)
++ * debian/copyright: updated postal address of the FSF (lintian bug)
++
++ -- Ardo van Rangelrooij <ardo.van.rangelrooij@tip.nl> Sun, 26 Apr 1998 17:03:11 +0200
++
++sgmlspm (1.03ii-6) frozen unstable; urgency=low
++
++ * debian/rules: added sgmlspl man page as undocumented man page
++ * debian/rules: changed to use debhelper
++ * debian/rules: removed handling of index.html links
++ * Makefile: added handling of index.html links
++ * debian/control: updated to debian standard 2.4.0.0
++ * debian/rules: removed installation of DocBook examples
++ (closes: Bug#19689)
++
++ -- Ardo van Rangelrooij <ardo.van.rangelrooij@tip.nl> Mon, 6 Apr 1998 19:37:59 +0200
++
++sgmlspm (1.03ii-5) unstable; urgency=low
++
++ * Fixed permissions bug
++ (closes: Bug#17490)
++
++ -- Ardo van Rangelrooij <ardo.van.rangelrooij@tip.nl> Wed, 18 Feb 1998 21:30:57 +0100
++
++sgmlspm (1.03ii-4) unstable; urgency=low
++
++ * New maintainer.
++
++ -- Ardo van Rangelrooij <ardo.van.rangelrooij@tip.nl> Wed, 14 Jan 1998 21:29:45 +0100
++
++sgmlspm (1.03ii-3) frozen unstable; urgency=low
++
++ * Updated Standards-Version to 2.1.3.0.
++ * New maintainer.
++
++ -- Christian Schwarz <schwarz@debian.org> Thu, 17 Apr 1997 15:53:51 +0200
++
++sgmlspm (1.03ii-2) unstable; urgency=low
++
++ * Split binary target into binary-indep and binary-arch.
++ * Updated Standards-Version.
++ * Released into unstable.
++
++ -- Ian Jackson <ian@chiark.chu.cam.ac.uk> Fri, 23 Aug 1996 12:11:40 +0100
++
++sgmlspm (1.03ii-1) experimental; urgency=LOW
++
++ * Initial Debian release.
++
++ -- Ian Jackson <ian@chiark.chu.cam.ac.uk> Sat, 10 Aug 1996 01:47:30 +0100
+--- libsgmls-perl-1.03ii.orig/debian/sgmls-doc.docs
++++ libsgmls-perl-1.03ii/debian/sgmls-doc.docs
+@@ -0,0 +1,2 @@
++DOC/HTML/SGMLSpm
++DOC/HTML/sgmlspl
+--- libsgmls-perl-1.03ii.orig/debian/libsgmls-perl.install
++++ libsgmls-perl-1.03ii/debian/libsgmls-perl.install
+@@ -0,0 +1,2 @@
++usr/share/perl5/SGMLS*
++usr/share/man/man3
+--- libsgmls-perl-1.03ii.orig/debian/sgmls-doc.doc-base.sgmlspl
++++ libsgmls-perl-1.03ii/debian/sgmls-doc.doc-base.sgmlspl
+@@ -0,0 +1,9 @@
++Document: sgmlspl
++Title: sgmlspl
++Author: David Megginson
++Abstract: This manual describes the (example) sgmlspl Perl script
++Section: Text
++
++Format: HTML
++Index: /usr/share/doc/sgmls-doc/sgmlspl/index.html
++Files: /usr/share/doc/sgmls-doc/sgmlspl/*.html
+--- libsgmls-perl-1.03ii.orig/debian/copyright
++++ libsgmls-perl-1.03ii/debian/copyright
+@@ -0,0 +1,28 @@
++This is Debian GNU/Linux's prepackaged version of David Megginson's
++sgmlspm-1.03ii Perl modules for processing sgmls and nsgmls output.
++
++This package was put together by me, Ian Jackson
++<ijackson@gnu.ai.mit.edu>, from the sources on src.doc.ic.ac.uk in
++/packages/perl/CPAN/modules/by-module/SGMLS/SGMLSpm-1.03ii.tar.gz.
++The changes were very minimal - merely adding support for the Debian
++package maintenance scheme, by adding various debian/* files.
++
++Program Copyright (C)1994,1995 David Megginson.
++Modifications for Debian Copyright (C)1996 Ian Jackson.
++Modifications for Debian Copyright (C) 1998,1999 Ardo van Rangelrooij
++
++This program is free software; you can redistribute it and/or modify
++it under the terms of the GNU General Public License as published by
++the Free Software Foundation; either version 2, or (at your option)
++any later version.
++
++This program is distributed in the hope that it will be useful, but
++WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++General Public License for more details.
++
++You should have received a copy of the GNU General Public License with
++your Debian GNU/Linux system, in /usr/share/common-licenses/GPL-2, or
++with the Debian GNU/Linux hello source package as the file COPYING.
++If not, write to the Free Software Foundation, Inc., 51 Franklin
++Street, Fifth Floor, Boston, MA 02110-1301 USA.
+--- libsgmls-perl-1.03ii.orig/debian/compat
++++ libsgmls-perl-1.03ii/debian/compat
+@@ -0,0 +1 @@
++5
+--- libsgmls-perl-1.03ii.orig/debian/sgmls-doc.links
++++ libsgmls-perl-1.03ii/debian/sgmls-doc.links
+@@ -0,0 +1,2 @@
++usr/share/doc/sgmls-doc/SGMLSpm/sgmlspm.html usr/share/doc/sgmls-doc/SGMLSpm/index.html
++usr/share/doc/sgmls-doc/sgmlspl/sgmlspl.html usr/share/doc/sgmls-doc/sgmlspl/index.html
+--- libsgmls-perl-1.03ii.orig/debian/watch
++++ libsgmls-perl-1.03ii/debian/watch
+@@ -0,0 +1,2 @@
++version=3
++http://www.cpan.org/modules/by-module/SGMLS/SGMLSpm-([\d.]+[\w]+).tar.gz
+--- libsgmls-perl-1.03ii.orig/debian/sgmlspl.install
++++ libsgmls-perl-1.03ii/debian/sgmlspl.install
+@@ -0,0 +1,2 @@
++usr/bin
++/usr/share/perl5/sgmlspl-specs
+--- libsgmls-perl-1.03ii.orig/debian/libsgmls-perl.docs
++++ libsgmls-perl-1.03ii/debian/libsgmls-perl.docs
+@@ -0,0 +1,2 @@
++BUGS
++TODO
+--- libsgmls-perl-1.03ii.orig/sgmlspl
++++ libsgmls-perl-1.03ii/sgmlspl
+@@ -0,0 +1,326 @@
++#!/usr/bin/perl
++########################################################################
++# sgmlspl: a simple SGML postprocesser for the SGMLS and NSGMLS
++# parsers (requires SGMLS.pm library).
++#
++# Copyright (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program; if not, write to the Free Software
++# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++#
++# $Log: sgmlspl,v $
++# Revision 1.2 2008-01-03 23:49:25 ardo
++# applied patch for 414110 & upgraded policy
++#
++# Revision 1.1 2004/02/23 01:23:07 ardo
++# Added debian changes for version 1.03ii-27.
++#
++# Revision 1.1 2001/04/15 14:42:01 ardo
++# *** empty log message ***
++#
++# Revision 1.8 1995/12/03 21:46:31 david
++# Eliminated all use of the SGMLS_Event::key method.
++#
++# Revision 1.7 1995/11/15 20:22:24 david
++# Changed "use Output" to "use SGMLS::Output". Qualified the STDIN
++# filehandle for the SGMLS object with the main:: package name.
++#
++# Revision 1.6 1995/08/12 16:15:14 david
++# Revised version for 1.01 distribution.
++#
++# Revision 1.5 1995/04/27 11:52:25 david
++# Changed 'print' to 'main::output' for re handler; empty string
++# translates into an empty sub {} rather than a sub printing an empty
++# string; instead of evaluating every argument as a perl script, take
++# only the first as a perl script and the rest as its arguments; allow
++# empty scripts or scripts which do not end with '1;'; pass the event
++# itself as the second argument to each handler, after the event data.
++#
++# Revision 1.4 1995/04/23 14:44:58 david
++# Use the Output package. Fixed the $version variable.
++#
++# Revision 1.3 1995/04/22 21:02:49 david
++# Added some missing 'last SWITCH;' statements in the sgmls function.
++#
++# Revision 1.2 1995/04/22 20:58:48 david
++# Added $SGMLS_PL::version variable and changed SDATA notation from
++# [SDATA] to |SDATA|.
++#
++# Revision 1.1 1995/04/22 14:40:50 david
++# Initial revision
++#
++########################################################################
++
++use SGMLS::Output;
++
++package SGMLS_PL;
++use SGMLS;
++
++$version = '$Id: sgmlspl,v 1.2 2008-01-03 23:49:25 ardo Exp $';
++
++#
++# Set up handler defaults.
++#
++$start_document_handler = sub {};
++$end_document_handler = sub {};
++$start_element_handlers = { '' => sub {} };
++$end_element_handlers = { '' => sub {} };
++$cdata_handler = sub { main::output($_[0]); };
++$sdata_handlers = { '' => sub { main::output($_[0]);} };
++$re_handler = sub { main::output("\n"); };
++$pi_handler = sub { '' => sub {} };
++$entity_handlers = { '' => sub {} };
++$start_subdoc_handlers = { '' => sub {} };
++$end_subdoc_handlers = { '' => sub {} };
++$conforming_handler = sub {};
++
++#
++# Main access point: declare handlers for different SGML events.
++#
++# Usage: sgml(event, handler);
++#
++# The event may be one of the following strings, or a special pattern.
++# The generic events are as follow:
++#
++# 'start' The beginning of the document.
++# 'end' The end of the document.
++# 'start_element' The beginning of an element.
++# 'end_element' The end of an element.
++# 'cdata' Regular character data.
++# 'sdata' Special system-specific data.
++# 're' A record-end.
++# 'pi' A processing instruction.
++# 'entity' An external-entity reference.
++# 'start_subdoc' The beginning of a subdocument entity.
++# 'end_subdoc' The end of a subdocument entity.
++# 'conforming' The document is conforming.
++#
++# In addition to these generic events, it is possible to handlers
++# for certain specific, named events, as follow:
++#
++# '<GI>' The beginning of element GI.
++# '</GI>' The end of element GI.
++# '[SDATA]' The system-specific data SDATA.
++# '&ENAME;' A reference to the external entity ENAME.
++# '{ENAME}' The beginning of the subdocument-entity ENAME.
++# '{/ENAME}' The end of the subdocument-entity ENAME.
++#
++#
++# The handler may be a string, which will simply be printed when the
++# event occurs (this is usually useful only for the specific, named
++# events), or a reference to an anonymous subroutine, which will
++# receive two arguments: the event data and the event itself. For
++# example,
++#
++# sgml('<FOO>', "\n\\begin{foo}\n");
++#
++# and
++#
++# sgml('<FOO>', sub { output("\n\\begin{foo}\n"); });
++#
++# will have identical results.
++#
++sub main::sgml {
++ my ($spec,$handler) = (@_);
++ if (ref($handler) ne 'CODE') {
++ $handler =~ s/\\/\\\\/g;
++ $handler =~ s/'/\\'/g;
++ if ($handler eq '') {
++ $handler = sub {};
++ } else {
++ $handler = eval "sub { main::output('$handler'); };";
++ }
++ }
++ SWITCH: {
++ # start-document handler
++ $spec eq 'start' && do {
++ $start_document_handler = $handler;
++ last SWITCH;
++ };
++ # end-document handler
++ $spec eq 'end' && do {
++ $end_document_handler = $handler;
++ last SWITCH;
++ };
++ # start-element handler
++ $spec =~ /^<([^\/].*|)>$/ && do {
++ $start_element_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic start-element handler
++ $spec eq 'start_element' && do {
++ $start_element_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # end-element handler
++ $spec =~ /^<\/(.*)>$/ && do {
++ $end_element_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic end-element handler
++ $spec =~ 'end_element' && do {
++ $end_element_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # cdata handler
++ $spec eq 'cdata' && do {
++ $cdata_handler = $handler;
++ last SWITCH;
++ };
++ # sdata handler
++ $spec =~ /^\|(.*)\|$/ && do {
++ $sdata_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic sdata handler
++ $spec eq 'sdata' && do {
++ $sdata_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # record-end handler
++ $spec eq 're' && do {
++ $re_handler = $handler;
++ last SWITCH;
++ };
++ # processing-instruction handler
++ $spec eq 'pi' && do {
++ $pi_handler = $handler;
++ last SWITCH;
++ };
++ # entity-reference handler
++ $spec =~ /^\&(.*);$/ && do {
++ $entity_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic entity-reference handler
++ $spec eq 'entity' && do {
++ $entity_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # start-subdoc handler
++ $spec =~ /^\{([^\/].*|)\}$/ && do {
++ $start_subdoc_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic start-subdoc handler
++ $spec eq 'start_subdoc' && do {
++ $start_subdoc_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # end-subdoc handler
++ $spec =~ /^\{\/(.*)\}$/ && do {
++ $end_subdoc_handlers->{$1} = $handler;
++ last SWITCH;
++ };
++ # generic end-subdoc handler
++ $spec eq 'end_subdoc' && do {
++ $end_subdoc_handlers->{''} = $handler;
++ last SWITCH;
++ };
++ # conforming handler
++ $spec eq 'conforming' && do {
++ $conforming_handler = $handler;
++ last SWITCH;
++ };
++
++ die "Bad SGML handler pattern: $spec\n";
++ }
++}
++
++
++#
++# The first argument on the command line is a perl module which will be
++# read here and evaluated in the 'main' package -- everything else will
++# be an argument to it.
++#
++package main;
++
++$ARGV = shift;
++unless ($ARGV eq '' || do 'sgmlspl-specs/' . $ARGV || do $ARGV) {
++ if (!-e $ARGV) {
++ die "FATAL: $ARGV does not exist.\n";
++ } elsif (!-r $ARGV) {
++ die "FATAL: $ARGV exists but is read-protected.\n";
++ } elsif ($@) {
++ die "FATAL: $@\n";
++ }
++}
++
++
++#
++# Do the actual work, using the SGMLS package.
++#
++package SGMLS_PL;
++
++$parse = new SGMLS(main::STDIN); # a new parse object
++
++&{$start_document_handler}(); # run the start handler.
++
++ # run the appropriate handler for each
++ # event
++while ($event = $parse->next_event) {
++ my $type = $event->type;
++ SWITCH: {
++ $type eq 'start_element' && do {
++ &{($start_element_handlers->{$event->data->name}||
++ $start_element_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'end_element' && do {
++ &{($end_element_handlers->{$event->data->name}||
++ $end_element_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'cdata' && do {
++ &{$cdata_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'sdata' && do {
++ &{($sdata_handlers->{$event->data}||
++ $sdata_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 're' && do {
++ &{$re_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'pi' && do {
++ &{$pi_handler}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'entity' && do {
++ &{($entity_handlers->{$event->data->name}||
++ $entity_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'start_subdoc' && do {
++ &{($start_subdoc_handlers->{$event->data->name}||
++ $start_subdoc_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'end_subdoc' && do {
++ &{($end_subdoc_handlers->{$event->data->name}||
++ $end_subdoc_handlers->{''} || sub {})}($event->data,$event);
++ last SWITCH;
++ };
++ $type eq 'conforming' && do {
++ &{$conforming_handler}($event->data,$event);
++ last SWITCH;
++ };
++
++ die "Unknown SGML event type: $type\n";
++ }
++}
++
++&{$end_document_handler}(); # run the end handler
diff --git a/source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff b/source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff
new file mode 100644
index 000000000..4741f2e2c
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/linuxdoc-tools.lib64.diff
@@ -0,0 +1,10 @@
+--- 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
new file mode 100755
index 000000000..479033e0d
--- /dev/null
+++ b/source/ap/linuxdoc-tools/sources/source.download
@@ -0,0 +1,67 @@
+# Incase you're wondering why we're using source RPMs, this is because
+# 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.
+
+# 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
+
+# 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
+
+# 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
+
+# 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!
+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
+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 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
+
+# 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
+
+# gtk-doc:
+wget -c http://ftp.gnome.org/pub/GNOME/sources/gtk-doc/1.11/gtk-doc-1.11.tar.bz2
+
+# sgmlspl
+# http://www.cs.indiana.edu/~asengupt/sgml/SGMLSpm/DOC/HTML/sgmlspl/sgmlspl.html
+# There's nothing in the FTP download site at this time, so I'll take it from Debian.
+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
+
+# AsciiDoc
+# http://www.methods.co.nz/asciidoc/
+wget -c http://downloads.sourceforge.net/sourceforge/asciidoc/asciidoc-8.4.5.tar.gz
diff --git a/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
new file mode 100755
index 000000000..6eddaf4e2
--- /dev/null
+++ b/source/ap/linuxdoc-tools/trackbuild.linuxdoc-tools
@@ -0,0 +1,78 @@
+#!/bin/bash
+
+#####################################################################
+# trackbuild.liunxdoc-tools
+# by Stuart Winter <mozes@slackware.com>
+# Preform a few pre-build requirements then launch the build script
+# through slacktrack
+# 31-Jul-2009
+#####################################################################
+
+# Known build requirements:
+# a/unzip for the docbook stuff
+# l/libxml2 for /usr/bin/xmlcatalogue
+# a/rpm2tgz to unpack some SRPMs
+# d/python for AsciiDoc
+# l/libxslt
+# t/tetex (not required for a bootstrap build, but will be required
+# later for a full build of this linuxdoc-tools package).
+
+# Package info:
+PKGNAM=linuxdoc-tools
+
+# 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
+
+BUILD=${BUILD:-5}
+PKGVERSION=0.9.56 # use the version of linuxdoc-tools as the package version.
+PKGEXT=${PKGEXT:-txz}
+
+export CWD=$PWD
+export PKGSTORE=/tmp
+export TMP=/tmp/build-$PKGNAM/
+rm -rf $TMP
+
+####################### Clean up before build #####################
+
+# It's best to clear this stuff up prior to the build.
+# All of these directories (apart from /usr/share/xml/libglade) are
+# created by this build script:
+removepkg linuxdoc-tools
+rm -rf /etc/{xml,sgml}
+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
+
+####################################################################
+
+######## WARNING ###################################################
+# This will touch nearly every file on your expendable development
+# box. You wouldn't try this on a production system, right?
+######## WARNING ###################################################
+
+# This the faster option, but not the safest. On a full Slackware
+# installation, you'll find new files in this directory which have
+# been 'touch'ed. The --touch-filesystem-first will not do this,
+# but is slower. However, if you really want extra speed, copy
+# this entire package source directory to a temporary location
+# and run it from there.
+# TFS="--touch-filesystem-faster"
+
+TFS="--touch-filesystem-first"
+
+# Launch the build script:
+slacktrack $TFS \
+ --notidy \
+ --showdeps \
+ -T $TMP \
+ -l $CWD/build.$ARCH.log \
+ -R $CWD/postbuildfixes.sh \
+ -b $PKGSTORE \
+ -YQOcp $PKGNAM-$PKGVERSION-$ARCH-$BUILD.$PKGEXT ./linuxdoc-tools.build
diff --git a/source/ap/lm_sensors/lm_sensors.SlackBuild b/source/ap/lm_sensors/lm_sensors.SlackBuild
new file mode 100755
index 000000000..72ad373de
--- /dev/null
+++ b/source/ap/lm_sensors/lm_sensors.SlackBuild
@@ -0,0 +1,116 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=lm_sensors
+VERSION=${VERSION:-3.1.1}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION || 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:
+zcat $CWD/lm_sensors.makefile.diff.gz | patch -p1 --verbose || exit 1
+
+make user LIBDIR=/usr/lib${LIBDIRSUFFIX} || exit 1
+make user_install LIBDIR=/usr/lib${LIBDIRSUFFIX} || exit 1
+
+# Nope.
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.a
+
+# Nope.
+rm -rf $PKG/usr/include/linux
+
+# Do the .new thing with the config file:
+mv $PKG/etc/sensors3.conf $PKG/etc/sensors3.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:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ CHANGES CONTRIBUTORS COPYING* INSTALL README* doc \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+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/sensors3.conf.new
+EOF
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/lm_sensors/lm_sensors.makefile.diff b/source/ap/lm_sensors/lm_sensors.makefile.diff
new file mode 100644
index 000000000..8216a8d1e
--- /dev/null
+++ b/source/ap/lm_sensors/lm_sensors.makefile.diff
@@ -0,0 +1,15 @@
+--- ./Makefile.orig 2008-03-26 08:37:12.000000000 -0500
++++ ./Makefile 2008-10-25 20:05:44.000000000 -0500
+@@ -39,10 +39,10 @@
+
+ # If you want to install at some other place then at from which you will run
+ # everything, set DESTDIR to the extra prefix.
+-DESTDIR :=
++DESTDIR := /tmp/package-lm_sensors
+
+ # This is the prefix that will be used for almost all directories below.
+-PREFIX := /usr/local
++PREFIX := /usr
+
+ # Your C compiler
+ CC := gcc
diff --git a/source/ap/lm_sensors/slack-desc b/source/ap/lm_sensors/slack-desc
new file mode 100644
index 000000000..2f32f80d7
--- /dev/null
+++ b/source/ap/lm_sensors/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------------------------------------------------------|
+lm_sensors: lm_sensors (hardware monitoring package)
+lm_sensors:
+lm_sensors: lm_sensors provides tools for monitoring the temperatures, voltages,
+lm_sensors: and fans of Linux systems with hardware monitoring devices. Included
+lm_sensors: are text-based tools for sensor reporting, and a library for sensors
+lm_sensors: access called libsensors. It also contains tools for sensor hardware
+lm_sensors: identification and I2C bus probing.
+lm_sensors:
+lm_sensors: IMPORTANT NOTE: If you have a Thinkpad, please read the warnings in
+lm_sensors: the README.thinkpad file. lm_sensors has been known to cause damage
+lm_sensors: to some Thinkpads.
diff --git a/source/ap/lsof/lsof.SlackBuild b/source/ap/lsof/lsof.SlackBuild
new file mode 100755
index 000000000..afcef1678
--- /dev/null
+++ b/source/ap/lsof/lsof.SlackBuild
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=4.78
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-lsof
+
+rm -rf $PKG
+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
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+echo n | ./Configure linux
+make
+strip lsof
+mkdir -p $PKG/usr/bin
+cat lsof > $PKG/usr/bin/lsof
+# No, NOT suid.
+chmod 755 $PKG/usr/bin/lsof
+mkdir -p $PKG/usr/man/man8
+cat lsof.8 | gzip -9c > $PKG/usr/man/man8/lsof.8.gz
+mkdir -p $PKG/usr/doc/lsof-$VERSION
+cp -a 00* $PKG/usr/doc/lsof-$VERSION
+chmod 644 $PKG/usr/doc/lsof-$VERSION/*
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/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/lsof/slack-desc b/source/ap/lsof/slack-desc
new file mode 100644
index 000000000..2d8882a77
--- /dev/null
+++ b/source/ap/lsof/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------------------------------------------------------|
+lsof: lsof (list open files)
+lsof:
+lsof: Lsof is a Unix-specific tool. Its name stands for "LiSt Open Files",
+lsof: and it does just that. It lists information about files that are open
+lsof: by the processes running on the system.
+lsof:
+lsof: Victor A. Abell of Purdue University is the developer of lsof.
+lsof:
+lsof:
+lsof:
+lsof:
diff --git a/source/ap/lsscsi/lsscsi.SlackBuild b/source/ap/lsscsi/lsscsi.SlackBuild
new file mode 100755
index 000000000..102e3da39
--- /dev/null
+++ b/source/ap/lsscsi/lsscsi.SlackBuild
@@ -0,0 +1,111 @@
+#!/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=lsscsi
+VERSION=${VERSION:-0.22}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || 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 \
+ --sysconfdir=/etc \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mv $PKG/usr/share/man $PKG/usr
+rmdir $PKG/usr/share
+
+# 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 CREDITS 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/ap/lsscsi/lsscsi.url b/source/ap/lsscsi/lsscsi.url
new file mode 100644
index 000000000..e87f176c1
--- /dev/null
+++ b/source/ap/lsscsi/lsscsi.url
@@ -0,0 +1 @@
+http://sg.danny.cz/scsi/lsscsi.html
diff --git a/source/ap/lsscsi/slack-desc b/source/ap/lsscsi/slack-desc
new file mode 100644
index 000000000..afc4f638e
--- /dev/null
+++ b/source/ap/lsscsi/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------------------------------------------------------|
+lsscsi: lsscsi (list SCSI devices or hosts, and their attributes)
+lsscsi:
+lsscsi: Uses information in sysfs to list scsi devices (or hosts) currently
+lsscsi: attached to the system. Options can be used to control the amount
+lsscsi: and form of information provided for each device.
+lsscsi:
+lsscsi: lsscsi was written by Doug Gilbert.
+lsscsi:
+lsscsi:
+lsscsi:
+lsscsi:
+
diff --git a/source/ap/madplay/madplay-0.15.2b.tar.gz.sign b/source/ap/madplay/madplay-0.15.2b.tar.gz.sign
new file mode 100644
index 000000000..d8c15332c
--- /dev/null
+++ b/source/ap/madplay/madplay-0.15.2b.tar.gz.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: PGP 8.0.3
+
+iQA/AwUAQDp66/bzO6Ks1lsyEQLXKQCgnwZnv72//lWsJH+UY3D3xwfUImwAoPnD
+P15yJQ90MlTFmgFneRs8Kscq
+=Iwpu
+-----END PGP SIGNATURE-----
diff --git a/source/ap/madplay/madplay.SlackBuild b/source/ap/madplay/madplay.SlackBuild
new file mode 100755
index 000000000..fb322c834
--- /dev/null
+++ b/source/ap/madplay/madplay.SlackBuild
@@ -0,0 +1,79 @@
+#!/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.15.2b
+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-madplay
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf madplay-$VERSION
+tar xvf $CWD/madplay-$VERSION.tar.gz || exit 1
+cd madplay-$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 \
+ --with-alsa \
+ --disable-debugging \
+ --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
+
+gzip -9 $PKG/usr/man/man1/*
+
+mkdir -p $PKG/usr/doc/madplay-$VERSION
+cp -a \
+ CHANGES COPYING COPYRIGHT CREDITS README TODO VERSION \
+ $PKG/usr/doc/madplay-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/madplay-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/madplay/slack-desc b/source/ap/madplay/slack-desc
new file mode 100644
index 000000000..ff1dcb292
--- /dev/null
+++ b/source/ap/madplay/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------------------------------------------------------|
+madplay: madplay (MPEG audio decoder and player)
+madplay:
+madplay: madplay is a command-line MPEG audio decoder and player based on the
+madplay: MAD library (libmad). For details about MAD, see the libmad package
+madplay: distributed separately.
+madplay:
+madplay: madplay was written by Robert Leslie.
+madplay:
+madplay:
+madplay:
+madplay:
diff --git a/source/ap/man-pages/doinst.sh b/source/ap/man-pages/doinst.sh
new file mode 100644
index 000000000..f42fcb482
--- /dev/null
+++ b/source/ap/man-pages/doinst.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+if [ ! -e usr/man/whatis ]; then
+ mv usr/man/whatis.sample usr/man/whatis
+elif [ "$(md5sum usr/man/whatis)" = "$(md5sum usr/man/whatis.sample)" ]; then
+ # toss the redundant copy
+ rm usr/man/whatis.sample
+fi
diff --git a/source/ap/man-pages/man-pages.SlackBuild b/source/ap/man-pages/man-pages.SlackBuild
new file mode 100755
index 000000000..26b7bb57a
--- /dev/null
+++ b/source/ap/man-pages/man-pages.SlackBuild
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+# Copyright 2008-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=${VERSION:-3.22}
+ARCH=noarch
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-man-pages
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf man-pages-$VERSION
+tar xvf $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
+find man-pages-$VERSION \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+find man-pages-posix-2003-a \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/man
+cp -a man-pages-$VERSION/* $PKG/usr/man
+
+# The pthread manpages are the only POSIX ones that anyone
+# has requested saving. If I missed anything important, let me know.
+mv man-pages-posix-2003-a/man0p/pthread.h.0p $PKG/usr/man/man3/pthread.h.3p
+mv man-pages-posix-2003-a/man3p/pthread_* $PKG/usr/man/man3
+cp man-pages-posix-2003-a/POSIX-COPYRIGHT $PKG/usr/man
+# Are these other POSIX manpages of any real usefulness here?
+# Granted there may be some historical interest, and it's nice
+# to have them in the source package for that reason, but it
+# seems to me that installing them on the system by default
+# isn't likely to help most people and may lead to confusion.
+
+# Also probably not needed in the package
+rm -rf $PKG/usr/man/scripts
+rm -f $PKG/usr/man/Makefile
+rm -f $PKG/usr/man/Changes.old
+
+# Compress the pages:
+gzip -9 $PKG/usr/man/man*/*.*
+
+# If a man page exists in some other package, assume that's the
+# newer, better version:
+( cd $PKG
+ for file in usr/man/man*/*.gz ; do
+ if grep -l $file /var/log/packages/* | grep -v var/log/packages/man-pages ; then
+ rm -f --verbose $file
+ fi
+ done
+)
+
+# Some of the posix pages don't display correctly without this
+( cd $PKG/usr/man ; ln -s man3 man3p )
+
+# This package has always provided the initial whatis sample
+# file, so we'll continue to have that here, too:
+cp -a $CWD/whatis.sample.xz $PKG/usr/man
+( cd $PKG/usr/man
+ chown root:root whatis.sample.xz
+ chmod 644 whatis.sample.xz
+ xz -d whatis.sample.xz || exit 1
+) || exit 1
+
+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/man-pages-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/man-pages/slack-desc b/source/ap/man-pages/slack-desc
new file mode 100644
index 000000000..102e3a5bc
--- /dev/null
+++ b/source/ap/man-pages/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------------------------------------------------------|
+man-pages: man-pages (system documentation)
+man-pages:
+man-pages: Man pages are online documentation for Linux. This package includes
+man-pages: many section 1, 2, 3, 4, 5, 7, and 8 man pages for Linux.
+man-pages:
+man-pages: The man-pages distribution is maintained by Michael Kerrisk with
+man-pages: the help of more writers, editors, and other contributors than we
+man-pages: can name here.
+man-pages:
+man-pages: For more information, see http://www.kernel.org/doc/man-pages/
+man-pages:
diff --git a/source/ap/man-pages/whatis.sample b/source/ap/man-pages/whatis.sample
new file mode 100644
index 000000000..ce3fa4bde
--- /dev/null
+++ b/source/ap/man-pages/whatis.sample
@@ -0,0 +1,12806 @@
+.ldaprc [] (5) - ldap configuration file
+.netrc [] (5) - user configuration for ftp
+/autofs [] (8) - Control Script for automounter
+/etc/auto.master [] (5) - Master Map for automounter
+/etc/bluetooth/hcid.conf [] (5) - Configuration file for the hcid Bluetooth HCI daemon
+/etc/hosts.equiv [] (5) - list of hosts and users that are granted trusted r command access to your system
+/etc/login.defs [] (5) - shadow password suite configuration
+/etc/nscd.conf [] (5) - name service cache daemon configuration file
+/etc/yp.conf [] (5) - NIS binding configuration file
+/proc/slabinfo [] (5) - Kernel slab allocator statistics
+/sbin/ldconfig [] (8) - configure dynamic linker run-time bindings
+/usr/sbin/nscd [] (8) - name service cache daemon
+/var/yp/nicknames [] (5) - nickname translation table for NIS maps
+411toppm [] (1) - convert Sony Mavica .411 image to PPM
+: [] (1) - bash built-in commands, see bash(1)
+AF_INET6 [] (7) - Linux IPv6 protocol implementation
+AF_LOCAL [] (7) - Sockets for local interprocess communication
+AF_PACKET [] (7) - packet interface on device level
+AF_UNIX [] (7) - Sockets for local interprocess communication
+AF_X25 [] (7) - ITU-T X.25 / ISO-8208 protocol interface
+AS [] (1) - the portable GNU assembler
+ASN1_OBJECT_free, [] (3) - object allocation functions
+ASN1_OBJECT_new [] (3) - object allocation functions
+ASN1_STRING_cmp [] (3) - ASN1_STRING utility functions
+ASN1_STRING_data [] (3) - ASN1_STRING utility functions
+ASN1_STRING_dup [] (3) - ASN1_STRING utility functions
+ASN1_STRING_free [] (3) - ASN1_STRING allocation functions
+ASN1_STRING_length [] (3) - ASN1_STRING utility functions
+ASN1_STRING_length_set [] (3) - ASN1_STRING utility functions
+ASN1_STRING_new [] (3) - ASN1_STRING allocation functions
+ASN1_STRING_print_ex [] (3) - ASN1_STRING output routines
+ASN1_STRING_print_ex_fp [] (3) - ASN1_STRING output routines
+ASN1_STRING_set [] (3) - ASN1_STRING utility functions
+ASN1_STRING_type [] (3) - ASN1_STRING utility functions
+ASN1_STRING_type_new [] (3) - ASN1_STRING allocation functions
+ASN1_generate_nconf [] (3) - ASN1 generation functions
+ASN1_generate_v3 [] (3) - ASN1 generation functions
+AllPlanes [] (3) - Display macros and functions
+AnyDBM_File [] (3) - provide framework for multiple DBMs
+AppleVolumes.default [] (5) - Configuration file used by afpd(8) to determine the shares made available through Appletalk
+Archive::Extract [] (3) - A generic archive extracting mechanism
+Archive::Tar [] (3) - module for manipulations of tar archives
+Archive::Tar::File [] (3) - a subclass for in-memory extracted file from Archive::Tar
+Attribute::Handlers [] (3) - Simpler definition of attribute handlers
+Audacious [] (1) - an audio player for X
+AutoLoader [] (3) - load subroutines only on demand
+AutoSplit [] (3) - split a package for autoloading
+B [] (3) - The Perl Compiler
+B::Concise [] (3) - Walk Perl syntax tree, printing concise info about ops
+B::Debug [] (3) - Walk Perl syntax tree, printing debug info about ops
+B::Deparse [] (3) - Perl compiler backend to produce perl code
+B::Lint [] (3) - Perl lint
+B::Showlex [] (3) - Show lexical variables used in functions or files
+B::Terse [] (3) - Walk Perl syntax tree, printing terse info about ops
+B::Xref [] (3) - Generates cross reference reports for Perl programs
+BF_cbc_encrypt [] (3) - Blowfish encryption
+BF_cfb64_encrypt [] (3) - Blowfish encryption
+BF_decrypt [] (3) - Blowfish encryption
+BF_ecb_encrypt [] (3) - Blowfish encryption
+BF_encrypt [] (3) - Blowfish encryption
+BF_ofb64_encrypt [] (3) - Blowfish encryption
+BF_options [] (3) - Blowfish encryption
+BF_set_key [] (3) - Blowfish encryption
+BIO_append_filename [] (3) - FILE bio
+BIO_callback_ctrl [] (3) - BIO control operations
+BIO_ctrl [] (3) - BIO control operations
+BIO_ctrl_get_read_request [] (3) - BIO pair BIO
+BIO_ctrl_get_write_guarantee [] (3) - BIO pair BIO
+BIO_ctrl_pending [] (3) - BIO control operations
+BIO_ctrl_reset_read_request [] (3) - BIO pair BIO
+BIO_ctrl_wpending [] (3) - BIO control operations
+BIO_debug_callback [] (3) - BIO callback functions
+BIO_destroy_bio_pair [] (3) - BIO pair BIO
+BIO_do_accept [] (3) - accept BIO
+BIO_do_connect [] (3) - connect BIO
+BIO_eof [] (3) - BIO control operations
+BIO_f_base64 [] (3) - base64 BIO filter
+BIO_f_buffer [] (3) - buffering BIO
+BIO_f_cipher [] (3) - cipher BIO filter
+BIO_f_md [] (3) - message digest BIO filter
+BIO_f_null [] (3) - null filter
+BIO_f_ssl [] (3) - SSL BIO
+BIO_find_type [] (3) - BIO chain traversal
+BIO_flush [] (3) - BIO control operations
+BIO_free [] (3) - BIO allocation and freeing functions
+BIO_free_all [] (3) - BIO allocation and freeing functions
+BIO_get_accept_port [] (3) - accept BIO
+BIO_get_bind_mode [] (3) - accept BIO
+BIO_get_callback [] (3) - BIO callback functions
+BIO_get_callback_arg [] (3) - BIO callback functions
+BIO_get_cipher_ctx [] (3) - cipher BIO filter
+BIO_get_cipher_status [] (3) - cipher BIO filter
+BIO_get_close [] (3) - BIO control operations
+BIO_get_conn_hostname [] (3) - connect BIO
+BIO_get_conn_int_port [] (3) - connect BIO
+BIO_get_conn_ip [] (3) - connect BIO
+BIO_get_conn_port [] (3) - connect BIO
+BIO_get_fd [] (3) - file descriptor BIO
+BIO_get_fp [] (3) - FILE bio
+BIO_get_info_callback [] (3) - BIO control operations
+BIO_get_md [] (3) - message digest BIO filter
+BIO_get_md_ctx [] (3) - message digest BIO filter
+BIO_get_mem_data [] (3) - memory BIO
+BIO_get_mem_ptr [] (3) - memory BIO
+BIO_get_num_renegotiates [] (3) - SSL BIO
+BIO_get_read_request [] (3) - BIO pair BIO
+BIO_get_retry_BIO [] (3) - BIO retry functions
+BIO_get_retry_reason [] (3) - BIO retry functions
+BIO_get_ssl [] (3) - SSL BIO
+BIO_get_write_buf_size [] (3) - BIO pair BIO
+BIO_get_write_guarantee [] (3) - BIO pair BIO
+BIO_gets [] (3) - BIO I/O functions
+BIO_int_ctrl [] (3) - BIO control operations
+BIO_make_bio_pair [] (3) - BIO pair BIO
+BIO_new [] (3) - BIO allocation and freeing functions
+BIO_new_bio_pair [] (3) - BIO pair BIO
+BIO_new_buffer_ssl_connect [] (3) - SSL BIO
+BIO_new_fd [] (3) - file descriptor BIO
+BIO_new_file [] (3) - FILE bio
+BIO_new_fp [] (3) - FILE bio
+BIO_new_mem_buf [] (3) - memory BIO
+BIO_new_socket [] (3) - socket BIO
+BIO_new_ssl [] (3) - SSL BIO
+BIO_new_ssl_connect [] (3) - SSL BIO
+BIO_next [] (3) - BIO chain traversal
+BIO_pending [] (3) - BIO control operations
+BIO_pop [] (3) - add and remove BIOs from a chain
+BIO_ptr_ctrl [] (3) - BIO control operations
+BIO_push [] (3) - add and remove BIOs from a chain
+BIO_puts [] (3) - BIO I/O functions
+BIO_read [] (3) - BIO I/O functions
+BIO_read_filename [] (3) - FILE bio
+BIO_reset [] (3) - BIO control operations
+BIO_retry_type [] (3) - BIO retry functions
+BIO_rw_filename [] (3) - FILE bio
+BIO_s_accept [] (3) - accept BIO
+BIO_s_bio [] (3) - BIO pair BIO
+BIO_s_connect [] (3) - connect BIO
+BIO_s_fd [] (3) - file descriptor BIO
+BIO_s_file [] (3) - FILE bio
+BIO_s_mem [] (3) - memory BIO
+BIO_s_null [] (3) - null data sink
+BIO_s_socket [] (3) - socket BIO
+BIO_seek [] (3) - BIO control operations
+BIO_set [] (3) - BIO allocation and freeing functions
+BIO_set_accept_bios [] (3) - accept BIO
+BIO_set_accept_port [] (3) - accept BIO
+BIO_set_bind_mode [] (3) - accept BIO
+BIO_set_callback [] (3) - BIO callback functions
+BIO_set_callback_arg [] (3) - BIO callback functions
+BIO_set_cipher [] (3) - cipher BIO filter
+BIO_set_close [] (3) - BIO control operations
+BIO_set_conn_hostname [] (3) - connect BIO
+BIO_set_conn_int_port [] (3) - connect BIO
+BIO_set_conn_ip [] (3) - connect BIO
+BIO_set_conn_port [] (3) - connect BIO
+BIO_set_fd [] (3) - file descriptor BIO
+BIO_set_fp [] (3) - FILE bio
+BIO_set_info_callback [] (3) - BIO control operations
+BIO_set_md [] (3) - message digest BIO filter
+BIO_set_mem_buf [] (3) - memory BIO
+BIO_set_mem_eof_return [] (3) - memory BIO
+BIO_set_nbio [] (3) - connect BIO
+BIO_set_nbio_accept [] (3) - accept BIO
+BIO_set_ssl [] (3) - SSL BIO
+BIO_set_ssl_mode [] (3) - SSL BIO
+BIO_set_ssl_renegotiate_bytes [] (3) - SSL BIO
+BIO_set_ssl_renegotiate_timeout [] (3) - SSL BIO
+BIO_set_write_buf_size [] (3) - BIO pair BIO
+BIO_should_io_special [] (3) - BIO retry functions
+BIO_should_read [] (3) - BIO retry functions
+BIO_should_retry [] (3) - BIO retry functions
+BIO_should_write [] (3) - BIO retry functions
+BIO_shutdown_wr [] (3) - BIO pair BIO
+BIO_ssl_copy_session_id [] (3) - SSL BIO
+BIO_ssl_shutdown [] (3) - SSL BIO
+BIO_tell [] (3) - BIO control operations
+BIO_vfree [] (3) - BIO allocation and freeing functions
+BIO_wpending [] (3) - BIO control operations
+BIO_write [] (3) - BIO I/O functions
+BIO_write_filename [] (3) - FILE bio
+BN_BLINDING_convert [] (3) - blinding related BIGNUM functions
+BN_BLINDING_convert_ex [] (3) - blinding related BIGNUM functions
+BN_BLINDING_create_param [] (3) - blinding related BIGNUM functions
+BN_BLINDING_free [] (3) - blinding related BIGNUM functions
+BN_BLINDING_get_flags [] (3) - blinding related BIGNUM functions
+BN_BLINDING_get_thread_id [] (3) - blinding related BIGNUM functions
+BN_BLINDING_invert [] (3) - blinding related BIGNUM functions
+BN_BLINDING_invert_ex [] (3) - blinding related BIGNUM functions
+BN_BLINDING_new [] (3) - blinding related BIGNUM functions
+BN_BLINDING_set_flags [] (3) - blinding related BIGNUM functions
+BN_BLINDING_set_thread_id [] (3) - blinding related BIGNUM functions
+BN_BLINDING_update [] (3) - blinding related BIGNUM functions
+BN_CTX_end [] (3) - use temporary BIGNUM variables
+BN_CTX_free [] (3) - allocate and free BN_CTX structures
+BN_CTX_get [] (3) - use temporary BIGNUM variables
+BN_CTX_init [] (3) - allocate and free BN_CTX structures
+BN_CTX_new [] (3) - allocate and free BN_CTX structures
+BN_CTX_start [] (3) - use temporary BIGNUM variables
+BN_MONT_CTX_copy [] (3) - Montgomery multiplication
+BN_MONT_CTX_free [] (3) - Montgomery multiplication
+BN_MONT_CTX_init [] (3) - Montgomery multiplication
+BN_MONT_CTX_new [] (3) - Montgomery multiplication
+BN_MONT_CTX_set [] (3) - Montgomery multiplication
+BN_RECP_CTX_free [] (3) - modular multiplication using reciprocal
+BN_RECP_CTX_init [] (3) - modular multiplication using reciprocal
+BN_RECP_CTX_new [] (3) - modular multiplication using reciprocal
+BN_RECP_CTX_set [] (3) - modular multiplication using reciprocal
+BN_add [] (3) - arithmetic operations on BIGNUMs
+BN_add_word [] (3) - arithmetic functions on BIGNUMs with integers
+BN_bin2bn [] (3) - format conversions
+BN_bn2bin [] (3) - format conversions
+BN_bn2dec [] (3) - format conversions
+BN_bn2hex [] (3) - format conversions
+BN_bn2mpi [] (3) - format conversions
+BN_clear [] (3) - allocate and free BIGNUMs
+BN_clear_bit [] (3) - bit operations on BIGNUMs
+BN_clear_free [] (3) - allocate and free BIGNUMs
+BN_cmp [] (3) - BIGNUM comparison and test functions
+BN_copy [] (3) - copy BIGNUMs
+BN_dec2bn [] (3) - format conversions
+BN_div [] (3) - arithmetic operations on BIGNUMs
+BN_div_recp [] (3) - modular multiplication using reciprocal
+BN_div_word [] (3) - arithmetic functions on BIGNUMs with integers
+BN_dup [] (3) - copy BIGNUMs
+BN_exp [] (3) - arithmetic operations on BIGNUMs
+BN_free [] (3) - allocate and free BIGNUMs
+BN_from_montgomery [] (3) - Montgomery multiplication
+BN_gcd [] (3) - arithmetic operations on BIGNUMs
+BN_generate_prime [] (3) - generate primes and test for primality
+BN_get_word [] (3) - BIGNUM assignment operations
+BN_hex2bn [] (3) - format conversions
+BN_init [] (3) - allocate and free BIGNUMs
+BN_is_bit_set [] (3) - bit operations on BIGNUMs
+BN_is_odd [] (3) - BIGNUM comparison and test functions
+BN_is_one [] (3) - BIGNUM comparison and test functions
+BN_is_prime [] (3) - generate primes and test for primality
+BN_is_prime_fasttest [] (3) - generate primes and test for primality
+BN_is_word [] (3) - BIGNUM comparison and test functions
+BN_is_zero [] (3) - BIGNUM comparison and test functions
+BN_lshift [] (3) - bit operations on BIGNUMs
+BN_lshift1 [] (3) - bit operations on BIGNUMs
+BN_mask_bits [] (3) - bit operations on BIGNUMs
+BN_mod [] (3) - arithmetic operations on BIGNUMs
+BN_mod_add [] (3) - arithmetic operations on BIGNUMs
+BN_mod_exp [] (3) - arithmetic operations on BIGNUMs
+BN_mod_inverse [] (3) - compute inverse modulo n
+BN_mod_mul [] (3) - arithmetic operations on BIGNUMs
+BN_mod_mul_montgomery [] (3) - Montgomery multiplication
+BN_mod_mul_reciprocal [] (3) - modular multiplication using reciprocal
+BN_mod_sqr [] (3) - arithmetic operations on BIGNUMs
+BN_mod_sub [] (3) - arithmetic operations on BIGNUMs
+BN_mod_word [] (3) - arithmetic functions on BIGNUMs with integers
+BN_mpi2bn [] (3) - format conversions
+BN_mul [] (3) - arithmetic operations on BIGNUMs
+BN_mul_word [] (3) - arithmetic functions on BIGNUMs with integers
+BN_new [] (3) - allocate and free BIGNUMs
+BN_nnmod [] (3) - arithmetic operations on BIGNUMs
+BN_num_bits [] (3) - get BIGNUM size
+BN_num_bits_word [] (3) - get BIGNUM size
+BN_num_bytes [] (3) - get BIGNUM size
+BN_one [] (3) - BIGNUM assignment operations
+BN_print [] (3) - format conversions
+BN_print_fp [] (3) - format conversions
+BN_pseudo_rand [] (3) - generate pseudo-random number
+BN_rand [] (3) - generate pseudo-random number
+BN_rshift [] (3) - bit operations on BIGNUMs
+BN_rshift1 [] (3) - bit operations on BIGNUMs
+BN_set_bit [] (3) - bit operations on BIGNUMs
+BN_set_word [] (3) - BIGNUM assignment operations
+BN_sqr [] (3) - arithmetic operations on BIGNUMs
+BN_sub [] (3) - arithmetic operations on BIGNUMs
+BN_sub_word [] (3) - arithmetic functions on BIGNUMs with integers
+BN_swap [] (3) - exchange BIGNUMs
+BN_to_montgomery [] (3) - Montgomery multiplication
+BN_ucmp [] (3) - BIGNUM comparison and test functions
+BN_value_one [] (3) - BIGNUM assignment operations
+BN_zero [] (3) - BIGNUM assignment operations
+BUF_MEM_free [] (3) - simple character arrays structure
+BUF_MEM_grow [] (3) - simple character arrays structure
+BUF_MEM_new [] (3) - simple character arrays structure
+BUF_strdup [] (3) - simple character arrays structure
+Benchmark [] (3) - benchmark running times of Perl code
+BerElement [] (3) - LBER types and allocation functions
+BerValue [] (3) - LBER types and allocation functions
+BerVarray [] (3) - LBER types and allocation functions
+BitmapBitOrder [] (3) - image format functions and macros
+BitmapPad [] (3) - image format functions and macros
+BitmapUnit [] (3) - image format functions and macros
+BlackPixel [] (3) - Display macros and functions
+BlackPixelOfScreen [] (3) - screen information functions and macros
+Bundle::DBD::mysql [] (3) - A bundle to install Perl drivers for MySQL
+Bundle::DBI [] (3) - A bundle to install DBI and required modules
+C operator [] (7) - C operator precedence and order of evaluation
+CA.pl [] (1) - friendlier interface for OpenSSL certificate programs
+CACA_BLACK [] (3) - 1); caca_free_display(dp);
+CACA_EVENT_KEY_PRESS [] (3) - 1); caca_free_display(dp);
+CACA_WHITE); caca_put_str(cv [] (3) - 1); caca_free_display(dp);
+CBQ [] (8) - Class Based Queueing
+CGI [] (3) - Simple Common Gateway Interface Class
+CGI::Apache [] (3) - Backward compatibility module for CGI.pm
+CGI::Carp [] (3) - CGI routines for writing to the HTTPD (or other) error log
+CGI::Cookie [] (3) - Interface to Netscape Cookies
+CGI::Fast [] (3) - CGI Interface for Fast CGI
+CGI::Pretty [] (3) - module to produce nicely formatted HTML code
+CGI::Push [] (3) - Simple Interface to Server Push
+CGI::Switch [] (3) - Backward compatibility module for defunct CGI::Switch
+CGI::Util [] (3) - Internal utilities used by CGI module
+CIRCLEQ_ENTRY [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_HEAD [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_INIT [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_INSERT_AFTER [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_INSERT_BEFORE [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_INSERT_HEAD [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_INSERT_TAIL [] (3) - implementations of lists, tail queues, and circular queues
+CIRCLEQ_REMOVE [] (3) - implementations of lists, tail queues, and circular queues
+CMSG_ALIGN [] (3) - Access ancillary data
+CMSG_FIRSTHDR [] (3) - Access ancillary data
+CMSG_NXTHDR [] (3) - Access ancillary data
+CMSG_SPACE [] (3) - Access ancillary data
+COLOR_PAIR [] (3) - curses color manipulation routines
+CONF_modules_finish [] (3) - OpenSSL configuration cleanup functions
+CONF_modules_free [] (3) - OpenSSL configuration cleanup functions
+CONF_modules_load [] (3) - OpenSSL configuration functions
+CONF_modules_load_file [] (3) - OpenSSL configuration functions
+CONF_modules_unload [] (3) - OpenSSL configuration cleanup functions
+CORE [] (3) - Pseudo-namespace for Perl's core routines
+CPAN [] (3) - query, download and build perl modules from CPAN sites
+CPAN::API::HOWTO [] (3) - a recipe book for programming with CPAN.pm
+CPAN::FirstTime [] (3) - Utility for CPAN::Config file Initialization
+CPAN::Kwalify [] (3) - Interface between CPAN.pm and Kwalify.pm
+CPAN::Nox [] (3) - Wrapper around CPAN.pm without using any XS module
+CPAN::Version [] (3) - utility functions to compare CPAN versions
+CPANPLUS [] (3) - API & CLI access to the CPAN mirrors
+CPANPLUS::Dist::Base [] (3) - Base class for custom distribution classes
+CPANPLUS::Dist::Sample [] (3) - - Sample code to create your own Dist::* plugin
+CPANPLUS::Shell::Classic [] (3) - CPAN.pm emulation for CPANPLUS
+CPANPLUS::Shell::Default::Plugins::HOWTO [] (3) - - documentation on how to write your own plugins
+CPU_ALLOC [] (3) - macros for manipulating CPU sets
+CPU_ALLOC_SIZE [] (3) - macros for manipulating CPU sets
+CPU_AND [] (3) - macros for manipulating CPU sets
+CPU_AND_S [] (3) - macros for manipulating CPU sets
+CPU_CLR [] (3) - macros for manipulating CPU sets
+CPU_CLR_S [] (3) - macros for manipulating CPU sets
+CPU_COUNT [] (3) - macros for manipulating CPU sets
+CPU_COUNT_S [] (3) - macros for manipulating CPU sets
+CPU_EQUAL [] (3) - macros for manipulating CPU sets
+CPU_EQUAL_S [] (3) - macros for manipulating CPU sets
+CPU_FREE [] (3) - macros for manipulating CPU sets
+CPU_ISSET [] (3) - macros for manipulating CPU sets
+CPU_ISSET_S [] (3) - macros for manipulating CPU sets
+CPU_OR [] (3) - macros for manipulating CPU sets
+CPU_OR_S [] (3) - macros for manipulating CPU sets
+CPU_SET [] (3) - macros for manipulating CPU sets
+CPU_SET_S [] (3) - macros for manipulating CPU sets
+CPU_XOR [] (3) - macros for manipulating CPU sets
+CPU_XOR_S [] (3) - macros for manipulating CPU sets
+CPU_ZERO [] (3) - macros for manipulating CPU sets
+CPU_ZERO_S [] (3) - macros for manipulating CPU sets
+CRYPTO_destroy_dynlockid [] (3) - OpenSSL thread support
+CRYPTO_get_ex_data [] (3) - internal application specific data functions
+CRYPTO_get_new_dynlockid [] (3) - OpenSSL thread support
+CRYPTO_lock [] (3) - OpenSSL thread support
+CRYPTO_num_locks [] (3) - OpenSSL thread support
+CRYPTO_set_dynlock_create_callback [] (3) - OpenSSL thread support
+CRYPTO_set_dynlock_destroy_callback [] (3) - OpenSSL thread support
+CRYPTO_set_dynlock_lock_callback [] (3) - OpenSSL thread support
+CRYPTO_set_ex_data [] (3) - internal application specific data functions
+CRYPTO_set_id_callback [] (3) - OpenSSL thread support
+CRYPTO_set_locking_callback [] (3) - OpenSSL thread support
+Carp::Heavy [] (3) - heavy machinery, no user serviceable parts inside
+CellsOfScreen [] (3) - screen information functions and macros
+Cervisia [] (1) - Graphical CVS frontend
+Class::ISA [] (3) - - report the search path for a class's ISA tree
+Class::Struct [] (3) - declare struct-like datatypes as Perl classes
+ClientWhitePointOfCCC [] (3) - Color Conversion Context macros
+Compress::Raw::Zlib [] (3) - Low-Level Interface to zlib compression library
+Compress::Zlib [] (3) - Interface to zlib compression library
+Config [] (3) - access Perl configuration information
+Config::Extensions [] (3) - hash lookup of which core extensions were built
+ConnectionNumber [] (3) - Display macros and functions
+Cwd [] (3) - get pathname of current working directory
+DBD::DBM [] (3) - a DBI driver for DBM & MLDBM files
+DBD::File [] (3) - Base class for writing DBI drivers
+DBD::Gofer [] (3) - A stateless-proxy driver for communicating with a remote DBI
+DBD::Gofer::Policy::Base [] (3) - Base class for DBD::Gofer policies
+DBD::Gofer::Policy::classic [] (3) - The 'classic' policy for DBD::Gofer
+DBD::Gofer::Policy::pedantic [] (3) - The 'pedantic' policy for DBD::Gofer
+DBD::Gofer::Policy::rush [] (3) - The 'rush' policy for DBD::Gofer
+DBD::Gofer::Transport::Base [] (3) - base class for DBD::Gofer client transports
+DBD::Gofer::Transport::null [] (3) - DBD::Gofer client transport for testing
+DBD::Gofer::Transport::pipeone [] (3) - DBD::Gofer client transport for testing
+DBD::Gofer::Transport::stream [] (3) - DBD::Gofer transport for stdio streaming
+DBD::Proxy [] (3) - A proxy driver for the DBI
+DBD::Sponge [] (3) - Create a DBI statement handle from Perl data
+DBD::mysql [] (3) - MySQL driver for the Perl5 Database Interface (DBI)
+DBE [] (3) - Double Buffer Extension
+DBI::Const::GetInfo::ANSI [] (3) - ISO/IEC SQL/CLI Constants for GetInfo
+DBI::Const::GetInfo::ODBC [] (3) - ODBC Constants for GetInfo
+DBI::Const::GetInfoReturn [] (3) - Data and functions for describing GetInfo results
+DBI::Const::GetInfoType [] (3) - Data describing GetInfo type codes
+DBI::DBD [] (3) - Perl DBI Database Driver Writer's Guide
+DBI::DBD::Metadata [] (3) - Generate the code and data for some DBI metadata methods
+DBI::FAQ [] (3) - - The Frequently Asked Questions for the Perl5 Database Interface
+DBI::Gofer::Execute [] (3) - Executes Gofer requests and returns Gofer responses
+DBI::Gofer::Request [] (3) - Encapsulate a request from DBD::Gofer to DBI::Gofer::Execute
+DBI::Gofer::Response [] (3) - Encapsulate a response from DBI::Gofer::Execute to DBD::Gofer
+DBI::Gofer::Serializer::Base [] (3) - base class for Gofer serialization
+DBI::Gofer::Serializer::DataDumper [] (3) - Gofer serialization using DataDumper
+DBI::Gofer::Serializer::Storable [] (3) - Gofer serialization using Storable
+DBI::Gofer::Transport::Base [] (3) - Base class for Gofer transports
+DBI::Gofer::Transport::pipeone [] (3) - DBD::Gofer server-side transport for pipeone
+DBI::Gofer::Transport::stream [] (3) - DBD::Gofer server-side transport for stream
+DBI::Profile [] (3) - Performance profiling and benchmarking for the DBI
+DBI::ProfileData [] (3) - manipulate DBI::ProfileDumper data dumps
+DBI::ProfileDumper [] (3) - profile DBI usage and output data to a file
+DBI::ProfileDumper::Apache [] (3) - capture DBI profiling data from Apache/mod_perl
+DBI::ProfileSubs [] (3) - Subroutines for dynamic profile Path
+DBI::ProxyServer [] (3) - a server for the DBD::Proxy driver
+DBI::PurePerl [] (3) - - a DBI emulation using pure perl (no C/XS compilation required)
+DBI::Roadmap [] (3) - Planned Enhancements for the DBI
+DBI::SQL::Nano [] (3) - a very tiny SQL engine
+DBI::Util::CacheMemory [] (3) - a very fast but very minimal subset of Cache::Memory
+DBI::W32ODBC [] (3) - An experimental DBI emulation layer for Win32::ODBC
+DBM_Filter [] (3) - - Filter DBM keys/values
+DBM_Filter::compress [] (3) - filter for DBM_Filter
+DBM_Filter::encode [] (3) - filter for DBM_Filter
+DBM_Filter::int32 [] (3) - filter for DBM_Filter
+DBM_Filter::null [] (3) - filter for DBM_Filter
+DBM_Filter::utf8 [] (3) - filter for DBM_Filter
+DB_File [] (3) - Perl5 access to Berkeley DB version 1.x
+DB_File [] (3) - various DBM implementations
+DES_FAILED [] (3) - fast DES encryption
+DES_cbc_cksum [] (3) - DES encryption
+DES_cfb64_encrypt [] (3) - DES encryption
+DES_cfb_encrypt [] (3) - DES encryption
+DES_crypt [] (3) - DES encryption
+DES_ecb2_encrypt [] (3) - DES encryption
+DES_ecb3_encrypt [] (3) - DES encryption
+DES_ecb_encrypt [] (3) - DES encryption
+DES_ede2_cbc_encrypt [] (3) - DES encryption
+DES_ede2_cfb64_encrypt [] (3) - DES encryption
+DES_ede2_ofb64_encrypt [] (3) - DES encryption
+DES_ede3_cbc_encrypt [] (3) - DES encryption
+DES_ede3_cbcm_encrypt [] (3) - DES encryption
+DES_ede3_cfb64_encrypt [] (3) - DES encryption
+DES_ede3_ofb64_encrypt [] (3) - DES encryption
+DES_enc_read [] (3) - DES encryption
+DES_enc_write [] (3) - DES encryption
+DES_fcrypt [] (3) - DES encryption
+DES_is_weak_key [] (3) - DES encryption
+DES_key_sched [] (3) - DES encryption
+DES_ncbc_encrypt [] (3) - DES encryption
+DES_ofb64_encrypt [] (3) - DES encryption
+DES_ofb_encrypt [] (3) - DES encryption
+DES_pcbc_encrypt [] (3) - DES encryption
+DES_quad_cksum [] (3) - DES encryption
+DES_random_key [] (3) - DES encryption
+DES_set_key [] (3) - DES encryption
+DES_set_key_checked [] (3) - DES encryption
+DES_set_key_unchecked [] (3) - DES encryption
+DES_set_odd_parity [] (3) - DES encryption
+DES_string_to_2keys [] (3) - DES encryption
+DES_string_to_key [] (3) - DES encryption
+DES_xcbc_encrypt [] (3) - DES encryption
+DH_OpenSSL [] (3) - select DH method
+DH_check [] (3) - generate and check Diffie-Hellman parameters
+DH_compute_key [] (3) - perform Diffie-Hellman key exchange
+DH_free [] (3) - allocate and free DH objects
+DH_generate_key [] (3) - perform Diffie-Hellman key exchange
+DH_generate_parameters [] (3) - generate and check Diffie-Hellman parameters
+DH_get_default_method [] (3) - select DH method
+DH_get_ex_data [] (3) - add application specific data to DH structures
+DH_get_ex_new_index [] (3) - add application specific data to DH structures
+DH_new [] (3) - allocate and free DH objects
+DH_new_method [] (3) - select DH method
+DH_set_default_method [] (3) - select DH method
+DH_set_ex_data [] (3) - add application specific data to DH structures
+DH_set_method [] (3) - select DH method
+DH_size [] (3) - get Diffie-Hellman prime size
+DHparams_print [] (3) - print cryptographic parameters
+DHparams_print_fp [] (3) - print cryptographic parameters
+DMX [] (3) - X Window System DMX (Distributed Multihead X) extension
+DMXAddBackendInput [] (3) - attach a new input
+DMXAddConsoleInput [] (3) - attach a new input
+DMXAddInput [] (3) - attach a new input
+DMXAddScreen [] (3) - attach a new back-end screen
+DMXChangeDesktopAttributes [] (3) - change global bounding box
+DMXChangeScreensAttributes [] (3) - change back-end screen attributes
+DMXForceWindowCreation [] (3) - force immediate back-end window creation
+DMXGetDesktopAttributes [] (3) - determine global bounding box
+DMXGetInputAttributes [] (3) - determine input device attributes
+DMXGetInputCount [] (3) - determine number of input devices
+DMXGetScreenAttributes [] (3) - determine back-end screen attributes
+DMXGetScreenCount [] (3) - determine number of back-end screens
+DMXGetWindowAttributes [] (3) - determine back-end window attributes
+DMXQueryExtension [] (3) - determine if DMX is available
+DMXQueryVersion [] (3) - determine DMX extension version
+DMXRemoveInput [] (3) - detach an input
+DMXRemoveScreen [] (3) - detach a back-end screen
+DMXSync [] (3) - flush protocol requests between Xdmx and back-end X servers
+DPMSCapable [] (3) - returns the DPMS capability of the X server
+DPMSDisable [] (3) - disables DPMS on the specified display
+DPMSEnable [] (3) - enables DPMS on the specified display
+DPMSForceLevel [] (3) - forces a DPMS capable display into the specified power level
+DPMSGetTimeouts [] (3) - retrieves the timeout values used by the X server for DPMS timings
+DPMSGetVersion [] (3) - returns the version of the DPMS extension implemented by the X server
+DPMSInfo [] (3) - returns information about the current DPMS state
+DPMSQueryExtension [] (3) - queries the X server to determine the availability of the DPMS Extension
+DPMSSetTimeouts [] (3) - permits applications to set the timeout values used by the X server for DPMS timings
+DSA_OpenSSL [] (3) - select DSA method
+DSA_SIG_free [] (3) - allocate and free DSA signature objects
+DSA_SIG_new [] (3) - allocate and free DSA signature objects
+DSA_do_sign [] (3) - raw DSA signature operations
+DSA_do_verify [] (3) - raw DSA signature operations
+DSA_dup_DH [] (3) - create a DH structure out of DSA structure
+DSA_free [] (3) - allocate and free DSA objects
+DSA_generate_key [] (3) - generate DSA key pair
+DSA_generate_parameters [] (3) - generate DSA parameters
+DSA_get_default_method [] (3) - select DSA method
+DSA_get_ex_data [] (3) - add application specific data to DSA structures
+DSA_get_ex_new_index [] (3) - add application specific data to DSA structures
+DSA_new [] (3) - allocate and free DSA objects
+DSA_new_method [] (3) - select DSA method
+DSA_print [] (3) - print cryptographic parameters
+DSA_print_fp [] (3) - print cryptographic parameters
+DSA_set_default_method [] (3) - select DSA method
+DSA_set_ex_data [] (3) - add application specific data to DSA structures
+DSA_set_method [] (3) - select DSA method
+DSA_sign [] (3) - DSA signatures
+DSA_sign_setup [] (3) - DSA signatures
+DSA_size [] (3) - get DSA signature size
+DSA_verify [] (3) - DSA signatures
+DSAparams_print [] (3) - print cryptographic parameters
+DSAparams_print_fp [] (3) - print cryptographic parameters
+Data::Dumper [] (3) - stringified perl data structures, suitable for both printing and eval
+DefaultColormap [] (3) - Display macros and functions
+DefaultColormapOfScreen [] (3) - screen information functions and macros
+DefaultDepth [] (3) - Display macros and functions
+DefaultDepthOfScreen [] (3) - screen information functions and macros
+DefaultGC [] (3) - Display macros and functions
+DefaultGCOfScreen [] (3) - screen information functions and macros
+DefaultRootWindow [] (3) - Display macros and functions
+DefaultScreen [] (3) - Display macros and functions
+DefaultScreenOfDisplay [] (3) - Display macros and functions
+DefaultVisual [] (3) - Display macros and functions
+DefaultVisualOfScreen [] (3) - screen information functions and macros
+Devel::DProf [] (3) - a Perl code profiler
+Devel::InnerPackage [] (3) - find all the inner packages of a package
+Devel::PPPort [] (3) - Perl/Pollution/Portability
+Devel::Peek [] (3) - A data debugging tool for the XS programmer
+Devel::SelfStubber [] (3) - generate stubs for a SelfLoading module
+Digest [] (3) - Modules that calculate message digests
+Digest::MD5 [] (3) - Perl interface to the MD5 Algorithm
+Digest::SHA [] (3) - Perl extension for SHA-1/224/256/384/512
+Digest::base [] (3) - Digest base class
+Digest::file [] (3) - Calculate digests of files
+DirHandle [] (3) - supply object methods for directory handles
+Dislocate [] (1) - disconnect and reconnect processes
+DisplayCells [] (3) - Display macros and functions
+DisplayHeight [] (3) - image format functions and macros
+DisplayHeightMM [] (3) - image format functions and macros
+DisplayOfCCC [] (3) - Color Conversion Context macros
+DisplayOfScreen [] (3) - screen information functions and macros
+DisplayPlanes [] (3) - Display macros and functions
+DisplayString [] (3) - Display macros and functions
+DisplayWidth [] (3) - image format functions and macros
+DisplayWidthMM [] (3) - image format functions and macros
+DjVu [] (1) - DjVu and DjVuLibre
+DoesBackingStore [] (3) - screen information functions and macros
+DoesSaveUnders [] (3) - screen information functions and macros
+Dumpvalue [] (3) - provides screen dump of Perl data
+DynaLoader [] (3) - Dynamically load C libraries into Perl code
+ERR_GET_FUNC [] (3) - get library, function and reason code
+ERR_GET_LIB [] (3) - get library, function and reason code
+ERR_GET_REASON [] (3) - get library, function and reason code
+ERR_PACK [] (3) - load arbitrary error strings
+ERR_add_error_data [] (3) - record an error
+ERR_clear_error [] (3) - clear the error queue
+ERR_error_string [] (3) - obtain human-readable error message
+ERR_error_string_n [] (3) - obtain human-readable error message
+ERR_free_strings [] (3) - load and free error strings
+ERR_func_error_string [] (3) - obtain human-readable error message
+ERR_get_error [] (3) - obtain error code and data
+ERR_get_error_line [] (3) - obtain error code and data
+ERR_get_error_line_data [] (3) - obtain error code and data
+ERR_get_next_error_library [] (3) - load arbitrary error strings
+ERR_lib_error_string [] (3) - obtain human-readable error message
+ERR_load_UI_strings [] (3) - New User Interface
+ERR_load_crypto_strings [] (3) - load and free error strings
+ERR_load_strings [] (3) - load arbitrary error strings
+ERR_peek_error [] (3) - obtain error code and data
+ERR_peek_error_line [] (3) - obtain error code and data
+ERR_peek_error_line_data [] (3) - obtain error code and data
+ERR_peek_last_error [] (3) - obtain error code and data
+ERR_peek_last_error_line [] (3) - obtain error code and data
+ERR_peek_last_error_line_data [] (3) - obtain error code and data
+ERR_pop_to_mark [] (3) - set marks and pop errors until mark
+ERR_print_errors [] (3) - print error messages
+ERR_print_errors_fp [] (3) - print error messages
+ERR_put_error [] (3) - record an error
+ERR_reason_error_string [] (3) - obtain human-readable error message
+ERR_remove_state [] (3) - free a thread's error queue
+ERR_set_mark [] (3) - set marks and pop errors until mark
+EVP_BytesToKey [] (3) - password based encryption routine
+EVP_CIPHER_CTX_block_size [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_cipher [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_cleanup [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_ctrl [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_flags [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_get_app_data [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_init [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_iv_length [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_key_length [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_mode [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_nid [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_set_app_data [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_set_key_length [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_set_padding [] (3) - EVP cipher routines
+EVP_CIPHER_CTX_type [] (3) - EVP cipher routines
+EVP_CIPHER_asn1_to_param [] (3) - EVP cipher routines
+EVP_CIPHER_block_size [] (3) - EVP cipher routines
+EVP_CIPHER_flags [] (3) - EVP cipher routines
+EVP_CIPHER_iv_length [] (3) - EVP cipher routines
+EVP_CIPHER_key_length [] (3) - EVP cipher routines
+EVP_CIPHER_mode [] (3) - EVP cipher routines
+EVP_CIPHER_nid [] (3) - EVP cipher routines
+EVP_CIPHER_param_to_asn1 [] (3) - EVP cipher routines
+EVP_CIPHER_type [] (3) - EVP cipher routines
+EVP_CipherFinal [] (3) - EVP cipher routines
+EVP_CipherFinal_ex [] (3) - EVP cipher routines
+EVP_CipherInit [] (3) - EVP cipher routines
+EVP_CipherInit_ex [] (3) - EVP cipher routines
+EVP_CipherUpdate [] (3) - EVP cipher routines
+EVP_DecryptFinal [] (3) - EVP cipher routines
+EVP_DecryptFinal_ex [] (3) - EVP cipher routines
+EVP_DecryptInit [] (3) - EVP cipher routines
+EVP_DecryptInit_ex [] (3) - EVP cipher routines
+EVP_DecryptUpdate [] (3) - EVP cipher routines
+EVP_DigestFinal_ex [] (3) - EVP digest routines
+EVP_DigestInit_ex [] (3) - EVP digest routines
+EVP_DigestUpdate [] (3) - EVP digest routines
+EVP_EncryptFinal [] (3) - EVP cipher routines
+EVP_EncryptFinal_ex [] (3) - EVP cipher routines
+EVP_EncryptInit [] (3) - EVP cipher routines
+EVP_EncryptInit_ex [] (3) - EVP cipher routines
+EVP_EncryptUpdate [] (3) - EVP cipher routines
+EVP_MAX_MD_SIZE [] (3) - EVP digest routines
+EVP_MD_CTX_block_size [] (3) - EVP digest routines
+EVP_MD_CTX_cleanup [] (3) - EVP digest routines
+EVP_MD_CTX_copy [] (3) - EVP digest routines
+EVP_MD_CTX_copy_ex [] (3) - EVP digest routines
+EVP_MD_CTX_create [] (3) - EVP digest routines
+EVP_MD_CTX_destroy [] (3) - EVP digest routines
+EVP_MD_CTX_init [] (3) - EVP digest routines
+EVP_MD_CTX_md [] (3) - EVP digest routines
+EVP_MD_CTX_size [] (3) - EVP digest routines
+EVP_MD_CTX_type [] (3) - EVP digest routines
+EVP_MD_block_size [] (3) - EVP digest routines
+EVP_MD_pkey_type [] (3) - EVP digest routines
+EVP_MD_size [] (3) - EVP digest routines
+EVP_MD_type [] (3) - EVP digest routines
+EVP_OpenFinal [] (3) - EVP envelope decryption
+EVP_OpenInit [] (3) - EVP envelope decryption
+EVP_OpenUpdate [] (3) - EVP envelope decryption
+EVP_PKEY_assign_DH [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_assign_DSA [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_assign_EC_KEY [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_assign_RSA [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_free [] (3) - private key allocation functions
+EVP_PKEY_get1_DH [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_get1_DSA [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_get1_EC_KEY [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_get1_RSA [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_new [] (3) - private key allocation functions
+EVP_PKEY_set1_DH [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_set1_DSA [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_set1_EC_KEY [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_set1_RSA [] (3) - EVP_PKEY assignment functions
+EVP_PKEY_type [] (3) - EVP_PKEY assignment functions
+EVP_SealFinal [] (3) - EVP envelope encryption
+EVP_SealInit [] (3) - EVP envelope encryption
+EVP_SealUpdate [] (3) - EVP envelope encryption
+EVP_SignFinal [] (3) - EVP signing functions
+EVP_SignInit [] (3) - EVP signing functions
+EVP_SignUpdate [] (3) - EVP signing functions
+EVP_VerifyFinal [] (3) - EVP signature verification functions
+EVP_VerifyInit [] (3) - EVP signature verification functions
+EVP_VerifyUpdate [] (3) - EVP signature verification functions
+EVP_dss [] (3) - EVP digest routines
+EVP_dss1 [] (3) - EVP digest routines
+EVP_get_cipherbyname [] (3) - EVP cipher routines
+EVP_get_cipherbynid [] (3) - EVP cipher routines
+EVP_get_cipherbyobj [] (3) - EVP cipher routines
+EVP_get_digestbyname [] (3) - EVP digest routines
+EVP_get_digestbynid [] (3) - EVP digest routines
+EVP_get_digestbyobj [] (3) - EVP digest routines
+EVP_md2 [] (3) - EVP digest routines
+EVP_md5 [] (3) - EVP digest routines
+EVP_md_null [] (3) - EVP digest routines
+EVP_mdc2 [] (3) - EVP digest routines
+EVP_ripemd160 [] (3) - EVP digest routines
+EVP_sha [] (3) - EVP digest routines
+EVP_sha1 [] (3) - EVP digest routines
+Enchant [] (1) - a spellchecker
+Encode [] (3) - character encodings
+Encode::Alias [] (3) - alias definitions to encodings
+Encode::Byte [] (3) - Single Byte Encodings
+Encode::CJKConstants.pm [] (3) - - Internally used by Encode::??::ISO_2022_*
+Encode::CN [] (3) - China-based Chinese Encodings
+Encode::CN::HZ [] (3) - - internally used by Encode::CN
+Encode::Config [] (3) - - internally used by Encode
+Encode::EBCDIC [] (3) - EBCDIC Encodings
+Encode::Encoder [] (3) - - Object Oriented Encoder
+Encode::Encoding [] (3) - Encode Implementation Base Class
+Encode::GSM0338 [] (3) - - ESTI GSM 03.38 Encoding
+Encode::Guess [] (3) - - Guesses encoding from data
+Encode::JP [] (3) - Japanese Encodings
+Encode::JP::H2Z [] (3) - - internally used by Encode::JP::2022_JP*
+Encode::JP::JIS7 [] (3) - - internally used by Encode::JP
+Encode::KR [] (3) - Korean Encodings
+Encode::KR::2022_KR [] (3) - - internally used by Encode::KR
+Encode::MIME::Header [] (3) - - MIME 'B' and 'Q' header encoding
+Encode::MIME::NAME [] (3) - - internally used by Encode
+Encode::PerlIO [] (3) - - a detailed document on Encode and PerlIO
+Encode::Supported [] (3) - - Encodings supported by Encode
+Encode::Symbol [] (3) - Symbol Encodings
+Encode::TW [] (3) - Taiwan-based Chinese Encodings
+Encode::Unicode [] (3) - - Various Unicode Transformation Formats
+Encode::Unicode::UTF7 [] (3) - - UTF-7 encoding
+English [] (3) - use nice English (or awk) names for ugly punctuation variables
+Env [] (3) - perl module that imports environment variables as scalars or arrays
+Errno [] (3) - System errno constants
+Error [] (3) - Error/exception handling in an OO-ish way
+EventMaskOfScreen [] (3) - screen information functions and macros
+Exporter [] (3) - Implements default import method for modules
+Exporter::Heavy [] (3) - Exporter guts
+ExtUtils::CBuilder [] (3) - Compile and link C code for Perl modules
+ExtUtils::CBuilder::Platform::Windows [] (3) - Builder class for Windows platforms
+ExtUtils::Command [] (3) - utilities to replace common UNIX commands in Makefiles etc
+ExtUtils::Command::MM [] (3) - Commands for the MM's to use in Makefiles
+ExtUtils::Constant [] (3) - generate XS code to import C header constants
+ExtUtils::Constant::Base [] (3) - base class for ExtUtils::Constant objects
+ExtUtils::Constant::Utils [] (3) - helper functions for ExtUtils::Constant
+ExtUtils::Embed [] (3) - Utilities for embedding Perl in C/C++ applications
+ExtUtils::Install [] (3) - install files from here to there
+ExtUtils::Installed [] (3) - Inventory management of installed modules
+ExtUtils::Liblist [] (3) - determine libraries to use and how to use them
+ExtUtils::MM [] (3) - OS adjusted ExtUtils::MakeMaker subclass
+ExtUtils::MM_AIX [] (3) - AIX specific subclass of ExtUtils::MM_Unix
+ExtUtils::MM_Any [] (3) - Platform-agnostic MM methods
+ExtUtils::MM_BeOS [] (3) - methods to override UN*X behaviour in ExtUtils::MakeMaker
+ExtUtils::MM_Cygwin [] (3) - methods to override UN*X behaviour in ExtUtils::MakeMaker
+ExtUtils::MM_DOS [] (3) - DOS specific subclass of ExtUtils::MM_Unix
+ExtUtils::MM_MacOS [] (3) - once produced Makefiles for MacOS Classic
+ExtUtils::MM_NW5 [] (3) - methods to override UN*X behaviour in ExtUtils::MakeMaker
+ExtUtils::MM_OS2 [] (3) - methods to override UN*X behaviour in ExtUtils::MakeMaker
+ExtUtils::MM_QNX [] (3) - QNX specific subclass of ExtUtils::MM_Unix
+ExtUtils::MM_UWIN [] (3) - U/WIN specific subclass of ExtUtils::MM_Unix
+ExtUtils::MM_Unix [] (3) - methods used by ExtUtils::MakeMaker
+ExtUtils::MM_VMS [] (3) - methods to override UN*X behaviour in ExtUtils::MakeMaker
+ExtUtils::MM_VOS [] (3) - VOS specific subclass of ExtUtils::MM_Unix
+ExtUtils::MM_Win32 [] (3) - methods to override UN*X behaviour in ExtUtils::MakeMaker
+ExtUtils::MM_Win95 [] (3) - method to customize MakeMaker for Win9X
+ExtUtils::MY [] (3) - ExtUtils::MakeMaker subclass for customization
+ExtUtils::MakeMaker [] (3) - Create a module Makefile
+ExtUtils::MakeMaker::Config [] (3) - Wrapper around Config.pm
+ExtUtils::MakeMaker::FAQ [] (3) - Frequently Asked Questions About MakeMaker
+ExtUtils::MakeMaker::Tutorial [] (3) - Writing a module with MakeMaker
+ExtUtils::MakeMaker::bytes [] (3) - Version-agnostic bytes.pm
+ExtUtils::MakeMaker::vmsish [] (3) - Platform-agnostic vmsish.pm
+ExtUtils::Manifest [] (3) - utilities to write and check a MANIFEST file
+ExtUtils::Miniperl [] (3) - write the C code for perlmain.c
+ExtUtils::Mkbootstrap [] (3) - make a bootstrap file for use by DynaLoader
+ExtUtils::Mksymlists [] (3) - write linker options files for dynamic extension
+ExtUtils::Packlist [] (3) - manage .packlist files
+ExtUtils::ParseXS [] (3) - converts Perl XS code into C code
+ExtUtils::testlib [] (3) - add blib/* directories to @INC
+FD_CLR [] (2) - synchronous I/O multiplexing
+FD_ISSET [] (2) - synchronous I/O multiplexing
+FD_SET [] (2) - synchronous I/O multiplexing
+FD_ZERO [] (2) - synchronous I/O multiplexing
+Fatal [] (3) - replace functions with equivalents which succeed or die
+FcAtomicCreate [] (3) - create an FcAtomic object
+FcAtomicDeleteNew [] (3) - delete new file
+FcAtomicDestroy [] (3) - destroy an FcAtomic object
+FcAtomicLock [] (3) - lock a file
+FcAtomicNewFile [] (3) - return new temporary file name
+FcAtomicOrigFile [] (3) - return original file name
+FcAtomicReplaceOrig [] (3) - replace original with new
+FcAtomicUnlock [] (3) - unlock a file
+FcBlanksAdd [] (3) - Add a character to an FcBlanks
+FcBlanksCreate [] (3) - Create an FcBlanks
+FcBlanksDestroy [] (3) - Destroy and FcBlanks
+FcBlanksIsMember [] (3) - Query membership in an FcBlanks
+FcCacheCopySet [] (3) - Returns a copy of the fontset from cache
+FcCacheDir [] (3) - Return directory of cache
+FcCacheNumFont [] (3) - Returns the number of fonts in cache
+FcCacheNumSubdir [] (3) - Return the number of subdirectories in cache
+FcCacheSubdir [] (3) - Return the i'th subdirectory
+FcCharSetAddChar [] (3) - Add a character to a charset
+FcCharSetCopy [] (3) - Copy a charset
+FcCharSetCount [] (3) - Count entries in a charset
+FcCharSetCoverage [] (3) - DEPRECATED return coverage for a Unicode page
+FcCharSetCreate [] (3) - Create an empty character set
+FcCharSetDestroy [] (3) - Destroy a character set
+FcCharSetEqual [] (3) - Compare two charsets
+FcCharSetFirstPage [] (3) - Start enumerating charset contents
+FcCharSetHasChar [] (3) - Check a charset for a char
+FcCharSetIntersect [] (3) - Intersect charsets
+FcCharSetIntersectCount [] (3) - Intersect and count charsets
+FcCharSetIsSubset [] (3) - Test for charset inclusion
+FcCharSetNew [] (3) - DEPRECATED alias for FcCharSetCreate
+FcCharSetNextPage [] (3) - Continue enumerating charset contents
+FcCharSetSubtract [] (3) - Subtract charsets
+FcCharSetSubtractCount [] (3) - Subtract and count charsets
+FcCharSetUnion [] (3) - Add charsets
+FcConfigAppFontAddDir [] (3) - Add fonts from directory to font database
+FcConfigAppFontAddFile [] (3) - Add font file to font database
+FcConfigAppFontClear [] (3) - Remove all app fonts from font database
+FcConfigBuildFonts [] (3) - Build font database
+FcConfigCreate [] (3) - Create a configuration
+FcConfigDestroy [] (3) - Destroy a configuration
+FcConfigEnableHome [] (3) - controls use of the home directory
+FcConfigFilename [] (3) - Find a config file
+FcConfigGetBlanks [] (3) - Get config blanks
+FcConfigGetCache [] (3) - DEPRECATED used to return per-user cache filename
+FcConfigGetCacheDirs [] (3) - return the list of directories searched for cache files
+FcConfigGetConfigDirs [] (3) - Get config directories
+FcConfigGetConfigFiles [] (3) - Get config files
+FcConfigGetCurrent [] (3) - Return current configuration
+FcConfigGetFontDirs [] (3) - Get font directories
+FcConfigGetFonts [] (3) - Get config font set
+FcConfigGetRescanInterval [] (3) - Get config rescan interval
+FcConfigHome [] (3) - return the current home directory
+FcConfigParseAndLoad [] (3) - load a configuration file
+FcConfigSetCurrent [] (3) - Set configuration as default
+FcConfigSetRescanInterval [] (3) - Set config rescan interval
+FcConfigSubstitute [] (3) - Execute substitutions
+FcConfigSubstituteWithPat [] (3) - Execute substitutions
+FcConfigUptoDate [] (3) - Check timestamps on config files
+FcDefaultSubstitute [] (3) - Perform default substitutions in a pattern
+FcDirCacheLoad [] (3) - load a directory cache
+FcDirCacheLoadFile [] (3) - load a cache file
+FcDirCacheRead [] (3) - read or construct a directory cache
+FcDirCacheUnlink [] (3) - Remove all caches related to dir
+FcDirCacheUnload [] (3) - unload a cache file
+FcDirCacheValid [] (3) - check directory cache
+FcDirSave [] (3) - DEPRECATED: formerly used to save a directory cache
+FcDirScan [] (3) - DEPRECATED: formerly used to scan a font directory
+FcFileIsDir [] (3) - check whether a file is a directory
+FcFileScan [] (3) - scan a font file
+FcFini [] (3) - finalize fonconfig library
+FcFontList [] (3) - List fonts
+FcFontMatch [] (3) - Return best font
+FcFontRenderPrepare [] (3) - Prepare pattern for loading font file
+FcFontSetAdd [] (3) - Add to a font set
+FcFontSetCreate [] (3) - Create a font set
+FcFontSetDestroy [] (3) - Destroy a font set
+FcFontSetList [] (3) - List fonts from a set of font sets
+FcFontSetMatch [] (3) - Return the best font from a set of font sets
+FcFontSetPrint [] (3) - Print a set of patterns to stdout
+FcFontSetSort [] (3) - Add to a font set
+FcFontSetSortDestroy [] (3) - DEPRECATED destroy a font set
+FcFontSort [] (3) - Return list of matching fonts
+FcFreeTypeCharIndex [] (3) - map Unicode to glyph id
+FcFreeTypeCharSet [] (3) - compute unicode coverage
+FcFreeTypeCharSetAndSpacing [] (3) - compute unicode coverage and spacing type
+FcFreeTypeQuery [] (3) - compute pattern from font file (and index)
+FcFreeTypeQueryFace [] (3) - compute pattern from FT_Face
+FcGetLangs [] (3) - Get list of languages
+FcGetVersion [] (3) - library version number
+FcInit [] (3) - initialize fontconfig library
+FcInitBringUptoDate [] (3) - reload configuration files if needed
+FcInitLoadConfig [] (3) - load configuration
+FcInitLoadConfigAndFonts [] (3) - load configuration and font data
+FcInitReinitialize [] (3) - re-initialize library
+FcIsLower [] (3) - check for lower case ASCII character
+FcIsUpper [] (3) - check for upper case ASCII character
+FcLangGetCharSet [] (3) - Get character map for a language
+FcLangSetAdd [] (3) - add a language to a langset
+FcLangSetCompare [] (3) - compare language sets
+FcLangSetContains [] (3) - check langset subset relation
+FcLangSetCopy [] (3) - copy a langset object
+FcLangSetCreate [] (3) - create a langset object
+FcLangSetDestroy [] (3) - destroy a langset object
+FcLangSetEqual [] (3) - test for matching langsets
+FcLangSetHasLang [] (3) - test langset for language support
+FcLangSetHash [] (3) - return a hash value for a langset
+FcMatrixCopy [] (3) - Copy a matrix
+FcMatrixEqual [] (3) - Compare two matrices
+FcMatrixInit [] (3) - initialize an FcMatrix structure
+FcMatrixMultiply [] (3) - Multiply matrices
+FcMatrixRotate [] (3) - Rotate a matrix
+FcMatrixScale [] (3) - Scale a matrix
+FcMatrixShear [] (3) - Shear a matrix
+FcNameConstant [] (3) - Get the value for a symbolic constant
+FcNameGetConstant [] (3) - Lookup symbolic constant
+FcNameGetObjectType [] (3) - Lookup an object type
+FcNameParse [] (3) - Parse a pattern string
+FcNameRegisterConstants [] (3) - Register symbolic constants
+FcNameRegisterObjectTypes [] (3) - Register object types
+FcNameUnparse [] (3) - Convert a pattern back into a string that can be parsed
+FcNameUnregisterConstants [] (3) - Unregister symbolic constants
+FcNameUnregisterObjectTypes [] (3) - Unregister object types
+FcObjectSetAdd [] (3) - Add to an object set
+FcObjectSetBuild [] (3) - Build object set from args
+FcObjectSetCreate [] (3) - Create an object set
+FcObjectSetDestroy [] (3) - Destroy an object set
+FcObjectSetVaBuild [] (3) - Build object set from args
+FcObjectSetVapBuild [] (3) - Build object set from args
+FcPatternAdd [] (3) - Add a value to a pattern
+FcPatternAddBool [] (3) - Add a typed value to a pattern
+FcPatternAddCharSet [] (3) - Add a typed value to a pattern
+FcPatternAddDouble [] (3) - Add a typed value to a pattern
+FcPatternAddFTFace [] (3) - Add a typed value to a pattern
+FcPatternAddInteger [] (3) - Add a typed value to a pattern
+FcPatternAddLangSet [] (3) - Add a typed value to a pattern
+FcPatternAddMatrix [] (3) - Add a typed value to a pattern
+FcPatternAddString [] (3) - Add a typed value to a pattern
+FcPatternAddWeak [] (3) - Add a value to a pattern with weak binding
+FcPatternBuild [] (3) - Create patterns from arguments
+FcPatternCreate [] (3) - Create a pattern
+FcPatternDel [] (3) - Delete a property from a pattern
+FcPatternDestroy [] (3) - Destroy a pattern
+FcPatternDuplicate [] (3) - Copy a pattern
+FcPatternEqual [] (3) - Compare patterns
+FcPatternEqualSubset [] (3) - Compare portions of patterns
+FcPatternGet [] (3) - Return a value from a pattern
+FcPatternGetBool [] (3) - Return a typed value from a pattern
+FcPatternGetCharSet [] (3) - Return a typed value from a pattern
+FcPatternGetDouble [] (3) - Return a typed value from a pattern
+FcPatternGetFTFace [] (3) - Return a typed value from a pattern
+FcPatternGetInteger [] (3) - Return a typed value from a pattern
+FcPatternGetLangSet [] (3) - Return a typed value from a pattern
+FcPatternGetMatrix [] (3) - Return a typed value from a pattern
+FcPatternGetString [] (3) - Return a typed value from a pattern
+FcPatternHash [] (3) - Compute a pattern hash value
+FcPatternPrint [] (3) - Print a pattern for debugging
+FcPatternReference [] (3) - Increment pattern reference count
+FcPatternRemove [] (3) - Remove one object of the specified type from the pattern
+FcPatternVaBuild [] (3) - Create patterns from arguments
+FcPatternVapBuild [] (3) - Create patterns from arguments
+FcStrBasename [] (3) - last component of filename
+FcStrCmp [] (3) - compare UTF-8 strings
+FcStrCmpIgnoreCase [] (3) - compare UTF-8 strings ignoring case
+FcStrCopy [] (3) - duplicate a string
+FcStrCopyFilename [] (3) - create a complete path from a filename
+FcStrDirname [] (3) - directory part of filename
+FcStrDowncase [] (3) - create a lower case translation of a string
+FcStrFree [] (3) - free a string
+FcStrListCreate [] (3) - create a string iterator
+FcStrListDone [] (3) - destroy a string iterator
+FcStrListNext [] (3) - get next string in iteration
+FcStrPlus [] (3) - concatenate two strings
+FcStrSetAdd [] (3) - add to a string set
+FcStrSetAddFilename [] (3) - add a filename to a string set
+FcStrSetCreate [] (3) - create a string set
+FcStrSetDel [] (3) - delete from a string set
+FcStrSetDestroy [] (3) - destroy a string set
+FcStrSetEqual [] (3) - check sets for equality
+FcStrSetMember [] (3) - check set for membership
+FcStrStr [] (3) - locate UTF-8 substring
+FcStrStrIgnoreCase [] (3) - locate UTF-8 substring ignoring ASCII case
+FcToLower [] (3) - convert upper case ASCII to lower case
+FcUcs4ToUtf8 [] (3) - convert UCS4 to UTF-8
+FcUtf16Len [] (3) - count UTF-16 encoded chars
+FcUtf16ToUcs4 [] (3) - convert UTF-16 to UCS4
+FcUtf8Len [] (3) - count UTF-8 encoded chars
+FcUtf8ToUcs4 [] (3) - convert UTF-8 to UCS4
+FcValueDestroy [] (3) - Free a value
+FcValueEqual [] (3) - Test two values for equality
+FcValuePrint [] (3) - Print a value to stdout
+FcValueSave [] (3) - Copy a value
+Fcntl [] (3) - load the C Fcntl.h defines
+File::Basename [] (3) - Parse file paths into directory, filename and suffix
+File::CheckTree [] (3) - run many filetest checks on a tree
+File::Compare [] (3) - Compare files or filehandles
+File::Copy [] (3) - Copy files or filehandles
+File::DosGlob [] (3) - DOS like globbing and then some
+File::Fetch [] (3) - A generic file fetching mechanism
+File::Find [] (3) - Traverse a directory tree
+File::Glob [] (3) - Perl extension for BSD glob routine
+File::GlobMapper [] (3) - Extend File Glob to Allow Input and Output Files
+File::Path [] (3) - Create or remove directory trees
+File::Spec [] (3) - portably perform operations on file names
+File::Spec::Cygwin [] (3) - methods for Cygwin file specs
+File::Spec::Epoc [] (3) - methods for Epoc file specs
+File::Spec::Functions [] (3) - portably perform operations on file names
+File::Spec::Mac [] (3) - File::Spec for Mac OS (Classic)
+File::Spec::OS2 [] (3) - methods for OS/2 file specs
+File::Spec::Unix [] (3) - File::Spec for Unix, base for other File::Spec modules
+File::Spec::VMS [] (3) - methods for VMS file specs
+File::Spec::Win32 [] (3) - methods for Win32 file specs
+File::Temp [] (3) - return name and handle of a temporary file safely
+File::stat [] (3) - by-name interface to Perl's built-in stat() functions
+FileCache [] (3) - keep more files open than the system permits
+FileHandle [] (3) - supply object methods for filehandles
+Filter::Simple [] (3) - Simplified source filtering
+Filter::Util::Call [] (3) - Perl Source Filter Utility Module
+Finch [] (1) - A Pimpin' Penguin console frontend to libpurple. Instant Messaging client
+FindBin [] (3) - Locate directory of original perl script
+FvwmAnimate [] (1) - the Fvwm Animate module
+FvwmAuto [] (1) - the FVWM auto-raise module
+FvwmBacker [] (1) - the FVWM background changer module
+FvwmBanner [] (1) - the FVWM Banner
+FvwmButtons [] (1) - the FVWM buttonbox module
+FvwmCommand [] (1) - FVWM command external interface
+FvwmConsole [] (1) - an FVWM command input interface
+FvwmConsoleC.pl [] (1) - Command editor for FVWM command input interface
+FvwmCpp [] (1) - the FVWM Cpp pre-processor
+FvwmDebug [] (1) - the FVWM module debugger
+FvwmDragWell [] (1) - A XDND drag well
+FvwmEvent [] (1) - the FVWM Event module
+FvwmForm [] (1) - input form module for Fvwm
+FvwmGtk [] (1) - the Fvwm GTK module
+FvwmIconBox [] (1) - the FVWM icon box module
+FvwmIconMan [] (1) - an Fvwm Icon Manager
+FvwmIdent [] (1) - the FVWM identify-window module
+FvwmM4 [] (1) - the FVWM M4 pre-processor
+FvwmPager [] (1) - the FVWM Pager module
+FvwmRearrange [] (1) - rearrange FVWM windows
+FvwmSave [] (1) - the FVWM desktop-layout saving module
+FvwmSaveDesk [] (1) - another FVWM desktop-layout saving module
+FvwmScript [] (1) - module to build graphic user interface
+FvwmScroll [] (1) - the FVWM scroll-bar module
+FvwmTaskBar [] (1) - the FVWM taskbar module
+FvwmTheme [] (1) - an FVWM module for managing the appearance of FVWM and its modules
+FvwmWharf [] (1) - the AfterStep application dock module ported to Fvwm
+FvwmWinList [] (1) - the FVWM window list module
+GDBM [] (3) - The GNU database manager. Includes dbm and ndbm compatability. (Version .)
+GDBM_File [] (3) - Perl5 access to the gdbm library
+GDBM_File [] (3) - various DBM implementations
+GNU Parted [] (8) - a partition manipulation program
+GQview [] (1) - GTK based multiformat image viewer
+Getopt::Long [] (3) - Extended processing of command line options
+Git [] (3) - Perl interface to the Git version control system
+GnuPG [] (7) - The GNU Privacy Guard suite of programs
+HMAC [] (3) - HMAC message authentication code
+HMAC_Final [] (3) - HMAC message authentication code
+HMAC_Init [] (3) - HMAC message authentication code
+HMAC_Update [] (3) - HMAC message authentication code
+HMAC_cleanup [] (3) - HMAC message authentication code
+HTB [] (8) - Hierarchy Token Bucket
+HUGE_VAL [] (3) - floating-point constants
+HUGE_VALF [] (3) - floating-point constants
+HUGE_VALL [] (3) - floating-point constants
+Hash::Util [] (3) - A selection of general-utility hash subroutines
+Hash::Util::FieldHash [] (3) - Support for Inside-Out Classes
+HeightMMOfScreen [] (3) - screen information functions and macros
+HeightOfScreen [] (3) - screen information functions and macros
+I18N::Collate [] (3) - compare 8-bit scalar data according to the current locale
+I18N::LangTags [] (3) - functions for dealing with RFC3066-style language tags
+I18N::LangTags::Detect [] (3) - detect the user's language preferences
+I18N::LangTags::List [] (3) - - tags and names for human languages
+I18N::Langinfo [] (3) - query locale information
+IMAPd [] (8) - Internet Message Access Protocol server
+INFINITY [] (3) - floating-point constants
+INSTALL [] (3) - How to install and configure DBD::mysql
+IO [] (3) - load various IO modules
+IO::Compress::Base [] (3) - Base Class for IO::Compress modules
+IO::Compress::Deflate [] (3) - Write RFC 1950 files/buffers
+IO::Compress::Gzip [] (3) - Write RFC 1952 files/buffers
+IO::Compress::RawDeflate [] (3) - Write RFC 1951 files/buffers
+IO::Compress::Zip [] (3) - Write zip files/buffers
+IO::Dir [] (3) - supply object methods for directory handles
+IO::File [] (3) - supply object methods for filehandles
+IO::Handle [] (3) - supply object methods for I/O handles
+IO::Pipe [] (3) - supply object methods for pipes
+IO::Poll [] (3) - Object interface to system poll call
+IO::Seekable [] (3) - supply seek based methods for I/O objects
+IO::Select [] (3) - OO interface to the select system call
+IO::Socket [] (3) - Object interface to socket communications
+IO::Socket::INET [] (3) - Object interface for AF_INET domain sockets
+IO::Socket::UNIX [] (3) - Object interface for AF_UNIX domain sockets
+IO::Uncompress::AnyInflate [] (3) - Uncompress zlib-based (zip, gzip) file/buffer
+IO::Uncompress::AnyUncompress [] (3) - Uncompress gzip, zip, bzip2 or lzop file/buffer
+IO::Uncompress::Base [] (3) - Base Class for IO::Uncompress modules
+IO::Uncompress::Gunzip [] (3) - Read RFC 1952 files/buffers
+IO::Uncompress::Inflate [] (3) - Read RFC 1950 files/buffers
+IO::Uncompress::RawInflate [] (3) - Read RFC 1951 files/buffers
+IO::Uncompress::Unzip [] (3) - Read zip files/buffers
+IO::Zlib [] (3) - IO:: style interface to Compress::Zlib
+IPC::Cmd [] (3) - finding and running system commands made easy
+IPC::Msg [] (3) - SysV Msg IPC object class
+IPC::Open2 [] (3) - open a process for both reading and writing
+IPC::Open3 [] (3) - open a process for reading, writing, and error handling
+IPC::Semaphore [] (3) - SysV Semaphore IPC object class
+IPC::SysV [] (3) - SysV IPC constants
+IPOPd [] (8) - Post Office Protocol server
+IPPROTO_ICMP [] (7) - Linux IPv4 ICMP kernel module
+Image::Magick [] (3) - Perl extension for calling ImageMagick's libMagick methods
+ImageByteOrder [] (3) - image format functions and macros
+ImageMagick [] (1) - is a free software suite for the creation, modification and display of bitmap images
+Irssi [] (1) - a modular IRC client for UNIX
+IsCursorKey [] (3) - keysym classification macros
+IsFunctionKey [] (3) - keysym classification macros
+IsKeypadKey [] (3) - keysym classification macros
+IsMiscFunctionKey [] (3) - keysym classification macros
+IsModifierKey [] (3) - keysym classification macros
+IsPFKey [] (3) - keysym classification macros
+IsPrivateKeypadKey [] (3) - keysym classification macros
+Jed [] (1) - programmers editor
+Juggler3D [] (6) - a 3D juggling simulation
+Kaleidescope [] (6) - rotating line segments
+LHa [] (1) - LZH un-archiver
+LIST_ENTRY [] (3) - implementations of lists, tail queues, and circular queues
+LIST_HEAD [] (3) - implementations of lists, tail queues, and circular queues
+LIST_INIT [] (3) - implementations of lists, tail queues, and circular queues
+LIST_INSERT_AFTER [] (3) - implementations of lists, tail queues, and circular queues
+LIST_INSERT_HEAD [] (3) - implementations of lists, tail queues, and circular queues
+LIST_REMOVE [] (3) - implementations of lists, tail queues, and circular queues
+LastKnownRequestProcessed [] (3) - Display macros and functions
+List::Util [] (3) - A selection of general-utility list subroutines
+Locale::Constants [] (3) - constants for Locale codes
+Locale::Country [] (3) - ISO codes for country identification (ISO 3166)
+Locale::Currency [] (3) - ISO three letter codes for currency identification (ISO 4217)
+Locale::Language [] (3) - ISO two letter codes for language identification (ISO 639)
+Locale::Maketext [] (3) - framework for localization
+Locale::Maketext::Simple [] (3) - Simple interface to Locale::Maketext::Lexicon
+Locale::Maketext::TPJ13 [] (3) - - article about software localization
+Locale::Script [] (3) - ISO codes for script identification (ISO 15924)
+Log::Message [] (3) - A generic message storing mechanism;
+Log::Message::Config [] (3) - Configuration options for Log::Message
+Log::Message::Handlers [] (3) - Message handlers for Log::Message
+Log::Message::Item [] (3) - Message objects for Log::Message
+M17NObjectHead [] (3) - The first member of a managed object
+MAKEDEV [] (8) - create devices
+MB_CUR_MAX [] (3) - maximum length of a multibyte character in the current locale
+MB_LEN_MAX [] (3) - maximum multibyte length of a character across all locales
+MD2 [] (3) - MD2, MD4, and MD5 hash functions
+MD2_Final [] (3) - MD2, MD4, and MD5 hash functions
+MD2_Init [] (3) - MD2, MD4, and MD5 hash functions
+MD2_Update [] (3) - MD2, MD4, and MD5 hash functions
+MD4 [] (3) - MD2, MD4, and MD5 hash functions
+MD4_Final [] (3) - MD2, MD4, and MD5 hash functions
+MD4_Init [] (3) - MD2, MD4, and MD5 hash functions
+MD4_Update [] (3) - MD2, MD4, and MD5 hash functions
+MD5 [] (3) - MD2, MD4, and MD5 hash functions
+MD5_Final [] (3) - MD2, MD4, and MD5 hash functions
+MD5_Init [] (3) - MD2, MD4, and MD5 hash functions
+MD5_Update [] (3) - MD2, MD4, and MD5 hash functions
+MDC2 [] (3) - MDC2 hash function
+MDC2_Final [] (3) - MDC2 hash function
+MDC2_Init [] (3) - MDC2 hash function
+MDC2_Update [] (3) - MDC2 hash function
+MDrawMetric [] (3) - Type of metric for glyphs and texts
+MIME [] (1) - Multipurpose Internet Mail Extensions
+MIME::Base64 [] (3) - Encoding and decoding of base64 strings
+MIME::QuotedPrint [] (3) - Encoding and decoding of quoted-printable strings
+MMDF [] (5) - Multi-channel Memorandum Distribution Facility mailbox format
+Magick [] (1) - config - get information about the installed version of ImageMagick
+Magick++ [] (1) - config - get information about the installed version of Magick++
+MagickCore [] (1) - config - get information about the installed version of ImageMagick
+MagickWand [] (1) - config - get information about the installed version of the Magick Wand
+Math::BigFloat [] (3) - Arbitrary size floating point math package
+Math::BigInt [] (3) - Arbitrary size integer/float math package
+Math::BigInt::Calc [] (3) - Pure Perl module to support Math::BigInt
+Math::BigInt::CalcEmu [] (3) - Emulate low-level math with BigInt code
+Math::BigInt::FastCalc [] (3) - Math::BigInt::Calc with some XS for more speed
+Math::BigRat [] (3) - Arbitrary big rational numbers
+Math::Complex [] (3) - complex numbers and associated mathematical functions
+Math::Trig [] (3) - trigonometric functions
+MaxCmapsOfScreen [] (3) - screen information functions and macros
+Memoize [] (3) - Make functions faster by trading space for time
+Memoize::AnyDBM_File [] (3) - glue to provide EXISTS for AnyDBM_File for Storable use
+Memoize::Expire [] (3) - Plug-in module for automatic expiration of memoized values
+Memoize::ExpireFile [] (3) - test for Memoize expiration semantics
+Memoize::ExpireTest [] (3) - test for Memoize expiration semantics
+Memoize::NDBM_File [] (3) - glue to provide EXISTS for NDBM_File for Storable use
+Memoize::SDBM_File [] (3) - glue to provide EXISTS for SDBM_File for Storable use
+Memoize::Storable [] (3) - store Memoized data in Storable database
+MinCmapsOfScreen [] (3) - screen information functions and macros
+Module::Build [] (3) - Build and install Perl modules
+Module::Build::API [] (3) - API Reference for Module Authors
+Module::Build::Authoring [] (3) - Authoring Module::Build modules
+Module::Build::Base [] (3) - Default methods for Module::Build
+Module::Build::Compat [] (3) - Compatibility with ExtUtils::MakeMaker
+Module::Build::ConfigData [] (3) - Configuration for Module::Build
+Module::Build::Cookbook [] (3) - Examples of Module::Build Usage
+Module::Build::PPMMaker [] (3) - Perl Package Manager file creation
+Module::Build::Platform::Amiga [] (3) - Builder class for Amiga platforms
+Module::Build::Platform::Default [] (3) - Stub class for unknown platforms
+Module::Build::Platform::EBCDIC [] (3) - Builder class for EBCDIC platforms
+Module::Build::Platform::MPEiX [] (3) - Builder class for MPEiX platforms
+Module::Build::Platform::MacOS [] (3) - Builder class for MacOS platforms
+Module::Build::Platform::RiscOS [] (3) - Builder class for RiscOS platforms
+Module::Build::Platform::Unix [] (3) - Builder class for Unix platforms
+Module::Build::Platform::VMS [] (3) - Builder class for VMS platforms
+Module::Build::Platform::VOS [] (3) - Builder class for VOS platforms
+Module::Build::Platform::Windows [] (3) - Builder class for Windows platforms
+Module::Build::Platform::aix [] (3) - Builder class for AIX platform
+Module::Build::Platform::cygwin [] (3) - Builder class for Cygwin platform
+Module::Build::Platform::darwin [] (3) - Builder class for Mac OS X platform
+Module::Build::Platform::os2 [] (3) - Builder class for OS/2 platform
+Module::Build::YAML [] (3) - Provides just enough YAML support so that Module::Build works even if YAML.pm is not installed
+Module::CoreList [] (3) - what modules shipped with versions of perl
+Module::Load [] (3) - runtime require of both modules and files
+Module::Load::Conditional [] (3) - Looking up module information / loading at runtime
+Module::Loaded [] (3) - mark modules as loaded or unloaded
+Module::Pluggable [] (3) - automatically give your module the ability to have plugins
+Module::Pluggable::Object [] (3) - automatically give your module the ability to have plugins
+ModuleInfo [] (3) - Gather package and POD information from a perl module files
+NAN [] (3) - floating-point constants
+NDBM_File [] (3) - various DBM implementations
+NETLINK_ROUTE [] (7) - Linux IPv4 routing socket
+NEXT.pm [] (3) - Provide a pseudo-class NEXT (et al) that allows method redispatch
+Net [] (3) - SNMP Agent handler and extensibility API - The basic theory goes something like this: In the past, with the original mib module api (which derived from the original CMU SNMP code) the underlying mib modules were passed very little information (only the truly most basic information about a request)
+Net::Cmd [] (3) - Network Command class (as used by FTP, SMTP etc)
+Net::Config [] (3) - Local configuration data for libnet
+Net::Domain [] (3) - Attempt to evaluate the current host's internet name and domain
+Net::FTP [] (3) - FTP Client class
+Net::NNTP [] (3) - NNTP Client class
+Net::Netrc [] (3) - OO interface to users netrc file
+Net::POP3 [] (3) - Post Office Protocol 3 Client class (RFC1939)
+Net::Ping [] (3) - check a remote host for reachability
+Net::SMTP [] (3) - Simple Mail Transfer Protocol Client
+Net::Time [] (3) - time and daytime network client interface
+Net::hostent [] (3) - by-name interface to Perl's built-in gethost*() functions
+Net::netent [] (3) - by-name interface to Perl's built-in getnet*() functions
+Net::protoent [] (3) - by-name interface to Perl's built-in getproto*() functions
+Net::servent [] (3) - by-name interface to Perl's built-in getserv*() functions
+NetSNMP::ASN [] (3) - Perl extension for SNMP ASN.1 types
+NetSNMP::OID [] (3) - Perl extension for manipulating OIDs
+NetSNMP::TrapReceiver [] (3) - Embedded perl trap handling for Net-SNMP's snmptrapd
+NetSNMP::agent [] (3) - Perl extension for the net-snmp agent
+NetSNMP::agent::default_store [] (3) - Perl extension for Net-SNMP agent default storage
+NetSNMP::agent::netsnmp_request_infoPtr [] (3) - Perl extension for request information
+NetSNMP::default_store [] (3) - Perl extension for Net-SNMP generic storage of global data
+Netwatch [] (1) - Ethernet Internet Protocol Monitor
+NextRequest [] (3) - Display macros and functions
+O [] (3) - Generic interface to Perl Compiler backends
+OBJ_cleanup [] (3) - ASN1 object utility functions
+OBJ_cmp [] (3) - ASN1 object utility functions
+OBJ_create [] (3) - ASN1 object utility functions
+OBJ_dup [] (3) - ASN1 object utility functions
+OBJ_ln2nid [] (3) - ASN1 object utility functions
+OBJ_nid2ln [] (3) - ASN1 object utility functions
+OBJ_nid2obj [] (3) - ASN1 object utility functions
+OBJ_nid2sn [] (3) - ASN1 object utility functions
+OBJ_obj2nid [] (3) - ASN1 object utility functions
+OBJ_obj2txt [] (3) - ASN1 object utility functions
+OBJ_sn2nid [] (3) - ASN1 object utility functions
+OBJ_txt2nid [] (3) - ASN1 object utility functions
+OBJ_txt2obj [] (3) - ASN1 object utility functions
+ODBM_File [] (3) - various DBM implementations
+OMAPI [] (3) - Object Management Application Programming Interface
+OPENSSL_Applink [] (3) - glue between OpenSSL BIO and Win32 compiler run-time
+OPENSSL_VERSION_NUMBER [] (3) - get OpenSSL version number
+OPENSSL_config [] (3) - simple OpenSSL configuration functions
+OPENSSL_ia32cap [] (3) - finding the IA-32 processor capabilities
+OPENSSL_load_builtin_modules [] (3) - add standard configuration modules
+OPENSSL_no_config [] (3) - simple OpenSSL configuration functions
+OSSP mm [] (3) - Shared Memory Allocation
+Opcode [] (3) - Disable named opcodes when compiling perl code
+OpenSSL_add_all_algorithms [] (3) - add algorithms to internal table
+OpenSSL_add_all_ciphers [] (3) - add algorithms to internal table
+OpenSSL_add_all_digests [] (3) - add algorithms to internal table
+OpenSSL_add_ssl_algorithms [] (3) - initialize SSL library by registering algorithms
+PAIR_NUMBER [] (3) - curses character and window attribute control routines
+PCRE [] (3) - Perl-compatible regular expressions
+PEM [] (3) - PEM routines
+PKCS12_create [] (3) - create a PKCS#12 structure
+PKCS12_parse [] (3) - parse a PKCS#12 structure
+PKCS7_decrypt [] (3) - decrypt content from a PKCS#7 envelopedData structure
+PKCS7_encrypt [] (3) - create a PKCS#7 envelopedData structure
+PKCS7_sign [] (3) - create a PKCS#7 signedData structure
+PKCS7_verify [] (3) - verify a PKCS#7 signedData structure
+POSIX [] (3) - Perl interface to IEEE Std 1003.1
+PRIO [] (8) - Priority qdisc
+Package::Constants [] (3) - List all constants declared in a package
+Params::Check [] (3) - A generic input parsing/checking mechanism
+PerlIO [] (3) - On demand loader for PerlIO layers and root of PerlIO::* name space
+PerlIO::encoding [] (3) - encoding layer
+PerlIO::scalar [] (3) - in-memory IO, scalar IO
+PerlIO::via [] (3) - Helper class for PerlIO layers implemented in perl
+PerlIO::via::QuotedPrint [] (3) - PerlIO layer for quoted-printable strings
+Pidgin [] (3) - Perl extension for the Pidgin instant messenger
+PlanesOfScreen [] (3) - screen information functions and macros
+Pnews [] (1) - a program for posting news articles
+Pod::Checker [] (3) - check pod documents for syntax errors
+Pod::Escapes [] (3) - - for resolving Pod E<...> sequences
+Pod::Find [] (3) - find POD documents in directory trees
+Pod::Html [] (3) - module to convert pod files to HTML
+Pod::InputObjects [] (3) - objects representing POD input paragraphs, commands, etc
+Pod::LaTeX [] (3) - Convert Pod data to formatted Latex
+Pod::Man [] (3) - Convert POD data to formatted *roff input
+Pod::ParseLink [] (3) - Parse an L<> formatting code in POD text
+Pod::ParseUtils [] (3) - helpers for POD parsing and conversion
+Pod::Parser [] (3) - base class for creating POD filters and translators
+Pod::Perldoc::ToChecker [] (3) - let Perldoc check Pod for errors
+Pod::Perldoc::ToMan [] (3) - let Perldoc render Pod as man pages
+Pod::Perldoc::ToNroff [] (3) - let Perldoc convert Pod to nroff
+Pod::Perldoc::ToPod [] (3) - let Perldoc render Pod as ... Pod!
+Pod::Perldoc::ToRtf [] (3) - let Perldoc render Pod as RTF
+Pod::Perldoc::ToText [] (3) - let Perldoc render Pod as plaintext
+Pod::Perldoc::ToTk [] (3) - let Perldoc use Tk::Pod to render Pod
+Pod::Perldoc::ToXml [] (3) - let Perldoc render Pod as XML
+Pod::PlainText [] (3) - Convert POD data to formatted ASCII text
+Pod::Plainer [] (3) - Perl extension for converting Pod to old style Pod
+Pod::Select [] (3) - extract selected sections of POD from input
+Pod::Simple [] (3) - framework for parsing Pod
+Pod::Simple::Checker [] (3) - - check the Pod syntax of a document
+Pod::Simple::Debug [] (3) - - put Pod::Simple into trace/debug mode
+Pod::Simple::DumpAsText [] (3) - - dump Pod-parsing events as text
+Pod::Simple::DumpAsXML [] (3) - - turn Pod into XML
+Pod::Simple::HTML [] (3) - convert Pod to HTML
+Pod::Simple::HTMLBatch [] (3) - convert several Pod files to several HTML files
+Pod::Simple::LinkSection [] (3) - - represent section attributes of L codes
+Pod::Simple::Methody [] (3) - - turn Pod::Simple events into method calls
+Pod::Simple::PullParser [] (3) - - a pull-parser interface to parsing Pod
+Pod::Simple::PullParserEndToken [] (3) - - end-tokens from Pod::Simple::PullParser
+Pod::Simple::PullParserStartToken [] (3) - - start-tokens from Pod::Simple::PullParser
+Pod::Simple::PullParserTextToken [] (3) - - text-tokens from Pod::Simple::PullParser
+Pod::Simple::PullParserToken [] (3) - - tokens from Pod::Simple::PullParser
+Pod::Simple::RTF [] (3) - - format Pod as RTF
+Pod::Simple::Search [] (3) - find POD documents in directory trees
+Pod::Simple::SimpleTree [] (3) - - parse Pod into a simple parse tree
+Pod::Simple::Subclassing [] (3) - - write a formatter as a Pod::Simple subclass
+Pod::Simple::Text [] (3) - - format Pod as plaintext
+Pod::Simple::TextContent [] (3) - - get the text content of Pod
+Pod::Simple::XMLOutStream [] (3) - - turn Pod into XML
+Pod::Text [] (3) - Convert POD data to formatted ASCII text
+Pod::Text::Color [] (3) - Convert POD data to formatted color ASCII text
+Pod::Text::Overstrike [] (3) - Convert POD data to formatted overstrike text
+Pod::Text::Termcap [] (3) - Convert POD data to ASCII text with format escapes
+Pod::Usage [] (3) - print a usage message from embedded pod documentation
+ProtocolRevision [] (3) - Display macros and functions
+ProtocolVersion [] (3) - Display macros and functions
+Purple [] (3) - Perl extension to the libpurple instant messenger library
+Q [] (3) - 1)) && ! e.quit?) p e d.refresh end
+QLength [] (3) - Display macros and functions
+RAND_SSLeay [] (3) - select RAND method
+RAND_add [] (3) - add entropy to the PRNG
+RAND_bytes [] (3) - generate random data
+RAND_cleanup [] (3) - erase the PRNG state
+RAND_egd [] (3) - query entropy gathering daemon
+RAND_event [] (3) - add entropy to the PRNG
+RAND_file_name [] (3) - PRNG seed file
+RAND_get_rand_method [] (3) - select RAND method
+RAND_load_file [] (3) - PRNG seed file
+RAND_pseudo_bytes [] (3) - generate random data
+RAND_screen [] (3) - add entropy to the PRNG
+RAND_seed [] (3) - add entropy to the PRNG
+RAND_set_rand_method [] (3) - select RAND method
+RAND_status [] (3) - add entropy to the PRNG
+RAND_write_file [] (3) - PRNG seed file
+RC4 [] (3) - RC4 encryption
+RC4_set_key [] (3) - RC4 encryption
+README.BS2000 [] (1) - building and installing Perl for BS2000
+README.aix [] (1) - Perl version 5 on IBM Unix (AIX) systems
+README.apollo [] (1) - Perl version 5 on Apollo DomainOS
+README.beos [] (1) - Perl version 5.8+ on BeOS
+README.cygwin [] (1) - Perl for Cygwin
+README.epoc [] (1) - Perl for EPOC
+README.freebsd [] (1) - Perl version 5 on FreeBSD systems
+README.hpux [] (1) - Perl version 5 on Hewlett-Packard Unix (HP-UX) systems
+README.hurd [] (1) - Perl version 5 on Hurd
+README.irix [] (1) - Perl version 5 on Irix systems
+README.linux [] (1) - Perl version 5 on Linux systems
+README.machten [] (1) - Perl version 5 on Power MachTen systems
+README.macos [] (1) - Perl under Mac OS (Classic)
+README.macosx [] (1) - Perl under Mac OS X
+README.mint [] (1) - Perl version 5 on Atari MiNT
+README.mpeix [] (1) - Perl/iX for HP e3000 MPE
+README.openbsd [] (1) - Perl version 5 on OpenBSD systems
+README.os390 [] (1) - building and installing Perl for OS/390 and z/OS
+README.os400 [] (1) - Perl version 5 on OS/400
+README.qnx [] (1) - Perl version 5 on QNX
+README.riscos [] (1) - Perl version 5 for RISC OS
+README.solaris [] (1) - Perl version 5 on Solaris systems
+README.symbian [] (1) - Perl version 5 on Symbian OS
+README.tru64 [] (1) - Perl version 5 on Tru64 (formerly known as Digital UNIX formerly known as DEC OSF/1) systems
+README.vmesa [] (1) - building and installing Perl for VM/ESA
+README.vos [] (1) - Perl for Stratus VOS
+RIPEMD160 [] (3) - RIPEMD - 160 hash function
+RIPEMD160_Final [] (3) - RIPEMD - 160 hash function
+RIPEMD160_Init [] (3) - RIPEMD - 160 hash function
+RIPEMD160_Update [] (3) - RIPEMD - 160 hash function
+RSA_PKCS1_SSLeay [] (3) - select RSA method
+RSA_blinding_off [] (3) - protect the RSA operation from timing attacks
+RSA_blinding_on [] (3) - protect the RSA operation from timing attacks
+RSA_check_key [] (3) - validate private RSA keys
+RSA_flags [] (3) - select RSA method
+RSA_free [] (3) - allocate and free RSA objects
+RSA_generate_key [] (3) - generate RSA key pair
+RSA_get_default_method [] (3) - select RSA method
+RSA_get_ex_data [] (3) - add application specific data to RSA structures
+RSA_get_ex_new_index [] (3) - add application specific data to RSA structures
+RSA_get_method [] (3) - select RSA method
+RSA_new [] (3) - allocate and free RSA objects
+RSA_new_method [] (3) - select RSA method
+RSA_null_method [] (3) - select RSA method
+RSA_padding_add_PKCS1_OAEP [] (3) - asymmetric encryption padding
+RSA_padding_add_PKCS1_type_1 [] (3) - asymmetric encryption padding
+RSA_padding_add_PKCS1_type_2 [] (3) - asymmetric encryption padding
+RSA_padding_add_SSLv23 [] (3) - asymmetric encryption padding
+RSA_padding_add_none [] (3) - asymmetric encryption padding
+RSA_padding_check_PKCS1_OAEP [] (3) - asymmetric encryption padding
+RSA_padding_check_PKCS1_type_1 [] (3) - asymmetric encryption padding
+RSA_padding_check_PKCS1_type_2 [] (3) - asymmetric encryption padding
+RSA_padding_check_SSLv23 [] (3) - asymmetric encryption padding
+RSA_padding_check_none [] (3) - asymmetric encryption padding
+RSA_print [] (3) - print cryptographic parameters
+RSA_print_fp [] (3) - print cryptographic parameters
+RSA_private_decrypt [] (3) - RSA public key cryptography
+RSA_private_encrypt [] (3) - low level signature operations
+RSA_public_decrypt [] (3) - low level signature operations
+RSA_public_encrypt [] (3) - RSA public key cryptography
+RSA_set_default_method [] (3) - select RSA method
+RSA_set_ex_data [] (3) - add application specific data to RSA structures
+RSA_set_method [] (3) - select RSA method
+RSA_sign [] (3) - RSA signatures
+RSA_sign_ASN1_OCTET_STRING [] (3) - RSA signatures
+RSA_size [] (3) - get RSA modulus size
+RSA_verify [] (3) - RSA signatures
+RSA_verify_ASN1_OCTET_STRING [] (3) - RSA signatures
+Rnmail [] (1) - a program for replying via mail
+RootWindow [] (3) - Display macros and functions
+RootWindowOfScreen [] (3) - screen information functions and macros
+SASL [] (3) - SASL authentication library
+SDBM_File [] (3) - Tied access to sdbm files
+SDBM_File [] (3) - various DBM implementations
+SDLKey (3) - SDL Keysym Definitions
+SDLKey [] (3) - SDL Keysym Definitions
+SDL_ActiveEvent (3) - Application visibility event structure
+SDL_ActiveEvent [] (3) - Application visibility event structure
+SDL_AddTimer (3) - Add a timer which will call a callback after the specified number of milliseconds has elapsed
+SDL_AddTimer [] (3) - Add a timer which will call a callback after the specified number of milliseconds has elapsed
+SDL_AudioCVT (3) - Audio Conversion Structure
+SDL_AudioCVT [] (3) - Audio Conversion Structure
+SDL_AudioSpec (3) - Audio Specification Structure
+SDL_AudioSpec [] (3) - Audio Specification Structure
+SDL_BlitSurface (3) - This performs a fast blit from the source surface to the destination surface
+SDL_BlitSurface [] (3) - This performs a fast blit from the source surface to the destination surface
+SDL_BuildAudioCVT (3) - Initializes a SDL_AudioCVT structure for conversion
+SDL_BuildAudioCVT [] (3) - Initializes a SDL_AudioCVT structure for conversion
+SDL_CD (3) - CDROM Drive Information
+SDL_CD [] (3) - CDROM Drive Information
+SDL_CDClose (3) - Closes a SDL_CD handle
+SDL_CDClose [] (3) - Closes a SDL_CD handle
+SDL_CDEject (3) - Ejects a CDROM
+SDL_CDEject [] (3) - Ejects a CDROM
+SDL_CDName (3) - Returns a human-readable, system-dependent identifier for the CD-ROM
+SDL_CDName [] (3) - Returns a human-readable, system-dependent identifier for the CD-ROM
+SDL_CDNumDrives (3) - Returns the number of CD-ROM drives on the system
+SDL_CDNumDrives [] (3) - Returns the number of CD-ROM drives on the system
+SDL_CDOpen (3) - Opens a CD-ROM drive for access
+SDL_CDOpen [] (3) - Opens a CD-ROM drive for access
+SDL_CDPause (3) - Pauses a CDROM
+SDL_CDPause [] (3) - Pauses a CDROM
+SDL_CDPlay (3) - Play a CD
+SDL_CDPlay [] (3) - Play a CD
+SDL_CDPlayTracks (3) - Play the given CD track(s)
+SDL_CDPlayTracks [] (3) - Play the given CD track(s)
+SDL_CDResume (3) - Resumes a CDROM
+SDL_CDResume [] (3) - Resumes a CDROM
+SDL_CDStatus (3) - Returns the current status of the given drive
+SDL_CDStatus [] (3) - Returns the current status of the given drive
+SDL_CDStop (3) - Stops a CDROM
+SDL_CDStop [] (3) - Stops a CDROM
+SDL_CDtrack (3) - CD Track Information Structure
+SDL_CDtrack [] (3) - CD Track Information Structure
+SDL_CloseAudio (3) - Shuts down audio processing and closes the audio device
+SDL_CloseAudio [] (3) - Shuts down audio processing and closes the audio device
+SDL_Color (3) - Format independent color description
+SDL_Color [] (3) - Format independent color description
+SDL_CondBroadcast (3) - Restart all threads waiting on a condition variable
+SDL_CondBroadcast [] (3) - Restart all threads waiting on a condition variable
+SDL_CondSignal (3) - Restart a thread wait on a condition variable
+SDL_CondSignal [] (3) - Restart a thread wait on a condition variable
+SDL_CondWait (3) - Wait on a condition variable
+SDL_CondWait [] (3) - Wait on a condition variable
+SDL_CondWaitTimeout (3) - Wait on a condition variable, with timeout
+SDL_CondWaitTimeout [] (3) - Wait on a condition variable, with timeout
+SDL_ConvertAudio (3) - Convert audio data to a desired audio format
+SDL_ConvertAudio [] (3) - Convert audio data to a desired audio format
+SDL_ConvertSurface (3) - Converts a surface to the same format as another surface
+SDL_ConvertSurface [] (3) - Converts a surface to the same format as another surface
+SDL_CreateCond (3) - Create a condition variable
+SDL_CreateCond [] (3) - Create a condition variable
+SDL_CreateCursor (3) - Creates a new mouse cursor
+SDL_CreateCursor [] (3) - Creates a new mouse cursor
+SDL_CreateMutex (3) - Create a mutex
+SDL_CreateMutex [] (3) - Create a mutex
+SDL_CreateRGBSurface (3) - Create an empty SDL_Surface
+SDL_CreateRGBSurface [] (3) - Create an empty SDL_Surface
+SDL_CreateRGBSurfaceFrom (3) - Create an SDL_Surface from pixel data
+SDL_CreateRGBSurfaceFrom [] (3) - Create an SDL_Surface from pixel data
+SDL_CreateSemaphore (3) - Creates a new semaphore and assigns an initial value to it
+SDL_CreateSemaphore [] (3) - Creates a new semaphore and assigns an initial value to it
+SDL_CreateThread (3) - Creates a new thread of execution that shares its parent's properties
+SDL_CreateThread [] (3) - Creates a new thread of execution that shares its parent's properties
+SDL_CreateYUVOverlay (3) - Create a YUV video overlay
+SDL_CreateYUVOverlay [] (3) - Create a YUV video overlay
+SDL_Delay (3) - Wait a specified number of milliseconds before returning
+SDL_Delay [] (3) - Wait a specified number of milliseconds before returning
+SDL_DestroyCond (3) - Destroy a condition variable
+SDL_DestroyCond [] (3) - Destroy a condition variable
+SDL_DestroyMutex (3) - Destroy a mutex
+SDL_DestroyMutex [] (3) - Destroy a mutex
+SDL_DestroySemaphore (3) - Destroys a semaphore that was created by SDL_CreateSemaphore
+SDL_DestroySemaphore [] (3) - Destroys a semaphore that was created by SDL_CreateSemaphore
+SDL_DisplayFormat (3) - Convert a surface to the display format
+SDL_DisplayFormat [] (3) - Convert a surface to the display format
+SDL_DisplayFormatAlpha (3) - Convert a surface to the display format
+SDL_DisplayFormatAlpha [] (3) - Convert a surface to the display format
+SDL_DisplayYUVOverlay (3) - Blit the overlay to the display
+SDL_DisplayYUVOverlay [] (3) - Blit the overlay to the display
+SDL_EnableKeyRepeat (3) - Set keyboard repeat rate
+SDL_EnableKeyRepeat [] (3) - Set keyboard repeat rate
+SDL_EnableUNICODE (3) - Enable UNICODE translation
+SDL_EnableUNICODE [] (3) - Enable UNICODE translation
+SDL_Event (3) - General event structure
+SDL_Event [] (3) - General event structure
+SDL_EventState (3) - This function allows you to set the state of processing certain events
+SDL_EventState [] (3) - This function allows you to set the state of processing certain events
+SDL_ExposeEvent (3) - Quit requested event
+SDL_ExposeEvent [] (3) - Quit requested event
+SDL_FillRect (3) - This function performs a fast fill of the given rectangle with some color
+SDL_FillRect [] (3) - This function performs a fast fill of the given rectangle with some color
+SDL_Flip (3) - Swaps screen buffers
+SDL_Flip [] (3) - Swaps screen buffers
+SDL_FreeCursor (3) - Frees a cursor created with SDL_CreateCursor
+SDL_FreeCursor [] (3) - Frees a cursor created with SDL_CreateCursor
+SDL_FreeSurface (3) - Frees (deletes) a SDL_Surface
+SDL_FreeSurface [] (3) - Frees (deletes) a SDL_Surface
+SDL_FreeWAV (3) - Frees previously opened WAV data
+SDL_FreeWAV [] (3) - Frees previously opened WAV data
+SDL_FreeYUVOverlay (3) - Free a YUV video overlay
+SDL_FreeYUVOverlay [] (3) - Free a YUV video overlay
+SDL_FunctionName [SDL_RWFromFile] (3) - Short description of function
+SDL_FunctionName [] (3) - Short description of function
+SDL_GL_GetAttribute (3) - Get the value of a special SDL/OpenGL attribute
+SDL_GL_GetAttribute [] (3) - Get the value of a special SDL/OpenGL attribute
+SDL_GL_GetProcAddress (3) - Get the address of a GL function
+SDL_GL_GetProcAddress [] (3) - Get the address of a GL function
+SDL_GL_LoadLibrary (3) - Specify an OpenGL library
+SDL_GL_LoadLibrary [] (3) - Specify an OpenGL library
+SDL_GL_SetAttribute (3) - Set a special SDL/OpenGL attribute
+SDL_GL_SetAttribute [] (3) - Set a special SDL/OpenGL attribute
+SDL_GL_SwapBuffers (3) - Swap OpenGL framebuffers/Update Display
+SDL_GL_SwapBuffers [] (3) - Swap OpenGL framebuffers/Update Display
+SDL_GLattr (3) - SDL GL Attributes
+SDL_GLattr [] (3) - SDL GL Attributes
+SDL_GetAppState (3) - Get the state of the application
+SDL_GetAppState [] (3) - Get the state of the application
+SDL_GetAudioStatus (3) - Get the current audio state
+SDL_GetAudioStatus [] (3) - Get the current audio state
+SDL_GetClipRect (3) - Gets the clipping rectangle for a surface
+SDL_GetClipRect [] (3) - Gets the clipping rectangle for a surface
+SDL_GetCursor (3) - Get the currently active mouse cursor
+SDL_GetCursor [] (3) - Get the currently active mouse cursor
+SDL_GetError (3) - Get SDL error string
+SDL_GetError [] (3) - Get SDL error string
+SDL_GetEventFilter (3) - Retrieves a pointer to he event filter
+SDL_GetEventFilter [] (3) - Retrieves a pointer to he event filter
+SDL_GetGamma (3) - Gets the gamma of the display
+SDL_GetGamma [] (3) - Gets the gamma of the display
+SDL_GetGammaRamp (3) - Gets the color gamma lookup tables for the display
+SDL_GetGammaRamp [] (3) - Gets the color gamma lookup tables for the display
+SDL_GetKeyName (3) - Get the name of an SDL virtual keysym
+SDL_GetKeyName [] (3) - Get the name of an SDL virtual keysym
+SDL_GetKeyState (3) - Get a snapshot of the current keyboard state
+SDL_GetKeyState [] (3) - Get a snapshot of the current keyboard state
+SDL_GetModState (3) - Get the state of modifier keys
+SDL_GetModState [] (3) - Get the state of modifier keys
+SDL_GetMouseState (3) - Retrieve the current state of the mouse
+SDL_GetMouseState [] (3) - Retrieve the current state of the mouse
+SDL_GetRGB (3) - Get RGB values from a pixel in the specified pixel format
+SDL_GetRGB [] (3) - Get RGB values from a pixel in the specified pixel format
+SDL_GetRGBA (3) - Get RGBA values from a pixel in the specified pixel format
+SDL_GetRGBA [] (3) - Get RGBA values from a pixel in the specified pixel format
+SDL_GetRelativeMouseState (3) - Retrieve the current state of the mouse
+SDL_GetRelativeMouseState [] (3) - Retrieve the current state of the mouse
+SDL_GetThreadID (3) - Get the SDL thread ID of a SDL_Thread
+SDL_GetThreadID [] (3) - Get the SDL thread ID of a SDL_Thread
+SDL_GetTicks (3) - Get the number of milliseconds since the SDL library initialization
+SDL_GetTicks [] (3) - Get the number of milliseconds since the SDL library initialization
+SDL_GetVideoInfo (3) - returns a pointer to information about the video hardware
+SDL_GetVideoInfo [] (3) - returns a pointer to information about the video hardware
+SDL_GetVideoSurface (3) - returns a pointer to the current display surface
+SDL_GetVideoSurface [] (3) - returns a pointer to the current display surface
+SDL_Init (3) - Initializes SDL
+SDL_Init [] (3) - Initializes SDL
+SDL_InitSubSystem (3) - Initialize subsystems
+SDL_InitSubSystem [] (3) - Initialize subsystems
+SDL_JoyAxisEvent (3) - Joystick axis motion event structure
+SDL_JoyAxisEvent [] (3) - Joystick axis motion event structure
+SDL_JoyBallEvent (3) - Joystick trackball motion event structure
+SDL_JoyBallEvent [] (3) - Joystick trackball motion event structure
+SDL_JoyButtonEvent (3) - Joystick button event structure
+SDL_JoyButtonEvent [] (3) - Joystick button event structure
+SDL_JoyHatEvent (3) - Joystick hat position change event structure
+SDL_JoyHatEvent [] (3) - Joystick hat position change event structure
+SDL_JoystickClose (3) - Closes a previously opened joystick
+SDL_JoystickClose [] (3) - Closes a previously opened joystick
+SDL_JoystickEventState (3) - Enable/disable joystick event polling
+SDL_JoystickEventState [] (3) - Enable/disable joystick event polling
+SDL_JoystickGetAxis (3) - Get the current state of an axis
+SDL_JoystickGetAxis [] (3) - Get the current state of an axis
+SDL_JoystickGetBall (3) - Get relative trackball motion
+SDL_JoystickGetBall [] (3) - Get relative trackball motion
+SDL_JoystickGetButton (3) - Get the current state of a given button on a given joystick
+SDL_JoystickGetButton [] (3) - Get the current state of a given button on a given joystick
+SDL_JoystickGetHat (3) - Get the current state of a joystick hat
+SDL_JoystickGetHat [] (3) - Get the current state of a joystick hat
+SDL_JoystickIndex (3) - Get the index of an SDL_Joystick
+SDL_JoystickIndex [] (3) - Get the index of an SDL_Joystick
+SDL_JoystickName (3) - Get joystick name
+SDL_JoystickName [] (3) - Get joystick name
+SDL_JoystickNumAxes (3) - Get the number of joystick axes
+SDL_JoystickNumAxes [] (3) - Get the number of joystick axes
+SDL_JoystickNumBalls (3) - Get the number of joystick trackballs
+SDL_JoystickNumBalls [] (3) - Get the number of joystick trackballs
+SDL_JoystickNumButtons (3) - Get the number of joysitck buttons
+SDL_JoystickNumButtons [] (3) - Get the number of joysitck buttons
+SDL_JoystickNumHats (3) - Get the number of joystick hats
+SDL_JoystickNumHats [] (3) - Get the number of joystick hats
+SDL_JoystickOpen (3) - Opens a joystick for use
+SDL_JoystickOpen [] (3) - Opens a joystick for use
+SDL_JoystickOpened (3) - Determine if a joystick has been opened
+SDL_JoystickOpened [] (3) - Determine if a joystick has been opened
+SDL_JoystickUpdate (3) - Updates the state of all joysticks
+SDL_JoystickUpdate [] (3) - Updates the state of all joysticks
+SDL_KeyboardEvent (3) - Keyboard event structure
+SDL_KeyboardEvent [] (3) - Keyboard event structure
+SDL_KillThread (3) - Gracelessly terminates the thread
+SDL_KillThread [] (3) - Gracelessly terminates the thread
+SDL_ListModes (3) - Returns a pointer to an array of available screen dimensions for the given format and video flags
+SDL_ListModes [] (3) - Returns a pointer to an array of available screen dimensions for the given format and video flags
+SDL_LoadBMP (3) - Load a Windows BMP file into an SDL_Surface
+SDL_LoadBMP [] (3) - Load a Windows BMP file into an SDL_Surface
+SDL_LoadWAV (3) - Load a WAVE file
+SDL_LoadWAV [] (3) - Load a WAVE file
+SDL_LockAudio (3) - Lock out the callback function
+SDL_LockAudio [] (3) - Lock out the callback function
+SDL_LockSurface (3) - Lock a surface for directly access
+SDL_LockSurface [] (3) - Lock a surface for directly access
+SDL_LockYUVOverlay (3) - Lock an overlay
+SDL_LockYUVOverlay [] (3) - Lock an overlay
+SDL_MapRGB (3) - Map a RGB color value to a pixel format
+SDL_MapRGB [] (3) - Map a RGB color value to a pixel format
+SDL_MapRGBA (3) - Map a RGBA color value to a pixel format
+SDL_MapRGBA [] (3) - Map a RGBA color value to a pixel format
+SDL_MixAudio (3) - Mix audio data
+SDL_MixAudio [] (3) - Mix audio data
+SDL_MouseButtonEvent (3) - Mouse button event structure
+SDL_MouseButtonEvent [] (3) - Mouse button event structure
+SDL_MouseMotionEvent (3) - Mouse motion event structure
+SDL_MouseMotionEvent [] (3) - Mouse motion event structure
+SDL_NumJoysticks (3) - Count available joysticks
+SDL_NumJoysticks [] (3) - Count available joysticks
+SDL_OpenAudio (3) - Opens the audio device with the desired parameters
+SDL_OpenAudio [] (3) - Opens the audio device with the desired parameters
+SDL_Overlay (3) - YUV video overlay
+SDL_Overlay [] (3) - YUV video overlay
+SDL_Palette (3) - Color palette for 8-bit pixel formats
+SDL_Palette [] (3) - Color palette for 8-bit pixel formats
+SDL_PauseAudio (3) - Pauses and unpauses the audio callback processing
+SDL_PauseAudio [] (3) - Pauses and unpauses the audio callback processing
+SDL_PeepEvents (3) - Checks the event queue for messages and optionally returns them
+SDL_PeepEvents [] (3) - Checks the event queue for messages and optionally returns them
+SDL_PixelFormat (3) - Stores surface format information
+SDL_PixelFormat [] (3) - Stores surface format information
+SDL_PollEvent (3) - Polls for currently pending events
+SDL_PollEvent [] (3) - Polls for currently pending events
+SDL_PumpEvents (3) - Pumps the event loop, gathering events from the input devices
+SDL_PumpEvents [] (3) - Pumps the event loop, gathering events from the input devices
+SDL_PushEvent (3) - Pushes an event onto the event queue
+SDL_PushEvent [] (3) - Pushes an event onto the event queue
+SDL_Quit (3) - Shut down SDL
+SDL_Quit [] (3) - Shut down SDL
+SDL_QuitEvent (3) - Quit requested event
+SDL_QuitEvent [] (3) - Quit requested event
+SDL_QuitSubSystem (3) - Shut down a subsystem
+SDL_QuitSubSystem [] (3) - Shut down a subsystem
+SDL_Rect (3) - Defines a rectangular area
+SDL_Rect [] (3) - Defines a rectangular area
+SDL_RemoveTimer (3) - Remove a timer which was added with SDL_AddTimer
+SDL_RemoveTimer [] (3) - Remove a timer which was added with SDL_AddTimer
+SDL_ResizeEvent (3) - Window resize event structure
+SDL_ResizeEvent [] (3) - Window resize event structure
+SDL_SaveBMP (3) - Save an SDL_Surface as a Windows BMP file
+SDL_SaveBMP [] (3) - Save an SDL_Surface as a Windows BMP file
+SDL_SemPost (3) - Unlock a semaphore
+SDL_SemPost [] (3) - Unlock a semaphore
+SDL_SemTryWait (3) - Attempt to lock a semaphore but don't suspend the thread
+SDL_SemTryWait [] (3) - Attempt to lock a semaphore but don't suspend the thread
+SDL_SemValue (3) - Return the current value of a semaphore
+SDL_SemValue [] (3) - Return the current value of a semaphore
+SDL_SemWait (3) - Lock a semaphore and suspend the thread if the semaphore value is zero
+SDL_SemWait [] (3) - Lock a semaphore and suspend the thread if the semaphore value is zero
+SDL_SemWaitTimeout (3) - Lock a semaphore, but only wait up to a specified maximum time
+SDL_SemWaitTimeout [] (3) - Lock a semaphore, but only wait up to a specified maximum time
+SDL_SetAlpha (3) - Adjust the alpha properties of a surface
+SDL_SetAlpha [] (3) - Adjust the alpha properties of a surface
+SDL_SetClipRect (3) - Sets the clipping rectangle for a surface
+SDL_SetClipRect [] (3) - Sets the clipping rectangle for a surface
+SDL_SetColorKey (3) - Sets the color key (transparent pixel) in a blittable surface and RLE acceleration
+SDL_SetColorKey [] (3) - Sets the color key (transparent pixel) in a blittable surface and RLE acceleration
+SDL_SetColors (3) - Sets a portion of the colormap for the given 8-bit surface
+SDL_SetColors [] (3) - Sets a portion of the colormap for the given 8-bit surface
+SDL_SetCursor (3) - Set the currently active mouse cursor
+SDL_SetCursor [] (3) - Set the currently active mouse cursor
+SDL_SetEventFilter (3) - Sets up a filter to process all events before they are posted to the event queue
+SDL_SetEventFilter [] (3) - Sets up a filter to process all events before they are posted to the event queue
+SDL_SetGamma (3) - Sets the color gamma function for the display
+SDL_SetGamma [] (3) - Sets the color gamma function for the display
+SDL_SetGammaRamp (3) - Sets the color gamma lookup tables for the display
+SDL_SetGammaRamp [] (3) - Sets the color gamma lookup tables for the display
+SDL_SetModState (3) - Set the current key modifier state
+SDL_SetModState [] (3) - Set the current key modifier state
+SDL_SetPalette (3) - Sets the colors in the palette of an 8-bit surface
+SDL_SetPalette [] (3) - Sets the colors in the palette of an 8-bit surface
+SDL_SetTimer (3) - Set a callback to run after the specified number of milliseconds has elapsed
+SDL_SetTimer [] (3) - Set a callback to run after the specified number of milliseconds has elapsed
+SDL_SetVideoMode (3) - Set up a video mode with the specified width, height and bits-per-pixel
+SDL_SetVideoMode [] (3) - Set up a video mode with the specified width, height and bits-per-pixel
+SDL_ShowCursor (3) - Toggle whether or not the cursor is shown on the screen
+SDL_ShowCursor [] (3) - Toggle whether or not the cursor is shown on the screen
+SDL_Surface (3) - Graphical Surface Structure
+SDL_Surface [] (3) - Graphical Surface Structure
+SDL_SysWMEvent (3) - Platform-dependent window manager event
+SDL_SysWMEvent [] (3) - Platform-dependent window manager event
+SDL_ThreadID (3) - Get the 32-bit thread identifier for the current thread
+SDL_ThreadID [] (3) - Get the 32-bit thread identifier for the current thread
+SDL_UnlockAudio (3) - Unlock the callback function
+SDL_UnlockAudio [] (3) - Unlock the callback function
+SDL_UnlockSurface (3) - Unlocks a previously locked surface
+SDL_UnlockSurface [] (3) - Unlocks a previously locked surface
+SDL_UnlockYUVOverlay (3) - Unlock an overlay
+SDL_UnlockYUVOverlay [] (3) - Unlock an overlay
+SDL_UpdateRect (3) - Makes sure the given area is updated on the given screen
+SDL_UpdateRect [] (3) - Makes sure the given area is updated on the given screen
+SDL_UpdateRects (3) - Makes sure the given list of rectangles is updated on the given screen
+SDL_UpdateRects [] (3) - Makes sure the given list of rectangles is updated on the given screen
+SDL_UserEvent (3) - A user-defined event type
+SDL_UserEvent [] (3) - A user-defined event type
+SDL_VideoDriverName (3) - Obtain the name of the video driver
+SDL_VideoDriverName [] (3) - Obtain the name of the video driver
+SDL_VideoInfo (3) - Video Target information
+SDL_VideoInfo [] (3) - Video Target information
+SDL_VideoModeOK (3) - Check to see if a particular video mode is supported
+SDL_VideoModeOK [] (3) - Check to see if a particular video mode is supported
+SDL_WM_GetCaption (3) - Gets the window title and icon name
+SDL_WM_GetCaption [] (3) - Gets the window title and icon name
+SDL_WM_GrabInput (3) - Grabs mouse and keyboard input
+SDL_WM_GrabInput [] (3) - Grabs mouse and keyboard input
+SDL_WM_IconifyWindow (3) - Iconify/Minimise the window
+SDL_WM_IconifyWindow [] (3) - Iconify/Minimise the window
+SDL_WM_SetCaption (3) - Sets the window tile and icon name
+SDL_WM_SetCaption [] (3) - Sets the window tile and icon name
+SDL_WM_SetIcon (3) - Sets the icon for the display window
+SDL_WM_SetIcon [] (3) - Sets the icon for the display window
+SDL_WM_ToggleFullScreen (3) - Toggles fullscreen mode
+SDL_WM_ToggleFullScreen [] (3) - Toggles fullscreen mode
+SDL_WaitEvent (3) - Waits indefinitely for the next available event
+SDL_WaitEvent [] (3) - Waits indefinitely for the next available event
+SDL_WaitThread (3) - Wait for a thread to finish
+SDL_WaitThread [] (3) - Wait for a thread to finish
+SDL_WarpMouse (3) - Set the position of the mouse cursor
+SDL_WarpMouse [] (3) - Set the position of the mouse cursor
+SDL_WasInit (3) - Check which subsystems are initialized
+SDL_WasInit [] (3) - Check which subsystems are initialized
+SDL_keysym (3) - Keysym structure
+SDL_keysym [] (3) - Keysym structure
+SDL_mutexP (3) - Lock a mutex
+SDL_mutexP [] (3) - Lock a mutex
+SDL_mutexV (3) - Unlock a mutex
+SDL_mutexV [] (3) - Unlock a mutex
+SGMLS [] (3) - class for postprocessing the output from the sgmls and nsgmls parsers
+SGMLS::Output [] (3) - Stack-based Output Procedures
+SGMLS::Refs [] (3) - Forward reference handling
+SHA1 [] (3) - Secure Hash Algorithm
+SHA1_Final [] (3) - Secure Hash Algorithm
+SHA1_Init [] (3) - Secure Hash Algorithm
+SHA1_Update [] (3) - Secure Hash Algorithm
+SMIME_read_PKCS7 [] (3) - parse S/MIME message
+SMIME_write_PKCS7 [] (3) - convert PKCS#7 structure to S/MIME format
+SNMP [] (3) - The Perl5 'SNMP' Extension Module for the Net-SNMP SNMP package
+SOCK_RAW [] (7) - Linux IPv4 raw sockets
+SSL [] (3) - OpenSSL SSL/TLS library
+SSL_CIPHER_description [] (3) - get SSL_CIPHER properties
+SSL_CIPHER_get_bits [] (3) - get SSL_CIPHER properties
+SSL_CIPHER_get_name [] (3) - get SSL_CIPHER properties
+SSL_CIPHER_get_version [] (3) - get SSL_CIPHER properties
+SSL_COMP_add_compression_method [] (3) - handle SSL/TLS integrated compression methods
+SSL_CTX_add_client_CA [] (3) - set list of CAs sent to the client when requesting a client certificate
+SSL_CTX_add_extra_chain_cert [] (3) - add certificate to chain
+SSL_CTX_add_session [] (3) - manipulate session cache
+SSL_CTX_callback_ctrl [] (3) - internal handling functions for SSL_CTX and SSL objects
+SSL_CTX_check_private_key [] (3) - load certificate and key data
+SSL_CTX_ctrl [] (3) - internal handling functions for SSL_CTX and SSL objects
+SSL_CTX_flush_sessions [] (3) - remove expired sessions
+SSL_CTX_free [] (3) - free an allocated SSL_CTX object
+SSL_CTX_get_cert_store [] (3) - manipulate X509 certificate verification storage
+SSL_CTX_get_client_CA_list [] (3) - get list of client CAs
+SSL_CTX_get_client_cert_cb [] (3) - handle client certificate callback function
+SSL_CTX_get_ex_data [] (3) - internal application specific data functions
+SSL_CTX_get_ex_new_index [] (3) - internal application specific data functions
+SSL_CTX_get_info_callback [] (3) - handle information callback for SSL connections
+SSL_CTX_get_max_cert_list [] (3) - manipulate allowed for the peer's certificate chain
+SSL_CTX_get_mode [] (3) - manipulate SSL engine mode
+SSL_CTX_get_options [] (3) - manipulate SSL engine options
+SSL_CTX_get_quiet_shutdown [] (3) - manipulate shutdown behaviour
+SSL_CTX_get_session_cache_mode [] (3) - enable/disable session caching
+SSL_CTX_get_timeout [] (3) - manipulate timeout values for session caching
+SSL_CTX_get_verify_callback [] (3) - get currently set verification parameters
+SSL_CTX_get_verify_depth [] (3) - get currently set verification parameters
+SSL_CTX_get_verify_mode [] (3) - get currently set verification parameters
+SSL_CTX_load_verify_locations [] (3) - set default locations for trusted CA certificates
+SSL_CTX_need_tmp_rsa [] (3) - handle RSA keys for ephemeral key exchange
+SSL_CTX_new [] (3) - create a new SSL_CTX object as framework for TLS/SSL enabled functions
+SSL_CTX_remove_session [] (3) - manipulate session cache
+SSL_CTX_sess_accept [] (3) - obtain session cache statistics
+SSL_CTX_sess_accept_good [] (3) - obtain session cache statistics
+SSL_CTX_sess_accept_renegotiate [] (3) - obtain session cache statistics
+SSL_CTX_sess_cache_full [] (3) - obtain session cache statistics
+SSL_CTX_sess_cb_hits [] (3) - obtain session cache statistics
+SSL_CTX_sess_connect [] (3) - obtain session cache statistics
+SSL_CTX_sess_connect_good [] (3) - obtain session cache statistics
+SSL_CTX_sess_connect_renegotiate [] (3) - obtain session cache statistics
+SSL_CTX_sess_get_cache_size [] (3) - manipulate session cache size
+SSL_CTX_sess_get_get_cb [] (3) - provide callback functions for server side external session caching
+SSL_CTX_sess_get_new_cb [] (3) - provide callback functions for server side external session caching
+SSL_CTX_sess_get_remove_cb [] (3) - provide callback functions for server side external session caching
+SSL_CTX_sess_hits [] (3) - obtain session cache statistics
+SSL_CTX_sess_misses [] (3) - obtain session cache statistics
+SSL_CTX_sess_number [] (3) - obtain session cache statistics
+SSL_CTX_sess_set_cache_size [] (3) - manipulate session cache size
+SSL_CTX_sess_set_get_cb [] (3) - provide callback functions for server side external session caching
+SSL_CTX_sess_set_new_cb [] (3) - provide callback functions for server side external session caching
+SSL_CTX_sess_set_remove_cb [] (3) - provide callback functions for server side external session caching
+SSL_CTX_sess_timeouts [] (3) - obtain session cache statistics
+SSL_CTX_sessions [] (3) - access internal session cache
+SSL_CTX_set_cert_store [] (3) - manipulate X509 certificate verification storage
+SSL_CTX_set_cert_verify_callback [] (3) - set peer certificate verification procedure
+SSL_CTX_set_cipher_list [] (3) - choose list of available SSL_CIPHERs
+SSL_CTX_set_client_CA_list [] (3) - set list of CAs sent to the client when requesting a client certificate
+SSL_CTX_set_client_cert_cb [] (3) - handle client certificate callback function
+SSL_CTX_set_default_passwd_cb [] (3) - set passwd callback for encrypted PEM file handling
+SSL_CTX_set_default_passwd_cb_userdata [] (3) - set passwd callback for encrypted PEM file handling
+SSL_CTX_set_ex_data [] (3) - internal application specific data functions
+SSL_CTX_set_generate_session_id [] (3) - manipulate generation of SSL session IDs (server only)
+SSL_CTX_set_info_callback [] (3) - handle information callback for SSL connections
+SSL_CTX_set_max_cert_list [] (3) - manipulate allowed for the peer's certificate chain
+SSL_CTX_set_mode [] (3) - manipulate SSL engine mode
+SSL_CTX_set_msg_callback [] (3) - install callback for observing protocol messages
+SSL_CTX_set_msg_callback_arg [] (3) - install callback for observing protocol messages
+SSL_CTX_set_options [] (3) - manipulate SSL engine options
+SSL_CTX_set_quiet_shutdown [] (3) - manipulate shutdown behaviour
+SSL_CTX_set_session_cache_mode [] (3) - enable/disable session caching
+SSL_CTX_set_session_id_context [] (3) - set context within which session can be reused (server side only)
+SSL_CTX_set_ssl_version [] (3) - choose a new TLS/SSL method
+SSL_CTX_set_timeout [] (3) - manipulate timeout values for session caching
+SSL_CTX_set_tmp_dh [] (3) - handle DH keys for ephemeral key exchange
+SSL_CTX_set_tmp_dh_callback [] (3) - handle DH keys for ephemeral key exchange
+SSL_CTX_set_tmp_rsa [] (3) - handle RSA keys for ephemeral key exchange
+SSL_CTX_set_tmp_rsa_callback [] (3) - handle RSA keys for ephemeral key exchange
+SSL_CTX_set_verify [] (3) - set peer certificate verification parameters
+SSL_CTX_set_verify_depth [] (3) - set peer certificate verification parameters
+SSL_CTX_use_PrivateKey [] (3) - load certificate and key data
+SSL_CTX_use_PrivateKey_ASN1 [] (3) - load certificate and key data
+SSL_CTX_use_PrivateKey_file [] (3) - load certificate and key data
+SSL_CTX_use_RSAPrivateKey [] (3) - load certificate and key data
+SSL_CTX_use_RSAPrivateKey_ASN1 [] (3) - load certificate and key data
+SSL_CTX_use_RSAPrivateKey_file [] (3) - load certificate and key data
+SSL_CTX_use_certificate [] (3) - load certificate and key data
+SSL_CTX_use_certificate_ASN1 [] (3) - load certificate and key data
+SSL_CTX_use_certificate_chain_file [] (3) - load certificate and key data
+SSL_CTX_use_certificate_file [] (3) - load certificate and key data
+SSL_SESSION_free [] (3) - free an allocated SSL_SESSION structure
+SSL_SESSION_get_ex_data [] (3) - internal application specific data functions
+SSL_SESSION_get_ex_new_index [] (3) - internal application specific data functions
+SSL_SESSION_get_time [] (3) - retrieve and manipulate session time and timeout settings
+SSL_SESSION_get_timeout [] (3) - retrieve and manipulate session time and timeout settings
+SSL_SESSION_set_ex_data [] (3) - internal application specific data functions
+SSL_SESSION_set_time [] (3) - retrieve and manipulate session time and timeout settings
+SSL_SESSION_set_timeout [] (3) - retrieve and manipulate session time and timeout settings
+SSL_accept [] (3) - wait for a TLS/SSL client to initiate a TLS/SSL handshake
+SSL_add_client_CA [] (3) - set list of CAs sent to the client when requesting a client certificate
+SSL_add_session [] (3) - manipulate session cache
+SSL_alert_desc_string [] (3) - get textual description of alert information
+SSL_alert_desc_string_long [] (3) - get textual description of alert information
+SSL_alert_type_string [] (3) - get textual description of alert information
+SSL_alert_type_string_long [] (3) - get textual description of alert information
+SSL_callback_ctrl [] (3) - internal handling functions for SSL_CTX and SSL objects
+SSL_check_private_key [] (3) - load certificate and key data
+SSL_clear [] (3) - reset SSL object to allow another connection
+SSL_connect [] (3) - initiate the TLS/SSL handshake with an TLS/SSL server
+SSL_ctrl [] (3) - internal handling functions for SSL_CTX and SSL objects
+SSL_do_handshake [] (3) - perform a TLS/SSL handshake
+SSL_flush_sessions [] (3) - remove expired sessions
+SSL_free [] (3) - free an allocated SSL structure
+SSL_get_SSL_CTX [] (3) - get the SSL_CTX from which an SSL is created
+SSL_get_accept_state [] (3) - prepare SSL object to work in client or server mode
+SSL_get_cipher [] (3) - get SSL_CIPHER of a connection
+SSL_get_cipher_bits [] (3) - get SSL_CIPHER of a connection
+SSL_get_cipher_list [] (3) - get list of available SSL_CIPHERs
+SSL_get_cipher_name [] (3) - get SSL_CIPHER of a connection
+SSL_get_cipher_version [] (3) - get SSL_CIPHER of a connection
+SSL_get_ciphers [] (3) - get list of available SSL_CIPHERs
+SSL_get_client_CA_list [] (3) - get list of client CAs
+SSL_get_current_cipher [] (3) - get SSL_CIPHER of a connection
+SSL_get_default_timeout [] (3) - get default session timeout value
+SSL_get_error [] (3) - obtain result code for TLS/SSL I/O operation
+SSL_get_ex_data [] (3) - internal application specific data functions
+SSL_get_ex_data_X509_STORE_CTX_idx [] (3) - get ex_data index to access SSL structure from X509_STORE_CTX
+SSL_get_ex_new_index [] (3) - internal application specific data functions
+SSL_get_fd [] (3) - get file descriptor linked to an SSL object
+SSL_get_info_callback [] (3) - handle information callback for SSL connections
+SSL_get_max_cert_list, [] (3) - manipulate allowed for the peer's certificate chain
+SSL_get_mode [] (3) - manipulate SSL engine mode
+SSL_get_msg_callback_arg [] (3) - install callback for observing protocol messages
+SSL_get_options [] (3) - manipulate SSL engine options
+SSL_get_peer_cert_chain [] (3) - get the X509 certificate chain of the peer
+SSL_get_peer_certificate [] (3) - get the X509 certificate of the peer
+SSL_get_quiet_shutdown [] (3) - manipulate shutdown behaviour
+SSL_get_rbio [] (3) - get BIO linked to an SSL object
+SSL_get_session [] (3) - retrieve TLS/SSL session data
+SSL_get_shutdown [] (3) - manipulate shutdown state of an SSL connection
+SSL_get_ssl_method [] (3) - choose a new TLS/SSL method
+SSL_get_verify_callback [] (3) - get currently set verification parameters
+SSL_get_verify_depth [] (3) - get currently set verification parameters
+SSL_get_verify_mode [] (3) - get currently set verification parameters
+SSL_get_verify_result [] (3) - get result of peer certificate verification
+SSL_get_version [] (3) - get the protocol version of a connection
+SSL_has_matching_session_id [] (3) - manipulate generation of SSL session IDs (server only)
+SSL_library_init [] (3) - initialize SSL library by registering algorithms
+SSL_load_client_CA_file [] (3) - load certificate names from file
+SSL_load_error_strings [] (3) - load and free error strings
+SSL_need_tmp_rsa [] (3) - handle RSA keys for ephemeral key exchange
+SSL_new [] (3) - create a new SSL structure for a connection
+SSL_pending [] (3) - obtain number of readable bytes buffered in an SSL object
+SSL_read [] (3) - read bytes from a TLS/SSL connection
+SSL_remove_session [] (3) - manipulate session cache
+SSL_rstate_string [] (3) - get textual description of state of an SSL object during read operation
+SSL_rstate_string_long [] (3) - get textual description of state of an SSL object during read operation
+SSL_session_reused [] (3) - query whether a reused session was negotiated during handshake
+SSL_set_bio [] (3) - connect the SSL object with a BIO
+SSL_set_cipher_list [] (3) - choose list of available SSL_CIPHERs
+SSL_set_client_CA_list [] (3) - set list of CAs sent to the client when requesting a client certificate
+SSL_set_connect_state [] (3) - prepare SSL object to work in client or server mode
+SSL_set_ex_data [] (3) - internal application specific data functions
+SSL_set_fd [] (3) - connect the SSL object with a file descriptor
+SSL_set_generate_session_id [] (3) - manipulate generation of SSL session IDs (server only)
+SSL_set_info_callback [] (3) - handle information callback for SSL connections
+SSL_set_max_cert_list [] (3) - manipulate allowed for the peer's certificate chain
+SSL_set_mode [] (3) - manipulate SSL engine mode
+SSL_set_msg_callback [] (3) - install callback for observing protocol messages
+SSL_set_options [] (3) - manipulate SSL engine options
+SSL_set_quiet_shutdown [] (3) - manipulate shutdown behaviour
+SSL_set_session [] (3) - set a TLS/SSL session to be used during TLS/SSL connect
+SSL_set_session_id_context [] (3) - set context within which session can be reused (server side only)
+SSL_set_shutdown [] (3) - manipulate shutdown state of an SSL connection
+SSL_set_ssl_method [] (3) - choose a new TLS/SSL method
+SSL_set_tmp_dh [] (3) - handle DH keys for ephemeral key exchange
+SSL_set_tmp_dh_callback [] (3) - handle DH keys for ephemeral key exchange
+SSL_set_tmp_rsa [] (3) - handle RSA keys for ephemeral key exchange
+SSL_set_tmp_rsa_callback [] (3) - handle RSA keys for ephemeral key exchange
+SSL_set_verify [] (3) - set peer certificate verification parameters
+SSL_set_verify_depth [] (3) - set peer certificate verification parameters
+SSL_set_verify_result [] (3) - override result of peer certificate verification
+SSL_shutdown [] (3) - shut down a TLS/SSL connection
+SSL_state_string [] (3) - get textual description of state of an SSL object
+SSL_state_string_long [] (3) - get textual description of state of an SSL object
+SSL_use_PrivateKey [] (3) - load certificate and key data
+SSL_use_PrivateKey_ASN1 [] (3) - load certificate and key data
+SSL_use_PrivateKey_file [] (3) - load certificate and key data
+SSL_use_RSAPrivateKey [] (3) - load certificate and key data
+SSL_use_RSAPrivateKey_ASN1 [] (3) - load certificate and key data
+SSL_use_RSAPrivateKey_file [] (3) - load certificate and key data
+SSL_use_certificate [] (3) - load certificate and key data
+SSL_use_certificate_ASN1 [] (3) - load certificate and key data
+SSL_use_certificate_file [] (3) - load certificate and key data
+SSL_want [] (3) - obtain state information TLS/SSL I/O operation
+SSL_want_nothing [] (3) - obtain state information TLS/SSL I/O operation
+SSL_want_read [] (3) - obtain state information TLS/SSL I/O operation
+SSL_want_write [] (3) - obtain state information TLS/SSL I/O operation
+SSL_want_x509_lookup [] (3) - obtain state information TLS/SSL I/O operation
+SSL_write [] (3) - write bytes to a TLS/SSL connection
+SSLeay [] (3) - get OpenSSL version number
+SSLeay_add_ssl_algorithms [] (3) - initialize SSL library by registering algorithms
+SSLeay_version [] (3) - get OpenSSL version number
+Safe Base [] (n) - A mechanism for creating and manipulating safe interpreters
+Safe [] (3) - Compile and execute code in restricted compartments
+Scalar::Util [] (3) - A selection of general-utility scalar subroutines
+ScreenCount [] (3) - Display macros and functions
+ScreenNumberOfCCC [] (3) - Color Conversion Context macros
+ScreenOfDisplay [] (3) - Display macros and functions
+ScreenWhitePointOfCCC [] (3) - Color Conversion Context macros
+Search::Dict [] (3) - search for key in dictionary file
+SelectSaver [] (3) - save and restore selected file handle
+SelfLoader [] (3) - load functions only on demand
+ServerVendor [] (3) - Display macros and functions
+Seyon [] (1) - X11 Telecommunications Package
+SoX [] (1) - Sound eXchange, the Swiss Army knife of audio manipulation
+SoX [] (7) - Sound eXchange, the Swiss Army knife of audio manipulation
+SoXI [] (1) - Sound eXchange Information, display sound file metadata
+Socket [] (3) - load the C socket.h defines and structure manipulators
+Storable [] (3) - persistence for Perl data structures
+Switch [] (3) - A switch statement for Perl
+Symbol [] (3) - manipulate Perl symbols and their names
+Sys::Hostname [] (3) - Try every conceivable way to get hostname
+Sys::Syslog [] (3) - Perl interface to the UNIX syslog(3) calls
+TAILQ_ENTRY [] (3) - implementations of lists, tail queues, and circular queues
+TAILQ_HEAD [] (3) - implementations of lists, tail queues, and circular queues
+TAILQ_INIT [] (3) - implementations of lists, tail queues, and circular queues
+TAILQ_INSERT_AFTER [] (3) - implementations of lists, tail queues, and circular queues
+TAILQ_INSERT_HEAD [] (3) - implementations of lists, tail queues, and circular queues
+TAILQ_INSERT_TAIL [] (3) - implementations of lists, tail queues, and circular queues
+TAILQ_REMOVE [] (3) - implementations of lists, tail queues, and circular queues
+TASKS [] (3) - Want to help? These things need doing..
+TCL_MEM_DEBUG [] (3) - Compile-time flag to enable Tcl memory debugging
+TIFFCIELabToRGBInit [] (3) - color conversion routines
+TIFFCIELabToXYZ [] (3) - color conversion routines
+TIFFCheckTile [] (3) - tile-related utility routines
+TIFFCheckpointDirectory [] (3) - write the current directory in an open TIFF file
+TIFFClientOpen [] (3) - open a TIFF file for reading or writing
+TIFFClose [] (3) - close a previously opened TIFF file
+TIFFComputeStrip [] (3) - strip-related utility routines
+TIFFComputeTile [] (3) - tile-related utility routines
+TIFFCurrentDirectory [] (3) - query routines
+TIFFCurrentRow [] (3) - query routines
+TIFFCurrentStrip [] (3) - query routines
+TIFFCurrentTile [] (3) - query routines
+TIFFDataWidth [] (3) - Get the size of TIFF data types
+TIFFDefaultStripSize [] (3) - strip-related utility routines
+TIFFDefaultTileSize [] (3) - tile-related utility routines
+TIFFError [] (3) - library error handling interface
+TIFFFdOpen [] (3) - open a TIFF file for reading or writing
+TIFFFileName [] (3) - query routines
+TIFFFileno [] (3) - query routines
+TIFFFindCODEC [] (3) - codec-related utility routines
+TIFFFlush [] (3) - flush pending writes to an open TIFF file
+TIFFFlushData [] (3) - flush pending writes to an open TIFF file
+TIFFGetBitRevTable [] (3) - byte- and bit-swapping routines
+TIFFGetField [] (3) - get the value(s) of a tag in an open TIFF file
+TIFFGetMode [] (3) - query routines
+TIFFGetVersion [] (3) - query routines
+TIFFIsByteSwapped [] (3) - query routines
+TIFFIsCODECConfigured [] (3) - codec-related utility routines
+TIFFIsMSB2LSB [] (3) - query routines
+TIFFIsTiled [] (3) - query routines
+TIFFIsUpSampled [] (3) - query routines
+TIFFLastDirectory [] (3) - query routines
+TIFFNumberOfStrips [] (3) - strip-related utility routines
+TIFFNumberOfTiles [] (3) - tile-related utility routines
+TIFFOpen [] (3) - open a TIFF file for reading or writing
+TIFFPrintDirectory [] (3) - print a description of a TIFF directory
+TIFFRGBAImageBegin [] (3) - read and decode an image into a raster
+TIFFRGBAImageEnd [] (3) - read and decode an image into a raster
+TIFFRGBAImageGet [] (3) - read and decode an image into a raster
+TIFFRGBAImageOK [] (3) - read and decode an image into a raster
+TIFFRasterScanlineSize, [] (3) - return the size of various items associated with an open TIFF file
+TIFFRawStripSize [] (3) - strip-related utility routines
+TIFFReadBufferSetup [] (3) - I/O buffering control routines
+TIFFReadDirectory [] (3) - get the contents of the next directory in an open TIFF file
+TIFFReadEncodedStrip [] (3) - read and decode a strip of data from an open TIFF file
+TIFFReadEncodedTile [] (3) - read and decode a tile of data from an open TIFF file
+TIFFReadRGBAImage [] (3) - read and decode an image into a fixed - format raster
+TIFFReadRGBAImageOriented [] (3) - read and decode an image into a fixed - format raster
+TIFFReadRGBAStrip [] (3) - read and decode an image strip into a fixed-format raster
+TIFFReadRGBATile [] (3) - read and decode an image tile into a fixed-format raster
+TIFFReadRawStrip [] (3) - return the undecoded contents of a strip of data from an open TIFF file
+TIFFReadRawTile [] (3) - return an undecoded tile of data from an open TIFF file
+TIFFReadScanline [] (3) - read and decode a scanline of data from an open TIFF file
+TIFFReadTile [] (3) - read and decode a tile of data from an open TIFF file
+TIFFRegisterCODEC [] (3) - codec-related utility routines
+TIFFReverseBits [] (3) - byte- and bit-swapping routines
+TIFFRewriteDirectory [] (3) - write the current directory in an open TIFF file
+TIFFScanlineSize [] (3) - return the size of various items associated with an open TIFF file
+TIFFSetDirectory [] (3) - set the current directory for an open TIFF file
+TIFFSetErrorHandler [] (3) - library error handling interface
+TIFFSetField [] (3) - set the value(s) of a tag in a TIFF file open for writing
+TIFFSetSubDirectory [] (3) - set the current directory for an open TIFF file
+TIFFSetWarningHandler [] (3) - library warning interface
+TIFFStripSize [] (3) - strip-related utility routines
+TIFFSwabArrayOfLong [] (3) - byte- and bit-swapping routines
+TIFFSwabArrayOfShort [] (3) - byte- and bit-swapping routines
+TIFFSwabLong [] (3) - byte- and bit-swapping routines
+TIFFSwabShort [] (3) - byte- and bit-swapping routines
+TIFFTileRowSize [] (3) - tile-related utility routines
+TIFFTileSize [] (3) - tile-related utility routines
+TIFFUnRegisterCODEC [] (3) - codec-related utility routines
+TIFFVGetField [] (3) - get the value(s) of a tag in an open TIFF file
+TIFFVSetField [] (3) - set the value(s) of a tag in a TIFF file open for writing
+TIFFVStripSize [] (3) - strip-related utility routines
+TIFFVTileSize [] (3) - tile-related utility routines
+TIFFWarning [] (3) - library warning interface
+TIFFWriteBufferSetup [] (3) - I/O buffering control routines
+TIFFWriteDirectory [] (3) - write the current directory in an open TIFF file
+TIFFWriteRawStrip [] (3) - write a strip of raw data to an open TIFF file
+TIFFWriteRawTile [] (3) - write a tile of raw data to an open TIFF file
+TIFFWriteScanline [] (3) - write a scanline to an open TIFF file
+TIFFWriteTile [] (3) - encode and write a tile of data to an open TIFF file
+TIFFWritedEncodedStrip [] (3) - compress and write a strip of data to an open TIFF file
+TIFFWritedEncodedTile [] (3) - compress and write a tile of data to an open TIFF file
+TIFFXYZToRGB [] (3) - color conversion routines
+TIFFYCbCrToRGBInit [] (3) - color conversion routines
+TIFFYCbCrtoRGB [] (3) - color conversion routines
+Tcl [] (n) - Tool Command Language
+TclX [] (n) - Extended Tcl: Extended command set for Tcl
+Tcl_Access [] (3) - check file permissions and other attributes
+Tcl_AddErrorInfo [] (3) - retrieve or record information about errors and other return options
+Tcl_AddObjErrorInfo [] (3) - retrieve or record information about errors and other return options
+Tcl_AlertNotifier [] (3) - the event queue and notifier interfaces
+Tcl_Alloc [] (3) - allocate or free heap memory
+Tcl_AllocStatBuf [] (3) - procedures to interact with any filesystem
+Tcl_AllowExceptions [] (3) - allow all exceptions in next script evaluation
+Tcl_AppInit [] (3) - perform application-specific initialization
+Tcl_AppendAllObjTypes [] (3) - manipulate Tcl object types
+Tcl_AppendElement [] (3) - manipulate Tcl result
+Tcl_AppendExportList [] (3) - manipulate namespaces
+Tcl_AppendFormatToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AppendLimitedToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AppendObjToErrorInfo [] (3) - retrieve or record information about errors and other return options
+Tcl_AppendObjToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AppendPrintfToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AppendResult [] (3) - manipulate Tcl result
+Tcl_AppendResultVA [] (3) - manipulate Tcl result
+Tcl_AppendStringsToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AppendStringsToObjVA [] (3) - manipulate Tcl objects as strings
+Tcl_AppendToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AppendUnicodeToObj [] (3) - manipulate Tcl objects as strings
+Tcl_AsyncCreate [] (3) - handle asynchronous events
+Tcl_AsyncDelete [] (3) - handle asynchronous events
+Tcl_AsyncInvoke [] (3) - handle asynchronous events
+Tcl_AsyncMark [] (3) - handle asynchronous events
+Tcl_AsyncReady [] (3) - handle asynchronous events
+Tcl_AttemptAlloc [] (3) - allocate or free heap memory
+Tcl_AttemptRealloc [] (3) - allocate or free heap memory
+Tcl_AttemptSetObjLength [] (3) - manipulate Tcl objects as strings
+Tcl_BackgroundError [] (3) - report Tcl error that occurred in background processing
+Tcl_Backslash [] (3) - parse a backslash sequence
+Tcl_BadChannelOption [] (3) - procedures for creating and manipulating channels
+Tcl_CallWhenDeleted [] (3) - Arrange for callback when interpreter is deleted
+Tcl_CancelIdleCall [] (3) - invoke a procedure when there are no pending events
+Tcl_ChannelBlockModeProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelBuffered [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelClose2Proc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelCloseProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelFlushProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelGetHandleProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelGetOptionProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelHandlerProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelInputProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelName [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelOutputProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelSeekProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelSetOptionProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelThreadActionProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelTruncateProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelVersion [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelWatchProc [] (3) - procedures for creating and manipulating channels
+Tcl_ChannelWideSeekProc [] (3) - procedures for creating and manipulating channels
+Tcl_Chdir [] (3) - manipulate the current working directory
+Tcl_ClearChannelHandlers [] (3) - procedures for creating and manipulating channels
+Tcl_Close [] (3) - buffered I/O facilities using channels
+Tcl_CommandComplete [] (3) - Check for unmatched braces in a Tcl command
+Tcl_CommandTraceInfo [] (3) - monitor renames and deletes of a command
+Tcl_Concat [] (3) - concatenate a collection of strings
+Tcl_ConcatObj [] (3) - manipulate Tcl objects as strings
+Tcl_ConditionFinalize [] (3) - Tcl thread support
+Tcl_ConditionNotify [] (3) - Tcl thread support
+Tcl_ConditionWait [] (3) - Tcl thread support
+Tcl_ConvertCountedElement [] (3) - manipulate Tcl lists
+Tcl_ConvertElement [] (3) - manipulate Tcl lists
+Tcl_ConvertToType [] (3) - manipulate Tcl object types
+Tcl_CreateAlias [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_CreateAliasObj [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_CreateChannel [] (3) - procedures for creating and manipulating channels
+Tcl_CreateChannelHandler [] (3) - call a procedure when a channel becomes readable or writable
+Tcl_CreateCloseHandler [] (3) - arrange for callbacks when channels are closed
+Tcl_CreateCommand [] (3) - implement new commands in C
+Tcl_CreateEncoding [] (3) - procedures for creating and using encodings
+Tcl_CreateEnsemble [] (3) - manipulate ensemble commands
+Tcl_CreateEventSource [] (3) - the event queue and notifier interfaces
+Tcl_CreateExitHandler [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_CreateFileHandler [] (3) - associate procedure callbacks with files or devices (Unix only)
+Tcl_CreateHashEntry [] (3) - procedures to manage hash tables
+Tcl_CreateInterp [] (3) - create and delete Tcl command interpreters
+Tcl_CreateMathFunc [] (3) - Define, query and enumerate math functions for expressions
+Tcl_CreateNamespace [] (3) - manipulate namespaces
+Tcl_CreateObjCommand [] (3) - implement new commands in C
+Tcl_CreateObjTrace [] (3) - arrange for command execution to be traced
+Tcl_CreateSlave [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_CreateThread [] (3) - Tcl thread support
+Tcl_CreateThreadExitHandler [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_CreateTimerHandler [] (3) - call a procedure at a given time
+Tcl_CreateTrace [] (3) - arrange for command execution to be traced
+Tcl_CutChannel [] (3) - procedures for creating and manipulating channels
+Tcl_DStringAppend [] (3) - manipulate dynamic strings
+Tcl_DStringAppendElement [] (3) - manipulate dynamic strings
+Tcl_DStringEndSublist [] (3) - manipulate dynamic strings
+Tcl_DStringFree [] (3) - manipulate dynamic strings
+Tcl_DStringGetResult [] (3) - manipulate dynamic strings
+Tcl_DStringInit [] (3) - manipulate dynamic strings
+Tcl_DStringLength [] (3) - manipulate dynamic strings
+Tcl_DStringResult [] (3) - manipulate dynamic strings
+Tcl_DStringSetLength [] (3) - manipulate dynamic strings
+Tcl_DStringStartSublist [] (3) - manipulate dynamic strings
+Tcl_DStringTrunc [] (3) - manipulate dynamic strings
+Tcl_DStringValue [] (3) - manipulate dynamic strings
+Tcl_DecrRefCount [] (3) - manipulate Tcl objects
+Tcl_DeleteAssocData [] (3) - manage associations of string keys and user specified data with Tcl interpreters
+Tcl_DeleteChannelHandler [] (3) - call a procedure when a channel becomes readable or writable
+Tcl_DeleteCloseHandler [] (3) - arrange for callbacks when channels are closed
+Tcl_DeleteCommand [] (3) - implement new commands in C
+Tcl_DeleteCommandFromToken [] (3) - implement new commands in C
+Tcl_DeleteEventSource [] (3) - the event queue and notifier interfaces
+Tcl_DeleteEvents [] (3) - the event queue and notifier interfaces
+Tcl_DeleteExitHandler [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_DeleteFileHandler [] (3) - associate procedure callbacks with files or devices (Unix only)
+Tcl_DeleteHashEntry [] (3) - procedures to manage hash tables
+Tcl_DeleteHashTable [] (3) - procedures to manage hash tables
+Tcl_DeleteInterp [] (3) - create and delete Tcl command interpreters
+Tcl_DeleteNamespace [] (3) - manipulate namespaces
+Tcl_DeleteThreadExitHandler [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_DeleteTimerHandler [] (3) - call a procedure at a given time
+Tcl_DeleteTrace [] (3) - arrange for command execution to be traced
+Tcl_DetachChannel [] (3) - buffered I/O facilities using channels
+Tcl_DetachPids [] (3) - manage child processes in background
+Tcl_DictObjDone [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjFirst [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjGet [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjNext [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjPut [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjPutKeyList [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjRemove [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjRemoveKeyList [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DictObjSize [] (3) - manipulate Tcl objects as dictionaries
+Tcl_DiscardInterpState [] (3) - save and restore an interpreter's state
+Tcl_DiscardResult [] (3) - save and restore an interpreter's state
+Tcl_DoOneEvent [] (3) - wait for events and invoke event handlers
+Tcl_DoWhenIdle [] (3) - invoke a procedure when there are no pending events
+Tcl_DontCallWhenDeleted [] (3) - Arrange for callback when interpreter is deleted
+Tcl_DumpActiveMemory [] (3) - Validated memory allocation interface
+Tcl_DuplicateObj [] (3) - manipulate Tcl objects
+Tcl_Eof [] (3) - buffered I/O facilities using channels
+Tcl_ErrnoId [] (3) - manipulate errno to store and retrieve error codes
+Tcl_ErrnoMsg [] (3) - manipulate errno to store and retrieve error codes
+Tcl_Eval [] (3) - execute Tcl scripts
+Tcl_EvalEx [] (3) - execute Tcl scripts
+Tcl_EvalFile [] (3) - execute Tcl scripts
+Tcl_EvalObjEx [] (3) - execute Tcl scripts
+Tcl_EvalObjv [] (3) - execute Tcl scripts
+Tcl_EvalTokens [] (3) - parse Tcl scripts and expressions
+Tcl_EvalTokensStandard [] (3) - parse Tcl scripts and expressions
+Tcl_EventuallyFree [] (3) - avoid freeing storage while it is being used
+Tcl_Exit [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_ExitThread [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_Export [] (3) - manipulate namespaces
+Tcl_ExposeCommand [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_ExprBoolean [] (3) - evaluate an expression
+Tcl_ExprBooleanObj [] (3) - evaluate an expression
+Tcl_ExprDouble [] (3) - evaluate an expression
+Tcl_ExprDoubleObj [] (3) - evaluate an expression
+Tcl_ExprLong [] (3) - evaluate an expression
+Tcl_ExprLongObj [] (3) - evaluate an expression
+Tcl_ExprObj [] (3) - evaluate an expression
+Tcl_ExprString [] (3) - evaluate an expression
+Tcl_ExternalToUtf [] (3) - procedures for creating and using encodings
+Tcl_ExternalToUtfDString [] (3) - procedures for creating and using encodings
+Tcl_FSAccess [] (3) - procedures to interact with any filesystem
+Tcl_FSChdir [] (3) - procedures to interact with any filesystem
+Tcl_FSConvertToPathType [] (3) - procedures to interact with any filesystem
+Tcl_FSCopyDirectory [] (3) - procedures to interact with any filesystem
+Tcl_FSCopyFile [] (3) - procedures to interact with any filesystem
+Tcl_FSCreateDirectory [] (3) - procedures to interact with any filesystem
+Tcl_FSData [] (3) - procedures to interact with any filesystem
+Tcl_FSDeleteFile [] (3) - procedures to interact with any filesystem
+Tcl_FSEqualPaths [] (3) - procedures to interact with any filesystem
+Tcl_FSEvalFile [] (3) - procedures to interact with any filesystem
+Tcl_FSEvalFileEx [] (3) - procedures to interact with any filesystem
+Tcl_FSFileAttrStrings [] (3) - procedures to interact with any filesystem
+Tcl_FSFileAttrsGet [] (3) - procedures to interact with any filesystem
+Tcl_FSFileAttrsSet [] (3) - procedures to interact with any filesystem
+Tcl_FSFileSystemInfo [] (3) - procedures to interact with any filesystem
+Tcl_FSGetCwd [] (3) - procedures to interact with any filesystem
+Tcl_FSGetFileSystemForPath [] (3) - procedures to interact with any filesystem
+Tcl_FSGetInternalRep [] (3) - procedures to interact with any filesystem
+Tcl_FSGetNativePath [] (3) - procedures to interact with any filesystem
+Tcl_FSGetNormalizedPath [] (3) - procedures to interact with any filesystem
+Tcl_FSGetPathType [] (3) - procedures to interact with any filesystem
+Tcl_FSGetTranslatedPath [] (3) - procedures to interact with any filesystem
+Tcl_FSGetTranslatedStringPath [] (3) - procedures to interact with any filesystem
+Tcl_FSJoinPath [] (3) - procedures to interact with any filesystem
+Tcl_FSJoinToPath [] (3) - procedures to interact with any filesystem
+Tcl_FSLink [] (3) - procedures to interact with any filesystem
+Tcl_FSListVolumes [] (3) - procedures to interact with any filesystem
+Tcl_FSLoadFile [] (3) - procedures to interact with any filesystem
+Tcl_FSLstat [] (3) - procedures to interact with any filesystem
+Tcl_FSMatchInDirectory [] (3) - procedures to interact with any filesystem
+Tcl_FSMountsChanged [] (3) - procedures to interact with any filesystem
+Tcl_FSNewNativePath [] (3) - procedures to interact with any filesystem
+Tcl_FSOpenFileChannel [] (3) - procedures to interact with any filesystem
+Tcl_FSPathSeparator [] (3) - procedures to interact with any filesystem
+Tcl_FSRegister [] (3) - procedures to interact with any filesystem
+Tcl_FSRemoveDirectory [] (3) - procedures to interact with any filesystem
+Tcl_FSRenameFile [] (3) - procedures to interact with any filesystem
+Tcl_FSSplitPath [] (3) - procedures to interact with any filesystem
+Tcl_FSStat [] (3) - procedures to interact with any filesystem
+Tcl_FSUnregister [] (3) - procedures to interact with any filesystem
+Tcl_FSUtime [] (3) - procedures to interact with any filesystem
+Tcl_Finalize [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_FinalizeNotifier [] (3) - the event queue and notifier interfaces
+Tcl_FinalizeThread [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_FindCommand [] (3) - manipulate namespaces
+Tcl_FindEnsemble [] (3) - manipulate ensemble commands
+Tcl_FindExecutable [] (3) - identify or return the name of the binary file containing the application
+Tcl_FindHashEntry [] (3) - procedures to manage hash tables
+Tcl_FindNamespace [] (3) - manipulate namespaces
+Tcl_FirstHashEntry [] (3) - procedures to manage hash tables
+Tcl_Flush [] (3) - buffered I/O facilities using channels
+Tcl_ForgetImport [] (3) - manipulate namespaces
+Tcl_Format [] (3) - manipulate Tcl objects as strings
+Tcl_Free [] (3) - allocate or free heap memory
+Tcl_FreeEncoding [] (3) - procedures for creating and using encodings
+Tcl_FreeParse [] (3) - parse Tcl scripts and expressions
+Tcl_FreeResult [] (3) - manipulate Tcl result
+Tcl_GetAlias [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_GetAliasObj [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_GetAssocData [] (3) - manage associations of string keys and user specified data with Tcl interpreters
+Tcl_GetBignumFromObj [] (3) - manipulate Tcl objects as integer values
+Tcl_GetBoolean [] (3) - convert from string to integer, double, or boolean
+Tcl_GetBooleanFromObj [] (3) - store/retrieve boolean value in a Tcl_Obj
+Tcl_GetByteArrayFromObj [] (3) - manipulate Tcl objects as a arrays of bytes
+Tcl_GetChannel [] (3) - buffered I/O facilities using channels
+Tcl_GetChannelBufferSize [] (3) - procedures for creating and manipulating channels
+Tcl_GetChannelError [] (3) - functions to create/intercept Tcl errors by channel drivers
+Tcl_GetChannelErrorInterp [] (3) - functions to create/intercept Tcl errors by channel drivers
+Tcl_GetChannelHandle [] (3) - procedures for creating and manipulating channels
+Tcl_GetChannelInstanceData [] (3) - procedures for creating and manipulating channels
+Tcl_GetChannelMode [] (3) - procedures for creating and manipulating channels
+Tcl_GetChannelName [] (3) - procedures for creating and manipulating channels
+Tcl_GetChannelNames [] (3) - buffered I/O facilities using channels
+Tcl_GetChannelNamesEx [] (3) - buffered I/O facilities using channels
+Tcl_GetChannelOption [] (3) - buffered I/O facilities using channels
+Tcl_GetChannelThread [] (3) - procedures for creating and manipulating channels
+Tcl_GetChannelType [] (3) - procedures for creating and manipulating channels
+Tcl_GetCharLength [] (3) - manipulate Tcl objects as strings
+Tcl_GetCommandFromObj [] (3) - implement new commands in C
+Tcl_GetCommandFullName [] (3) - implement new commands in C
+Tcl_GetCommandInfo [] (3) - implement new commands in C
+Tcl_GetCommandInfoFromToken [] (3) - implement new commands in C
+Tcl_GetCommandName [] (3) - implement new commands in C
+Tcl_GetCurrentNamespace [] (3) - manipulate namespaces
+Tcl_GetCurrentThread [] (3) - the event queue and notifier interfaces
+Tcl_GetCwd [] (3) - manipulate the current working directory
+Tcl_GetDefaultEncodingDir [] (3) - procedures for creating and using encodings
+Tcl_GetDouble [] (3) - convert from string to integer, double, or boolean
+Tcl_GetDoubleFromObj [] (3) - manipulate Tcl objects as floating-point values
+Tcl_GetEncoding [] (3) - procedures for creating and using encodings
+Tcl_GetEncodingFromObj [] (3) - procedures for creating and using encodings
+Tcl_GetEncodingName [] (3) - procedures for creating and using encodings
+Tcl_GetEncodingNameFromEnvironment [] (3) - procedures for creating and using encodings
+Tcl_GetEncodingNames [] (3) - procedures for creating and using encodings
+Tcl_GetEncodingSearchPath [] (3) - procedures for creating and using encodings
+Tcl_GetEnsembleFlags [] (3) - manipulate ensemble commands
+Tcl_GetEnsembleMappingDict [] (3) - manipulate ensemble commands
+Tcl_GetEnsembleNamespace [] (3) - manipulate ensemble commands
+Tcl_GetEnsembleSubcommandList [] (3) - manipulate ensemble commands
+Tcl_GetEnsembleUnknownHandler [] (3) - manipulate ensemble commands
+Tcl_GetErrno [] (3) - manipulate errno to store and retrieve error codes
+Tcl_GetGlobalNamespace [] (3) - manipulate namespaces
+Tcl_GetHashKey [] (3) - procedures to manage hash tables
+Tcl_GetHashValue [] (3) - procedures to manage hash tables
+Tcl_GetHostName [] (3) - get the name of the local host
+Tcl_GetIndexFromObj [] (3) - lookup string in table of keywords
+Tcl_GetIndexFromObjStruct [] (3) - lookup string in table of keywords
+Tcl_GetInt [] (3) - convert from string to integer, double, or boolean
+Tcl_GetIntFromObj [] (3) - manipulate Tcl objects as integer values
+Tcl_GetInterpPath [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_GetLongFromObj [] (3) - manipulate Tcl objects as integer values
+Tcl_GetMaster [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_GetMathFuncInfo [] (3) - Define, query and enumerate math functions for expressions
+Tcl_GetNameOfExecutable [] (3) - identify or return the name of the binary file containing the application
+Tcl_GetNamespaceUnknownHandler [] (3) - manipulate namespaces
+Tcl_GetObjResult [] (3) - manipulate Tcl result
+Tcl_GetObjType [] (3) - manipulate Tcl object types
+Tcl_GetOpenFile [] (3) - Return a FILE* for a channel registered in the given interpreter (Unix only)
+Tcl_GetPathType [] (3) - manipulate platform-dependent file paths
+Tcl_GetRange [] (3) - manipulate Tcl objects as strings
+Tcl_GetRegExpFromObj [] (3) - Pattern matching with regular expressions
+Tcl_GetReturnOptions [] (3) - retrieve or record information about errors and other return options
+Tcl_GetServiceMode [] (3) - the event queue and notifier interfaces
+Tcl_GetSlave [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_GetStackedChannel [] (3) - manipulate stacked I/O channels
+Tcl_GetStdChannel [] (3) - procedures for retrieving and replacing the standard channels
+Tcl_GetString [] (3) - manipulate Tcl objects as strings
+Tcl_GetStringFromObj [] (3) - manipulate Tcl objects as strings
+Tcl_GetStringResult [] (3) - manipulate Tcl result
+Tcl_GetThreadData [] (3) - Tcl thread support
+Tcl_GetTime [] (3) - get date and time
+Tcl_GetTopChannel [] (3) - manipulate stacked I/O channels
+Tcl_GetUniChar [] (3) - manipulate Tcl objects as strings
+Tcl_GetUnicode [] (3) - manipulate Tcl objects as strings
+Tcl_GetUnicodeFromObj [] (3) - manipulate Tcl objects as strings
+Tcl_GetVar [] (3) - manipulate Tcl variables
+Tcl_GetVar2 [] (3) - manipulate Tcl variables
+Tcl_GetVar2Ex [] (3) - manipulate Tcl variables
+Tcl_GetVersion [] (3) - get the version of the library at runtime
+Tcl_GetWideIntFromObj [] (3) - manipulate Tcl objects as integer values
+Tcl_Gets [] (3) - buffered I/O facilities using channels
+Tcl_GetsObj [] (3) - buffered I/O facilities using channels
+Tcl_GlobalEval [] (3) - execute Tcl scripts
+Tcl_GlobalEvalObj [] (3) - execute Tcl scripts
+Tcl_HashStats [] (3) - procedures to manage hash tables
+Tcl_HideCommand [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_Import [] (3) - manipulate namespaces
+Tcl_IncrRefCount [] (3) - manipulate Tcl objects
+Tcl_Init [] (3) - find and source initialization script
+Tcl_InitCustomHashTable [] (3) - procedures to manage hash tables
+Tcl_InitHashTable [] (3) - procedures to manage hash tables
+Tcl_InitMemory [] (3) - Validated memory allocation interface
+Tcl_InitNotifier [] (3) - the event queue and notifier interfaces
+Tcl_InitObjHashTable [] (3) - procedures to manage hash tables
+Tcl_InitStubs [] (3) - initialize the Tcl stubs mechanism
+Tcl_InputBlocked [] (3) - buffered I/O facilities using channels
+Tcl_InputBuffered [] (3) - buffered I/O facilities using channels
+Tcl_Interp [] (3) - client-visible fields of interpreter structures
+Tcl_InterpDeleted [] (3) - create and delete Tcl command interpreters
+Tcl_InvalidateStringRep [] (3) - manipulate Tcl objects
+Tcl_IsChannelExisting [] (3) - procedures for creating and manipulating channels
+Tcl_IsChannelRegistered [] (3) - procedures for creating and manipulating channels
+Tcl_IsChannelShared [] (3) - procedures for creating and manipulating channels
+Tcl_IsEnsemble [] (3) - manipulate ensemble commands
+Tcl_IsSafe [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_IsShared [] (3) - manipulate Tcl objects
+Tcl_IsStandardChannel [] (3) - buffered I/O facilities using channels
+Tcl_JoinPath [] (3) - manipulate platform-dependent file paths
+Tcl_JoinThread [] (3) - Tcl thread support
+Tcl_LimitAddHandler [] (3) - manage and check resource limits on interpreters
+Tcl_LimitCheck [] (3) - manage and check resource limits on interpreters
+Tcl_LimitExceeded [] (3) - manage and check resource limits on interpreters
+Tcl_LimitGetCommands [] (3) - manage and check resource limits on interpreters
+Tcl_LimitGetGranularity [] (3) - manage and check resource limits on interpreters
+Tcl_LimitGetTime [] (3) - manage and check resource limits on interpreters
+Tcl_LimitReady [] (3) - manage and check resource limits on interpreters
+Tcl_LimitRemoveHandler [] (3) - manage and check resource limits on interpreters
+Tcl_LimitSetCommands [] (3) - manage and check resource limits on interpreters
+Tcl_LimitSetGranularity [] (3) - manage and check resource limits on interpreters
+Tcl_LimitSetTime [] (3) - manage and check resource limits on interpreters
+Tcl_LimitTypeEnabled [] (3) - manage and check resource limits on interpreters
+Tcl_LimitTypeExceeded [] (3) - manage and check resource limits on interpreters
+Tcl_LimitTypeReset [] (3) - manage and check resource limits on interpreters
+Tcl_LimitTypeSet [] (3) - manage and check resource limits on interpreters
+Tcl_LinkVar [] (3) - link Tcl variable to C variable
+Tcl_ListMathFuncs [] (3) - Define, query and enumerate math functions for expressions
+Tcl_ListObjAppendElement [] (3) - manipulate Tcl objects as lists
+Tcl_ListObjAppendList [] (3) - manipulate Tcl objects as lists
+Tcl_ListObjGetElements [] (3) - manipulate Tcl objects as lists
+Tcl_ListObjIndex [] (3) - manipulate Tcl objects as lists
+Tcl_ListObjLength [] (3) - manipulate Tcl objects as lists
+Tcl_ListObjReplace [] (3) - manipulate Tcl objects as lists
+Tcl_LogCommandInfo [] (3) - retrieve or record information about errors and other return options
+Tcl_Main [] (3) - main program and event loop definition for Tcl-based applications
+Tcl_MakeFileChannel [] (3) - buffered I/O facilities using channels
+Tcl_MakeSafe [] (3) - manage multiple Tcl interpreters, aliases and hidden commands
+Tcl_MakeTcpClientChannel [] (3) - procedures to open channels using TCP sockets
+Tcl_Merge [] (3) - manipulate Tcl lists
+Tcl_MutexFinalize [] (3) - Tcl thread support
+Tcl_MutexLock [] (3) - Tcl thread support
+Tcl_MutexUnlock [] (3) - Tcl thread support
+Tcl_NewBignumObj [] (3) - manipulate Tcl objects as integer values
+Tcl_NewBooleanObj [] (3) - store/retrieve boolean value in a Tcl_Obj
+Tcl_NewByteArrayObj [] (3) - manipulate Tcl objects as a arrays of bytes
+Tcl_NewDictObj [] (3) - manipulate Tcl objects as dictionaries
+Tcl_NewDoubleObj [] (3) - manipulate Tcl objects as floating-point values
+Tcl_NewIntObj [] (3) - manipulate Tcl objects as integer values
+Tcl_NewListObj [] (3) - manipulate Tcl objects as lists
+Tcl_NewLongObj [] (3) - manipulate Tcl objects as integer values
+Tcl_NewObj [] (3) - manipulate Tcl objects
+Tcl_NewStringObj [] (3) - manipulate Tcl objects as strings
+Tcl_NewUnicodeObj [] (3) - manipulate Tcl objects as strings
+Tcl_NewWideIntObj [] (3) - manipulate Tcl objects as integer values
+Tcl_NextHashEntry [] (3) - procedures to manage hash tables
+Tcl_NotifyChannel [] (3) - procedures for creating and manipulating channels
+Tcl_NumUtfChars [] (3) - routines for manipulating UTF-8 strings
+Tcl_ObjGetVar2 [] (3) - manipulate Tcl variables
+Tcl_ObjPrintf [] (3) - manipulate Tcl objects as strings
+Tcl_ObjSetVar2 [] (3) - manipulate Tcl variables
+Tcl_OpenCommandChannel [] (3) - buffered I/O facilities using channels
+Tcl_OpenFileChannel [] (3) - buffered I/O facilities using channels
+Tcl_OpenTcpClient [] (3) - procedures to open channels using TCP sockets
+Tcl_OpenTcpServer [] (3) - procedures to open channels using TCP sockets
+Tcl_OutputBuffered [] (3) - buffered I/O facilities using channels
+Tcl_Panic [] (3) - report fatal error and abort
+Tcl_PanicVA [] (3) - report fatal error and abort
+Tcl_ParseBraces [] (3) - parse Tcl scripts and expressions
+Tcl_ParseCommand [] (3) - parse Tcl scripts and expressions
+Tcl_ParseExpr [] (3) - parse Tcl scripts and expressions
+Tcl_ParseQuotedString [] (3) - parse Tcl scripts and expressions
+Tcl_ParseVar [] (3) - parse Tcl scripts and expressions
+Tcl_ParseVarName [] (3) - parse Tcl scripts and expressions
+Tcl_PkgPresent [] (3) - package version control
+Tcl_PkgPresentEx [] (3) - package version control
+Tcl_PkgProvide [] (3) - package version control
+Tcl_PkgProvideEx [] (3) - package version control
+Tcl_PkgRequire [] (3) - package version control
+Tcl_PkgRequireEx [] (3) - package version control
+Tcl_PkgRequireProc [] (3) - package version control
+Tcl_PosixError [] (3) - retrieve or record information about errors and other return options
+Tcl_Preserve [] (3) - avoid freeing storage while it is being used
+Tcl_PrintDouble [] (3) - Convert floating value to string
+Tcl_PutEnv [] (3) - procedures to manipulate the environment
+Tcl_QueryTimeProc [] (3) - get date and time
+Tcl_QueueEvent [] (3) - the event queue and notifier interfaces
+Tcl_Read [] (3) - buffered I/O facilities using channels
+Tcl_ReadChars [] (3) - buffered I/O facilities using channels
+Tcl_ReadRaw [] (3) - buffered I/O facilities using channels
+Tcl_Realloc [] (3) - allocate or free heap memory
+Tcl_ReapDetachedProcs [] (3) - manage child processes in background
+Tcl_RecordAndEval [] (3) - save command on history list before evaluating
+Tcl_RecordAndEvalObj [] (3) - save command on history list before evaluating
+Tcl_RegExpCompile [] (3) - Pattern matching with regular expressions
+Tcl_RegExpExec [] (3) - Pattern matching with regular expressions
+Tcl_RegExpExecObj [] (3) - Pattern matching with regular expressions
+Tcl_RegExpGetInfo [] (3) - Pattern matching with regular expressions
+Tcl_RegExpMatch [] (3) - Pattern matching with regular expressions
+Tcl_RegExpMatchObj [] (3) - Pattern matching with regular expressions
+Tcl_RegExpRange [] (3) - Pattern matching with regular expressions
+Tcl_RegisterChannel [] (3) - buffered I/O facilities using channels
+Tcl_RegisterConfig [] (3) - procedures to register embedded configuration information
+Tcl_RegisterObjType [] (3) - manipulate Tcl object types
+Tcl_Release [] (3) - avoid freeing storage while it is being used
+Tcl_ResetResult [] (3) - manipulate Tcl result
+Tcl_RestoreInterpState [] (3) - save and restore an interpreter's state
+Tcl_RestoreResult [] (3) - save and restore an interpreter's state
+Tcl_SaveInterpState [] (3) - save and restore an interpreter's state
+Tcl_SaveResult [] (3) - save and restore an interpreter's state
+Tcl_ScanCountedElement [] (3) - manipulate Tcl lists
+Tcl_ScanElement [] (3) - manipulate Tcl lists
+Tcl_Seek [] (3) - buffered I/O facilities using channels
+Tcl_ServiceAll [] (3) - the event queue and notifier interfaces
+Tcl_ServiceEvent [] (3) - the event queue and notifier interfaces
+Tcl_SetAssocData [] (3) - manage associations of string keys and user specified data with Tcl interpreters
+Tcl_SetBignumObj [] (3) - manipulate Tcl objects as integer values
+Tcl_SetBooleanObj [] (3) - store/retrieve boolean value in a Tcl_Obj
+Tcl_SetByteArrayLength [] (3) - manipulate Tcl objects as a arrays of bytes
+Tcl_SetByteArrayObj [] (3) - manipulate Tcl objects as a arrays of bytes
+Tcl_SetChannelBufferSize [] (3) - procedures for creating and manipulating channels
+Tcl_SetChannelError [] (3) - functions to create/intercept Tcl errors by channel drivers
+Tcl_SetChannelErrorInterp [] (3) - functions to create/intercept Tcl errors by channel drivers
+Tcl_SetChannelOption [] (3) - buffered I/O facilities using channels
+Tcl_SetCommandInfo [] (3) - implement new commands in C
+Tcl_SetCommandInfoFromToken [] (3) - implement new commands in C
+Tcl_SetDefaultEncodingDir [] (3) - procedures for creating and using encodings
+Tcl_SetDoubleObj [] (3) - manipulate Tcl objects as floating-point values
+Tcl_SetEncodingSearchPath [] (3) - procedures for creating and using encodings
+Tcl_SetEnsembleFlags [] (3) - manipulate ensemble commands
+Tcl_SetEnsembleMappingDict [] (3) - manipulate ensemble commands
+Tcl_SetEnsembleSubcommandList [] (3) - manipulate ensemble commands
+Tcl_SetEnsembleUnknownHandler [] (3) - manipulate ensemble commands
+Tcl_SetErrno [] (3) - manipulate errno to store and retrieve error codes
+Tcl_SetErrorCode [] (3) - retrieve or record information about errors and other return options
+Tcl_SetErrorCodeVA [] (3) - retrieve or record information about errors and other return options
+Tcl_SetExitProc [] (3) - end the application or thread (and invoke exit handlers)
+Tcl_SetHashValue [] (3) - procedures to manage hash tables
+Tcl_SetIntObj [] (3) - manipulate Tcl objects as integer values
+Tcl_SetListObj [] (3) - manipulate Tcl objects as lists
+Tcl_SetLongObj [] (3) - manipulate Tcl objects as integer values
+Tcl_SetMainLoop [] (3) - main program and event loop definition for Tcl-based applications
+Tcl_SetMaxBlockTime [] (3) - the event queue and notifier interfaces
+Tcl_SetNamespaceUnknownHandler [] (3) - manipulate namespaces
+Tcl_SetObjErrorCode [] (3) - retrieve or record information about errors and other return options
+Tcl_SetObjLength [] (3) - manipulate Tcl objects as strings
+Tcl_SetObjResult [] (3) - manipulate Tcl result
+Tcl_SetPanicProc [] (3) - report fatal error and abort
+Tcl_SetRecursionLimit [] (3) - set maximum allowable nesting depth in interpreter
+Tcl_SetResult [] (3) - manipulate Tcl result
+Tcl_SetReturnOptions [] (3) - retrieve or record information about errors and other return options
+Tcl_SetServiceMode [] (3) - the event queue and notifier interfaces
+Tcl_SetStdChannel [] (3) - procedures for retrieving and replacing the standard channels
+Tcl_SetStringObj [] (3) - manipulate Tcl objects as strings
+Tcl_SetSystemEncoding [] (3) - procedures for creating and using encodings
+Tcl_SetTimeProc [] (3) - get date and time
+Tcl_SetTimer [] (3) - the event queue and notifier interfaces
+Tcl_SetUnicodeObj [] (3) - manipulate Tcl objects as strings
+Tcl_SetVar [] (3) - manipulate Tcl variables
+Tcl_SetVar2 [] (3) - manipulate Tcl variables
+Tcl_SetVar2Ex [] (3) - manipulate Tcl variables
+Tcl_SetWideIntObj [] (3) - manipulate Tcl objects as integer values
+Tcl_SignalId [] (3) - Convert signal codes
+Tcl_SignalMsg [] (3) - Convert signal codes
+Tcl_Sleep [] (3) - delay execution for a given number of milliseconds
+Tcl_SourceRCFile [] (3) - source the Tcl rc file
+Tcl_SpliceChannel [] (3) - procedures for creating and manipulating channels
+Tcl_SplitList [] (3) - manipulate Tcl lists
+Tcl_SplitPath [] (3) - manipulate platform-dependent file paths
+Tcl_StackChannel [] (3) - manipulate stacked I/O channels
+Tcl_StandardChannels [] (3) - How the Tcl library deals with the standard channels
+Tcl_Stat [] (3) - check file permissions and other attributes
+Tcl_StaticPackage [] (3) - make a statically linked package available via the 'load' command
+Tcl_StringCaseMatch [] (3) - test whether a string matches a pattern
+Tcl_StringMatch [] (3) - test whether a string matches a pattern
+Tcl_SubstObj [] (3) - perform substitutions on Tcl objects
+Tcl_TakeBignumFromObj [] (3) - manipulate Tcl objects as integer values
+Tcl_Tell [] (3) - buffered I/O facilities using channels
+Tcl_ThreadAlert [] (3) - the event queue and notifier interfaces
+Tcl_ThreadQueueEvent [] (3) - the event queue and notifier interfaces
+Tcl_TraceCommand [] (3) - monitor renames and deletes of a command
+Tcl_TraceVar [] (3) - monitor accesses to a variable
+Tcl_TraceVar2 [] (3) - monitor accesses to a variable
+Tcl_TranslateFileName [] (3) - convert file name to native form and replace tilde with home directory
+Tcl_TruncateChannel [] (3) - buffered I/O facilities using channels
+Tcl_Ungets [] (3) - buffered I/O facilities using channels
+Tcl_UniChar [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharAtIndex [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharCaseMatch [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharIsAlnum [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsAlpha [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsControl [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsDigit [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsGraph [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsLower [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsPrint [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsPunct [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsSpace [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsUpper [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharIsWordChar [] (3) - routines for classification of Tcl_UniChar characters
+Tcl_UniCharLen [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharNcasecmp [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharNcmp [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharToLower [] (3) - routines for manipulating the case of Unicode characters and UTF-8 strings
+Tcl_UniCharToTitle [] (3) - routines for manipulating the case of Unicode characters and UTF-8 strings
+Tcl_UniCharToUpper [] (3) - routines for manipulating the case of Unicode characters and UTF-8 strings
+Tcl_UniCharToUtf [] (3) - routines for manipulating UTF-8 strings
+Tcl_UniCharToUtfDString [] (3) - routines for manipulating UTF-8 strings
+Tcl_UnlinkVar [] (3) - link Tcl variable to C variable
+Tcl_UnregisterChannel [] (3) - buffered I/O facilities using channels
+Tcl_UnsetVar [] (3) - manipulate Tcl variables
+Tcl_UnsetVar2 [] (3) - manipulate Tcl variables
+Tcl_UnstackChannel [] (3) - manipulate stacked I/O channels
+Tcl_UntraceCommand [] (3) - monitor renames and deletes of a command
+Tcl_UntraceVar [] (3) - monitor accesses to a variable
+Tcl_UntraceVar2 [] (3) - monitor accesses to a variable
+Tcl_UpVar [] (3) - link one variable to another
+Tcl_UpVar2 [] (3) - link one variable to another
+Tcl_UpdateLinkedVar [] (3) - link Tcl variable to C variable
+Tcl_UtfAtIndex [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfBackslash [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfCharComplete [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfFindFirst [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfFindLast [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfNext [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfPrev [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfToExternal [] (3) - procedures for creating and using encodings
+Tcl_UtfToExternalDString [] (3) - procedures for creating and using encodings
+Tcl_UtfToLower [] (3) - routines for manipulating the case of Unicode characters and UTF-8 strings
+Tcl_UtfToTitle [] (3) - routines for manipulating the case of Unicode characters and UTF-8 strings
+Tcl_UtfToUniChar [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfToUniCharDString [] (3) - routines for manipulating UTF-8 strings
+Tcl_UtfToUpper [] (3) - routines for manipulating the case of Unicode characters and UTF-8 strings
+Tcl_ValidateAllMemory [] (3) - Validated memory allocation interface
+Tcl_VarEval [] (3) - execute Tcl scripts
+Tcl_VarEvalVA [] (3) - execute Tcl scripts
+Tcl_VarTraceInfo [] (3) - monitor accesses to a variable
+Tcl_VarTraceInfo2 [] (3) - monitor accesses to a variable
+Tcl_WaitForEvent [] (3) - the event queue and notifier interfaces
+Tcl_WaitPid [] (3) - manage child processes in background
+Tcl_WinTCharToUtf [] (3) - procedures for creating and using encodings
+Tcl_WinUtfToTChar [] (3) - procedures for creating and using encodings
+Tcl_Write [] (3) - buffered I/O facilities using channels
+Tcl_WriteChars [] (3) - buffered I/O facilities using channels
+Tcl_WriteObj [] (3) - buffered I/O facilities using channels
+Tcl_WriteRaw [] (3) - buffered I/O facilities using channels
+Tcl_WrongNumArgs [] (3) - generate standard error message for wrong number of arguments
+Term::ANSIColor [] (3) - Color screen output using ANSI escape sequences
+Term::Cap [] (3) - Perl termcap interface
+Term::Complete [] (3) - Perl word completion module
+Term::ReadLine [] (3) - Perl interface to various readline packages. If no real package is found, substitutes stubs instead of basic functions
+Term::UI [] (3) - Term::ReadLine UI made easy
+Terminal (1) - A Terminal emulator for X
+Terminal [] (1) - A Terminal emulator for X
+Test [] (3) - provides a simple framework for writing test scripts
+Test::Builder [] (3) - Backend for building test libraries
+Test::Builder::Module [] (3) - Base class for test modules
+Test::Builder::Tester [] (3) - test testsuites that have been built with Test::Builder
+Test::Builder::Tester::Color [] (3) - turn on colour in Test::Builder::Tester
+Test::Harness [] (3) - Run Perl standard test scripts with statistics
+Test::Harness::Assert [] (3) - simple assert
+Test::Harness::Iterator [] (3) - Internal Test::Harness Iterator
+Test::Harness::Point [] (3) - object for tracking a single test point
+Test::Harness::Results [] (3) - object for tracking results from a single test file
+Test::Harness::Straps [] (3) - detailed analysis of test results
+Test::Harness::TAP [] (3) - Documentation for the TAP format
+Test::Harness::Util [] (3) - Utility functions for Test::Harness::*
+Test::More [] (3) - yet another framework for writing test scripts
+Test::Simple [] (3) - Basic utilities for writing tests
+Test::Tutorial [] (3) - A tutorial about writing really basic tests
+Text::Balanced [] (3) - Extract delimited text sequences from strings
+Text::ParseWords [] (3) - parse text into an array of tokens or array of arrays
+Text::Soundex [] (3) - Implementation of the soundex algorithm
+Text::Tabs [] (3) - - expand and unexpand tabs per the unix expand(1) and unexpand(1)
+Text::Wrap [] (3) - line wrapping to form simple paragraphs
+The Net [] (3) - SNMP agent - The snmp agent responds to SNMP queries from management stations
+The Net [] (3) - SNMP library -
+Thread [] (3) - Manipulate threads in Perl (for old code only)
+Thread::Queue [] (3) - thread-safe queues
+Thread::Semaphore [] (3) - thread-safe semaphores
+Thunar (1) - File Manager for the Xfce Desktop Environment
+Thunar [] (1) - File Manager for the Xfce Desktop Environment
+Tie::Array [] (3) - base class for tied arrays
+Tie::ExtraHash [] (3) - base class definitions for tied hashes
+Tie::File [] (3) - Access the lines of a disk file via a Perl array
+Tie::Handle [] (3) - base class definitions for tied handles
+Tie::Hash [] (3) - base class definitions for tied hashes
+Tie::Hash::NamedCapture [] (3) - Named regexp capture buffers
+Tie::Memoize [] (3) - add data to hash when needed
+Tie::RefHash [] (3) - use references as hash keys
+Tie::Scalar [] (3) - base class definitions for tied scalars
+Tie::StdHash [] (3) - base class definitions for tied hashes
+Tie::StdScalar [] (3) - base class definitions for tied scalars
+Tie::SubstrHash [] (3) - Fixed-table-size, fixed-key-length hashing
+Tim Bunce [] (3) - 12th November 2004
+Time::HiRes [] (3) - High resolution alarm, sleep, gettimeofday, interval timers
+Time::Local [] (3) - efficiently compute time from local and GMT time
+Time::Piece [] (3) - Object Oriented time objects
+Time::Seconds [] (3) - a simple API to convert seconds to other date values
+Time::gmtime [] (3) - by-name interface to Perl's built-in gmtime() function
+Time::localtime [] (3) - by-name interface to Perl's built-in localtime() function
+Time::tm [] (3) - internal object used by Time::gmtime and Time::localtime
+TixIntro [] (n) - Introduction to the Tix library
+Tk_3DBorderColor [] (3) - draw borders with three-dimensional appearance
+Tk_3DBorderGC [] (3) - draw borders with three-dimensional appearance
+Tk_3DHorizontalBevel [] (3) - draw borders with three-dimensional appearance
+Tk_3DVerticalBevel [] (3) - draw borders with three-dimensional appearance
+Tk_AddOption [] (3) - Add an option to the option database
+Tk_Alloc3DBorderFromObj [] (3) - draw borders with three-dimensional appearance
+Tk_AllocBitmapFromObj [] (3) - maintain database of single-plane pixmaps
+Tk_AllocColorFromObj [] (3) - maintain database of colors
+Tk_AllocCursorFromObj [] (3) - maintain database of cursors
+Tk_AllocFontFromObj [] (3) - maintain database of fonts
+Tk_AttachHWND [] (3) - manage interactions between the Windows handle and an X window
+Tk_Attributes [] (3) - retrieve information from Tk's local data structure
+Tk_BindEvent [] (3) - invoke scripts in response to X events
+Tk_CanvasDrawableCoords [] (3) - utility procedures for canvas type managers
+Tk_CanvasEventuallyRedraw [] (3) - utility procedures for canvas type managers
+Tk_CanvasGetCoord [] (3) - utility procedures for canvas type managers
+Tk_CanvasPsBitmap [] (3) - utility procedures for generating Postscript for canvases
+Tk_CanvasPsColor [] (3) - utility procedures for generating Postscript for canvases
+Tk_CanvasPsFont [] (3) - utility procedures for generating Postscript for canvases
+Tk_CanvasPsPath [] (3) - utility procedures for generating Postscript for canvases
+Tk_CanvasPsStipple [] (3) - utility procedures for generating Postscript for canvases
+Tk_CanvasPsY [] (3) - utility procedures for generating Postscript for canvases
+Tk_CanvasSetStippleOrigin [] (3) - utility procedures for canvas type managers
+Tk_CanvasTagsOption [] (3) - utility procedures for canvas type managers
+Tk_CanvasTextInfo [] (3) - additional information for managing text items in canvases
+Tk_CanvasTkwin [] (3) - utility procedures for canvas type managers
+Tk_CanvasWindowCoords [] (3) - utility procedures for canvas type managers
+Tk_ChangeWindowAttributes [] (3) - change window configuration or attributes
+Tk_Changes [] (3) - retrieve information from Tk's local data structure
+Tk_CharBbox [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_Class [] (3) - set or retrieve a window's class
+Tk_ClearSelection [] (3) - Deselect a selection
+Tk_ClipboardAppend [] (3) - Manage the clipboard
+Tk_ClipboardClear [] (3) - Manage the clipboard
+Tk_CollapseMotionEvents [] (3) - Add a window event to the Tcl event queue
+Tk_Colormap [] (3) - retrieve information from Tk's local data structure
+Tk_ComputeTextLayout [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_ConfigureInfo [] (3) - process configuration options for widgets
+Tk_ConfigureValue [] (3) - process configuration options for widgets
+Tk_ConfigureWidget [] (3) - process configuration options for widgets
+Tk_ConfigureWindow [] (3) - change window configuration or attributes
+Tk_CoordsToWindow [] (3) - Find window containing a point
+Tk_CreateBinding [] (3) - invoke scripts in response to X events
+Tk_CreateBindingTable [] (3) - invoke scripts in response to X events
+Tk_CreateClientMessageHandler [] (3) - associate procedure callback with ClientMessage type X events
+Tk_CreateErrorHandler [] (3) - handle X protocol errors
+Tk_CreateEventHandler [] (3) - associate procedure callback with an X event
+Tk_CreateGenericHandler [] (3) - associate procedure callback with all X events
+Tk_CreateImageType [] (3) - define new kind of image
+Tk_CreateItemType [] (3) - define new kind of canvas item
+Tk_CreateOptionTable [] (3) - process configuration options
+Tk_CreatePhotoImageFormat [] (3) - define new file format for photo images
+Tk_CreateSelHandler [] (3) - arrange to handle requests for a selection
+Tk_CreateWindow [] (3) - create or delete window
+Tk_CreateWindowFromPath [] (3) - create or delete window
+Tk_DefineBitmap [] (3) - maintain database of single-plane pixmaps
+Tk_DefineCursor [] (3) - change window configuration or attributes
+Tk_DeleteAllBindings [] (3) - invoke scripts in response to X events
+Tk_DeleteBinding [] (3) - invoke scripts in response to X events
+Tk_DeleteBindingTable [] (3) - invoke scripts in response to X events
+Tk_DeleteClientMessageHandler [] (3) - associate procedure callback with ClientMessage type X events
+Tk_DeleteErrorHandler [] (3) - handle X protocol errors
+Tk_DeleteEventHandler [] (3) - associate procedure callback with an X event
+Tk_DeleteGenericHandler [] (3) - associate procedure callback with all X events
+Tk_DeleteImage [] (3) - Destroy an image
+Tk_DeleteOptionTable [] (3) - process configuration options
+Tk_DeleteSelHandler [] (3) - arrange to handle requests for a selection
+Tk_Depth [] (3) - retrieve information from Tk's local data structure
+Tk_DestroyWindow [] (3) - create or delete window
+Tk_Display [] (3) - retrieve information from Tk's local data structure
+Tk_DisplayName [] (3) - retrieve information from Tk's local data structure
+Tk_DistanceToTextLayout [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_Draw3DPolygon [] (3) - draw borders with three-dimensional appearance
+Tk_Draw3DRectangle [] (3) - draw borders with three-dimensional appearance
+Tk_DrawChars [] (3) - routines to measure and display simple single-line strings
+Tk_DrawFocusHighlight [] (3) - draw the traversal highlight ring for a widget
+Tk_DrawTextLayout [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_Fill3DPolygon [] (3) - draw borders with three-dimensional appearance
+Tk_Fill3DRectangle [] (3) - draw borders with three-dimensional appearance
+Tk_FindPhoto [] (3) - manipulate the image data stored in a photo image
+Tk_FontId [] (3) - accessor functions for fonts
+Tk_Free3DBorder [] (3) - draw borders with three-dimensional appearance
+Tk_Free3DBorderFromObj [] (3) - draw borders with three-dimensional appearance
+Tk_FreeBitmap [] (3) - maintain database of single-plane pixmaps
+Tk_FreeBitmapFromObj [] (3) - maintain database of single-plane pixmaps
+Tk_FreeColor [] (3) - maintain database of colors
+Tk_FreeColorFromObj [] (3) - maintain database of colors
+Tk_FreeColormap [] (3) - allocate and free colormaps
+Tk_FreeConfigOptions [] (3) - process configuration options
+Tk_FreeCursor [] (3) - maintain database of cursors
+Tk_FreeCursorFromObj [] (3) - maintain database of cursors
+Tk_FreeFont [] (3) - maintain database of fonts
+Tk_FreeFontFromObj [] (3) - maintain database of fonts
+Tk_FreeGC [] (3) - maintain database of read-only graphics contexts
+Tk_FreeImage [] (3) - use an image in a widget
+Tk_FreeOptions [] (3) - process configuration options for widgets
+Tk_FreePixmap [] (3) - allocate and free pixmaps
+Tk_FreeSavedOptions [] (3) - process configuration options
+Tk_FreeTextLayout [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_FreeXId [] (3) - make X resource identifier available for reuse
+Tk_GeometryRequest [] (3) - specify desired geometry or internal border for a window
+Tk_Get3DBorder [] (3) - draw borders with three-dimensional appearance
+Tk_Get3DBorderFromObj [] (3) - draw borders with three-dimensional appearance
+Tk_GetAllBindings [] (3) - invoke scripts in response to X events
+Tk_GetAnchor [] (3) - translate between strings and anchor positions
+Tk_GetAnchorFromObj [] (3) - translate between strings and anchor positions
+Tk_GetAtomName [] (3) - manage cache of X atoms
+Tk_GetBinding [] (3) - invoke scripts in response to X events
+Tk_GetBitmap [] (3) - maintain database of single-plane pixmaps
+Tk_GetBitmapFromObj [] (3) - maintain database of single-plane pixmaps
+Tk_GetCapStyle [] (3) - translate between strings and cap styles
+Tk_GetColor [] (3) - maintain database of colors
+Tk_GetColorByValue [] (3) - maintain database of colors
+Tk_GetColorFromObj [] (3) - maintain database of colors
+Tk_GetColormap [] (3) - allocate and free colormaps
+Tk_GetCursor [] (3) - maintain database of cursors
+Tk_GetCursorFromData [] (3) - maintain database of cursors
+Tk_GetCursorFromObj [] (3) - maintain database of cursors
+Tk_GetDash [] (3) - convert from string to valid dash structure
+Tk_GetFont [] (3) - maintain database of fonts
+Tk_GetFontFromObj [] (3) - maintain database of fonts
+Tk_GetFontMetrics [] (3) - accessor functions for fonts
+Tk_GetGC [] (3) - maintain database of read-only graphics contexts
+Tk_GetHINSTANCE [] (3) - retrieve the global application instance handle
+Tk_GetHWND [] (3) - manage interactions between the Windows handle and an X window
+Tk_GetImage [] (3) - use an image in a widget
+Tk_GetImageMasterData [] (3) - define new kind of image
+Tk_GetItemTypes [] (3) - define new kind of canvas item
+Tk_GetJoinStyle [] (3) - translate between strings and join styles
+Tk_GetJustify [] (3) - translate between strings and justification styles
+Tk_GetJustifyFromObj [] (3) - translate between strings and justification styles
+Tk_GetMMFromObj [] (3) - translate between strings and screen units
+Tk_GetNumMainWindows [] (3) - functions for querying main window information
+Tk_GetOption [] (3) - retrieve an option from the option database
+Tk_GetOptionInfo [] (3) - process configuration options
+Tk_GetOptionValue [] (3) - process configuration options
+Tk_GetPixels [] (3) - translate between strings and screen units
+Tk_GetPixelsFromObj [] (3) - translate between strings and screen units
+Tk_GetPixmap [] (3) - allocate and free pixmaps
+Tk_GetRelief [] (3) - translate between strings and relief values
+Tk_GetReliefFromObj [] (3) - translate between strings and relief values
+Tk_GetRootCoords [] (3) - Compute root-window coordinates of window
+Tk_GetScreenMM [] (3) - translate between strings and screen units
+Tk_GetScrollInfo [] (3) - parse arguments for scrolling commands
+Tk_GetScrollInfoObj [] (3) - parse arguments for scrolling commands
+Tk_GetSelection [] (3) - retrieve the contents of a selection
+Tk_GetUid [] (3) - convert from string to unique identifier
+Tk_GetUserInactiveTime [] (3) - discover user inactivity time
+Tk_GetVRootGeometry [] (3) - Get location and size of virtual root for window
+Tk_GetVisual [] (3) - translate from string to visual
+Tk_Grab [] (3) - manipulate grab state in an application
+Tk_HWNDToWindow [] (3) - Find Tk's window information for a Windows window
+Tk_HandleEvent [] (3) - invoke event handlers for window system events
+Tk_Height [] (3) - retrieve information from Tk's local data structure
+Tk_IdToWindow [] (3) - Find Tk's window information for an X window
+Tk_ImageChanged [] (3) - notify widgets that image needs to be redrawn
+Tk_Init [] (3) - add Tk to an interpreter and make a new Tk application
+Tk_InitConsoleChannels [] (3) - Install the console channels as standard channels
+Tk_InitImageArgs [] (3) - define new kind of image
+Tk_InitOptions [] (3) - process configuration options
+Tk_InitStubs [] (3) - initialize the Tk stubs mechanism
+Tk_InternAtom [] (3) - manage cache of X atoms
+Tk_InternalBorderBottom [] (3) - retrieve information from Tk's local data structure
+Tk_InternalBorderLeft [] (3) - retrieve information from Tk's local data structure
+Tk_InternalBorderRight [] (3) - retrieve information from Tk's local data structure
+Tk_InternalBorderTop [] (3) - retrieve information from Tk's local data structure
+Tk_Interp [] (3) - retrieve information from Tk's local data structure
+Tk_IntersectTextLayout [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_IsContainer [] (3) - retrieve information from Tk's local data structure
+Tk_IsEmbedded [] (3) - retrieve information from Tk's local data structure
+Tk_IsMapped [] (3) - retrieve information from Tk's local data structure
+Tk_IsTopLevel [] (3) - retrieve information from Tk's local data structure
+Tk_Main [] (3) - main program for Tk-based applications
+Tk_MainLoop [] (3) - loop for events until all windows are deleted
+Tk_MainWindow [] (3) - functions for querying main window information
+Tk_MaintainGeometry [] (3) - maintain geometry of one window relative to another
+Tk_MakeWindowExist [] (3) - create or delete window
+Tk_ManageGeometry [] (3) - arrange to handle geometry requests for a window
+Tk_MapWindow [] (3) - map or unmap a window
+Tk_MeasureChars [] (3) - routines to measure and display simple single-line strings
+Tk_MinReqHeight [] (3) - retrieve information from Tk's local data structure
+Tk_MinReqWidth [] (3) - retrieve information from Tk's local data structure
+Tk_MoveResizeWindow [] (3) - change window configuration or attributes
+Tk_MoveToplevelWindow [] (3) - Adjust the position of a top-level window
+Tk_MoveWindow [] (3) - change window configuration or attributes
+Tk_Name [] (3) - convert between names and window tokens
+Tk_NameOf3DBorder [] (3) - draw borders with three-dimensional appearance
+Tk_NameOfAnchor [] (3) - translate between strings and anchor positions
+Tk_NameOfBitmap [] (3) - maintain database of single-plane pixmaps
+Tk_NameOfCapStyle [] (3) - translate between strings and cap styles
+Tk_NameOfColor [] (3) - maintain database of colors
+Tk_NameOfCursor [] (3) - maintain database of cursors
+Tk_NameOfFont [] (3) - maintain database of fonts
+Tk_NameOfImage [] (3) - Return name of image
+Tk_NameOfJoinStyle [] (3) - translate between strings and join styles
+Tk_NameOfJustify [] (3) - translate between strings and justification styles
+Tk_NameOfRelief [] (3) - translate between strings and relief values
+Tk_NameToWindow [] (3) - convert between names and window tokens
+Tk_Offset [] (3) - process configuration options
+Tk_OwnSelection [] (3) - make a window the owner of the primary selection
+Tk_Parent [] (3) - retrieve information from Tk's local data structure
+Tk_ParseArgv [] (3) - process command-line options
+Tk_PathName [] (3) - convert between names and window tokens
+Tk_PhotoBlank [] (3) - manipulate the image data stored in a photo image
+Tk_PhotoExpand [] (3) - manipulate the image data stored in a photo image
+Tk_PhotoGetImage [] (3) - manipulate the image data stored in a photo image
+Tk_PhotoGetSize [] (3) - manipulate the image data stored in a photo image
+Tk_PhotoPutBlock [] (3) - manipulate the image data stored in a photo image
+Tk_PhotoPutZoomedBlock [] (3) - manipulate the image data stored in a photo image
+Tk_PhotoSetSize [] (3) - manipulate the image data stored in a photo image
+Tk_PointToChar [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_PostscriptFontName [] (3) - accessor functions for fonts
+Tk_PreserveColormap [] (3) - allocate and free colormaps
+Tk_QueueWindowEvent [] (3) - Add a window event to the Tcl event queue
+Tk_RedrawImage [] (3) - use an image in a widget
+Tk_ReqHeight [] (3) - retrieve information from Tk's local data structure
+Tk_ReqWidth [] (3) - retrieve information from Tk's local data structure
+Tk_ResetUserInactiveTime [] (3) - discover user inactivity time
+Tk_ResizeWindow [] (3) - change window configuration or attributes
+Tk_RestackWindow [] (3) - Change a window's position in the stacking order
+Tk_RestoreSavedOptions [] (3) - process configuration options
+Tk_RestrictEvents [] (3) - filter and selectively delay X events
+Tk_SafeInit [] (3) - add Tk to an interpreter and make a new Tk application
+Tk_Screen [] (3) - retrieve information from Tk's local data structure
+Tk_ScreenNumber [] (3) - retrieve information from Tk's local data structure
+Tk_SetAppName [] (3) - Set the name of an application for 'send' commands
+Tk_SetBackgroundFromBorder [] (3) - draw borders with three-dimensional appearance
+Tk_SetCaretPos [] (3) - set the display caret location
+Tk_SetClass [] (3) - set or retrieve a window's class
+Tk_SetClassProcs [] (3) - register widget specific procedures
+Tk_SetGrid [] (3) - control the grid for interactive resizing
+Tk_SetInternalBorder [] (3) - specify desired geometry or internal border for a window
+Tk_SetInternalBorderEx [] (3) - specify desired geometry or internal border for a window
+Tk_SetMinimumRequestSize [] (3) - specify desired geometry or internal border for a window
+Tk_SetOptions [] (3) - process configuration options
+Tk_SetWindowBackground [] (3) - change window configuration or attributes
+Tk_SetWindowBackgroundPixmap [] (3) - change window configuration or attributes
+Tk_SetWindowBorder [] (3) - change window configuration or attributes
+Tk_SetWindowBorderPixmap [] (3) - change window configuration or attributes
+Tk_SetWindowBorderWidth [] (3) - change window configuration or attributes
+Tk_SetWindowColormap [] (3) - change window configuration or attributes
+Tk_SetWindowVisual [] (3) - change visual characteristics of window
+Tk_SizeOfBitmap [] (3) - maintain database of single-plane pixmaps
+Tk_SizeOfImage [] (3) - use an image in a widget
+Tk_StrictMotif [] (3) - Return value of tk_strictMotif variable
+Tk_TextLayoutToPostscript [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_TextWidth [] (3) - routines to measure and display simple single-line strings
+Tk_Uid [] (3) - convert from string to unique identifier
+Tk_UndefineCursor [] (3) - change window configuration or attributes
+Tk_UnderlineChars [] (3) - routines to measure and display simple single-line strings
+Tk_UnderlineTextLayout [] (3) - routines to measure and display single-font, multi-line, justified text
+Tk_Ungrab [] (3) - manipulate grab state in an application
+Tk_UnmaintainGeometry [] (3) - maintain geometry of one window relative to another
+Tk_UnmapWindow [] (3) - map or unmap a window
+Tk_UnsetGrid [] (3) - control the grid for interactive resizing
+Tk_Visual [] (3) - retrieve information from Tk's local data structure
+Tk_Width [] (3) - retrieve information from Tk's local data structure
+Tk_WindowId [] (3) - retrieve information from Tk's local data structure
+Tk_X [] (3) - retrieve information from Tk's local data structure
+Tk_Y [] (3) - retrieve information from Tk's local data structure
+Ttk_AddPadding [] (3) - Tk themed geometry utilities
+Ttk_BoxContains [] (3) - Tk themed geometry utilities
+Ttk_CreateTheme [] (3) - create and use Tk themes
+Ttk_ExpandBox [] (3) - Tk themed geometry utilities
+Ttk_GetBorderFromObj [] (3) - Tk themed geometry utilities
+Ttk_GetCurrentTheme [] (3) - create and use Tk themes
+Ttk_GetDefaultTheme [] (3) - create and use Tk themes
+Ttk_GetPaddingFromObj [] (3) - Tk themed geometry utilities
+Ttk_GetStickyFromObj [] (3) - Tk themed geometry utilities
+Ttk_GetTheme [] (3) - create and use Tk themes
+Ttk_MakeBox [] (3) - Tk themed geometry utilities
+Ttk_MakePadding [] (3) - Tk themed geometry utilities
+Ttk_PackBox [] (3) - Tk themed geometry utilities
+Ttk_PadBox [] (3) - Tk themed geometry utilities
+Ttk_PlaceBox [] (3) - Tk themed geometry utilities
+Ttk_RelievePadding [] (3) - Tk themed geometry utilities
+Ttk_StickBox [] (3) - Tk themed geometry utilities
+Ttk_UniformPadding [] (3) - Tk themed geometry utilities
+UI_OpenSSL [] (3) - New User Interface
+UI_add_error_string [] (3) - New User Interface
+UI_add_info_string [] (3) - New User Interface
+UI_add_input_boolean [] (3) - New User Interface
+UI_add_input_string [] (3) - New User Interface
+UI_add_user_data [] (3) - New User Interface
+UI_add_verify_string [] (3) - New User Interface
+UI_construct_prompt [] (3) - New User Interface
+UI_ctrl [] (3) - New User Interface
+UI_dup_error_string [] (3) - New User Interface
+UI_dup_info_string [] (3) - New User Interface
+UI_dup_input_boolean [] (3) - New User Interface
+UI_dup_input_string [] (3) - New User Interface
+UI_dup_verify_string [] (3) - New User Interface
+UI_free [] (3) - New User Interface
+UI_get0_result [] (3) - New User Interface
+UI_get0_user_data [] (3) - New User Interface
+UI_get_default_method [] (3) - New User Interface
+UI_get_method [] (3) - New User Interface
+UI_new [] (3) - New User Interface
+UI_new_method [] (3) - New User Interface
+UI_process [] (3) - New User Interface
+UI_set_default_method [] (3) - New User Interface
+UI_set_method [] (3) - New User Interface
+UNIVERSAL [] (3) - base class for ALL classes (blessed references)
+URI [] (3) - Uniform Resource Identifiers (absolute and relative)
+URI::Escape [] (3) - Escape and unescape unsafe characters
+URI::Heuristic [] (3) - Expand URI using heuristics
+URI::QueryParam [] (3) - Additional query methods for URIs
+URI::Split [] (3) - Parse and compose URI strings
+URI::URL [] (3) - Uniform Resource Locators
+URI::WithBase [] (3) - URIs which remember their base
+URI::data [] (3) - URI that contains immediate data
+URI::file [] (3) - URI that maps to local file names
+URI::ldap [] (3) - LDAP Uniform Resource Locators
+UTF [] (7) - 8 - an ASCII compatible multi-byte Unicode encoding
+Unicode [] (7) - the Universal Character Set
+Unicode::Collate [] (3) - Unicode Collation Algorithm
+Unicode::Normalize [] (3) - Unicode Normalization Forms
+Unicode::UCD [] (3) - Unicode character database
+Unix/Linux path resolution [] (7) - find the file referred to by a filename
+User::grent [] (3) - by-name interface to Perl's built-in getgr*() functions
+User::pwent [] (3) - by-name interface to Perl's built-in getpw*() functions
+VendorRelease [] (3) - Display macros and functions
+VisualOfCCC [] (3) - Color Conversion Context macros
+WMXMMS [] (1) - a dockable XMMS control applet
+Wand [] (1) - config - get information about the installed version of the Magick Wand
+Wget [] (1) - The non-interactive network downloader
+WhitePixel [] (3) - Display macros and functions
+WhitePixelOfScreen [] (3) - screen information functions and macros
+WidthMMOfScreen [] (3) - screen information functions and macros
+WidthOfScreen [] (3) - screen information functions and macros
+Win32::DBIODBC [] (3) - Win32::ODBC emulation layer for the DBI
+X [] (7) - a portable, network-transparent window system
+X.Org [] (7) - X.Org Group information
+X509_NAME_ENTRY_create_by_NID [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_ENTRY_create_by_OBJ [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_ENTRY_create_by_txt [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_ENTRY_get_data [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_ENTRY_get_object [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_ENTRY_set_data [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_ENTRY_set_object [] (3) - X509_NAME_ENTRY utility functions
+X509_NAME_add_entry [] (3) - X509_NAME modification functions
+X509_NAME_add_entry_by_NID [] (3) - X509_NAME modification functions
+X509_NAME_add_entry_by_OBJ [] (3) - X509_NAME modification functions
+X509_NAME_add_entry_by_txt [] (3) - X509_NAME modification functions
+X509_NAME_delete_entry [] (3) - X509_NAME modification functions
+X509_NAME_entry_count [] (3) - X509_NAME lookup and enumeration functions
+X509_NAME_get_entry [] (3) - X509_NAME lookup and enumeration functions
+X509_NAME_get_index_by_NID [] (3) - X509_NAME lookup and enumeration functions
+X509_NAME_get_index_by_OBJ [] (3) - X509_NAME lookup and enumeration functions
+X509_NAME_get_text_by_NID [] (3) - X509_NAME lookup and enumeration functions
+X509_NAME_get_text_by_OBJ [] (3) - X509_NAME lookup and enumeration functions
+X509_NAME_oneline [] (3) - X509_NAME printing routines
+X509_NAME_print [] (3) - X509_NAME printing routines
+X509_NAME_print_ex [] (3) - X509_NAME printing routines
+X509_NAME_print_ex_fp [] (3) - X509_NAME printing routines
+X509_free [] (3) - X509 certificate ASN1 allocation functions
+X509_new [] (3) - X509 certificate ASN1 allocation functions
+XActivateScreenSaver [] (3) - manipulate the screen saver
+XAddConnectionWatch [] (3) - handle Xlib internal connections
+XAddHost [] (3) - control host access and host control structure
+XAddHosts [] (3) - control host access and host control structure
+XAddPixel [] (3) - image utilities
+XAddToSaveSet [] (3) - change a client's save set
+XAllocClassHint [] (3) - allocate class hints structure and set or read a window's WM_CLASS property
+XAllocColor [] (3) - allocate and free colors
+XAllocColorCells [] (3) - allocate and free colors
+XAllocColorPlanes [] (3) - allocate and free colors
+XAllocIconSize [] (3) - allocate icon size structure and set or read a window's WM_ICON_SIZES property
+XAllocNamedColor [] (3) - allocate and free colors
+XAllocSizeHints [] (3) - allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+XAllocStandardColormap [] (3) - allocate, set, or read a standard colormap structure
+XAllocWMHints [] (3) - allocate window manager hints structure and set or read a window's WM_HINTS property
+XAllowDeviceEvents [] (3) - release queued events
+XAllowEvents [] (3) - release queued events
+XAnyEvent [] (3) - generic X event structures
+XArc [] (3) - draw arcs and arc structure
+XAutoRepeatOff [] (3) - manipulate keyboard settings and keyboard control structure
+XAutoRepeatOn [] (3) - manipulate keyboard settings and keyboard control structure
+XBaseFontNameListOfFontSet [] (3) - obtain fontset information
+XBell [] (3) - manipulate keyboard settings and keyboard control structure
+XButtonEvent [] (3) - KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures
+XCURSOR [] (3) - Cursor management library
+XChangeActivePointerGrab [] (3) - grab the pointer
+XChangeDeviceControl [] (3) - query and change input device controls
+XChangeDeviceDontPropagateList [] (3) - query or change the dont-propagate-list for extension devices
+XChangeDeviceKeyMapping [] (3) - query or change device key mappings
+XChangeDeviceProperty [] (3) - Get, change or delete a device's property
+XChangeFeedbackControl [] (3) - query and change input device feedbacks
+XChangeGC [] (3) - create or free graphics contexts and graphics context structure
+XChangeKeyboardControl [] (3) - manipulate keyboard settings and keyboard control structure
+XChangeKeyboardDevice [] (3) - change which device is used as the X keyboard
+XChangeKeyboardMapping [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XChangePointerControl [] (3) - control pointer
+XChangePointerDevice [] (3) - change which device is the X pointer
+XChangeProperty [] (3) - obtain and change window properties
+XChangeSaveSet [] (3) - change a client's save set
+XChangeWindowAttributes [] (3) - change window attributes
+XChar2b [] (3) - load or unload fonts and font metric structures
+XCharStruct [] (3) - load or unload fonts and font metric structures
+XCheckIfEvent [] (3) - check the event queue with a predicate procedure
+XCheckMaskEvent [] (3) - select events by type
+XCheckTypedEvent [] (3) - select events by type
+XCheckTypedWindowEvent [] (3) - select events by type
+XCheckWindowEvent [] (3) - select events by type
+XCirculateEvent [] (3) - CirculateNotify event structure
+XCirculateRequestEvent [] (3) - CirculateRequest event structure
+XCirculateSubwindows [] (3) - change window stacking order
+XCirculateSubwindowsDown [] (3) - change window stacking order
+XCirculateSubwindowsUp [] (3) - change window stacking order
+XClassHint [] (3) - allocate class hints structure and set or read a window's WM_CLASS property
+XClearArea [] (3) - clear area or window
+XClearWindow [] (3) - clear area or window
+XClientMessageEvent [] (3) - ClientMessage event structure
+XClipBox [] (3) - generate regions
+XCloseDevice [] (3) - open or close an extension input device
+XCloseDisplay [] (3) - connect or disconnect to X server
+XCloseIM [] (3) - open, close, and obtain input method information
+XCloseOM [] (3) - open output methods
+XColor [] (3) - create, copy, or destroy colormaps and color structure
+XColormapEvent [] (3) - ColormapNotify event structure
+XConfigureEvent [] (3) - ConfigureNotify event structure
+XConfigureRequestEvent [] (3) - ConfigureRequest event structure
+XConfigureWindow [] (3) - configure windows and window changes structure
+XConsortium [] (7) - X Consortium information
+XContextDependentDrawing [] (3) - obtain fontset information
+XContextualDrawing [] (3) - obtain fontset information
+XConvertCase [] (3) - convert keysyms
+XConvertSelection [] (3) - manipulate window selection
+XCopyArea [] (3) - copy areas
+XCopyColormapAndFree [] (3) - create, copy, or destroy colormaps and color structure
+XCopyGC [] (3) - create or free graphics contexts and graphics context structure
+XCopyPlane [] (3) - copy areas
+XCreateBitmapFromData [] (3) - manipulate bitmaps
+XCreateColormap [] (3) - create, copy, or destroy colormaps and color structure
+XCreateFontCursor [] (3) - create cursors
+XCreateFontSet [] (3) - create and free an international text drawing font set
+XCreateGC [] (3) - create or free graphics contexts and graphics context structure
+XCreateGlyphCursor [] (3) - create cursors
+XCreateIC [] (3) - create, destroy, and obtain the input method of an input context
+XCreateImage [] (3) - image utilities
+XCreateOC [] (3) - create output contexts
+XCreatePixmap [] (3) - create or destroy pixmaps
+XCreatePixmapCursor [] (3) - create cursors
+XCreatePixmapFromBitmapData [] (3) - manipulate bitmaps
+XCreateRegion [] (3) - create or destroy regions
+XCreateSimpleWindow [] (3) - create windows and window attributes structure
+XCreateWindow [] (3) - create windows and window attributes structure
+XCreateWindowEvent [] (3) - CreateNotify event structure
+XCrossingEvent [] (3) - EnterNotify and LeaveNotify event structure
+XDGA [] (3) - Client library for the XFree86-DGA extension
+XDefaultString [] (3) - convert text lists and text property structures
+XDefineCursor [] (3) - define cursors
+XDeleteContext [] (3) - associative look-up routines
+XDeleteDeviceProperty [] (3) - Get, change or delete a device's property
+XDeleteModifiermapEntry [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XDeleteProperty [] (3) - obtain and change window properties
+XDestroyIC [] (3) - create, destroy, and obtain the input method of an input context
+XDestroyImage [] (3) - image utilities
+XDestroyOC [] (3) - create output contexts
+XDestroyRegion [] (3) - create or destroy regions
+XDestroySubwindows [] (3) - destroy windows
+XDestroyWindow [] (3) - destroy windows
+XDestroyWindowEvent [] (3) - DestroyNotify event structure
+XDeviceBell [] (3) - ring a bell on a device supported through the input extension
+XDeviceTimeCoord [] (3) - get device motion history
+XDirectionalDependentDrawing [] (3) - obtain fontset information
+XDisableAccessControl [] (3) - control host access and host control structure
+XDisplayKeycodes [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XDisplayMotionBufferSize [] (3) - send events and pointer motion history structure
+XDisplayName [] (3) - default error handlers
+XDisplayOfIM [] (3) - open, close, and obtain input method information
+XDisplayOfOM [] (3) - open output methods
+XDrawArc [] (3) - draw arcs and arc structure
+XDrawArcs [] (3) - draw arcs and arc structure
+XDrawImageString [] (3) - draw image text
+XDrawImageString16 [] (3) - draw image text
+XDrawLine [] (3) - draw lines, polygons, and line structure
+XDrawLines [] (3) - draw lines, polygons, and line structure
+XDrawPoint [] (3) - draw points and points structure
+XDrawPoints [] (3) - draw points and points structure
+XDrawRectangle [] (3) - draw rectangles and rectangles structure
+XDrawRectangles [] (3) - draw rectangles and rectangles structure
+XDrawSegments [] (3) - draw lines, polygons, and line structure
+XDrawString [] (3) - draw text characters
+XDrawString16 [] (3) - draw text characters
+XDrawText [] (3) - draw polytext text and text drawing structures
+XDrawText16 [] (3) - draw polytext text and text drawing structures
+XEmptyRegion [] (3) - determine if regions are empty or equal
+XEnableAccessControl [] (3) - control host access and host control structure
+XEqualRegion [] (3) - determine if regions are empty or equal
+XErrorEvent [] (3) - X error event structure
+XEvent [] (3) - generic X event structures
+XEventsQueued [] (3) - handle output buffer or event queue
+XExposeEvent [] (3) - Expose event structure
+XExtendedMaxRequestSize [] (3) - Display macros and functions
+XExtentsOfFontSet [] (3) - obtain the maximum extents structure for a font set
+XF86MiscGetKbdSettings [] (3) - Extension library for the XFree86-Misc X extension
+XF86MiscGetMouseSettings [] (3) - Extension library for the XFree86-Misc X extension
+XF86MiscQueryExtension [] (3) - Extension library for the XFree86-Misc X extension
+XF86MiscQueryVersion [] (3) - Extension library for the XFree86-Misc X extension
+XF86MiscSetKbdSettings [] (3) - Extension library for the XFree86-Misc X extension
+XF86MiscSetMouseSettings [] (3) - Extension library for the XFree86-Misc X extension
+XF86VidModeDeleteModeLine [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetAllModeLines [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetDotClocks [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetGamma [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetGammaRamp [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetGammaRampSize [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetModeLine [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetMonitor [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetPermissions [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeGetViewPort [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeLockModeSwitch [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeModModeLine [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeQueryExtension [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeQueryVersion [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeSetClientVersion [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeSetGamma [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeSetGammaRamp [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeSetViewPort [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeSwitchMode [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeSwitchToMode [] (3) - Extension library for the XFree86-VidMode X extension
+XF86VidModeValidateModeLine [] (3) - Extension library for the XFree86-VidMode X extension
+XFetchBuffer [] (3) - manipulate cut and paste buffers
+XFetchBytes [] (3) - manipulate cut and paste buffers
+XFetchName [] (3) - set or read a window's WM_NAME property
+XFillArc [] (3) - fill rectangles, polygons, or arcs
+XFillArcs [] (3) - fill rectangles, polygons, or arcs
+XFillPolygon [] (3) - fill rectangles, polygons, or arcs
+XFillRectangle [] (3) - fill rectangles, polygons, or arcs
+XFillRectangles [] (3) - fill rectangles, polygons, or arcs
+XFilterEvent [] (3) - filter X events for an input method
+XFindContext [] (3) - associative look-up routines
+XFixes [] (3) - Augmented versions of core protocol requests
+XFlush [] (3) - handle output buffer or event queue
+XFocusChangeEvent [] (3) - FocusIn and FocusOut event structure
+XFontProp [] (3) - load or unload fonts and font metric structures
+XFontSetExtents [] (3) - XFontSetExtents structure
+XFontStruct [] (3) - load or unload fonts and font metric structures
+XFontsOfFontSet [] (3) - obtain fontset information
+XForceScreenSaver [] (3) - manipulate the screen saver
+XFree [] (3) - free client data
+XFreeColormap [] (3) - create, copy, or destroy colormaps and color structure
+XFreeColors [] (3) - allocate and free colors
+XFreeCursor [] (3) - manipulate cursors
+XFreeDeviceList [] (3) - list available input devices
+XFreeExtensionList [] (3) - list available extensions
+XFreeFont [] (3) - load or unload fonts and font metric structures
+XFreeFontInfo [] (3) - obtain or free font names and information
+XFreeFontNames [] (3) - obtain or free font names and information
+XFreeFontPath [] (3) - set, get, or free the font search path
+XFreeFontSet [] (3) - create and free an international text drawing font set
+XFreeGC [] (3) - create or free graphics contexts and graphics context structure
+XFreeModifierMap XModifierKeymap [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XFreePixmap [] (3) - create or destroy pixmaps
+XFreeStringList [] (3) - convert string lists and text property structure
+XGCValues [] (3) - create or free graphics contexts and graphics context structure
+XGContextFromGC [] (3) - create or free graphics contexts and graphics context structure
+XGetAtomName [] (3) - create or return atom names
+XGetAtomNames [] (3) - create or return atom names
+XGetClassHint [] (3) - allocate class hints structure and set or read a window's WM_CLASS property
+XGetCommand [] (3) - set or read a window's WM_COMMAND property
+XGetDeviceButtonMapping [] (3) - query or change device button mappings
+XGetDeviceControl [] (3) - query and change input device controls
+XGetDeviceDontPropagateList [] (3) - query or change the dont-propagate-list for extension devices
+XGetDeviceFocus [] (3) - control extension input device focus
+XGetDeviceKeyMapping [] (3) - query or change device key mappings
+XGetDeviceModifierMapping [] (3) - query or change device modifier mappings
+XGetDeviceMotionEvents [] (3) - get device motion history
+XGetDeviceProperty [] (3) - Get, change or delete a device's property
+XGetErrorDatabaseText [] (3) - default error handlers
+XGetErrorText [] (3) - default error handlers
+XGetExtensionVersion [] (3) - query the version of the input extension
+XGetFeedbackControl [] (3) - query and change input device feedbacks
+XGetFontPath [] (3) - set, get, or free the font search path
+XGetFontProperty [] (3) - load or unload fonts and font metric structures
+XGetGCValues [] (3) - create or free graphics contexts and graphics context structure
+XGetGeometry [] (3) - get current window attribute or geometry and current window attributes structure
+XGetICValues [] (3) - set and obtain XIC values
+XGetIMValues [] (3) - open, close, and obtain input method information
+XGetIconName [] (3) - set or read a window's WM_ICON_NAME property
+XGetIconSizes [] (3) - allocate icon size structure and set or read a window's WM_ICON_SIZES property
+XGetImage [] (3) - transfer images
+XGetInputFocus [] (3) - control input focus
+XGetKeyboardControl [] (3) - manipulate keyboard settings and keyboard control structure
+XGetKeyboardMapping [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XGetModifierMapping [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XGetMotionEvents [] (3) - send events and pointer motion history structure
+XGetOCValues [] (3) - create output contexts
+XGetOMValues [] (3) - open output methods
+XGetPixel [] (3) - image utilities
+XGetPointerControl [] (3) - control pointer
+XGetPointerMapping [] (3) - manipulate pointer settings
+XGetRGBColormaps [] (3) - allocate, set, or read a standard colormap structure
+XGetScreenSaver [] (3) - manipulate the screen saver
+XGetSelectedExtensionEvents [] (3) - select extension events, get the list of currently selected extension events
+XGetSelectionOwner [] (3) - manipulate window selection
+XGetSubImage [] (3) - transfer images
+XGetTextProperty [] (3) - set and read text properties
+XGetTransientForHint [] (3) - set or read a window's WM_TRANSIENT_FOR property
+XGetVisualInfo [] (3) - obtain visual information and visual structure
+XGetWMClientMachine [] (3) - set or read a window's WM_CLIENT_MACHINE property
+XGetWMColormapWindows [] (3) - set or read a window's WM_COLORMAP_WINDOWS property
+XGetWMHints [] (3) - allocate window manager hints structure and set or read a window's WM_HINTS property
+XGetWMIconName [] (3) - set or read a window's WM_ICON_NAME property
+XGetWMName [] (3) - set or read a window's WM_NAME property
+XGetWMNormalHints [] (3) - allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+XGetWMProtocols [] (3) - set or read a window's WM_PROTOCOLS property
+XGetWMSizeHints [] (3) - allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+XGetWindowAttributes [] (3) - get current window attribute or geometry and current window attributes structure
+XGetWindowProperty [] (3) - obtain and change window properties
+XGetXCBConnection [] (3) - get the XCB connection for an Xlib Display
+XGrabButton [] (3) - grab pointer buttons
+XGrabDevice [] (3) - grab/release the specified extension device
+XGrabDeviceButton [] (3) - grab/ungrab extension input device buttons
+XGrabDeviceKey [] (3) - grab/ungrab extension input device Keys
+XGrabKey [] (3) - grab keyboard keys
+XGrabKeyboard [] (3) - grab the keyboard
+XGrabPointer [] (3) - grab the pointer
+XGrabServer [] (3) - grab the server
+XGraphicsExposeEvent [] (3) - GraphicsExpose and NoExpose event structures
+XGravityEvent [] (3) - GravityNotify event structure
+XHostAddress [] (3) - control host access and host control structure
+XIMOfIC [] (3) - create, destroy, and obtain the input method of an input context
+XIconSize [] (3) - allocate icon size structure and set or read a window's WM_ICON_SIZES property
+XIconifyWindow [] (3) - manipulate top-level windows
+XIfEvent [] (3) - check the event queue with a predicate procedure
+XInitImage [] (3) - image utilities
+XInitThreads [] (3) - multi-threading support
+XInsertModifiermapEntry [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XInstallColormap [] (3) - control colormaps
+XInternAtom [] (3) - create or return atom names
+XInternAtoms [] (3) - create or return atom names
+XInternalConnectionNumbers [] (3) - handle Xlib internal connections
+XIntersectRegion [] (3) - region arithmetic
+XKeyEvent [] (3) - KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures
+XKeyboardControl [] (3) - manipulate keyboard settings and keyboard control structure
+XKeycodeToKeysym [] (3) - convert keysyms
+XKeymapEvent [] (3) - KeymapNotify event structure
+XKeysymToKeycode [] (3) - convert keysyms
+XKeysymToString [] (3) - convert keysyms
+XKillClient [] (3) - control clients
+XListDepths [] (3) - Display macros and functions
+XListDeviceProperties [] (3) - List a device's properties
+XListExtensions [] (3) - list available extensions
+XListFonts [] (3) - obtain or free font names and information
+XListFontsWithInfo [] (3) - obtain or free font names and information
+XListHosts [] (3) - control host access and host control structure
+XListInputDevices [] (3) - list available input devices
+XListInstalledColormaps [] (3) - control colormaps
+XListPixmapFormats [] (3) - image format functions and macros
+XListProperties [] (3) - obtain and change window properties
+XLoadFont [] (3) - load or unload fonts and font metric structures
+XLoadQueryFont [] (3) - load or unload fonts and font metric structures
+XLocaleOfFontSet [] (3) - obtain fontset information
+XLocaleOfIM [] (3) - open, close, and obtain input method information
+XLocaleOfOM [] (3) - open output methods
+XLockDisplay [] (3) - multi-threading support
+XLookupColor [] (3) - obtain color values
+XLookupKeysym [] (3) - handle keyboard input events in Latin-1
+XLookupString [] (3) - handle keyboard input events in Latin-1
+XLowerWindow [] (3) - change window stacking order
+XML::Parser [] (3) - A perl module for parsing XML documents
+XML::Parser::Expat [] (3) - Lowlevel access to James Clark's expat XML parser
+XML::Parser::Style::Debug [] (3) - Debug style for XML::Parser
+XML::Parser::Style::Stream [] (3) - Stream style for XML::Parser
+XML::Simple [] (3) - Easy API to maintain XML (esp config files)
+XMMS [] (1) - an audio player for X
+XMapEvent [] (3) - MapNotify and MappingNotify event structures
+XMapRaised [] (3) - map windows
+XMapRequestEvent [] (3) - MapRequest event structure
+XMapSubwindows [] (3) - map windows
+XMapWindow [] (3) - map windows
+XMappingEvent [] (3) - MapNotify and MappingNotify event structures
+XMaskEvent [] (3) - select events by type
+XMatchVisualInfo [] (3) - obtain visual information and visual structure
+XMaxRequestSize [] (3) - Display macros and functions
+XMotionEvent [] (3) - KeyPress, KeyRelease, ButtonPress, ButtonRelease, and MotionNotify event structures
+XMoveResizeWindow [] (3) - configure windows and window changes structure
+XMoveWindow [] (3) - configure windows and window changes structure
+XNewModifiermap [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XNextEvent [] (3) - select events by type
+XNoExposeEvent [] (3) - GraphicsExpose and NoExpose event structures
+XNoOp [] (3) - No Operation
+XOMOfOC [] (3) - create output contexts
+XOffsetRegion [] (3) - region arithmetic
+XOpenDevice [] (3) - open or close an extension input device
+XOpenDisplay [] (3) - connect or disconnect to X server
+XOpenIM [] (3) - open, close, and obtain input method information
+XOpenOM [] (3) - open output methods
+XOrgFoundation [] (7) - X.Org Foundation information
+XParseColor [] (3) - obtain color values
+XParseGeometry [] (3) - parse window geometry
+XPeekEvent [] (3) - select events by type
+XPeekIfEvent [] (3) - check the event queue with a predicate procedure
+XPending [] (3) - handle output buffer or event queue
+XPixmapFormatValues [] (3) - image format functions and macros
+XPoint [] (3) - draw points and points structure
+XPointInRegion [] (3) - determine if regions are empty or equal
+XPolygonRegion [] (3) - generate regions
+XProcessInternalConnection [] (3) - handle Xlib internal connections
+XProjectTeam [] (7) - X.Org Group information
+XPropertyEvent [] (3) - PropertyNotify event structure
+XPutBackEvent [] (3) - put events back on the queue
+XPutImage [] (3) - transfer images
+XPutPixel [] (3) - image utilities
+XQueryBestCursor [] (3) - manipulate cursors
+XQueryBestSize [] (3) - determine efficient sizes
+XQueryBestStipple [] (3) - determine efficient sizes
+XQueryBestTile [] (3) - determine efficient sizes
+XQueryColor [] (3) - obtain color values
+XQueryColors [] (3) - obtain color values
+XQueryDeviceState [] (3) - query the state of an extension input device
+XQueryExtension [] (3) - list available extensions
+XQueryFont [] (3) - load or unload fonts and font metric structures
+XQueryKeymap [] (3) - manipulate keyboard settings and keyboard control structure
+XQueryPointer [] (3) - get pointer coordinates
+XQueryTextExtents [] (3) - compute or query text extents
+XQueryTextExtents16 [] (3) - compute or query text extents
+XQueryTree [] (3) - query window tree information
+XRaiseWindow [] (3) - change window stacking order
+XReadBitmapFile [] (3) - manipulate bitmaps
+XReadBitmapFileData [] (3) - manipulate bitmaps
+XRebindKeysym [] (3) - handle keyboard input events in Latin-1
+XRecolorCursor [] (3) - manipulate cursors
+XReconfigureWMWindow [] (3) - manipulate top-level windows
+XRectInRegion [] (3) - determine if regions are empty or equal
+XRectangle [] (3) - draw rectangles and rectangles structure
+XRefreshKeyboardMapping [] (3) - handle keyboard input events in Latin-1
+XRegisterIMInstantiateCallback [] (3) - open, close, and obtain input method information
+XRemoveConnectionWatch [] (3) - handle Xlib internal connections
+XRemoveFromSaveSet [] (3) - change a client's save set
+XRemoveHost [] (3) - control host access and host control structure
+XRemoveHosts [] (3) - control host access and host control structure
+XReparentEvent [] (3) - ReparentNotify event structure
+XReparentWindow [] (3) - reparent windows
+XRes [] (3) - X-Resource extension client library
+XResetScreenSaver [] (3) - manipulate the screen saver
+XResizeRequestEvent [] (3) - ResizeRequest event structure
+XResizeWindow [] (3) - configure windows and window changes structure
+XResourceManagerString [] (3) - obtain server resource properties
+XRestackWindows [] (3) - change window stacking order
+XRotateBuffers [] (3) - manipulate cut and paste buffers
+XRotateWindowProperties [] (3) - obtain and change window properties
+XS::APItest [] (3) - Test the perl C API
+XS::Typemap [] (3) - module to test the XS typemaps distributed with perl
+XSLoader [] (3) - Dynamically load C libraries into Perl code
+XSaveContext [] (3) - associative look-up routines
+XScreenNumberOfScreen [] (3) - screen information functions and macros
+XScreenResourceString [] (3) - obtain server resource properties
+XScreenSaver [] (3) - X11 Screen Saver extension client library
+XSegment [] (3) - draw lines, polygons, and line structure
+XSelectExtensionEvent [] (3) - select extension events, get the list of currently selected extension events
+XSelectInput [] (3) - select input events
+XSelectionClearEvent [] (3) - SelectionClear event structure
+XSelectionEvent [] (3) - SelectionNotify event structure
+XSelectionRequestEvent [] (3) - SelectionRequest event structure
+XSendEvent [] (3) - send events and pointer motion history structure
+XSendExtensionEvent [] (3) - send input extension events to a client
+XServerInterpretedAddress [] (3) - control host access and host control structure
+XSetAccessControl [] (3) - control host access and host control structure
+XSetAfterFunction [] (3) - enable or disable synchronization
+XSetArcMode [] (3) - GC convenience routines
+XSetBackground [] (3) - GC convenience routines
+XSetClassHint [] (3) - allocate class hints structure and set or read a window's WM_CLASS property
+XSetClipMask [] (3) - GC convenience routines
+XSetClipOrigin [] (3) - GC convenience routines
+XSetClipRectangles [] (3) - GC convenience routines
+XSetCloseDownMode [] (3) - control clients
+XSetCommand [] (3) - set or read a window's WM_COMMAND property
+XSetDashes [] (3) - GC convenience routines
+XSetDeviceButtonMapping [] (3) - query or change device button mappings
+XSetDeviceFocus [] (3) - control extension input device focus
+XSetDeviceMode [] (3) - change the mode of a device
+XSetDeviceModifierMapping [] (3) - query or change device modifier mappings
+XSetDeviceValuators [] (3) - initialize the valuators on an extension input device
+XSetErrorHandler [] (3) - default error handlers
+XSetEventQueueOwner [] (3) - set event queue owner on a shared Xlib/XCB connection
+XSetFillRule [] (3) - GC convenience routines
+XSetFillStyle [] (3) - GC convenience routines
+XSetFont [] (3) - GC convenience routines
+XSetFontPath [] (3) - set, get, or free the font search path
+XSetForeground [] (3) - GC convenience routines
+XSetFunction [] (3) - GC convenience routines
+XSetGraphicsExposure [] (3) - GC convenience routines
+XSetICFocus [] (3) - set and unset input context focus
+XSetICValues [] (3) - set and obtain XIC values
+XSetIMValues [] (3) - open, close, and obtain input method information
+XSetIOErrorHandler [] (3) - default error handlers
+XSetIconName [] (3) - set or read a window's WM_ICON_NAME property
+XSetIconSizes [] (3) - allocate icon size structure and set or read a window's WM_ICON_SIZES property
+XSetInputFocus [] (3) - control input focus
+XSetLineAttributes [] (3) - GC convenience routines
+XSetLocaleModifiers [] (3) - determine locale support and configure locale modifiers
+XSetModifierMapping [] (3) - manipulate keyboard encoding and keyboard encoding structure
+XSetOCValues [] (3) - create output contexts
+XSetOMValues [] (3) - open output methods
+XSetPlaneMask [] (3) - GC convenience routines
+XSetPointerMapping [] (3) - manipulate pointer settings
+XSetRGBColormaps [] (3) - allocate, set, or read a standard colormap structure
+XSetRegion [] (3) - create or destroy regions
+XSetScreenSaver [] (3) - manipulate the screen saver
+XSetSelectionOwner [] (3) - manipulate window selection
+XSetState [] (3) - GC convenience routines
+XSetStipple [] (3) - GC convenience routines
+XSetSubwindowMode [] (3) - GC convenience routines
+XSetTSOrigin [] (3) - GC convenience routines
+XSetTextProperty [] (3) - set and read text properties
+XSetTile [] (3) - GC convenience routines
+XSetTransientForHint [] (3) - set or read a window's WM_TRANSIENT_FOR property
+XSetWMClientMachine [] (3) - set or read a window's WM_CLIENT_MACHINE property
+XSetWMColormapWindows [] (3) - set or read a window's WM_COLORMAP_WINDOWS property
+XSetWMHints [] (3) - allocate window manager hints structure and set or read a window's WM_HINTS property
+XSetWMIconName [] (3) - set or read a window's WM_ICON_NAME property
+XSetWMName [] (3) - set or read a window's WM_NAME property
+XSetWMNormalHints [] (3) - allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+XSetWMProperties [] (3) - set standard window properties
+XSetWMProtocols [] (3) - set or read a window's WM_PROTOCOLS property
+XSetWMSizeHints [] (3) - allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+XSetWindowAttributes [] (3) - create windows and window attributes structure
+XSetWindowBackground [] (3) - change window attributes
+XSetWindowBackgroundPixmap [] (3) - change window attributes
+XSetWindowBorder [] (3) - change window attributes
+XSetWindowBorderPixmap [] (3) - change window attributes
+XSetWindowBorderWidth [] (3) - configure windows and window changes structure
+XSetWindowColormap [] (3) - change window attributes
+XShapeCombineMask [] (3) - X nonrectangular shape functions
+XShapeCombineRectangles [] (3) - X nonrectangular shape functions
+XShapeCombineRegion [] (3) - X nonrectangular shape functions
+XShapeCombineShape [] (3) - X nonrectangular shape functions
+XShapeGetRectangles [] (3) - X nonrectangular shape functions
+XShapeInputSelected [] (3) - X nonrectangular shape functions
+XShapeOffsetShape [] (3) - X nonrectangular shape functions
+XShapeQueryExtension [] (3) - X nonrectangular shape functions
+XShapeQueryExtents [] (3) - X nonrectangular shape functions
+XShapeQueryVersion [] (3) - X nonrectangular shape functions
+XShapeSelectInput [] (3) - X nonrectangular shape functions
+XShmAttach [] (3) - X Shared Memory extension functions
+XShmCreatePixmap [] (3) - X Shared Memory extension functions
+XShmDetach XShmCreateImage [] (3) - X Shared Memory extension functions
+XShmGetEventBase [] (3) - X Shared Memory extension functions
+XShmGetImage [] (3) - X Shared Memory extension functions
+XShmPixmapFormat [] (3) - X Shared Memory extension functions
+XShmPutImage [] (3) - X Shared Memory extension functions
+XShmQueryExtension [] (3) - X Shared Memory extension functions
+XShmQueryVersion [] (3) - X Shared Memory extension functions
+XShrinkRegion [] (3) - region arithmetic
+XSizeHints [] (3) - allocate size hints structure and set or read a window's WM_NORMAL_HINTS property
+XStandardColormap [] (3) - allocate, set, or read a standard colormap structure
+XStandards [] (7) - X Window System Standards and Specifications
+XStoreBuffer [] (3) - manipulate cut and paste buffers
+XStoreBytes [] (3) - manipulate cut and paste buffers
+XStoreColor [] (3) - set colors
+XStoreColors [] (3) - set colors
+XStoreName [] (3) - set or read a window's WM_NAME property
+XStoreNamedColor [] (3) - set colors
+XStringListToTextProperty [] (3) - convert string lists and text property structure
+XStringToKeysym [] (3) - convert keysyms
+XSubImage [] (3) - image utilities
+XSubtractRegion [] (3) - region arithmetic
+XSupportsLocale [] (3) - determine locale support and configure locale modifiers
+XSync [] (3) - handle output buffer or event queue
+XSynchronize [] (3) - enable or disable synchronization
+XTestCompareCurrentCursorWithWindow [] (3) - XTest extension functions
+XTestCompareCursorWithWindow [] (3) - XTest extension functions
+XTestDiscard [] (3) - XTest extension functions
+XTestFakeButtonEvent [] (3) - XTest extension functions
+XTestFakeKeyEvent [] (3) - XTest extension functions
+XTestFakeMotionEvent [] (3) - XTest extension functions
+XTestFakeRelativeMotionEvent [] (3) - XTest extension functions
+XTestGrabControl [] (3) - XTest extension functions
+XTestQueryExtension [] (3) - XTest extension functions
+XTestSetGContextOfGC [] (3) - XTest extension functions
+XTestSetVisualIDOfVisual [] (3) - XTest extension functions
+XTextExtents [] (3) - compute or query text extents
+XTextExtents16 [] (3) - compute or query text extents
+XTextItem [] (3) - draw polytext text and text drawing structures
+XTextItem16 [] (3) - draw polytext text and text drawing structures
+XTextProperty [] (3) - convert string lists and text property structure
+XTextPropertyToStringList [] (3) - convert string lists and text property structure
+XTextWidth [] (3) - compute text width
+XTextWidth16 [] (3) - compute text width
+XTimeCoord [] (3) - send events and pointer motion history structure
+XTranslateCoordinates [] (3) - translate window coordinates
+XUndefineCursor [] (3) - define cursors
+XUngrabButton [] (3) - grab pointer buttons
+XUngrabDevice [] (3) - grab/release the specified extension device
+XUngrabDeviceButton [] (3) - grab/ungrab extension input device buttons
+XUngrabDeviceKey [] (3) - grab/ungrab extension input device Keys
+XUngrabKey [] (3) - grab keyboard keys
+XUngrabKeyboard [] (3) - grab the keyboard
+XUngrabPointer [] (3) - grab the pointer
+XUngrabServer [] (3) - grab the server
+XUninstallColormap [] (3) - control colormaps
+XUnionRectWithRegion [] (3) - region arithmetic
+XUnionRegion [] (3) - region arithmetic
+XUniqueContext [] (3) - associative look-up routines
+XUnloadFont [] (3) - load or unload fonts and font metric structures
+XUnlockDisplay [] (3) - multi-threading support
+XUnmapEvent [] (3) - UnmapNotify event structure
+XUnmapSubwindows [] (3) - unmap windows
+XUnmapWindow [] (3) - unmap windows
+XUnregisterIMInstantiateCallback [] (3) - open, close, and obtain input method information
+XUnsetICFocus [] (3) - set and unset input context focus
+XVaCreateNestedList [] (3) - allocate a nested variable argument list
+XVisibilityEvent [] (3) - VisibilityNotify event structure
+XVisualIDFromVisual [] (3) - obtain visual information and visual structure
+XVisualInfo [] (3) - obtain visual information and visual structure
+XWMGeometry [] (3) - parse window geometry
+XWMHints [] (3) - allocate window manager hints structure and set or read a window's WM_HINTS property
+XWarpPointer [] (3) - move pointer
+XWindowAttributes [] (3) - get current window attribute or geometry and current window attributes structure
+XWindowChanges [] (3) - configure windows and window changes structure
+XWindowEvent [] (3) - select events by type
+XWithdrawWindow [] (3) - manipulate top-level windows
+XWriteBitmapFile [] (3) - manipulate bitmaps
+XXorRegion [] (3) - region arithmetic
+Xau library: XauFileName [] (3) - X authority database routines
+XauDisposeAuth [] (3) - X authority database routines
+XauGetAuthByAddr [] (3) - X authority database routines
+XauGetBestAuthByAddr [] (3) - X authority database routines
+XauLockAuth [] (3) - X authority database routines
+XauReadAuth [] (3) - X authority database routines
+XauUnlockAuth [] (3) - X authority database routines
+XauWriteAuth [] (3) - X authority database routines
+Xaw [] (3) - X Athena Widgets
+XcmsAllocColor [] (3) - allocate colors
+XcmsAllocNamedColor [] (3) - allocate colors
+XcmsCCCOfColormap [] (3) - query and modify CCC of a colormap
+XcmsCIELab [] (3) - Xcms color structure
+XcmsCIELabQueryMaxC [] (3) - obtain the CIE L*a*b* coordinates
+XcmsCIELabQueryMaxL [] (3) - obtain the CIE L*a*b* coordinates
+XcmsCIELabQueryMaxLC [] (3) - obtain the CIE L*a*b* coordinates
+XcmsCIELabQueryMinL [] (3) - obtain the CIE L*a*b* coordinates
+XcmsCIELuv [] (3) - Xcms color structure
+XcmsCIELuvQueryMaxC [] (3) - obtain the CIE L*u*v* coordinates
+XcmsCIELuvQueryMaxL [] (3) - obtain the CIE L*u*v* coordinates
+XcmsCIELuvQueryMaxLC [] (3) - obtain the CIE L*u*v* coordinates
+XcmsCIELuvQueryMinL [] (3) - obtain the CIE L*u*v* coordinates
+XcmsCIEXYZ [] (3) - Xcms color structure
+XcmsCIEuvY [] (3) - Xcms color structure
+XcmsCIExyY [] (3) - Xcms color structure
+XcmsColor [] (3) - Xcms color structure
+XcmsConvertColors [] (3) - convert CCC color specifications
+XcmsCreateCCC [] (3) - creating and destroying CCCs
+XcmsDefaultCCC [] (3) - obtain the default CCC for a screen
+XcmsFreeCCC [] (3) - creating and destroying CCCs
+XcmsLookupColor [] (3) - obtain color values
+XcmsPad [] (3) - Xcms color structure
+XcmsQueryBlack [] (3) - obtain black, blue, green, red, and white CCC color specifications
+XcmsQueryBlue [] (3) - obtain black, blue, green, red, and white CCC color specifications
+XcmsQueryColor [] (3) - obtain color values
+XcmsQueryColors [] (3) - obtain color values
+XcmsQueryGreen [] (3) - obtain black, blue, green, red, and white CCC color specifications
+XcmsQueryRed [] (3) - obtain black, blue, green, red, and white CCC color specifications
+XcmsQueryWhite [] (3) - obtain black, blue, green, red, and white CCC color specifications
+XcmsRGB [] (3) - Xcms color structure
+XcmsRGBi [] (3) - Xcms color structure
+XcmsSetCCCOfColormap [] (3) - query and modify CCC of a colormap
+XcmsSetWhiteAdjustProc [] (3) - modifying CCC attributes
+XcmsSetWhitePoint [] (3) - modifying CCC attributes
+XcmsStoreColor [] (3) - set colors
+XcmsStoreColors [] (3) - set colors
+XcmsTekHVC [] (3) - Xcms color structure
+XcmsTekHVCQueryMaxC [] (3) - obtain the TekHVC coordinates
+XcmsTekHVCQueryMaxV [] (3) - obtain the TekHVC coordinates
+XcmsTekHVCQueryMaxVC [] (3) - obtain the TekHVC coordinates
+XcmsTekHVCQueryMaxVSamples [] (3) - obtain the TekHVC coordinates
+XcmsTekHVCQueryMinV [] (3) - obtain the TekHVC coordinates
+Xcomposite [] (3) - X Composite Extension library
+XcupGetReservedColormapEntries [] (3) - list colormap entries reserved by the system
+XcupQueryVersion [] (3) - Returns TOG-CUP protocol version supported by the X server
+XcupStoreColors [] (3) - initialize shareable colormap entries at specific locations
+XdbeAllocateBackBufferName [] (3) - allocates a DBE buffer
+XdbeBeginIdiom [] (3) - marks the beginning of a DBE idiom sequence
+XdbeDeallocateBackBufferName [] (3) - frees a DBE buffer
+XdbeEndIdiom [] (3) - marks the end of a DBE idiom sequence
+XdbeFreeVisualInfo [] (3) - frees information returned by XdbeGetVisualInfo()
+XdbeGetBackBufferAttributes [] (3) - returns attributes of a DBE buffer
+XdbeGetVisualInfo [] (3) - Get dbe Visual Informations
+XdbeQueryExtension [] (3) - returns the version of DBE supported by the server
+XdbeSwapBuffers [] (3) - swaps front and back DBE buffers
+Xephyr [] (1) - X server outputting to a window on a pre-existing X display
+XeviGetVisualInfo [] (3) - X Extended Visual Information functions
+XeviQueryExtension [] (3) - X Extended Visual Information functions
+XeviQueryVersion [] (3) - X Extended Visual Information functions
+Xevie [] (3) - X Event Interception Extension (XEvIE)
+Xfontcache [] (3) - X-TrueType font cache extension client library
+Xft [] (3) - X FreeType interface library
+Xinerama [] (3) - API for Xinerama extension to X11 Protocol
+XkbActionCtrls [] (3) - Returns the ctrls fields of act converted to an unsigned int
+XkbAddDeviceLedInfo [] (3) - Initialize an XkbDeviceLedInfoRec structure
+XkbAddGeomColor [] (3) - Add one color name to an existing keyboard geometry description
+XkbAddGeomDoodad [] (3) - Add one doodad to a section of a keyboard geometry or to the top - level geometry
+XkbAddGeomKey [] (3) - Add one key at the end of an existing row of keys
+XkbAddGeomKeyAlias [] (3) - Add one key alias to an existing keyboard geometry description
+XkbAddGeomOutline [] (3) - Add one outline to an existing shape
+XkbAddGeomOverlay [] (3) - Add one overlay to a section
+XkbAddGeomOverlayKey [] (3) - Add a key to an existing overlay row
+XkbAddGeomOverlayRow [] (3) - Add a row to an existing overlay
+XkbAddGeomProperty [] (3) - Add one property to an existing keyboard geometry description
+XkbAddGeomRow [] (3) - Add a row to a section
+XkbAddGeomSection [] (3) - Add one section to an existing keyboard geometry
+XkbAddGeomShape [] (3) - Add a shape to a keyboard geometry
+XkbAddSymInterpret [] (3) - Add a symbol interpretation to the list of symbol interpretations in an XkbCompatRec
+XkbAllocClientMap [] (3) - Allocate and initialize an empty client map description record
+XkbAllocCompatMap [] (3) - Allocate a new compatibility map if you do not already have one available
+XkbAllocControls [] (3) - Allocates an XkbControlsRec structure in the XkbDescRec
+XkbAllocDeviceInfo [] (3) - Obtain an XkbDeviceInfoRec structure
+XkbAllocDeviceLedInfo [] (3) - Obtain an XkbDeviceLedInfoRec structure
+XkbAllocGeomColors [] (3) - Allocate geometry colors
+XkbAllocGeomDoodads [] (3) - Allocate doodads that are global to a keyboard geometry
+XkbAllocGeomKeyAliases [] (3) - Allocate geometry key aliases
+XkbAllocGeomKeys [] (3) - Allocate space for an arbitrary number of keys to a row
+XkbAllocGeomOutlines [] (3) - Allocate space for an arbitrary number of outlines to a shape
+XkbAllocGeomOverlayKeys [] (3) - Allocate keys in an overlay row
+XkbAllocGeomOverlayRows [] (3) - Allocate rows in a overlay
+XkbAllocGeomOverlays [] (3) - Allocate overlays in a section
+XkbAllocGeomPoints [] (3) - Allocate points in an outline
+XkbAllocGeomProps [] (3) - Allocate geometry properties
+XkbAllocGeomRows [] (3) - Allocate rows in a section
+XkbAllocGeomSectionDoodads [] (3) - Allocate doodads that are specific to a section
+XkbAllocGeomSections [] (3) - Allocate geometry sections
+XkbAllocGeomShapes [] (3) - Allocate space for an arbitrary number of geometry shapes
+XkbAllocGeometry [] (3) - Allocate an entire geometry
+XkbAllocIndicatorMaps [] (3) - Allocates, directly, the indicators member of the keyboard description record
+XkbAllocKeyboard [] (3) - Creates a keyboard description from scratch
+XkbAllocNames [] (3) - Allocate symbolic names structures
+XkbAllocServerMap [] (3) - Allocate and initialize an empty server map description record
+XkbApplyCompatMapToKey [] (3) - Apply the new compatibility mapping to an individual key to get its semantics updated
+XkbBell [] (3) - Rings the bell on the default keyboard
+XkbBellEvent [] (3) - Provides a function that initiates a bell event for the keyboard without ringing the bell
+XkbChangeControls [] (3) - Provides a flexible method for updating the controls in a server to match those in the changed keyboard description
+XkbChangeDeviceInfo [] (3) - Update the server's description of a device with the changes noted in an XkbDeviceChangesRec
+XkbChangeEnabledControls [] (3) - Manipulates the EnabledControls control
+XkbChangeIndicators [] (3) - Changes indicator maps or state without passing the entire keyboard description
+XkbChangeMap [] (3) - Update only partial components of a keyboard description, modify the appropriate fields in the server and map components of a local copy of the keyboard description
+XkbChangeNames [] (3) - _summary-line_
+XkbChangeTypesOfKey [] (3) - Change the number of groups and the types bound to a key
+XkbChangeTypesOfKey [] (3) - Obtain the behaviors (the behaviors array) for a subset of the keys in a keyboard description from the server
+XkbComputeRowBounds [] (3) - Update the bounding box of a row
+XkbComputeSectionBounds [] (3) - Update the bounding box of a section
+XkbComputeShapeBounds [] (3) - Updates the bounding box of a shape
+XkbComputeShapeTop [] (3) - Determines the bounding box of the top surface of a shape
+XkbCopyKeyType [] (3) - Copy one XkbKeyTypeRec structures
+XkbCopyKeyTypes [] (3) - Copy more than one XkbKeyTypeRec structure
+XkbDeviceBell [] (3) - Rings the bell on an X input extension device or the default keyboard
+XkbDeviceBellEvent [] (3) - Creates a bell event for an X input extension device or for the keyboard, without ringing the corresponding bell
+XkbFindOverlayForKey [] (3) - Find the alternate name by using the primary name for a key that is part of an overlay
+XkbForceBell [] (3) - Overrides user preference settings for audible bells to ring the bell on the default keyboard
+XkbForceDeviceBell [] (3) - Rings the bell on any keyboard, overriding user preference settings for audible bells
+XkbFreeClientMap [] (3) - Free memory used by the client map member of an XkbDescRec structure
+XkbFreeCompatMap [] (3) - Free an entire compatibility map or selected portions of one
+XkbFreeComponentList [] (3) - Free the structure returned by XkbListComponents
+XkbFreeControls [] (3) - Frees memory used by the ctrls member of an XkbDescRec structure
+XkbFreeDeviceInfo [] (3) - Free an XkbDeviceInfoRec structure
+XkbFreeGeomColors [] (3) - Free geometry colors
+XkbFreeGeomDoodads [] (3) - Free geometry doodads
+XkbFreeGeomKeyAliases [] (3) - Free geometry key aliases
+XkbFreeGeomKeys [] (3) - Free geometry keys
+XkbFreeGeomOutlines [] (3) - Free geometry outlines
+XkbFreeGeomOverlayKeys [] (3) - Free keys in an overlay row
+XkbFreeGeomOverlayRows [] (3) - Free rows in an overlay
+XkbFreeGeomOverlays [] (3) - Free rows in a section
+XkbFreeGeomPoints [] (3) - Free points in a outline
+XkbFreeGeomProperties [] (3) - Free geometry properties
+XkbFreeGeomRows [] (3) - Free rows in a section
+XkbFreeGeomSections [] (3) - Free geometry sections
+XkbFreeGeomShapes [] (3) - Free geometry shapes
+XkbFreeGeometry [] (3) - Free an entire geometry
+XkbFreeIndicatorMaps [] (3) - Frees memory used by the indicators member of an XkbDescRec structure
+XkbFreeKeyboard [] (3) - Destroys either an entire XkbDescRec or just some of its members
+XkbFreeNames [] (3) - Free symbolic names structures
+XkbFreeServerMap [] (3) - Free memory used by the server member of an XkbDescRec structure
+XkbGetAccessXTimeout [] (3) - Queries the current AccessXTimeout options for a keyboard device
+XkbGetAutoRepeatRate [] (3) - Gets the current attributes of the RepeatKeys control for a keyboard device
+XkbGetAutoResetControls [] (3) - Gets the current values of the auto-reset controls
+XkbGetBounceKeysDelay [] (3) - Queries the current BounceKeys delay for a keyboard device
+XkbGetCompatMap [] (3) - Fetch any combination of the current compatibility map components from the server
+XkbGetControls [] (3) - Finds the current state of Xkb server controls
+XkbGetControlsChanges [] (3) - Updates a local copy of a keyboard description with the changes previously noted by one or more calls to XkbNoteControlsChanges
+XkbGetDetectableAutorepeat [] (3) - Determines whether or not the server supports DetectableAutorepeat
+XkbGetDeviceButtonActions [] (3) - Query the button actions associated with an X Input Extension device
+XkbGetDeviceInfo [] (3) - Determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non - KeyClass extension device
+XkbGetDeviceInfoChanges [] (3) - Query the changes that have occurred in the button actions or indicator names and indicator maps associated with an input extension device
+XkbGetDeviceLedInfo [] (3) - Query the indicator names, maps, and state associated with an LED feedback of an input extension device
+XkbGetGeometry [] (3) - Loads a keyboard geometry if you already have the keyboard description
+XkbGetIndicatorChanges [] (3) - Updates a local copy of the keyboard description with the actual values of one or more calls to XkbNoteIndicatorChanges
+XkbGetIndicatorMap [] (3) - Gets the map for one or more indicators, using a mask to specify the indicators
+XkbGetIndicatorState [] (3) - Obtains the current state of the keyboard indicators
+XkbGetKeyActions [] (3) - Update the actions (the key_acts array) for a subset of the keys in a keyboard description
+XkbGetKeyExplicitComponents [] (3) - Obtain the explicit components (the explicit array) for a subset of the keys in a keyboard description
+XkbGetKeyModifierMap [] (3) - Update the modifier map for one or more of the keys in a keyboard description
+XkbGetKeySyms [] (3) - Obtain the symbols for a subset of the keys in a keyboard description
+XkbGetKeyTypes [] (3) - Obtain the list of available key types in the server's keyboard mapping
+XkbGetKeyVirtualModMap [] (3) - Obtain the virtual modifier map (the vmodmap array) for a subset of the keys in a keyboard description
+XkbGetKeyboard [] (3) - Retrieves one or more components of a keyboard device description
+XkbGetKeyboardByName [] (3) - Build a new keyboard description from a set of named components, and to optionally have the server use the resulting description to replace an active one
+XkbGetMap [] (3) - Allocate an XkbDescRec structure and populate it with the server's keyboard client map and server map
+XkbGetNameChanges [] (3) - Update the local copy of the keyboard description with the actual values of the results of one or more calls to XkbNoteNameChanges
+XkbGetNamedGeometry [] (3) - Loads a keyboard geometry description from this database by name
+XkbGetNamedIndicator [] (3) - Look up the indicator map and other information for an indicator by name
+XkbGetNames [] (3) - Obtain symbolic names from the server
+XkbGetSlowKeysDelay [] (3) - Gets the SlowKeys acceptance delay for a keyboard device
+XkbGetState [] (3) - Obtains the keyboard state
+XkbGetStickyKeysOptions [] (3) - Queries the current StickyKeys attributes for a keyboard device
+XkbGetUpdatedMap [] (3) - Update the client or server map information in an existing keyboard description
+XkbGetVirtualMods [] (3) - Obtain a subset of the virtual modifier bindings (the vmods array) in a keyboard description
+XkbGetXlibControls [] (3) - Determines the current state of the Library Controls
+XkbIgnoreExtension [] (3) - Prevents core X library keyboard functions from using the X Keyboard Extension
+XkbInitCanonicalKeyTypes [] (3) - Set the definitions of the canonical key types in a client map to their default values
+XkbKeyAction [] (3) - Returns the key action
+XkbKeyActionEntry [] (3) - Returns the key action corresponding to group grp and shift level lvl from the two - dimensional table of key actions associated with the key corresponding to keycode
+XkbKeyActionsPtr [] (3) - Returns a pointer to the two-dimensional array of key actions associated with the key corresponding to keycode
+XkbKeyGroupInfo [] (3) - Returns the number of groups of symbols bound to the key corresponding to keycode
+XkbKeyGroupWidth [] (3) - Computes the width of the type associated with the group grp for the key corresponding to keycode
+XkbKeyGroupsWidth [] (3) - Computes the maximum width associated with the key corresponding to keycode
+XkbKeyHasActions [] (3) - Determines if the key corresponding to keycode has any actions associated with it
+XkbKeyNumActions [] (3) - Computes the number of actions associated with the key corresponding to keycode
+XkbKeyNumGroups [] (3) - Returns the number of groups of symbols bound to the key corresponding to keycode
+XkbKeyNumSyms [] (3) - Returns the total number of keysyms for the key corresponding to keycode
+XkbKeySymEntry [] (3) - Returns the keysym corresponding to shift level shift and group grp from the two - dimensional array of keysyms for the key corresponding to keycode
+XkbKeySymsOffset [] (3) - Returns the offset of the two-dimensional array of keysyms for the key corresponding to keycode
+XkbKeySymsPtr [] (3) - Returns the pointer to the two-dimensional array of keysyms for the key corresponding to keycode
+XkbKeyType [] (3) - Obtain the index of a key type or the pointer to a key type
+XkbKeyTypeIndex [] (3) - Obtain the index of a key type or the pointer to a key type
+XkbKeyTypesForCoreSymbols [] (3) - Determine the Xkb key types appropriate for the symbols bound to a key in a core keyboard mapping
+XkbKeycodeToKeysym [] (3) - Finds the keysym bound to a particular key at a specified group and shift level
+XkbKeysymToModifiers [] (3) - Finds the set of modifiers bound to a particular keysym on the core keyboard
+XkbLatchGroup [] (3) - Latches the keysym group
+XkbLatchModifiers [] (3) - Latches and unlatches any of the eight real keyboard modifiers
+XkbLibraryVersion [] (3) - Determines the compatibility of a library at runtime
+XkbListComponents [] (3) - List of components for one or more component types
+XkbLockGroup [] (3) - Locks the keysym group
+XkbLockModifiers [] (3) - Locks and unlocks any of the eight real keyboard modifiers
+XkbLookupKeyBinding [] (3) - Find the string bound to a key by XRebindKeySym
+XkbLookupKeySym [] (3) - Find the symbol associated with a key for a particular state
+XkbModActionVMods [] (3) - Returns the vmods1 and vmods2 fields of act converted to the vmods format of an Xkb modifier description
+XkbNoteControlsChanges [] (3) - Notes the changes in a changes structure when a client receives an XkbControlsNotify event
+XkbNoteDeviceChanges [] (3) - Note device changes reported in an XkbExtensionDeviceNotify event
+XkbNoteIndicatorChanges [] (3) - Notes the changes in a changes structure
+XkbNoteNameChanges [] (3) - Note the changed names in a changes structure
+XkbOpenDisplay [] (3) - Checks for a compatible version of the Xkb extension in both the library and the server, and initializes the extension for use
+XkbOutOfRangeGroupInfo [] (3) - Returns only the out-of-range processing information from the group_info field of an XkbSymMapRec structure
+XkbOutOfRangeGroupNumber [] (3) - Returns the out-of-range group number, represented as a group index, from the group_info field of an XkbSymMapRec structure
+XkbPtrActionX [] (3) - Returns the high_XXX and low_XXX fields of act converted to a signed int
+XkbPtrActionY [] (3) - Returns the high_YYY and low_YYY fields of act converted to a signed int
+XkbQueryExtension [] (3) - Determines the compatibility of a library at runtime
+XkbRefreshKeyboardMapping [] (3) - Update the keyboard description that is internal to the X library
+XkbResizeDeviceButtonActions [] (3) - Allocate additional space for button actions in an XkbDeviceInfoRec structure
+XkbResizeKeyActions [] (3) - Change the number of actions bound to a key
+XkbResizeKeySyms [] (3) - Change the number of symbols bound to a key
+XkbResizeKeyType [] (3) - Change the number of levels in a key type
+XkbSAActionSetCtrls [] (3) - Sets the ctrls0 through I. ctrls3 fields of act from ctrls
+XkbSAGroup [] (3) - Returns the group_XXX field of act converted to a signed int
+XkbSAPtrDfltValue [] (3) - Returns the valueXXX field of act converted to a signed int
+XkbSARedirectSetVMods [] (3) - Sets the vmods0 and vmods1 of act from v
+XkbSARedirectSetVModsMask [] (3) - Sets the vmods_mask0 and vmods_mask1 fields of act from vm
+XkbSARedirectVMods [] (3) - Returns the vmods0 and vmods1 fields of act converted to an unsigned int
+XkbSARedirectVModsMask [] (3) - Returns the vmods_mask0 and vmods_mask1 fields of act converted to an unsigned int
+XkbSAScreen [] (3) - Returns the screenXXX field of act converted to a signed int
+XkbSASetGroup [] (3) - Sets the group_XXX field of act from the group index grp
+XkbSASetPtrDfltValue [] (3) - Sets the valueXXX field of act from val
+XkbSASetScreen [] (3) - Sets the screenXXX field of act from s
+XkbSelectEventDetails [] (3) - Selects or deselects for a specific Xkb event and optionally places conditions on when events of that type are reported to your client
+XkbSelectEvents [] (3) - Selects and / or deselects for delivery of one or more Xkb events and has them delivered under all conditions
+XkbSetAccessXTimeout [] (3) - Configures the AccessXTimeout options for a keyboard device
+XkbSetAutoRepeatRate [] (3) - Sets the attributes of the RepeatKeys control for a keyboard device
+XkbSetAutoResetControls [] (3) - Changes the current values of the AutoReset control attributes
+XkbSetBounceKeysDelay [] (3) - Sets the BounceKeys delay for a keyboard device
+XkbSetCompatMap [] (3) - Modify the server's compatibility map
+XkbSetControls [] (3) - Copies changes to the X server based on a modified ctrls structure in a local copy of the keyboard description
+XkbSetDebuggingFlags [] (3) - Change the values of any of the debug controls
+XkbSetDetectableAutorepeat [] (3) - Sets DetectableAutorepeat
+XkbSetDeviceButtonActions [] (3) - Change only the button actions for an input extension device
+XkbSetDeviceInfo [] (3) - Modify some or all of the characteristics of an X Input Extension device
+XkbSetIgnoreLockMods [] (3) - Sets the modifiers that, if locked, are not to be reported in matching events to passive grabs
+XkbSetIndicatorMap [] (3) - Downloads the changes to the server based on modifications to a local copy of the keyboard description which will update the maps for one or more indicators
+XkbSetMap [] (3) - Send a complete new set of values for entire components to the server
+XkbSetModActionVMods [] (3) - Sets the vmods1 and vmods2 fields of act using the vmods format of an Xkb modifier description
+XkbSetNamedIndicator [] (3) - Names an indicator if it is not already named; toggles the state of the indicator; sets the indicator to a specified state and sets the indicator map for the indicator
+XkbSetNames [] (3) - Change the symbolic names in the server
+XkbSetPtrActionX [] (3) - Sets the high_XXX and low_XXX fields of act from the signed integer value x
+XkbSetPtrActionY [] (3) - Sets the high_YYY and low_YYY fields of act from the signed integer value y
+XkbSetServerInternalMods [] (3) - Sets the modifiers that are consumed by the server before events are delivered to the client
+XkbSetXlibControls [] (3) - Changes the state of the Library Controls
+XkbTranslateKeyCode [] (3) - Translate a keycode to a key symbol and modifiers
+XkbTranslateKeySym [] (3) - Find the string and symbol associated with a keysym for a given keyboard state
+XkbUpdateMapFromCore [] (3) - Update a local Xkb keyboard map to reflect the mapping expressed by a core format mapping
+XkbVirtualModsToReal [] (3) - Determines the mapping of virtual modifiers to core X protocol modifiers
+XmNotebook [] (3) - a widget that allows a user to manipulate underlying widgets like pages of a book
+Xmark [] (1) - summarize x11perf results
+XmbDrawImageString [] (3) - draw image text using a single font set
+XmbDrawString [] (3) - draw text using a single font set
+XmbDrawText [] (3) - draw text using multiple font sets
+XmbLookupString [] (3) - obtain composed input from an input method
+XmbResetIC [] (3) - reset the state of an input context
+XmbSetWMProperties [] (3) - set standard window properties
+XmbTextEscapement [] (3) - obtain the escapement of text
+XmbTextExtents [] (3) - compute text extents
+XmbTextListToTextProperty [] (3) - convert text lists and text property structures
+XmbTextPerCharExtents [] (3) - obtain per-character information for a text string
+XmbTextPropertyToTextList [] (3) - convert text lists and text property structures
+XmbufChangeBufferAttributes [] (3) - X multibuffering functions
+XmbufChangeWindowAttributes [] (3) - X multibuffering functions
+XmbufCreateBuffers [] (3) - X multibuffering functions
+XmbufCreateStereoWindow [] (3) - X multibuffering functions
+XmbufDestroyBuffers [] (3) - X multibuffering functions
+XmbufDisplayBuffers [] (3) - X multibuffering functions
+XmbufGetBufferAttributes [] (3) - X multibuffering functions
+XmbufGetScreenInfo [] (3) - X multibuffering functions
+XmbufGetVersion [] (3) - X multibuffering functions
+XmbufGetWindowAttributes [] (3) - X multibuffering functions
+XmbufQueryExtension [] (3) - X multibuffering functions
+Xnest [] (1) - a nested X server
+Xorg [] (1) - X11R7 X server
+XpCancelDoc [] (3) - Cancels a print document
+XpCancelJob [] (3) - Cancels a single print job
+XpCancelPage [] (3) - Cancels a print page
+XpCreateContext [] (3) - Creates and initializes a new print context
+XpDestroyContext [] (3) - Gets the current print context-id for a display connection
+XpEndDoc [] (3) - Indicates the ending of a print document
+XpEndJob [] (3) - Indicates the ending of a single print job
+XpEndPage [] (3) - Indicates the end of a print page
+XpFreePrinterList [] (3) - Frees a list of printer records
+XpGetAttributes [] (3) - Gets an attribute pool from the specified print context
+XpGetContext [] (3) - Gets the current print context-id for a display connection
+XpGetDocumentData [] (3) - Creates and initializes a new print context
+XpGetImageResolution [] (3) - Gets the current image resolution for a print context
+XpGetLocaleHinter [] (3) - Gets a pointer to and description of the current locale hinter function
+XpGetOneAttribute [] (3) - Gets a single print attribute from the specified print context
+XpGetPageDimensions [] (3) - Gets the page dimensions for the current printer settings
+XpGetPdmStartParams [] (3) - Builds up parameters in accordance with the PDM Selection Protocol as a standard convenience function
+XpGetPrinterList [] (3) - Retrieves a list of all printers supported on an X Print Server
+XpGetScreenOfContext [] (3) - Obtains a pointer to the screen associated with the specified print context
+XpInputSelected [] (3) - Queries which X Print events the client has selected to receive from the specific print context
+XpQueryExtension [] (3) - Queries an X Server to determine if it supports the X Print Service Extension, and if it does, what the offsets are for associated events and errors
+XpQueryScreens [] (3) - Queries an X Server to determine which screens, of all the screens on the server, support the X Print Service Extension
+XpQueryVersion [] (3) - Queries an X Server to determine if it supports the X Print Service Extension, and if it does, which version of the X Print Service Extension
+XpRehashPrinterList [] (3) - Recomputes the list of available printers
+XpSelectInput [] (3) - Specifies which X Print events, from the specified print context, the client is interested in
+XpSetAttributes [] (3) - Sets or updates an attribute pool in the specified print context
+XpSetContext [] (3) - Sets or unsets a print context with the specified display connection to the X Print Server
+XpSetImageResolution [] (3) - Sets the resolution for subsequent PutImage requests
+XpSetLocaleHinter [] (3) - Sets a locale hinter function and description of it
+XpStartDoc [] (3) - Indicates the beginning of a print document
+XpStartJob [] (3) - Indicates the beginning of a single print job
+XpStartPage [] (3) - Indicates the beginning of a print page
+Xrandr [] (3) - X Resize, Rotate and Reflection extension
+XrmCombineDatabase [] (3) - merge resource databases
+XrmCombineFileDatabase [] (3) - merge resource databases
+XrmDestroyDatabase [] (3) - retrieve and store resource databases
+XrmEnumerateDatabase [] (3) - enumerate resource database entries
+XrmGetDatabase [] (3) - retrieve and store resource databases
+XrmGetFileDatabase [] (3) - retrieve and store resource databases
+XrmGetResource [] (3) - retrieve database resources and search lists
+XrmGetStringDatabase [] (3) - retrieve and store resource databases
+XrmInitialize [] (3) - initialize the Resource Manager, Resource Manager structures, and parse the command line
+XrmLocaleOfDatabase [] (3) - retrieve and store resource databases
+XrmMergeDatabases [] (3) - merge resource databases
+XrmOptionDescRec [] (3) - initialize the Resource Manager, Resource Manager structures, and parse the command line
+XrmOptionKind [] (3) - initialize the Resource Manager, Resource Manager structures, and parse the command line
+XrmParseCommand [] (3) - initialize the Resource Manager, Resource Manager structures, and parse the command line
+XrmPermStringToQuark [] (3) - manipulate resource quarks
+XrmPutFileDatabase [] (3) - retrieve and store resource databases
+XrmPutLineResource [] (3) - store database resources
+XrmPutResource [] (3) - store database resources
+XrmPutStringResource [] (3) - store database resources
+XrmQGetResource [] (3) - retrieve database resources and search lists
+XrmQGetSearchList [] (3) - retrieve database resources and search lists
+XrmQGetSearchResource [] (3) - retrieve database resources and search lists
+XrmQPutResource [] (3) - store database resources
+XrmQPutStringResource [] (3) - store database resources
+XrmQuarkToString [] (3) - manipulate resource quarks
+XrmSetDatabase [] (3) - retrieve and store resource databases
+XrmStringToBindingQuarkList [] (3) - manipulate resource quarks
+XrmStringToQuark [] (3) - manipulate resource quarks
+XrmStringToQuarkList [] (3) - manipulate resource quarks
+XrmUniqueQuark [] (3) - manipulate resource quarks
+XrmValue [] (3) - initialize the Resource Manager, Resource Manager structures, and parse the command line
+Xsecurity [] (7) - X display access control
+Xserver [] (1) - X Window System display server
+XtAddActions [] (3) - register an action table
+XtAddCallback [] (3) - add and remove callback procedures
+XtAddCallbacks [] (3) - add and remove callback procedures
+XtAddConverter [] (3) - register resource converter
+XtAddEventHandler [] (3) - add and remove event handlers
+XtAddExposureToRegion [] (3) - merge exposure events into a region
+XtAddGrab [] (3) - redirect user input to a modal widget
+XtAddInput [] (3) - register input, timeout, and workprocs
+XtAddRawEventHandler [] (3) - add and remove event handlers
+XtAddTimeOut [] (3) - register input, timeout, and workprocs
+XtAddWorkProc [] (3) - register input, timeout, and workprocs
+XtAllocateGC [] (3) - obtain a sharable GC with modifiable fields
+XtAppAddActionHook [] (3) - register an action hook procedure
+XtAppAddActions [] (3) - register an action table
+XtAppAddBlockHook [] (3) - register a block hook procedure
+XtAppAddConverter [] (3) - register resource converter
+XtAppAddInput [] (3) - register and remove an input source
+XtAppAddSignal [] (3) - register and remove a signal source
+XtAppAddTimeOut [] (3) - register and remove timeouts
+XtAppAddWorkProc [] (3) - Add and remove background processing procedures
+XtAppCreateShell [] (3) - create top-level widget instance
+XtAppError [] (3) - low-level error handlers
+XtAppErrorMsg [] (3) - high-level error handlers
+XtAppGetErrorDatabase [] (3) - obtain error database
+XtAppGetErrorDatabaseText [] (3) - obtain error database
+XtAppGetExitFlag [] (3) - thread support functions
+XtAppGetSelectionTimeout [] (3) - set and obtain selection timeout values
+XtAppInitialize [] (3) - initialize, open, or close a display
+XtAppLock [] (3) - lock and unlock application context
+XtAppMainLoop [] (3) - query and process events and input
+XtAppNextEvent [] (3) - query and process events and input
+XtAppPeekEvent [] (3) - query and process events and input
+XtAppPending [] (3) - query and process events and input
+XtAppProcessEvent [] (3) - query and process events and input
+XtAppReleaseCacheRefs [] (3) - decrement reference counts for resources
+XtAppSetErrorHandler [] (3) - low-level error handlers
+XtAppSetErrorMsgHandler [] (3) - high-level error handlers
+XtAppSetExitFlag [] (3) - thread support functions
+XtAppSetFallbackResources [] (3) - set fallback resources
+XtAppSetSelectionTimeout [] (3) - set and obtain selection timeout values
+XtAppSetTypeConverter [] (3) - register resource converter
+XtAppSetWarningHandler [] (3) - low-level error handlers
+XtAppSetWarningMsgHandler [] (3) - high-level error handlers
+XtAppUnlock [] (3) - lock and unlock application context
+XtAppWarning [] (3) - low-level error handlers
+XtAppWarningMsg [] (3) - high-level error handlers
+XtAugmentTranslations [] (3) - manage translation tables
+XtBuildEventMask [] (3) - retrieve a widget's event mask
+XtCallAcceptFocus [] (3) - calla widget's accept_focus procedure
+XtCallActionProc [] (3) - invoke an action procedure directly
+XtCallCallbackList [] (3) - process callbacks
+XtCallCallbacks [] (3) - process callbacks
+XtCallConverter [] (3) - invoke resource converters
+XtCallbackExclusive [] (3) - map a pop-up
+XtCallbackNone [] (3) - map a pop-up
+XtCallbackNonexclusive [] (3) - map a pop-up
+XtCallbackPopdown [] (3) - unmap a pop-up
+XtCalloc [] (3) - memory management functions
+XtCancelSelectionRequest [] (3) - bundle multiple selection conversion requests into a single request using MULTIPLE target
+XtChangeManagedSet [] (3) - manage and unmanage children
+XtCheckSubclass [] (3) - obtain and verify a widget's class
+XtClass [] (3) - obtain and verify a widget's class
+XtCloseDisplay [] (3) - initialize, open, or close a display
+XtConfigureWidget [] (3) - move and resize widgets
+XtConvert [] (3) - invoke resource converters
+XtConvertAndStore [] (3) - invoke resource converters
+XtConvertCase [] (3) - convert KeySym to KeyCodes
+XtCreateApplicationContext [] (3) - create, destroy, and obtain an application context
+XtCreateApplicationShell [] (3) - create top-level widget instance
+XtCreateManagedWidget [] (3) - create and destroy widgets
+XtCreatePopupShell [] (3) - create a popup shell
+XtCreateSelectionRequest [] (3) - bundle multiple selection conversion requests into a single request using MULTIPLE target
+XtCreateWidget [] (3) - create and destroy widgets
+XtCreateWindow [] (3) - window creation convenience function
+XtDatabase [] (3) - initialize, open, or close a display
+XtDestroyApplicationContext [] (3) - create, destroy, and obtain an application context
+XtDestroyWidget [] (3) - create and destroy widgets
+XtDirectConvert [] (3) - invoke resource converters
+XtDisownSelection [] (3) - set selection owner
+XtDispatchEvent [] (3) - query and process events and input
+XtDispatchEventToWidget [] (3) - extension event handling
+XtDisplay [] (3) - obtain window information about a widget
+XtDisplayInitialize [] (3) - initialize, open, or close a display
+XtDisplayOfObject [] (3) - obtain window information about a widget
+XtDisplayStringConversionWarning [] (3) - issue a conversion warning message
+XtDisplayToApplicationContext [] (3) - obtain an application context
+XtError [] (3) - low-level error handlers
+XtErrorMsg [] (3) - high-level error handlers
+XtFindFile [] (3) - search for a file using substitutions in the path list
+XtFree [] (3) - memory management functions
+XtGetActionKeysym [] (3) - obtain corresponding keysym
+XtGetActionList [] (3) - obtain class action list
+XtGetApplicationNameAndClass [] (3) - retrieve application name and class
+XtGetApplicationResources [] (3) - obtain application resources
+XtGetClassExtension [] (3) - locate a class extension record
+XtGetConstraintResourceList [] (3) - obtain resource list
+XtGetDisplays [] (3) - retrieve a list of displays associated with an application context
+XtGetErrorDatabase [] (3) - obtain error database
+XtGetErrorDatabaseText [] (3) - obtain error database
+XtGetGC [] (3) - obtain and destroy a sharable GC
+XtGetKeyboardFocusWidget [] (3) - extension event handling
+XtGetKeysymTable [] (3) - query keysyms and keycodes
+XtGetMultiClickTime [] (3) - set and get multi-click times
+XtGetResourceList [] (3) - obtain resource list
+XtGetSelectionParameters [] (3) - retrieve target parameters for a selection request with a single target
+XtGetSelectionRequest [] (3) - retrieve the event that triggered the XtConvertSelectionProc
+XtGetSelectionTimeout [] (3) - set and obtain selection timeout values
+XtGetSelectionValue [] (3) - obtain selection values
+XtGetSelectionValueIncremental [] (3) - obtain selection values
+XtGetSelectionValues [] (3) - obtain selection values
+XtGetSelectionValuesIncremental [] (3) - obtain selection values
+XtGetSubresources [] (3) - obtain subresources
+XtGetSubvalues [] (3) - obtain and set widget resources
+XtGetValues [] (3) - obtain and set widget resources
+XtGrabButton [] (3) - manage grabs
+XtGrabKey [] (3) - manage grabs
+XtGrabKeyboard [] (3) - manage grabs
+XtGrabPointer [] (3) - manage grabs
+XtHasCallbacks [] (3) - process callbacks
+XtHooksOfDisplay [] (3) - external agent access points
+XtInitialize [] (3) - initialize
+XtInitializeWidgetClass [] (3) - initialize a widget class
+XtInsertEventHandler [] (3) - add and remove event handlers
+XtInsertEventTypeHandler [] (3) - extension event handling
+XtInsertRawEventHandler [] (3) - add and remove event handlers
+XtInstallAccelerators [] (3) - managing accelerator tables
+XtInstallAllAccelerators [] (3) - managing accelerator tables
+XtIsApplicationShell [] (3) - obtain and verify a widget's class
+XtIsComposite [] (3) - obtain and verify a widget's class
+XtIsConstraint [] (3) - obtain and verify a widget's class
+XtIsManaged [] (3) - manage and unmanage children
+XtIsObject [] (3) - obtain and verify a widget's class
+XtIsOverrideShell [] (3) - obtain and verify a widget's class
+XtIsRealized [] (3) - realize and unrealize widgets
+XtIsRectObj [] (3) - obtain and verify a widget's class
+XtIsSensitive [] (3) - set and check a widget's sensitivity state
+XtIsSessionShell [] (3) - obtain and verify a widget's class
+XtIsShell [] (3) - obtain and verify a widget's class
+XtIsSubclass [] (3) - obtain and verify a widget's class
+XtIsTopLevelShell [] (3) - obtain and verify a widget's class
+XtIsTransientShell [] (3) - obtain and verify a widget's class
+XtIsVendorShell [] (3) - obtain and verify a widget's class
+XtIsWMShell [] (3) - obtain and verify a widget's class
+XtIsWidget [] (3) - obtain and verify a widget's class
+XtKeysymToKeycodeList [] (3) - query keysyms and keycodes
+XtLastEventProcessed [] (3) - last event, last timestamp processed
+XtLastTimestampProcessed [] (3) - last event, last timestamp processed
+XtMainLoop [] (3) - query and process events and input
+XtMakeGeometryRequest [] (3) - make geometry manager request
+XtMakeResizeRequest [] (3) - make geometry manager request
+XtMalloc [] (3) - memory management functions
+XtManageChild [] (3) - manage and unmanage children
+XtManageChildren [] (3) - manage and unmanage children
+XtMapWidget [] (3) - map and unmap widgets
+XtMergeArgLists [] (3) - set and merge ArgLists
+XtMoveWidget [] (3) - move and resize widgets
+XtName [] (3) - obtain widget's name
+XtNameToWidget [] (3) - translating strings to widgets or widgets to windows
+XtNew [] (3) - memory management functions
+XtNewString [] (3) - memory management functions
+XtNextEvent [] (3) - query and process events and input
+XtNoticeSignal [] (3) - register and remove a signal source
+XtNumber [] (3) - determine the byte offset or number of array elements
+XtOffset [] (3) - determine the byte offset or number of array elements
+XtOffsetOf [] (3) - determine the byte offset or number of array elements
+XtOpenApplication [] (3) - initialize, open, or close a display
+XtOpenDisplay [] (3) - initialize, open, or close a display
+XtOverrideTranslations [] (3) - manage translation tables
+XtOwnSelection [] (3) - set selection owner
+XtOwnSelectionIncremental [] (3) - set selection owner
+XtParent [] (3) - obtain widget's parent widget id
+XtParseAcceleratorTable [] (3) - managing accelerator tables
+XtParseTranslationTable [] (3) - manage translation tables
+XtPeekEvent [] (3) - query and process events and input
+XtPending [] (3) - query and process events and input
+XtPopdown [] (3) - unmap a pop-up
+XtPopup [] (3) - map a pop-up
+XtPopupSpringLoaded [] (3) - map a pop-up
+XtProcessEvent [] (3) - query and process events and input
+XtProcessLock [] (3) - lock and unlock process
+XtProcessUnlock [] (3) - lock and unlock process
+XtQueryGeometry [] (3) - query the preferred geometry of a child widget
+XtRealizeWidget [] (3) - realize and unrealize widgets
+XtRealloc [] (3) - memory management functions
+XtRegisterCaseConverter [] (3) - convert KeySym to KeyCodes
+XtRegisterDrawable [] (3) - register a drawable with the Intrinsics event dispatcher
+XtRegisterExtensionSelector [] (3) - extension event handling
+XtRegisterGrabAction [] (3) - register button and key grabs
+XtReleaseGC [] (3) - obtain and destroy a sharable GC
+XtReleasePropertyAtom [] (3) - maintain a cache of property atoms
+XtRemoveActionHook [] (3) - register an action hook procedure
+XtRemoveAllCallbacks [] (3) - add and remove callback procedures
+XtRemoveBlockHook [] (3) - register a block hook procedure
+XtRemoveCallback [] (3) - add and remove callback procedures
+XtRemoveCallbacks [] (3) - add and remove callback procedures
+XtRemoveEventHandler [] (3) - add and remove event handlers
+XtRemoveEventTypeHandler [] (3) - extension event handling
+XtRemoveGrab [] (3) - redirect user input to a modal widget
+XtRemoveInput [] (3) - register and remove an input source
+XtRemoveRawEventHandler [] (3) - add and remove event handlers
+XtRemoveSignal [] (3) - register and remove a signal source
+XtRemoveTimeOut [] (3) - register and remove timeouts
+XtRemoveWorkProc [] (3) - Add and remove background processing procedures
+XtReservePropertyAtom [] (3) - maintain a cache of property atoms
+XtResizeWidget [] (3) - move and resize widgets
+XtResolvePathname [] (3) - search for a file using standard substitution
+XtScreen [] (3) - obtain window information about a widget
+XtScreenDatabase [] (3) - initialize, open, or close a display
+XtScreenOfObject [] (3) - obtain window information about a widget
+XtSendSelectionRequest [] (3) - bundle multiple selection conversion requests into a single request using MULTIPLE target
+XtSessionGetToken [] (3) - token management for checkpointing
+XtSessionReturnToken [] (3) - token management for checkpointing
+XtSetArg [] (3) - set and merge ArgLists
+XtSetErrorHandler [] (3) - low-level error handlers
+XtSetErrorMsgHandler [] (3) - high-level error handlers
+XtSetEventDispatcher [] (3) - extension event handling
+XtSetKeyTranslator [] (3) - convert KeySym to KeyCodes
+XtSetKeyboardFocus [] (3) - focus events on a child widget
+XtSetLanguageProc [] (3) - set the language procedure
+XtSetMappedWhenManaged [] (3) - map and unmap widgets
+XtSetMultiClickTime [] (3) - set and get multi-click times
+XtSetSelectionParameters [] (3) - specify target parameters for a selection request with a single target
+XtSetSelectionTimeout [] (3) - set and obtain selection timeout values
+XtSetSensitive [] (3) - set and check a widget's sensitivity state
+XtSetSubvalues [] (3) - obtain and set widget resources
+XtSetTypeConverter [] (3) - register resource converter
+XtSetValues [] (3) - obtain and set widget resources
+XtSetWMColormapWindows [] (3) - Set the value of the WM_COLORMAP_WINDOWS property
+XtSetWarningHandler [] (3) - low-level error handlers
+XtSetWarningMsgHandler [] (3) - high-level error handlers
+XtStringConversionWarning [] (3) - issue a conversion warning message
+XtSuperclass [] (3) - obtain and verify a widget's class
+XtToolkitInitialize [] (3) - create, destroy, and obtain an application context
+XtToolkitThreadInitialize [] (3) - initialize the toolkit for multiple threads
+XtTranslateCoords [] (3) - translate widget coordinates
+XtTranslateKeycode [] (3) - convert KeySym to KeyCodes
+XtUngrabButton [] (3) - manage grabs
+XtUngrabKey [] (3) - manage grabs
+XtUngrabKeyboard [] (3) - manage grabs
+XtUngrabPointer [] (3) - manage grabs
+XtUninstallTranslations [] (3) - manage translation tables
+XtUnmanageChild [] (3) - manage and unmanage children
+XtUnmanageChildren [] (3) - manage and unmanage children
+XtUnmapWidget [] (3) - map and unmap widgets
+XtUnrealizeWidget [] (3) - realize and unrealize widgets
+XtVaAppCreateShell [] (3) - create top-level widget instance
+XtVaAppInitialize [] (3) - initialize, open, or close a display
+XtVaCreateArgsList [] (3) - dynamically allocate a varargs list
+XtVaCreateManagedWidget [] (3) - create and destroy widgets
+XtVaCreatePopupShell [] (3) - create a popup shell
+XtVaCreateWidget [] (3) - create and destroy widgets
+XtVaGetApplicationResources [] (3) - obtain application resources
+XtVaGetSubresources [] (3) - obtain subresources
+XtVaGetSubvalues [] (3) - obtain and set widget resources
+XtVaGetValues [] (3) - obtain and set widget resources
+XtVaOpenApplication [] (3) - initialize, open, or close a display
+XtVaSetSubvalues [] (3) - obtain and set widget resources
+XtVaSetValues [] (3) - obtain and set widget resources
+XtWarning [] (3) - low-level error handlers
+XtWarningMsg [] (3) - high-level error handlers
+XtWidgetToApplicationContext [] (3) - create, destroy, and obtain an application context
+XtWindow [] (3) - obtain window information about a widget
+XtWindowOfObject [] (3) - obtain window information about a widget
+XtWindowToWidget [] (3) - translating strings to widgets or widgets to windows
+Xutf8DrawImageString [] (3) - draw image text using a single font set
+Xutf8DrawString [] (3) - draw text using a single font set
+Xutf8DrawText [] (3) - draw text using multiple font sets
+Xutf8LookupString [] (3) - obtain composed input from an input method
+Xutf8ResetIC [] (3) - reset the state of an input context
+Xutf8SetWMProperties [] (3) - set standard window properties
+Xutf8TextEscapement [] (3) - obtain the escapement of text
+Xutf8TextExtents [] (3) - compute text extents
+Xutf8TextListToTextProperty [] (3) - convert text lists and text property structures
+Xutf8TextPerCharExtents [] (3) - obtain per-character information for a text string
+Xutf8TextPropertyToTextList [] (3) - convert text lists and text property structures
+Xv [] (3) - X Window System video extension
+XvFreeAdaptorInfo [] (3) - free adaptor information
+XvFreeEncodingInfo [] (3) - free encoding information
+XvGetPortAttribute [] (3) - return current port attribute value
+XvGetStill [] (3) - capture a single frame of video from a drawable
+XvGetVideo [] (3) - capture video from a drawable
+XvGrabPort [] (3) - lock port for exclusive use by client
+XvPortNotify [] (3) - event generated when port attributes change
+XvPutStill [] (3) - write a single frame of video to a drawable
+XvPutVideo [] (3) - write video into a drawable
+XvQueryAdaptors [] (3) - return adaptor information for a screen
+XvQueryBestSize [] (3) - determine the optimum drawable region size
+XvQueryEncodings [] (3) - return list of encodings for an adaptor
+XvQueryExtension [] (3) - return version and release of extension
+XvSelectPortNotify [] (3) - enable or disable XvPortNotify(3) events
+XvSelectVideoNotify [] (3) - enable or disable VideoNotify events
+XvSetPortAttribute [] (3) - sets an attribute of a video port
+XvStopVideo [] (3) - stop active video
+XvUngrabPort [] (3) - release port grabbed for video operation
+XvVideoNotify [] (3) - event generated for video processing
+Xvfb [] (1) - virtual framebuffer X server for X Version 11
+XwcDrawImageString [] (3) - draw image text using a single font set
+XwcDrawString [] (3) - draw text using a single font set
+XwcDrawText [] (3) - draw text using multiple font sets
+XwcFreeStringList [] (3) - convert text lists and text property structures
+XwcLookupString [] (3) - obtain composed input from an input method
+XwcResetIC [] (3) - reset the state of an input context
+XwcTextEscapement [] (3) - obtain the escapement of text
+XwcTextExtents [] (3) - compute text extents
+XwcTextListToTextProperty [] (3) - convert text lists and text property structures
+XwcTextPerCharExtents [] (3) - obtain per-character information for a text string
+XwcTextPropertyToTextList [] (3) - convert text lists and text property structures
+[ [] (1) - bash built-in commands, see bash(1)
+[0 [] (3) - 1)) && ! e.quit?) p e d.refresh end
+[5 [] (3) - 1)) && ! e.quit?) p e d.refresh end
+_Exit [] (2) - terminate the calling process
+_TIFFfree [] (3) - memory management-related functions for use with TIFF files
+_TIFFmalloc [] (3) - memory management-related functions for use with TIFF files
+_TIFFmemcmp, [] (3) - memory management-related functions for use with TIFF files
+_TIFFmemcpy [] (3) - memory management-related functions for use with TIFF files
+_TIFFmemset [] (3) - memory management-related functions for use with TIFF files
+_TIFFrealloc [] (3) - memory management-related functions for use with TIFF files
+__after_morecore_hook [] (3) - malloc debugging variables
+__flbf [] (3) - interfaces to stdio FILE structure
+__fpending [] (3) - interfaces to stdio FILE structure
+__fpurge [] (3) - interfaces to stdio FILE structure
+__freadable [] (3) - interfaces to stdio FILE structure
+__freading [] (3) - interfaces to stdio FILE structure
+__free_hook [] (3) - malloc debugging variables
+__fsetlocking [] (3) - interfaces to stdio FILE structure
+__fwritable [] (3) - interfaces to stdio FILE structure
+__fwriting [] (3) - interfaces to stdio FILE structure
+__malloc_initialize_hook [] (3) - malloc debugging variables
+__memalign_hook [] (3) - malloc debugging variables
+__realloc_hook [] (3) - malloc debugging variables
+_clone2 [] (2) - create a child process
+_exit [] (2) - terminate the calling process
+_fbufsize [] (3) - interfaces to stdio FILE structure
+_flushlbf [] (3) - interfaces to stdio FILE structure
+_fpurge [] (3) - purge a stream
+_llseek [] (2) - reposition read/write file offset
+_malloc_hook [] (3) - malloc debugging variables
+_nc_freeall _nc_free_and_exit [] (3) - curses memory-leak checking
+_nc_tracebits [] (3) - curses debugging routines
+_setfpucw [] (3) - set FPU control word on i386 architecture (obsolete)
+_syscall [] (2) - invoking a system call without library support (OBSOLETE)
+_traceattr [] (3) - curses debugging routines
+_traceattr2 [] (3) - curses debugging routines
+_tracechar [] (3) - curses debugging routines
+_tracechtype [] (3) - curses debugging routines
+_tracechtype2 [] (3) - curses debugging routines
+_tracedump [] (3) - curses debugging routines
+_tracef [] (3) - curses debugging routines
+_tracemouse [] (3) - curses debugging routines
+a2p [] (1) - Awk to Perl translator
+a2ps [] (1) - format files for printing on a PostScript printer
+a2x [] (1) - convert Asciidoc text file to PDF, XHTML, HTML Help, manpage or plain text
+a64l [] (3) - convert between long and base-64
+aa_attrs [] (3) - returns pointer to the text output buffer used by AA-lib
+aa_autoinit [] (3) - easy to use AA-lib initialization function
+aa_autoinitkbd [] (3) - easy to use AA-lib keyboard initialization function
+aa_autoinitmouse [] (3) - easy to use AA-lib mouse initialization function
+aa_close [] (3) - close the AA-lib context
+aa_createedit [] (3) - Simple interactive line editor provided as helper function
+aa_currentfont [] (3) - returns specification of the fonts used by AA-lib rendering routines
+aa_defparams [] (3) - default hardware paramters requested by AA-lib programs
+aa_defrenderparams [] (3) - default rendering parameters
+aa_displayrecommended [] (3) - List of recommended drivers
+aa_dithernames [] (3) - Names of dithering methods supported by AA-lib
+aa_drivers [] (3) - NULL-terminated array of output drivers available in AA-lib
+aa_edit [] (3) - Simple interactive line editor
+aa_editkey [] (3) - Notify the line editor about keypress
+aa_fastrender [] (3) - simple and fast AA-lib rendering function
+aa_fonts [] (3) - Null-terminated array of available fonts
+aa_formats [] (3) - NULL terminated array of save formats supported by AA-lib
+aa_getevent [] (3) - keyboard functions
+aa_getkey [] (3) - return next keypress event from queue
+aa_getmouse [] (3) - Get mouse position as specified by last mouse event read by aa_getevent
+aa_gotoxy [] (3) - move the hardware cursor (if any) to specified position
+aa_help [] (3) - AA-lib help string for the default command line parser
+aa_hidecursor [] (3) - hide the hardware cursor
+aa_hidemouse [] (3) - hide the mouse cursor
+aa_image [] (3) - returns pointer to the framebuffer emulated by AA-lib
+aa_imgheight [] (3) - returns height of the emulated image in pixels
+aa_imgwidth [] (3) - returns width of the emulated image in pixels
+aa_init [] (3) - open the output display for AA-lib
+aa_initkbd [] (3) - initialize the AA-lib keyboard driver
+aa_initmouse [] (3) - initialize the AA-lib mouse driver
+aa_kbddrivers [] (3) - NULL-terminated array of keyboard drivers available in AA_lib
+aa_kbdrecommended [] (3) - List of recommended drivers
+aa_mmheight [] (3) - returns height of the output screen in millimeters
+aa_mmwidth [] (3) - returns width of the output screen in millimeters
+aa_mousedrivers [] (3) - NULL terminated array of mouse drivers supported by AA-lib
+aa_mouserecommended [] (3) - List of recommended drivers
+aa_parseoptions [] (3) - parse the standard command line options used by AA-lib
+aa_printf [] (3) - print text to AA-lib output buffers
+aa_putpixel [] (3) - put pixel to emulated framebuffer
+aa_puts [] (3) - output string to AA-lib output buffers
+aa_recommendhi [] (3) - insert the given driver on beggining of the list of recommended drivers
+aa_recommendhidisplay [] (3) - insert the given driver on beggining of the list of recommended display drivers
+aa_recommendhikbd [] (3) - insert the given driver on beggining of the list of recommended keyboard drivers
+aa_recommendhimouse [] (3) - insert the given driver on beggining of the list of recommended mouse drivers
+aa_recommendlow [] (3) - Add the given driver to the end of list of recommended drivers
+aa_recommendlowdisplay [] (3) - Add the given driver to the end of list of display recommended drivers
+aa_recommendlowkbd [] (3) - Add the given driver to the end of list of keyboard recommended drivers
+aa_recommendlowmouse [] (3) - Add the given driver to the end of list of mouse recommended drivers
+aa_registerfont [] (3) - add new font specification to aa_fonts array
+aa_render [] (3) - convert image buffer to ASCII-art
+aa_resize [] (3) - resize functions
+aa_resizehandler [] (3) - Set user handler to be called on resize event
+aa_scrheight [] (3) - returns height of the output screen in characters
+aa_scrwidth [] (3) - returns width of the output screen in characters
+aa_setfont [] (3) - set font specification to be used by rendering functions
+aa_setsupported [] (3) - alter the supported field of hardware_params structure used by AA-lib
+aa_showcursor [] (3) - show the hardware cursor
+aa_showmouse [] (3) - show the mouse cursor
+aa_text [] (3) - returns pointer to the text output buffer used by AA-lib
+aa_uninitkbd [] (3) - uninitialize the keyboard driver
+aa_uninitmouse [] (3) - uninitialize the mouse driver
+aafire [] (1) - aalib example programs
+aainfo [] (1) - aalib example programs
+aasavefont [] (1) - aalib example programs
+aatest [] (1) - aalib example programs
+aaxine [] (1) - an ASCII art video player
+ab [] (8) - Apache HTTP server benchmarking tool
+abbrev [] (3) - create an abbreviation table from a list
+abort [] (3) - cause abnormal process termination
+abs [] (3) - compute the absolute value of an integer
+abstractile [] (6) - draw abstract mosaic patterns of interlocking tiles
+abxtest [] (1) - double-blind ABX comparison testing script
+ac [] (1) - print statistics about users' connect time
+accel [] (6) - tests the new style svgalib accelerator interface
+accept [] (2) - accept a connection on a socket
+accept/reject [] (8) - accept/reject jobs sent to a destination
+access [] (2) - check real user's permissions for a file
+acct [] (2) - switch process accounting on or off
+acct [] (5) - process accounting file
+accton [] (8) - turns process accounting on or off
+acecad [] (4) - Acecad Flair input driver
+achfile [] (1) - change type and/or creator of Apple Macintosh files (netatalk format)
+acl [] (5) - Access Control Lists
+acl_add_perm [] (3) - add a permission to an ACL permission set
+acl_calc_mask [] (3) - calculate the file group class mask
+acl_check [] (3) - check an ACL for validity
+acl_clear_perms [] (3) - clear all permissions from an ACL permission set
+acl_cmp [] (3) - compare two ACLs
+acl_copy_entry [] (3) - copy an ACL entry
+acl_copy_ext [] (3) - copy an ACL from internal to external representation
+acl_copy_int [] (3) - copy an ACL from external to internal representation
+acl_create_entry [] (3) - create a new ACL entry
+acl_delete_def_file [] (3) - delete a default ACL by filename
+acl_delete_entry [] (3) - delete an ACL entry
+acl_delete_perm [] (3) - delete a permission from an ACL permission set
+acl_dup [] (3) - duplicate an ACL
+acl_entries [] (3) - return the number of entries in an ACL
+acl_equiv_mode [] (3) - check for an equivalent ACL
+acl_error [] (3) - convert an ACL error code to a text message
+acl_extended_fd [] (3) - test for information in the ACL by file descriptor
+acl_extended_file [] (3) - test for information in ACLs by file name
+acl_free [] (3) - release memory allocated to an ACL data object
+acl_from_mode [] (3) - create an ACL from file permission bits
+acl_from_text [] (3) - create an ACL from text
+acl_get_entry [] (3) - get an ACL entry
+acl_get_fd [] (3) - get an ACL by file descriptor
+acl_get_file [] (3) - get an ACL by filename
+acl_get_perm [] (3) - test for a permission in an ACL permission set
+acl_get_permset [] (3) - retrieve the permission set from an ACL entry
+acl_get_qualifier [] (3) - retrieve the qualifier from an ACL entry
+acl_get_tag_type [] (3) - get the tag type of an ACL entry
+acl_init [] (3) - initialize ACL working storage
+acl_set_fd [] (3) - set an ACL by file descriptor
+acl_set_file [] (3) - set an ACL by filename
+acl_set_permset [] (3) - set the permission set in an ACL entry
+acl_set_qualifier [] (3) - set the qualifier of an ACL entry
+acl_set_tag_type [] (3) - set the tag type of an ACL entry
+acl_size [] (3) - get the size of the external representation of an ACL
+acl_to_any_text [] (3) - convert an ACL to text
+acl_to_text [] (3) - convert an ACL to text
+acl_valid [] (3) - validate an ACL
+acleandir [] (1) - clean up a directory containing netatalk Apple Macintosh files
+aconnect [] (1) - ALSA sequencer connection manager
+acos [] (3) - arc cosine function
+acosf [] (3) - arc cosine function
+acosh [] (3) - inverse hyperbolic cosine function
+acoshf [] (3) - inverse hyperbolic cosine function
+acoshl [] (3) - inverse hyperbolic cosine function
+acosl [] (3) - arc cosine function
+acpi_listen [] (8) - ACPI event listener
+acpid [] (8) - Advanced Configuration and Power Interface event daemon
+add_mibdir [] (3) - mib_api functions
+add_module_replacement [] (3) - mib_api functions
+add_wch [] (3) - add a complex character and rendition to a curses window, then advance the cursor
+add_wchnstr [] (3) - add an array of complex characters (and attributes) to a curses window
+add_wchstr [] (3) - add an array of complex characters (and attributes) to a curses window
+addch [] (3) - add a character (with attributes) to a curses window, then advance the cursor
+addchnstr [] (3) - add a string of characters (and attributes) to a curses window
+addchstr [] (3) - add a string of characters (and attributes) to a curses window
+adddebug [] (1) - Modifies Makefile(s) to add debug info
+addftinfo [] (1) - add information to troff font files for use with groff
+addgnupghome [] (8) - Create .gnupg home directories
+addmntent [] (3) - get file system descriptor file entry
+addnstr [] (3) - add a string of characters to a curses window and advance cursor
+addnwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+addr2line [] (1) - convert addresses into file names and line numbers
+addseverity [] (3) - introduce new severity classes
+addstr [] (3) - add a string of characters to a curses window and advance cursor
+addwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+adjtime [] (3) - correct the time to synchronize the system clock
+adjtimex [] (2) - tune kernel clock
+adjtimex [] (8) - display or set the kernel time variables
+adventure [] (6) - an exploration game
+aecho [] (1) - send AppleTalk Echo Protocol packets to network hosts
+afile [] (1) - display type and creator of Apple Macintosh files (netatalk format)
+afmtodit [] (1) - create font files for use with groff -Tps
+afpd [] (8) - AppleTalk Filing Protocol daemon
+afpd.conf [] (5) - Configuration file used by afpd(8) to determine the setup of its file sharing services
+afppasswd [] (1) - netatalk password maintenance utility
+afs_syscall [] (2) - unimplemented system calls
+after [] (n) - Execute a command after a time delay
+agetty [] (8) - alternative Linux getty
+aio_cancel [] (3) - cancel an outstanding asynchronous I/O request
+aio_error [] (3) - get error status of asynchronous I/O operation
+aio_fsync [] (3) - asynchronous file synchronization
+aio_read [] (3) - asynchronous read
+aio_return [] (3) - get return status of asynchronous I/O operation
+aio_suspend [] (3) - wait for asynchronous I/O operation or timeout
+aio_write [] (3) - asynchronous write
+aiptek [] (4) - Aiptek USB Digital Tablet Input Driver for Linux
+alarm [] (2) - set an alarm clock for delivery of a signal
+alias [] (1) - bash built-in commands, see bash(1)
+aliases [] (5) - aliases file for sendmail
+alloc_hugepages [] (2) - allocate or free huge pages
+alloca [] (3) - allocate memory that is automatically freed
+alphasort [] (3) - scan a directory for matching entries
+alpine [] (1) - an Alternatively Licensed Program for Internet News and Email
+alsaconf [] (8) - configuration tool for the Advanced Linux Sound Architecture
+alsactl [] (1) - advanced controls for ALSA soundcard driver
+alsactl init [] (7) - alsa control management - initialization
+alsamixer [] (1) - soundcard mixer for ALSA soundcard driver, with ncurses interface
+amidi [] (1) - read from and write to ALSA RawMIDI ports
+amixer [] (1) - command-line mixer for ALSA soundcard driver
+amor [] (6) - A KDE creature for your desktop
+amp [] (1) - decompress and play MPEG audio files
+and Esc become exit keys moduleCaca class Event::Key def quit? end end end while((e= d.get_event(Caca::Event, [] (3) - 1)) && ! e.quit?) p e d.refresh end
+anemone [] (6) - wiggling tentacles
+anemotaxis [] (6) - directional search on a plane
+animate [] (1) - animates an image or image sequence on any X server
+answer [] (1) - phone message transcription system
+antinspect [] (6) - ant model inspection screenhack
+antmaze [] (6) - ant maze walker
+antspotlight [] (6) - ant spotlight screenhack
+any2djvu [] (1) - Convert .ps/.ps.gz/.pdf to .djvu
+anytopnm [] (1) - convert an arbitrary type of image file to PBM, PGM, or PPM
+aoss [] (1) - Wrapper script to facilitate use of the ALSA OSS compatibility library
+apachectl [] (8) - Apache HTTP Server Control Interface
+aplay [] (1) - command-line sound recorder and player for ALSA soundcard driver
+aplaymidi [] (1) - play Standard MIDI Files
+apm [] (1) - interface with the APM subsystem
+apm [] (4) - Alliance ProMotion video driver
+apmd [] (8) - Advanced Power Management (APM) daemon
+apmsleep [] (1) - go into suspend or standby mode and wake-up later
+apollonian [] (6) - Descartes Circle Theorem
+append [] (n) - Append to variable
+apple2 [] (6) - Apple ][ display emulator
+apple_cp [] (1) - Do an apple copy, copying file metadata and the resource fork as well
+apple_mv [] (1) - Do an apple move, moving metadata and the resource fork as well
+apple_rm [] (1) - Do an apple remove, remove metadata and resource fork as well
+apply [] (n) - Apply an anonymous function
+applygnupgdefaults [] (8) - Run gpgconf --apply-defaults for all users
+appres [] (1) - list X application resource database
+apropos [] (1) - search the whatis database for strings
+apxs [] (8) - APache eXtenSion tool
+ar [] (1) - create, modify, and extract from archives
+arch [] (1) - print machine architecture
+arch_prctl [] (2) - set architecture-specific thread state
+archive_clear_error [] (3) - libarchive utility functions
+archive_compression [] (3) - libarchive utility functions
+archive_compression_name [] (3) - libarchive utility functions
+archive_copy_error [] (3) - libarchive utility functions
+archive_entry_acl_add_entry [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_add_entry_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_clear [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_count [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_next [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_next_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_reset [] (3) - functions for manipulating archive entry descriptions
+archive_entry_acl_text_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_atime [] (3) - functions for manipulating archive entry descriptions
+archive_entry_atime_nsec [] (3) - functions for manipulating archive entry descriptions
+archive_entry_clear [] (3) - functions for manipulating archive entry descriptions
+archive_entry_clone [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_fflags_text [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_fflags_text_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_gname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_gname_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_hardlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_hardlink_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_link [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_link_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_pathname_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_sourcepath [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_stat [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_symlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_symlink_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_uname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_copy_uname_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_dev [] (3) - functions for manipulating archive entry descriptions
+archive_entry_devmajor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_devminor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_fflags [] (3) - functions for manipulating archive entry descriptions
+archive_entry_fflags_text [] (3) - functions for manipulating archive entry descriptions
+archive_entry_filetype [] (3) - functions for manipulating archive entry descriptions
+archive_entry_free [] (3) - functions for manipulating archive entry descriptions
+archive_entry_gid [] (3) - functions for manipulating archive entry descriptions
+archive_entry_gname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_hardlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_ino [] (3) - functions for manipulating archive entry descriptions
+archive_entry_mode [] (3) - functions for manipulating archive entry descriptions
+archive_entry_mtime [] (3) - functions for manipulating archive entry descriptions
+archive_entry_mtime_nsec [] (3) - functions for manipulating archive entry descriptions
+archive_entry_new [] (3) - functions for manipulating archive entry descriptions
+archive_entry_nlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_pathname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_pathname_w [] (3) - functions for manipulating archive entry descriptions
+archive_entry_rdev [] (3) - functions for manipulating archive entry descriptions
+archive_entry_rdevmajor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_rdevminor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_atime [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_ctime [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_dev [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_devmajor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_devminor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_fflags [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_filetype [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_gid [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_gname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_hardlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_link [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_mode [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_mtime [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_pathname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_rdevmajor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_rdevminor [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_size [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_symlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_uid [] (3) - functions for manipulating archive entry descriptions
+archive_entry_set_uname [] (3) - functions for manipulating archive entry descriptions
+archive_entry_size [] (3) - functions for manipulating archive entry descriptions
+archive_entry_sourcepath [] (3) - functions for manipulating archive entry descriptions
+archive_entry_stat [] (3) - functions for manipulating archive entry descriptions
+archive_entry_symlink [] (3) - functions for manipulating archive entry descriptions
+archive_entry_uid [] (3) - functions for manipulating archive entry descriptions
+archive_entry_uname [] (3) - functions for manipulating archive entry descriptions
+archive_errno [] (3) - libarchive utility functions
+archive_error_string [] (3) - libarchive utility functions
+archive_format [] (3) - libarchive utility functions
+archive_format_name [] (3) - libarchive utility functions
+archive_read_close [] (3) - functions for reading streaming archives
+archive_read_data [] (3) - functions for reading streaming archives
+archive_read_data_block [] (3) - functions for reading streaming archives
+archive_read_data_into_buffer [] (3) - functions for reading streaming archives
+archive_read_data_into_fd [] (3) - functions for reading streaming archives
+archive_read_data_skip [] (3) - functions for reading streaming archives
+archive_read_extract [] (3) - functions for reading streaming archives
+archive_read_extract2 [] (3) - functions for reading streaming archives
+archive_read_extract_set_progress_callback [] (3) - functions for reading streaming archives
+archive_read_finish [] (3) - functions for reading streaming archives
+archive_read_new [] (3) - functions for reading streaming archives
+archive_read_next_header [] (3) - functions for reading streaming archives
+archive_read_open [] (3) - functions for reading streaming archives
+archive_read_open2 [] (3) - functions for reading streaming archives
+archive_read_open_FILE [] (3) - functions for reading streaming archives
+archive_read_open_fd [] (3) - functions for reading streaming archives
+archive_read_open_filename [] (3) - functions for reading streaming archives
+archive_read_open_memory [] (3) - functions for reading streaming archives
+archive_read_support_compression_all [] (3) - functions for reading streaming archives
+archive_read_support_compression_bzip2 [] (3) - functions for reading streaming archives
+archive_read_support_compression_compress [] (3) - functions for reading streaming archives
+archive_read_support_compression_gzip [] (3) - functions for reading streaming archives
+archive_read_support_compression_none [] (3) - functions for reading streaming archives
+archive_read_support_compression_program [] (3) - functions for reading streaming archives
+archive_read_support_format_all [] (3) - functions for reading streaming archives
+archive_read_support_format_cpio [] (3) - functions for reading streaming archives
+archive_read_support_format_empty [] (3) - functions for reading streaming archives
+archive_read_support_format_iso9660 [] (3) - functions for reading streaming archives
+archive_read_support_format_tar [] (3) - functions for reading streaming archives
+archive_read_support_format_zip [] (3) - functions for reading streaming archives
+archive_set_error [] (3) - libarchive utility functions
+archive_write_close [] (3) - functions for creating archives
+archive_write_close [] (3) - functions for creating objects on disk
+archive_write_data [] (3) - functions for creating archives
+archive_write_data [] (3) - functions for creating objects on disk
+archive_write_disk_new [] (3) - functions for creating objects on disk
+archive_write_disk_set_group_lookup [] (3) - functions for creating objects on disk
+archive_write_disk_set_options [] (3) - functions for creating objects on disk
+archive_write_disk_set_skip_file [] (3) - functions for creating objects on disk
+archive_write_disk_set_standard_lookup [] (3) - functions for creating objects on disk
+archive_write_disk_set_user_lookup [] (3) - functions for creating objects on disk
+archive_write_finish [] (3) - functions for creating archives
+archive_write_finish [] (3) - functions for creating objects on disk
+archive_write_finish_entry [] (3) - functions for creating archives
+archive_write_finish_entry [] (3) - functions for creating objects on disk
+archive_write_get_bytes_per_block [] (3) - functions for creating archives
+archive_write_header [] (3) - functions for creating archives
+archive_write_header [] (3) - functions for creating objects on disk
+archive_write_new [] (3) - functions for creating archives
+archive_write_open [] (3) - functions for creating archives
+archive_write_open_FILE [] (3) - functions for creating archives
+archive_write_open_fd [] (3) - functions for creating archives
+archive_write_open_filename [] (3) - functions for creating archives
+archive_write_open_memory [] (3) - functions for creating archives
+archive_write_set_bytes_in_last_block [] (3) - functions for creating archives
+archive_write_set_bytes_per_block [] (3) - functions for creating archives
+archive_write_set_compression_bzip2 [] (3) - functions for creating archives
+archive_write_set_compression_compress [] (3) - functions for creating archives
+archive_write_set_compression_gzip [] (3) - functions for creating archives
+archive_write_set_compression_none [] (3) - functions for creating archives
+archive_write_set_compression_program [] (3) - functions for creating archives
+archive_write_set_format_cpio [] (3) - functions for creating archives
+archive_write_set_format_pax [] (3) - functions for creating archives
+archive_write_set_format_pax_restricted [] (3) - functions for creating archives
+archive_write_set_format_shar [] (3) - functions for creating archives
+archive_write_set_format_shar_binary [] (3) - functions for creating archives
+archive_write_set_format_ustar [] (3) - functions for creating archives
+arecord [] (1) - command-line sound recorder and player for ALSA soundcard driver
+arecordmidi [] (1) - record Standard MIDI Files
+argz_add [] (3) - functions to handle an argz list
+argz_add_sep [] (3) - functions to handle an argz list
+argz_append [] (3) - functions to handle an argz list
+argz_count [] (3) - functions to handle an argz list
+argz_create [] (3) - functions to handle an argz list
+argz_create_sep [] (3) - functions to handle an argz list
+argz_delete [] (3) - functions to handle an argz list
+argz_extract [] (3) - functions to handle an argz list
+argz_insert [] (3) - functions to handle an argz list
+argz_next [] (3) - functions to handle an argz list
+argz_replace [] (3) - functions to handle an argz list
+argz_stringify [] (3) - functions to handle an argz list
+arithmetic [] (6) - quiz on simple arithmetic
+ark [] (1) - A KDE archiving tool
+armscii [] (7) - 8 - Armenian Character Set encoded in octal, decimal, and hexadecimal
+arp [] (7) - Linux ARP kernel module
+arp [] (8) - manipulate the system ARP cache
+arpd [] (8) - userspace arp daemon
+arping [] (8) - send ARP REQUEST to a neighbour host
+array [] (n) - Manipulate array variables
+as86 [] (1) - Assembler for 8086..80386 processors
+ascii [] (1) - xfr - upload/download files using the ASCII protocol
+ascii [] (7) - the ASCII character set encoded in octal, decimal, and hexadecimal
+asciidoc [] (1) - converts an AsciiDoc text file to HTML or DocBook
+asciitopgm [] (1) - convert ASCII graphics into a portable graymap
+asctime [] (3) - transform date and time to broken-down time or ASCII
+asctime_r [] (3) - transform date and time to broken-down time or ASCII
+aseqdump [] (1) - show the events received at an ALSA sequencer port
+aseqnet [] (1) - ALSA sequencer connectors over network
+asin [] (3) - arc sine function
+asinf [] (3) - arc sine function
+asinh [] (3) - inverse hyperbolic sine function
+asinhf [] (3) - inverse hyperbolic sine function
+asinhl [] (3) - inverse hyperbolic sine function
+asinl [] (3) - arc sine function
+asip [] (1) - status.pl - Queries AFP servers for their capabilities
+asn1parse [] (1) - ASN.1 parsing tool
+aspell [] (1) - import - import old personal dictionaries into GNU Aspell
+aspell [] (1) - interactive spell checker
+asprintf [] (3) - print to allocated string
+assert [] (3) - abort the program if assertion is false
+assert_perror [] (3) - test errnum and abort
+assume_default_colors [] (3) - use terminal's default colors
+at [] (1) - queue, examine or delete jobs for later execution
+at.allow [] (5) - determine who can submit jobs via at or batch
+at.deny [] (5) - determine who can submit jobs via at or batch
+ata_id [] (8) - udev callout to read product/serial number from ATA drives
+atalk [] (4) - AppleTalk protocol family
+atalk_aton [] (3) - AppleTalk address parsing
+atalkd [] (8) - AppleTalk RTMP, NBP, ZIP, and AEP manager
+atalkd.conf [] (5) - Configuration file used by atalkd(8) to determine the interfaces used by the master Netatalk daemon
+atan [] (3) - arc tangent function
+atan2 [] (3) - arc tangent function of two variables
+atan2f [] (3) - arc tangent function of two variables
+atan2l [] (3) - arc tangent function of two variables
+atanf [] (3) - arc tangent function
+atanh [] (3) - inverse hyperbolic tangent function
+atanhf [] (3) - inverse hyperbolic tangent function
+atanhl [] (3) - inverse hyperbolic tangent function
+atanl [] (3) - arc tangent function
+atc [] (6) - air traffic controller game
+atd [] (8) - run jobs queued for later execution
+atexit [] (3) - register a function to be called at normal process termination
+atktopbm [] (1) - convert Andrew Toolkit raster object to portable bitmap
+atlantis [] (6) - draw swimming sharks, whales, and dolphins
+atobm [] (1) - bitmap editor and converter utilities for the X Window System
+atof [] (3) - convert a string to a double
+atoi [] (3) - convert a string to an integer
+atol [] (3) - convert a string to an integer
+atoll [] (3) - convert a string to an integer
+atoq [] (3) - convert a string to an integer
+atq [] (1) - queue, examine or delete jobs for later execution
+atrm [] (1) - queue, examine or delete jobs for later execution
+atrun [] (8) - run jobs queued for later execution
+attemptckalloc [] (3) - allocate or free heap memory
+attemptckrealloc [] (3) - allocate or free heap memory
+attr [] (1) - extended attributes on XFS filesystem objects
+attr [] (5) - Extended attributes
+attr_get [] (3) - curses character and window attribute control routines
+attr_get [] (3) - get the value of a user attribute of a filesystem object
+attr_getf [] (3) - get the value of a user attribute of a filesystem object
+attr_list [] (3) - list the names of the user attributes of a filesystem object
+attr_list_by_handle [] (3) - file handle operations
+attr_listf [] (3) - list the names of the user attributes of a filesystem object
+attr_multi [] (3) - manipulate multiple user attributes on a filesystem object at once
+attr_multi_by_handle [] (3) - file handle operations
+attr_multif [] (3) - manipulate multiple user attributes on a filesystem object at once
+attr_off [] (3) - curses character and window attribute control routines
+attr_on [] (3) - curses character and window attribute control routines
+attr_remove [] (3) - remove a user attribute of a filesystem object
+attr_removef [] (3) - remove a user attribute of a filesystem object
+attr_set [] (3) - curses character and window attribute control routines
+attr_set [] (3) - set the value of a user attribute of a filesystem object
+attr_setf [] (3) - set the value of a user attribute of a filesystem object
+attraction [] (6) - interactions of opposing forces
+attributes [] (3) - get/set subroutine or variable attributes
+attroff [] (3) - curses character and window attribute control routines
+attron [] (3) - curses character and window attribute control routines
+attrs [] (3) - set/get attributes of a subroutine (deprecated)
+attrset [] (3) - curses character and window attribute control routines
+atunnel [] (6) - hypnotic GL tunnel journey
+audiocompose [] (1) - Compose an audio fragment for inclusion in a mail message
+audiosend [] (1) - Send an audio email message
+audtool [] (1) - a small tool to modify behavior of a running audacious instance
+aumix [] (1) - adjust audio mixer
+auto_execok [] (n) - standard library of Tcl procedures
+auto_import [] (n) - standard library of Tcl procedures
+auto_load [] (n) - standard library of Tcl procedures
+auto_mkindex [] (n) - standard library of Tcl procedures
+auto_mkindex_old [] (n) - standard library of Tcl procedures
+auto_qualify [] (n) - standard library of Tcl procedures
+auto_reset [] (n) - standard library of Tcl procedures
+autoconf [] (1) - Generate configuration scripts
+autoexpect [] (1) - generate an Expect script from watching a session
+autofs [] (5) - Format of the automounter maps
+autoheader [] (1) - Create a template header for configure
+autom4te [] (1) - Generate files and scripts thanks to M4
+automount [] (8) - configure mount points for autofs
+autopoint [] (1) - copies standard gettext infrastructure
+autoreconf [] (1) - Update generated configuration files
+autoscan [] (1) - Generate a preliminary configure.in
+autoupdate [] (1) - Update a configure.in to a newer Autoconf
+autouse [] (3) - postpone load of modules until a function is used
+avcall [] (3) - build a C argument list incrementally and call a C function on it
+baby_steps [] (3) - Calls your handler in baby_steps for set processing
+backend [] (7) - cups backend transmission interfaces
+backend [] (7) - spec - interface between jw and its backends
+backgammon [] (6) - the game of backgammon
+backtrace [] (3) - support for application self - debugging
+backtrace_symbols [] (3) - support for application self - debugging
+backtrace_symbols_fd [] (3) - support for application self - debugging
+badblocks [] (8) - search a device for bad blocks
+banner [] (6) - print large banner on printer
+barcode [] (6) - draws a random sequence of barcodes for the products you enjoy
+base [] (3) - Establish an ISA relationship with base classes at compile time
+base64 [] (1) - base64 encode/decode data and print to standard output
+basename [] (1) - strip directory and suffix from filenames
+basename [] (3) - parse pathname components
+bash [] (1) - GNU Bourne-Again SHell
+bash [] (1) - bash built-in commands, see bash(1)
+batch [] (1) - queue, examine or delete jobs for later execution
+battlestar [] (6) - a tropical adventure game
+baudrate [] (3) - curses environment query routines
+bbkeys [] (1) - a general XWindow keygrabber
+bbkeys.bb [] (5) - bbkeys style configuration file
+bbkeysrc [] (5) - bbkeys keymap configuration file
+bc [] (1) - An arbitrary precision calculator language
+bcc [] (1) - Bruce's C compiler
+bccmd [] (8) - Utility for the CSR BCCMD interface
+bcd [] (6) - reformat input as punch cards, paper tape or morse code
+bcmp [] (3) - byte string operations
+bcmp [] (3) - compare byte sequences
+bcopy [] (3) - byte string operations
+bcopy [] (3) - copy byte sequence
+bdflush [] (2) - start, flush, or tune buffer-dirty-flush daemon
+bdftopcf [] (1) - convert X font from Bitmap Distribution Format to Portable Compiled Format
+bdftruncate [] (1) - generate truncated BDF font from ISO 10646-1-encoded BDF font
+be16toh [] (3) - convert values between host and big - /little-endian byte order
+be32toh [] (3) - convert values between host and big - /little-endian byte order
+be64toh [] (3) - convert values between host and big - /little-endian byte order
+beep [] (3) - curses bell and screen flash routines
+beforelight [] (1) - screen saver
+bell [] (n) - Ring a display's bell
+ber_alloc_t [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_bvarray_add [] (3) - LBER types and allocation functions
+ber_bvarray_free [] (3) - LBER types and allocation functions
+ber_bvdup [] (3) - LBER types and allocation functions
+ber_bvecadd [] (3) - LBER types and allocation functions
+ber_bvecfree [] (3) - LBER types and allocation functions
+ber_bvfree [] (3) - LBER types and allocation functions
+ber_bvstr [] (3) - LBER types and allocation functions
+ber_bvstrdup [] (3) - LBER types and allocation functions
+ber_dupbv [] (3) - LBER types and allocation functions
+ber_first_element [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_flush [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_free [] (3) - LBER types and allocation functions
+ber_get_bitstring [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_boolean [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_enum [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_int [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_next [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_null [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_stringa [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_stringal [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_stringb [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_get_stringbv [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_int_t [] (3) - LBER types and allocation functions
+ber_len_t [] (3) - LBER types and allocation functions
+ber_memalloc [] (3) - LBER memory allocators
+ber_memcalloc [] (3) - LBER memory allocators
+ber_memfree [] (3) - LBER memory allocators
+ber_memrealloc [] (3) - LBER memory allocators
+ber_memvfree [] (3) - LBER memory allocators
+ber_next_element [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_peek_tag [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_printf [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_bitstring [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_boolean [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_enum [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_int [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_null [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_ostring [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_seq [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_set [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_put_string [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_scanf [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_skip_tag [] (3) - LBER simplified Basic Encoding Rules library routines for decoding
+ber_slen_t [] (3) - LBER types and allocation functions
+ber_start_seq [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_start_set [] (3) - LBER simplified Basic Encoding Rules library routines for encoding
+ber_str2bv [] (3) - LBER types and allocation functions
+ber_tag_t [] (3) - LBER types and allocation functions
+ber_uint_t [] (3) - LBER types and allocation functions
+bg [] (1) - bash built-in commands, see bash(1)
+bg_test [] (6) - test the background mode of svgalib
+bgerror [] (n) - Command invoked to process background errors
+bggen [] (1) - generates colored backgrounds on X11 displays
+biff [] (1) - be notified if mail arrives and who it is from
+bigint [] (3) - Transparent BigInteger support for Perl
+bignum [] (3) - Transparent BigNumber support for Perl
+bigrat [] (3) - Transparent BigNumber/BigRational support for Perl
+binary [] (n) - Insert and extract fields from binary strings
+bind [] (1) - bash built-in commands, see bash(1)
+bind [] (2) - bind a name to a socket
+bind [] (n) - Arrange for X events to invoke Tcl scripts
+bind_textdomain_codeset [] (3) - set encoding of message translations
+bindresvport [] (3) - bind a socket to a privileged IP port
+bindtags [] (n) - Determine which bindings apply to a window, and order of evaluation
+bindtextdomain [] (3) - set directory containing message catalogs
+bio [] (3) - I/O abstraction
+bioradtopgm [] (1) - convert a Biorad confocal file into a portable graymap
+biosdecode [] (8) - BIOS information decoder
+bison [] (1) - GNU Project parser generator (yacc replacement)
+bitmap [] (1) - bitmap editor and converter utilities for the X Window System
+bitmap [] (n) - Images that display two colors
+bkgd [] (3) - curses window background manipulation routines
+bkgdset [] (3) - curses window background manipulation routines
+bkgrnd [] (3) - curses window complex background manipulation routines
+bkgrndset [] (3) - curses window complex background manipulation routines
+blackbox [] (1) - a window manager for X11
+blaster [] (6) - simulation of space combat
+blib [] (3) - Use MakeMaker's uninstalled version of a package
+blitspin [] (6) - rotate a bitmap in an interesting way
+blkid [] (8) - command-line utility to locate/print block device attributes
+blockdev [] (8) - call block device ioctls from the command line
+blocktube [] (6) - draws a swirling, falling tunnel of reflective slabs
+blowfish [] (3) - Blowfish encryption
+bmp2tiff [] (1) - create a TIFF file from a Microsoft Windows Device Independent Bitmap image file
+bmptopnm [] (1) - convert a BMP file into a PBM, PGM, or PNM image
+bmtoa [] (1) - bitmap editor and converter utilities for the X Window System
+bn [] (3) - multiprecision integer arithmetics
+bn_add_words [] (3) - BIGNUM library internal functions
+bn_check_top [] (3) - BIGNUM library internal functions
+bn_cmp_words [] (3) - BIGNUM library internal functions
+bn_div_words [] (3) - BIGNUM library internal functions
+bn_dump [] (3) - BIGNUM library internal functions
+bn_expand [] (3) - BIGNUM library internal functions
+bn_expand2 [] (3) - BIGNUM library internal functions
+bn_fix_top [] (3) - BIGNUM library internal functions
+bn_mul_add_words [] (3) - BIGNUM library internal functions
+bn_mul_comba4 [] (3) - BIGNUM library internal functions
+bn_mul_comba8 [] (3) - BIGNUM library internal functions
+bn_mul_high [] (3) - BIGNUM library internal functions
+bn_mul_low_normal [] (3) - BIGNUM library internal functions
+bn_mul_low_recursive [] (3) - BIGNUM library internal functions
+bn_mul_normal [] (3) - BIGNUM library internal functions
+bn_mul_part_recursive [] (3) - BIGNUM library internal functions
+bn_mul_recursive [] (3) - BIGNUM library internal functions
+bn_mul_words [] (3) - BIGNUM library internal functions
+bn_print [] (3) - BIGNUM library internal functions
+bn_set_high [] (3) - BIGNUM library internal functions
+bn_set_low [] (3) - BIGNUM library internal functions
+bn_set_max [] (3) - BIGNUM library internal functions
+bn_sqr_comba4 [] (3) - BIGNUM library internal functions
+bn_sqr_comba8 [] (3) - BIGNUM library internal functions
+bn_sqr_normal [] (3) - BIGNUM library internal functions
+bn_sqr_recursive [] (3) - BIGNUM library internal functions
+bn_sqr_words [] (3) - BIGNUM library internal functions
+bn_sub_words [] (3) - BIGNUM library internal functions
+bn_wexpand [] (3) - BIGNUM library internal functions
+boing [] (6) - draws a bouncing ball like the ancient Amiga demo
+boot [] (7) - scripts - General description of boot sequence
+bootlogd [] (8) - record boot messages
+bootparam [] (7) - Introduction to boot time parameters of the Linux kernel
+bootparamd [] (8) - boot parameter server
+bootpd [] (8) - Internet Boot Protocol server/gateway
+bootpef [] (8) - BOOTP Extension File compiler
+bootpgw [] (8) - Internet Boot Protocol server/gateway
+bootptab [] (5) - Internet Bootstrap Protocol server database
+bootptest [] (8) - send BOOTP queries and print responses
+border [] (3) - create curses borders, horizontal and vertical lines
+border_set [] (3) - create curses borders or lines using complex characters and renditions
+bouboule [] (6) - draws spinning 3D blobs
+bouncingcow [] (6) - a happy cow on a trampoline in 3D. Moo
+box [] (3) - create curses borders, horizontal and vertical lines
+box_set [] (3) - create curses borders or lines using complex characters and renditions
+boxed [] (6) - draws a box full of 3D bouncing balls that explode
+boxfit [] (6) - fills space with a gradient of growing boxes or circles
+bpe [] (1) - examine and patch binary files
+braid [] (6) - draws random color-cycling braids around a circle
+brctl [] (8) - ethernet bridge administration
+break [] (1) - bash built-in commands, see bash(1)
+break [] (2) - unimplemented system calls
+break [] (n) - Abort looping command
+brk [] (2) - change data segment size
+brushtopbm [] (1) - convert a doodle brush file into a portable bitmap
+bsd_signal [] (3) - signal handling with BSD semantics
+bsearch [] (3) - binary search of a sorted array
+bsetbg [] (1) - utility to manipulate the appearance of the X11 desktop's root window
+bsetroot [] (1) - blackbox utility to change root window appearance
+bsod [] (6) - Blue Screen of Death emulator
+btcflash [] (1) - Firmware flash utility for BTC DRW1008 DVD+/-RW recorder
+btowc [] (3) - convert single byte to wide character
+btree [] (3) - btree database access method
+bubble3d [] (6) - 3d rising bubbles
+buildhash [] (1) - Interactive spelling checking
+builtin [] (1) - bash built-in commands, see bash(1)
+bulk_to_next [] (3) - Convert GETBULK requests into GETNEXT requests for the handler
+bumps [] (6) - move distorting spotlight around desktop
+bunzip2 [] (1) - a block-sorting file compressor, v1.0.4
+button [] (n) - Create and manipulate button widgets
+bytes [] (3) - Perl pragma to force byte semantics rather than character semantics
+bzcat [] (1) - decompresses files to stdout
+bzcmp [] (1) - compare bzip2 compressed files
+bzdiff [] (1) - compare bzip2 compressed files
+bzegrep [] (1) - search possibly bzip2 compressed files for a regular expression
+bzero [] (3) - byte string operations
+bzero [] (3) - write zero-valued bytes
+bzfgrep [] (1) - search possibly bzip2 compressed files for a regular expression
+bzgrep [] (1) - search possibly bzip2 compressed files for a regular expression
+bzip2 [] (1) - a block-sorting file compressor, v1.0.4
+bzip2recover [] (1) - recovers data from damaged bzip2 files
+bzless [] (1) - file perusal filter for crt viewing of bzip2 compressed text
+bzmore [] (1) - file perusal filter for crt viewing of bzip2 compressed text
+bzz [] (1) - DjVu general purpose compression utility
+c++filt [] (1) - Demangle C++ and Java symbols
+c2ph [] (1) - Dump C structures as generated from cc -g -S stabs
+c44 [] (1) - DjVuPhoto encode
+ca [] (1) - sample minimal CA application
+cabs [] (3) - absolute value of a complex number
+cabsf [] (3) - absolute value of a complex number
+cabsl [] (3) - absolute value of a complex number
+caca [] (1) - config - script to get information about the installed version of libcaca
+caca.h [] (3) - The libcaca public header
+caca_event [] (3) - Handling of user events
+cacademo [] (1) - libcaca's demonstration applications
+cacafire [] (1) - libcaca's demonstration applications
+cacaplay [] (1) - play libcaca files
+cacaserver [] (1) - telnet server for libcaca
+cacaview [] (1) - ASCII image browser
+cache_handler [] (3) - Maintains a cache of data for use by lower level handlers
+cacheflush [] (2) - flush contents of instruction and/or data cache
+cacos [] (3) - complex arc cosine
+cacosf [] (3) - complex arc cosine
+cacosh [] (3) - complex arc hyperbolic cosine
+cacoshf [] (3) - complex arc hyperbolic cosine
+cacoshl [] (3) - complex arc hyperbolic cosine
+cacosl [] (3) - complex arc cosine
+caesar [] (6) - decrypt caesar cyphers
+cage [] (6) - Escher's impossible cage, for xscreensaver
+cal [] (1) - displays a calendar
+callback [] (3) - closures with variable arguments as first-class C functions
+calloc [] (3) - Allocate and free dynamic memory
+cameratopam [] (1) - see http://netpbm.sourceforge.net/doc/cameratopam.html
+can_change_color [] (3) - curses color manipulation routines
+cancel [] (1) - cancel jobs
+canfield [] (6) - the solitaire card game canfield
+canonicalize_file_name [] (3) - return the canonicalized filename
+canvas [] (n) - Create and manipulate canvas widgets
+cap_clear [] (3) - capability data object manipulation
+cap_clear_flag [] (3) - capability data object manipulation
+cap_compare [] (3) - capability data object manipulation
+cap_copy_ext [] (3) - capability data object manipulation
+cap_copy_ext [] (3) - capability state external representation translation
+cap_copy_int [] (3) - capability data object manipulation
+cap_copy_int [] (3) - capability state external representation translation
+cap_dup [] (3) - capability data object manipulation
+cap_dup [] (3) - capability data object storage management
+cap_free [] (3) - capability data object manipulation
+cap_free [] (3) - capability data object storage management
+cap_from_name [] (3) - capability data object manipulation
+cap_from_name [] (3) - capability state textual representation translation
+cap_from_text [] (3) - capability data object manipulation
+cap_from_text [] (3) - capability state textual representation translation
+cap_get_fd [] (3) - capability data object manipulation
+cap_get_fd [] (3) - capability manipulation on files
+cap_get_file [] (3) - capability data object manipulation
+cap_get_file [] (3) - capability manipulation on files
+cap_get_flag [] (3) - capability data object manipulation
+cap_get_pid [] (3) - capability data object manipulation
+cap_get_proc [] (3) - capability data object manipulation
+cap_get_proc [] (3) - capability manipulation on processes
+cap_init [] (3) - capability data object storage management
+cap_set_fd [] (3) - capability data object manipulation
+cap_set_fd [] (3) - capability manipulation on files
+cap_set_file [] (3) - capability data object manipulation
+cap_set_file [] (3) - capability manipulation on files
+cap_set_flag [] (3) - capability data object manipulation
+cap_set_proc [] (3) - capability data object manipulation
+cap_set_proc [] (3) - capability manipulation on processes
+cap_size [] (3) - capability data object manipulation
+cap_size [] (3) - capability state external representation translation
+cap_to_name [] (3) - capability data object manipulation
+cap_to_name [] (3) - capability state textual representation translation
+cap_to_text [] (3) - capability data object manipulation
+cap_to_text [] (3) - capability state textual representation translation
+capabilities [] (7) - overview of Linux capabilities
+capget [] (2) - set/get capabilities of thread(s)
+capgetp [] (3) - capability manipulation on processes
+capset [] (2) - set/get capabilities of thread(s)
+captoinfo [] (1) - convert a termcap description into a terminfo description
+card [] (1) - print reference card of program options
+carg [] (3) - calculate the argument
+cargf [] (3) - calculate the argument
+cargl [] (3) - calculate the argument
+carousel [] (6) - displays multiple images rotating in a circular formation
+carp [] (3) - warn of errors (from perspective of caller)
+case [] (n) - Evaluate one of several scripts, depending on a given value
+casin [] (3) - complex arc sine
+casinf [] (3) - complex arc sine
+casinh [] (3) - complex arc sine hyperbolic
+casinhf [] (3) - complex arc sine hyperbolic
+casinhl [] (3) - complex arc sine hyperbolic
+casinl [] (3) - complex arc sine
+cat [] (1) - concatenate files and print on the standard output
+catan [] (3) - complex arc tangents
+catanf [] (3) - complex arc tangents
+catanh [] (3) - complex arc tangents hyperbolic
+catanhf [] (3) - complex arc tangents hyperbolic
+catanhl [] (3) - complex arc tangents hyperbolic
+catanl [] (3) - complex arc tangents
+catch [] (n) - Evaluate script and trap exceptional returns
+catclose [] (3) - open/close a message catalog
+catgets [] (3) - get message from a message catalog
+catopen [] (3) - open/close a message catalog
+cbc_crypt [] (3) - fast DES encryption
+cbreak [] (3) - curses input options
+cbrt [] (3) - cube root function
+cbrtf [] (3) - cube root function
+cbrtl [] (3) - cube root function
+ccache [] (1) - a fast compiler cache
+ccache [] (1) - swig - a fast compiler cache
+ccmake [] (1) - Curses Interface for CMake
+ccmakedep [] (1) - create dependencies in makefiles using a C compiler
+ccos [] (3) - complex cosine function
+ccosf [] (3) - complex cosine function
+ccosh [] (3) - complex hyperbolic cosine
+ccoshf [] (3) - complex hyperbolic cosine
+ccoshl [] (3) - complex hyperbolic cosine
+ccosl [] (3) - complex cosine function
+ccurve [] (6) - self-similar linear fractals
+cd [] (1) - bash built-in commands, see bash(1)
+cd [] (1) - paranoia 9.8 (Paranoia release III via libcdio) - an audio CD reading utility which includes extra data verification features
+cd [] (n) - Change working directory
+cdda2wav [] (1) - a sampling utility that dumps CD audio data into wav sound files
+cdparanoia 10.2 (Paranoia release III) [] (1) - an audio CD reading utility which includes extra data verification features
+cdrdao [] (1) - writes audio CD-Rs in disc-at-once mode
+cdrecord [] (1) - record audio or data Compact Disks or Digital Versatile Disks from a master
+cdrom_id [] (8) - udev callout to determine the capabilities of optical drives and media
+ceil [] (3) - ceiling function: smallest integral value not less than argument
+ceilf [] (3) - ceiling function: smallest integral value not less than argument
+ceill [] (3) - ceiling function: smallest integral value not less than argument
+celtic [] (6) - draws celtic cross-stich patterns
+cerf [] (3) - complex error function
+cerfc [] (3) - complex error function
+cerfcf [] (3) - complex error function
+cerfcl [] (3) - complex error function
+cerff [] (3) - complex error function
+cerfl [] (3) - complex error function
+certtool [] (1) - Manipulate certificates and keys
+cexp [] (3) - complex exponential function
+cexp2 [] (3) - base-2 exponent of a complex number
+cexp2f [] (3) - base-2 exponent of a complex number
+cexp2l [] (3) - base-2 exponent of a complex number
+cexpf [] (3) - complex exponential function
+cexpl [] (3) - complex exponential function
+cfdisk [] (8) - Curses based disk partition table manipulator for Linux
+cfgetispeed [] (3) - get and set terminal attributes, line control, get and set baud rate
+cfgetospeed [] (3) - get and set terminal attributes, line control, get and set baud rate
+cfmakeraw [] (3) - get and set terminal attributes, line control, get and set baud rate
+cfree [] (3) - free allocated memory
+cfscores [] (6) - the solitaire card game canfield
+cfsetispeed [] (3) - get and set terminal attributes, line control, get and set baud rate
+cfsetospeed [] (3) - get and set terminal attributes, line control, get and set baud rate
+cfsetspeed [] (3) - get and set terminal attributes, line control, get and set baud rate
+chacl [] (1) - change the access control list of a file or directory
+chage [] (1) - change user password expiry information
+chan [] (n) - Read, write and manipulate channels
+charmap [] (5) - character symbols to define character encodings
+charnames [] (3) - define character names for eN{named} string literal escapes
+charsets [] (7) - programmer's view of character sets and internationalization
+chat [] (8) - Automated conversational script with a modem
+chattr [] (1) - change file attributes on a Linux second extended file system
+chcon [] (1) - change file security context
+chdir [] (2) - change working directory
+cheatmake [] (1) - fool make into not rebuilding certain files
+checkXML [] (1) - An XML lint tool for KDE DocBook XML documents
+checkalias [] (1) - check to see if an alias is defined
+checkbutton [] (n) - Create and manipulate checkbutton widgets
+chem [] (1) - groff preprocessor for producing chemical structure diagrams
+chfn [] (1) - change real user name and information
+chgat [] (3) - curses character and window attribute control routines
+chgrp [] (1) - change group ownership
+chips [] (4) - Chips and Technologies video driver
+chkdupexe [] (1) - find duplicate executables
+chmod [] (1) - change file mode bits
+chmod [] (2) - change permissions of a file
+chown [] (1) - change file owner and group
+chown [] (2) - change ownership of a file
+chpasswd [] (8) - update password file in batch
+chprop [] (1) - program to do something FIXME
+chroot [] (1) - run command or interactive shell with special root directory
+chroot [] (2) - change root directory
+chrt [] (1) - manipulate real-time attributes of a process
+chsh [] (1) - change login shell
+chvt [] (1) - change foreground virtual terminal
+ci [] (1) - check in RCS revisions
+cimag [] (3) - get imaginary part of a complex number
+cimagf [] (3) - get imaginary part of a complex number
+cimagl [] (3) - get imaginary part of a complex number
+ciphers [] (1) - SSL cipher display and cipher list tool
+ciptool [] (1) - Bluetooth Common ISDN Access Profile (CIP)
+circuit [] (6) - animates a number of 3D electronic components
+cirrus [] (4) - Cirrus Logic video driver
+citron [] (4) - Citron Infrared Touch Driver (CiTouch)
+cjb2 [] (1) - Simple DjVuBitonal encoder
+cjpeg [] (1) - compress an image file to a JPEG file
+ckalloc [] (3) - allocate or free heap memory
+ckfree [] (3) - allocate or free heap memory
+ckrealloc [] (3) - allocate or free heap memory
+cksum [] (1) - checksum and count the bytes in a file
+classes.conf [] (5) - class configuration file for cups
+cleanlinks [] (1) - remove dangling symbolic links and empty directories
+clear [] (1) - clear the terminal screen
+clear [] (3) - clear all or part of a curses window
+clearenv [] (3) - clear the environment
+clearerr [] (3) - check and reset stream status
+clearok [] (3) - curses output options
+client.conf [] (5) - client configuration file for cups
+clipboard [] (n) - Manipulate Tk clipboard
+clisp [] (1) - ANSI Common Lisp compiler, interpreter and debugger
+clock [] (3) - Determine processor time
+clock [] (n) - Obtain and manipulate dates and times
+clock_getcpuclockid [] (3) - obtain ID of a process CPU-time clock
+clock_getres [] (2) - clock and time functions
+clock_gettime [] (2) - clock and time functions
+clock_nanosleep [] (2) - high-resolution sleep with specifiable clock
+clock_settime [] (2) - clock and time functions
+clockdiff [] (8) - measure clock difference between hosts
+clog [] (3) - natural logarithm of a complex number
+clog10 [] (3) - base-10 logarithm of a complex number
+clog10f [] (3) - base-10 logarithm of a complex number
+clog10l [] (3) - base-10 logarithm of a complex number
+clog2 [] (3) - base-2 logarithm of a complex number
+clog2f [] (3) - base-2 logarithm of a complex number
+clog2l [] (3) - base-2 logarithm of a complex number
+clogf [] (3) - natural logarithm of a complex number
+clogl [] (3) - natural logarithm of a complex number
+clone [] (2) - create a child process
+close [] (2) - close a file descriptor
+close [] (n) - Close an open channel
+closedir [] (3) - close a directory
+closelog [] (3) - send messages to the system logger
+cloudlife [] (6) - a cellular automaton based on Conway's Life
+clrtobot [] (3) - clear all or part of a curses window
+clrtoeol [] (3) - clear all or part of a curses window
+cluck [] (3) - warn of errors with stack backtrace (not exported by default)
+cmake [] (1) - Cross-Platform Makefile Generator
+cmp [] (1) - compare two files byte by byte
+cmuwmtopbm [] (1) - convert a CMU window manager bitmap into a portable bitmap
+cnid_dbd [] (8) - implement access to CNID databases through a dedicated daemon process
+cnid_index [] (1) - check and repair Netatalk CNID database indexes
+cnid_metad [] (8) - start cnid_dbd daemons on request
+co [] (1) - check out RCS revisions
+col [] (1) - filter reverse line feeds from input
+colcrt [] (1) - filter nroff output for CRT previewing
+collateindex.pl [] (1) - generate DocBook index files
+color_content [] (3) - curses color manipulation routines
+color_set [] (3) - curses character and window attribute control routines
+colors [] (n) - symbolic color names recognized by Tk
+colrm [] (1) - remove columns from a file
+column [] (1) - columnate lists
+com_err [] (3) - common error display routine
+comm [] (1) - compare two sorted files line by line
+command [] (1) - bash built-in commands, see bash(1)
+comp_err [] (1) - compile MySQL error message file
+compare [] (1) - mathematically and visually annotate the difference between an image and its reconstruction
+compass [] (6) - draws a spinning compass
+compgen [] (1) - bash built-in commands, see bash(1)
+compile_et [] (1) - error table compiler
+complete [] (1) - bash built-in commands, see bash(1)
+complex [] (7) - basics of complex mathematics
+composite [] (1) - overlaps one image over another
+compound [] (n) - multi-line compound image type
+compress [] (1) - compress and expand data (version 4.1)
+compress [] (1) - dummy - manual page for compress-dummy - sharutils 4.6.3
+comsat [] (8) - biff server
+concat [] (n) - Join lists together
+confess [] (3) - die of errors with stack backtrace
+config [] (5) - OpenSSL CONF library configuration files
+config.guess [] (1) - guess the build system triplet
+config.sub [] (1) - validate and canonicalize a configuration triplet
+config_data [] (1) - Query or change configuration of Perl modules
+config_perror [] (3) - read_config functions
+config_pwarn [] (3) - read_config functions
+confstr [] (3) - get configuration dependent string variables
+conj [] (3) - calculate the complex conjugate
+conjf [] (3) - calculate the complex conjugate
+conjl [] (3) - calculate the complex conjugate
+conjure [] (1) - interprets and executes scripts written in the Magick Scripting Language (MSL)
+connect [] (2) - initiate a connection on a socket
+console [] (4) - console terminal and virtual consoles
+console [] (n) - Control the console on systems without a real console
+console ioctl [] (4) - ioctl's for console terminal and virtual consoles
+console_codes [] (4) - Linux console escape and control sequences
+consoletype [] (1) - print type of the console connected to standard input
+constant [] (3) - Perl pragma to declare constants
+continue [] (1) - bash built-in commands, see bash(1)
+continue [] (n) - Skip to the next iteration of a loop
+convert [] (1) - convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more
+convertquota [] (8) - convert quota from old file format to new one
+convfont [] (1) - convert font files for svgalib
+copysign [] (3) - copy sign of a number
+copysignf [] (3) - copy sign of a number
+copysignl [] (3) - copy sign of a number
+copywin [] (3) - overlay and manipulate overlapped curses windows
+coral [] (6) - simulates coral growth, albeit somewhat slowly
+core [] (5) - core dump file
+corelist [] (1) - a commandline frontend to Module::CoreList
+cos [] (3) - cosine function
+cosf [] (3) - cosine function
+cosh [] (3) - hyperbolic cosine function
+coshf [] (3) - hyperbolic cosine function
+coshl [] (3) - hyperbolic cosine function
+cosl [] (3) - cosine function
+countmail [] (6) - be obnoxious about how much mail you have
+cp [] (1) - copy files and directories
+cp1251 [] (7) - the CP 1251 character set encoded in octal, decimal, and hexadecimal
+cpack [] (1) - Packaging driver provided by CMake
+cpaldjvu [] (1) - DjVuDocument encoder for low-color images
+cpan [] (1) - easily interact with CPAN from the command line
+cpan2dist [] (1) - The CPANPLUS distribution creator
+cpanp [] (1) - The CPANPLUS launcher
+cpio [] (1) - copy files to and from archives
+cpio [] (5) - format of cpio archive files
+cpow [] (3) - complex power function
+cpowf [] (3) - complex power function
+cpowl [] (3) - complex power function
+cpp [] (1) - The C Preprocessor
+cproj [] (3) - project into Riemann Sphere
+cprojf [] (3) - project into Riemann Sphere
+cprojl [] (3) - project into Riemann Sphere
+cpuset [] (7) - confine processes to processor and memory node subsets
+crackberg [] (6) - Lose your way wandering some height fields, and enjoy candy
+crda [] (8) - send to the kernel a wireless regulatory domain for a given ISO / IEC 3166 alpha2
+creal [] (3) - get real part of a complex number
+crealf [] (3) - get real part of a complex number
+creall [] (3) - get real part of a complex number
+creat [] (2) - open and possibly create a file or device
+create_cvsignore [] (1) - Create preliminary .cvsignore in the current directory
+create_floppy_devices [] (8) - udev callout to create all possible floppy devices based on the CMOS type
+create_makefile [] (1) - Creates Makefile.in and Makefile from a Makefile.am
+create_makefiles [] (1) - Recreates all Makefiles beneath a directory
+create_module [] (2) - create a loadable module entry
+credentials [] (7) - process identifiers
+cribbage [] (6) - the card game cribbage
+crl [] (1) - CRL utility
+crl2pkcs7 [] (1) - Create a PKCS#7 structure from a CRL and certificates
+croak [] (3) - die of errors (from perspective of caller)
+crond [] (8) - cron daemon (Dillon's Cron)
+crontab [] (1) - manipulate per-user crontabs (Dillon's Cron)
+crypt [] (3) - password and data encryption
+crypt_r [] (3) - password and data encryption
+cryptdir [] (1) - encrypt/decrypt all files in a directory
+crypto [] (3) - OpenSSL cryptographic library
+cryptsetup [] (8) - setup cryptographic volumes for dm-crypt (including LUKS extension)
+crystal [] (6) - kaleidescope
+cscope [] (1) - interactively examine a C program
+csepdjvu [] (1) - DjVu encoder for separated data files
+csin [] (3) - complex sine function
+csinf [] (3) - complex sine function
+csinh [] (3) - complex hyperbolic sine
+csinhf [] (3) - complex hyperbolic sine
+csinhl [] (3) - complex hyperbolic sine
+csinl [] (3) - complex sine function
+csplit [] (1) - split a file into sections determined by context lines
+csqrt [] (3) - complex square root
+csqrtf [] (3) - complex square root
+csqrtl [] (3) - complex square root
+ctags [] (1) - Generate tag files for source code
+ctags [] (1) - Generates tags and (optionally) refs files
+ctags [] (1) - generate tag file for Emacs, vi
+ctan [] (3) - complex tangent function
+ctanf [] (3) - complex tangent function
+ctanh [] (3) - complex hyperbolic tangent
+ctanhf [] (3) - complex hyperbolic tangent
+ctanhl [] (3) - complex hyperbolic tangent
+ctanl [] (3) - complex tangent function
+ctermid [] (3) - get controlling terminal name
+ctest [] (1) - Testing driver provided by CMake
+ctime [] (3) - transform date and time to broken-down time or ASCII
+ctime_r [] (3) - transform date and time to broken-down time or ASCII
+ctrlaltdel [] (8) - set the function of the Ctrl-Alt-Del combination
+cu [] (1) - Call up another system
+cube21 [] (6) - animates the Cube 21 puzzle
+cubenetic [] (6) - cubist 3D undulating blob
+cubestorm [] (6) - a series of 3D boxes that fill space
+cubicgrid [] (6) - rotating 3D lattice seen from inside
+cue2toc [] (1) - convert CUE to TOC format
+cups [] (1) - config - get cups api, compiler, directory, and link information
+cups [] (8) - calibrate - ESP CUPS Printer Calibration Tool
+cups [] (8) - deviced - cups device daemon
+cups [] (8) - driverd - cups driver daemon
+cups [] (8) - genppd - generate Gutenprint PPD files for use with CUPS
+cups [] (8) - genppdupdate - update CUPS+Gutenprint PPD files
+cups [] (8) - lpd - receive print jobs and report printer status to lpd clients
+cups [] (8) - polld - cups printer polling daemon
+cupsaddsmb [] (8) - export printers to samba for windows clients
+cupsctl [] (8) - configure cupsd.conf options
+cupsd [] (8) - common unix printing system daemon
+cupsd.conf [] (5) - server configuration file for cups
+cupsdisable [] (8) - stop/start printers and classes
+cupsenable [] (8) - stop/start printers and classes
+cupsfilter [] (8) - convert a file to another format using cups filters
+cupsprofile [] (1) - cups simple profiling tool
+cupstestdsc [] (1) - test conformance of postscript files
+cupstestppd [] (1) - test conformance of ppd files
+curl [] (1) - config - Get information about a libcurl installation
+curl [] (1) - transfer a URL
+curl_easy_cleanup [] (3) - End a libcurl easy session
+curl_easy_duphandle [] (3) - Clone a libcurl session handle
+curl_easy_escape [] (3) - URL encodes the given string
+curl_easy_getinfo [] (3) - extract information from a curl handle
+curl_easy_init [] (3) - Start a libcurl easy session
+curl_easy_pause [] (3) - pause and unpause a connection
+curl_easy_perform [] (3) - Perform a file transfer
+curl_easy_recv [] (3) - receives raw data on an easy connection
+curl_easy_reset [] (3) - reset all options of a libcurl session handle
+curl_easy_send [] (3) - sends raw data over an easy connection
+curl_easy_setopt [] (3) - set options for a curl easy handle
+curl_easy_strerror [] (3) - return string describing error code
+curl_easy_unescape [] (3) - URL decodes the given string
+curl_escape [] (3) - URL encodes the given string
+curl_formadd [] (3) - add a section to a multipart/formdata HTTP POST
+curl_formfree [] (3) - free a previously build multipart/formdata HTTP POST chain
+curl_formget [] (3) - serialize a previously built multipart/formdata HTTP POST chain
+curl_free [] (3) - reclaim memory that has been obtained through a libcurl call
+curl_getdate [] (3) - Convert a date string to number of seconds since January 1, 1970
+curl_getenv [] (3) - return value for environment name
+curl_global_cleanup [] (3) - global libcurl cleanup
+curl_global_init [] (3) - Global libcurl initialisation
+curl_global_init_mem [] (3) - Global libcurl initialisation with memory callbacks
+curl_maprintf [] (3) - formatted output conversion
+curl_mfprintf [] (3) - formatted output conversion
+curl_mprintf [] (3) - formatted output conversion
+curl_msnprintf [] (3) - formatted output conversion
+curl_msprintf curl_mvaprintf [] (3) - formatted output conversion
+curl_multi_add_handle [] (3) - add an easy handle to a multi session
+curl_multi_assign [] (3) - set data to association with an internal socket
+curl_multi_cleanup [] (3) - close down a multi session
+curl_multi_fdset [] (3) - extracts file descriptor information from a multi handle
+curl_multi_info_read [] (3) - read multi stack informationals
+curl_multi_init [] (3) - create a multi handle
+curl_multi_perform [] (3) - reads/writes available data from each easy handle
+curl_multi_remove_handle [] (3) - remove an easy handle from a multi session
+curl_multi_setopt [] (3) - set options for a curl multi handle
+curl_multi_socket [] (3) - reads/writes available data
+curl_multi_strerror [] (3) - return string describing error code
+curl_multi_timeout [] (3) - how long to wait for action before proceeding
+curl_mvfprintf [] (3) - formatted output conversion
+curl_mvprintf [] (3) - formatted output conversion
+curl_mvsnprintf [] (3) - formatted output conversion
+curl_mvsprintf [] (3) - formatted output conversion
+curl_share_cleanup [] (3) - Clean up a shared object
+curl_share_init [] (3) - Create a shared object
+curl_share_setopt [] (3) - Set options for a shared object
+curl_share_strerror [] (3) - return string describing error code
+curl_slist_append [] (3) - add a string to an slist
+curl_slist_free_all [] (3) - free an entire curl_slist list
+curl_strequal [] (3) - case insensitive string comparisons
+curl_strnequal [] (3) - case insensitive string comparisons
+curl_unescape [] (3) - URL decodes the given string
+curl_version [] (3) - returns the libcurl version string
+curl_version_info [] (3) - returns run-time libcurl version info
+currentcontext [] (3) - get the current graphics contents
+curs_set [] (3) - low-level curses routines
+curses_version [] (3) - miscellaneous curses extensions
+cursors [] (n) - mouse cursors available in Tk
+cuserid [] (3) - get username
+cut [] (1) - remove sections from each line of files
+cvs [] (1) - Concurrent Versions System
+cvs [] (5) - Concurrent Versions System support files
+cvsbug [] (8) - send problem report (PR) about CVS to a central support site
+cvscheck [] (1) - Offline status report for files in a checked-out CVS module
+cvslastchange [] (1) - Display the last change committed to CVS for a file
+cvslastlog [] (1) - Prints the log entry for the last commit for a file
+cvsrevertlast [] (1) - Revert files in CVS by one version
+cvt [] (1) - calculate VESA CVT mode lines
+cwaves [] (6) - languid sinusoidal colors
+cxpm [] (1) - Check an XPM (X PixMap) file - XPM 1, 2, or 3
+cxxmetric [] (1) - Simple source metrics for C and C++
+cynosure [] (6) - gentle overlapping squares screen saver
+cytune [] (8) - Tune driver parameters for Cyclades-Z multiport serial card
+d2i_509_CRL_fp [] (3) - PKCS#10 certificate request functions
+d2i_ASN1_OBJECT [] (3) - ASN1 OBJECT IDENTIFIER functions
+d2i_DHparams [] (3) - PKCS#3 DH parameter functions
+d2i_DSAPrivateKey [] (3) - DSA key encoding and parsing functions
+d2i_DSAPublicKey [] (3) - DSA key encoding and parsing functions
+d2i_DSA_PUBKEY [] (3) - DSA key encoding and parsing functions
+d2i_DSA_SIG [] (3) - DSA key encoding and parsing functions
+d2i_Netscape_RSA [] (3) - RSA public and private key encoding functions
+d2i_PKCS8PrivateKey_bio [] (3) - PKCS#8 format private key functions
+d2i_PKCS8PrivateKey_fp [] (3) - PKCS#8 format private key functions
+d2i_RSAPrivateKey [] (3) - RSA public and private key encoding functions
+d2i_RSAPublicKey [] (3) - RSA public and private key encoding functions
+d2i_RSA_PUBKEY [] (3) - RSA public and private key encoding functions
+d2i_SSL_SESSION [] (3) - convert SSL_SESSION object from/to ASN1 representation
+d2i_X509 [] (3) - X509 encode and decode functions
+d2i_X509_ALGOR [] (3) - AlgorithmIdentifier functions
+d2i_X509_CRL [] (3) - PKCS#10 certificate request functions
+d2i_X509_CRL_bio [] (3) - PKCS#10 certificate request functions
+d2i_X509_NAME [] (3) - X509_NAME encoding functions
+d2i_X509_REQ [] (3) - PKCS#10 certificate request functions
+d2i_X509_REQ_bio [] (3) - PKCS#10 certificate request functions
+d2i_X509_REQ_fp [] (3) - PKCS#10 certificate request functions
+d2i_X509_SIG [] (3) - DigestInfo functions
+d2i_X509_bio [] (3) - X509 encode and decode functions
+d2i_X509_fp [] (3) - X509 encode and decode functions
+daemon [] (3) - run in the background
+dangerball [] (6) - a 3D ball that periodically extrudes spikes. Ouch!
+date [] (1) - print or set the system date and time
+daylight [] (3) - initialize time conversion information
+dbilogstrip [] (1) - filter to normalize DBI trace logs for diff'ing
+dbiprof [] (1) - command-line client for DBI::ProfileData
+dbiproxy [] (1) - A proxy server for the DBD::Proxy driver
+dbmmanage [] (1) - Manage user authentication files in DBM format
+dbopen [] (3) - database access methods
+dbus [] (1) - cleanup-sockets - clean up leftover sockets in a directory
+dbus [] (1) - daemon - Message bus daemon
+dbus [] (1) - launch - Utility to start a message bus from a shell script
+dbus [] (1) - monitor - debug probe to print message bus messages
+dbus [] (1) - send - Send a message to a message bus
+dbus [] (1) - uuidgen - Utility to generate UUIDs
+dc [] (1) - an arbitrary precision calculator
+dcgettext [] (3) - translate message
+dcngettext [] (3) - translate message and choose plural form
+dd [] (1) - convert and copy a file
+ddate [] (1) - converts Gregorian dates to Discordian dates
+ddbugtopbm [] (1) - see http://netpbm.sourceforge.net/doc/ddbugtopbm.html
+dde [] (n) - Execute a Dynamic Data Exchange command
+ddjvu [] (1) - Command line DjVu decoder
+ddp [] (7) - Linux AppleTalk protocol implementation
+deallocvt [] (1) - deallocate unused virtual consoles
+debug [] (3) - Print out debugging information about the handler chain being called
+debugfs [] (8) - ext2/ext3 file system debugger
+debugreiserfs [] (8) - The debugging tool for the ReiserFS filesystem
+decayscreen [] (6) - make a screen meltdown
+declare [] (1) - bash built-in commands, see bash(1)
+deco [] (6) - draw tacky 70s basement wall panelling
+def_prog_mode [] (3) - low-level curses routines
+def_shell_mode [] (3) - low-level curses routines
+default_store [] (3) - generic storage of global data
+define_key [] (3) - define a keycode
+del_curterm [] (3) - curses interfaces to terminfo database
+delay_output [] (3) - miscellaneous curses utility routines
+delch [] (3) - delete character under the cursor in a curses window
+delete_module [] (2) - delete a loadable module entry
+deleteln [] (3) - delete and insert lines in a curses window
+delscreen [] (3) - curses screen initialization and manipulation routines
+deluxe [] (6) - pulsing sequence of stars, circles, and lines
+delwin [] (3) - create curses windows
+demangle [] (1) - Undo C++ name mangling for symbols
+demon [] (6) - cellular automaton
+depmod [] (8) - program to generate modules.dep and map files
+depmod.conf [] (5) - Configuration file/directory for depmod
+depmod.d [] (5) - Configuration file/directory for depmod
+derwin [] (3) - create curses windows
+des_crypt [] (3) - fast DES encryption
+des_modes [] (7) - the variants of DES and other crypto algorithms of OpenSSL
+des_read_2passwords [] (3) - Compatibility user interface functions
+des_read_password [] (3) - Compatibility user interface functions
+des_read_pw [] (3) - Compatibility user interface functions
+des_read_pw_string [] (3) - Compatibility user interface functions
+des_setparity [] (3) - fast DES encryption
+destroy [] (n) - Destroy one or more windows
+devdump [] (8) - Utility programs for dumping and verifying iso9660 images
+df [] (1) - report file system disk space usage
+dfutool [] (1) - Device Firmware Upgrade utility
+dga [] (1) - test program for the XFree86-DGA extension
+dgettext [] (3) - translate message
+dgst [] (1) - message digests
+dh [] (3) - Diffie-Hellman key agreement
+dhclient [] (8) - Dynamic Host Configuration Protocol Client
+dhclient [] (8) - script - DHCP client network configuration script
+dhclient.conf [] (5) - DHCP client configuration file
+dhclient.leases [] (5) - DHCP client lease database
+dhcp [] (5) - eval - ISC DHCP conditional evaluation
+dhcp [] (5) - options - Dynamic Host Configuration Protocol options
+dhcpcd [] (8) - an RFC 2131 compliant DHCP client
+dhcpctl_initialize [] (3) - dhcpctl library initialization
+dhcpd [] (8) - Dynamic Host Configuration Protocol Server
+dhcpd.conf [] (5) - dhcpd configuration file
+dhcpd.leases [] (5) - DHCP client lease database
+dhcrelay [] (8) - Dynamic Host Configuration Protocol Relay Agent
+dhparam [] (1) - DH parameter manipulation and generation
+diagnostics [] (1) - produce verbose warning diagnostics
+diagnostics [] (3) - produce verbose warning diagnostics
+dialog [] (1) - display dialog boxes from shell scripts
+dict [] (n) - Manipulate dictionaries
+diff [] (1) - compare files line by line
+diff3 [] (1) - compare three files line by line
+diffpp [] (1) - pretty-print diff outputs with GNU enscript
+diffstat [] (1) - make histogram from diff-output
+difftime [] (3) - calculate time difference
+dig [] (1) - DNS lookup utility
+dir [] (1) - list directory contents
+dir_colors [] (5) - configuration file for dircolors(1)
+dircolors [] (1) - color setup for ls
+dirfd [] (3) - get directory stream file descriptor
+dirmngr [] (1) - CRL and OCSP daemon
+dirmngr [] (1) - client - CRL and OCSP daemon
+dirname [] (1) - strip non-directory suffix from file name
+dirname [] (3) - parse pathname components
+dirs [] (1) - bash built-in commands, see bash(1)
+discrete [] (6) - discrete map iterative function fractal systems
+diskd [] (1) - disk daemon; wait for disk to be inserted
+diskseek [] (1) - disk seek daemon; simulates Messy Dos' drive cleaning effect
+diskseekd [] (1) - disk seek daemon; simulates Messy Dos' drive cleaning effect
+disown [] (1) - bash built-in commands, see bash(1)
+display [] (1) - displays an image or image sequence on any X server
+distcc [] (1) - distributed C/C++/ObjC compiler
+distccd [] (1) - distributed C/C++ compiler server
+distccmon [] (1) - text - Displays current compilation jobs in text form
+distort [] (6) - distort the content of the screen in interesting ways
+ditroff [] (7) - classical device independent roff
+div [] (3) - compute quotient and remainder of an integer division
+djpeg [] (1) - decompress a JPEG file to an image file
+djvm [] (1) - Manipulate bundled multi-page DjVu documents
+djvmcvt [] (1) - Convert multi-page DjVu documents
+djvudigital [] (1) - creates DjVu files from PS or PDF files
+djvudump [] (1) - Display internal structure of DjVu files
+djvuextract [] (1) - Extract chunks from DjVu image files
+djvumake [] (1) - Assemble DjVu image files
+djvups [] (1) - Convert DjVu documents to PostScript
+djvused [] (1) - Multi-purpose DjVu document editor
+djvuserve [] (1) - Generate indirect DjVu documents on the fly
+djvutoxml [] (1) - DjVuLibre XML Tools
+djvutxt [] (1) - Extract the hidden text from DjVu documents
+djvuxmlparser [] (1) - DjVuLibre XML Tools
+dl_iterate_phdr [] (3) - walk through list of shared objects
+dladdr [] (3) - programming interface to dynamic linking loader
+dlclose [] (3) - programming interface to dynamic linking loader
+dlerror [] (3) - programming interface to dynamic linking loader
+dlopen [] (3) - programming interface to dynamic linking loader
+dlsym [] (3) - programming interface to dynamic linking loader
+dlvsym [] (3) - programming interface to dynamic linking loader
+dmapi [] (3) - DMAPI library
+dmesg [] (1) - print or control the kernel ring buffer
+dmidecode [] (8) - DMI table decoder
+dmsetup [] (8) - low level logical volume management
+dn_comp [] (3) - resolver routines
+dn_expand [] (3) - resolver routines
+dngettext [] (3) - translate message and choose plural form
+dnsdomainname [] (1) - show the system's DNS domain name
+dnsmasq [] (8) - A lightweight DHCP and caching DNS server
+dnssec [] (8) - keygen - DNSSEC key generation tool
+dnssec [] (8) - signzone - DNSSEC zone signing tool
+docbook2dvi [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2html [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2man [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2man [] (1) - spec.pl - convert DocBook RefEntries to man pages
+docbook2pdf [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2ps [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2rtf [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2tex [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2texi [] (1) - (Jade Wrapper) converts SGML files to other formats
+docbook2texi [] (1) - spec.pl - convert DocBook Booksto Texinfo documents
+docbook2txt [] (1) - (Jade Wrapper) converts SGML files to other formats
+does nothing otherwise). .IP (bu 2 Set the current canvas colours to black background and white foreground. .IP (bu 2 Write the string 'This is a message' using the current colors onto the canvas. .IP (bu 2 Refresh the display. .IP (bu 2 Wait for an event of type 'CACA_EVENT_KEY_PRESS'. .IP (bu 2 Free the display (release memory). Since it was created together with the display [] (3) - like system using the following comman (requiring pkg-config and gcc):
+domainname [] (1) - show or set the system's NIS/YP domain name
+domainname [] (8) - set or display name of current domain
+dosfsck [] (8) - check and repair MS-DOS file systems
+doupdate [] (3) - refresh curses windows and lines
+doxygen [] (1) - documentation system for various programming languages
+doxytag [] (1) - generates a tag file and/or a search index for a set of HTML files
+doxywizard [] (1) - a tool to configure and run doxygen on your source files
+dpasswd [] (8) - change dialup password
+dprintf [] (3) - print to a file descriptor
+dprofpp [] (1) - display perl profile data
+drand48 [] (3) - generate uniformly distributed pseudo-random numbers
+drand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+drem [] (3) - floating - point remainder function
+dremf [] (3) - floating - point remainder function
+dreml [] (3) - floating - point remainder function
+drift [] (6) - draws drifting recursive fractal cosmic flames
+dsa [] (1) - DSA key processing
+dsa [] (3) - Digital Signature Algorithm
+dsaparam [] (1) - DSA parameter manipulation and generation
+dsp56k [] (4) - DSP56001 interface device
+du [] (1) - estimate file space usage
+dump [] (8) - acct - print an acct file in human-readable format
+dump [] (8) - utmp - print an utmp file in human-readable format
+dumpe2fs [] (8) - dump ext2/ext3 filesystem information
+dumpiso [] (1) - dump IEEE 1394 isochronous channel packets
+dumpkeys [] (1) - dump keyboard translation tables
+dumpreg [] (1) - dump the state of the card as the svgalib chipset driver sees it
+dund [] (1) - BlueZ Bluetooth dial-up networking daemon
+dup [] (2) - duplicate a file descriptor
+dup2 [] (2) - duplicate a file descriptor
+dup3 [] (2) - duplicate a file descriptor
+dupwin [] (3) - create curses windows
+dvipdf [] (1) - Convert TeX DVI file to PDF using ghostscript and dvips
+dysize [] (3) - get number of days for a given year
+e2fsck [] (8) - check a Linux ext2/ext3 file system
+e2fsck.conf [] (5) - Configuration file for e2fsck
+e2image [] (8) - Save critical ext2/ext3 filesystem metadata to a file
+e2label [] (8) - Change the label on an ext2/ext3 filesystem
+e2undo [] (8) - Replay an undo log for an ext2/ext3/ext4 filesystem
+eaccess [] (3) - check effective user's permissions for a file
+eboard [] (1) - addtheme - a program to easily install new eboard board and sound themes
+eboard [] (1) - config - program to get information about the installed eboard
+eboard [] (6) - a graphical chess board
+ec [] (1) - EC key processing
+ecb_crypt [] (3) - fast DES encryption
+ecdsa [] (3) - Elliptic Curve Digital Signature Algorithm
+echo [] (1) - bash built-in commands, see bash(1)
+echo [] (1) - display a line of text
+echo [] (3) - curses input options
+echo_wchar [] (3) - add a complex character and rendition to a curses window, then advance the cursor
+echochar [] (3) - add a character (with attributes) to a curses window, then advance the cursor
+ecparam [] (1) - EC parameter manipulation and generation
+ecvt [] (3) - convert a floating-point number to a string
+ecvt_r [] (3) - convert a floating-point number to a string
+ed [] (1) - text editor
+edata [] (3) - end of program segments
+edd_id [] (8) - udev callout to identify BIOS disk drives via EDD
+editmap [] (8) - query and edit single records in database maps for sendmail
+editres [] (1) - a dynamic resource editor for X Toolkit applications
+edquota [] (8) - edit user quotas
+egrep [] (1) - print lines matching a pattern
+eject [] (1) - eject removable media
+electricsheep [] (1) - a distributed screen-saver (version 2.7b11)
+electricsheep [] (1) - preferences - GUI to edit defaults for electricsheep
+elf [] (5) - format of Executable and Linking Format (ELF) files
+elksemu [] (1) - Embedded Linux Kernel Subset emulator
+elm [] (1) - an interactive mail system
+elmalias [] (1) - expand and display Elm address aliases
+elographics [] (4) - Elographics input driver
+elvfmt [] (1) - adjust line-length for paragraphs of text
+elvis [] (1) - a clone of the ex/vi text editor
+emacs [] (1) - GNU project Emacs
+emacsclient [] (1) - tells a running Emacs to visit a file
+enable [] (1) - bash built-in commands, see bash(1)
+enc [] (1) - symmetric cipher routines
+enc2xs [] (1) - - Perl Encode Module Generator
+encapsulate [] (1) - multiplex several channels over a single socket with sampling of remote process exit status, and provide conversation termination without closing the socket
+encode_keychange [] (1) - produce the KeyChange string for SNMPv3
+encoding [] (3) - allows you to write your script in non-ascii or non-utf8
+encoding [] (n) - Manipulate encodings
+encoding::warnings [] (3) - Warn on implicit encoding conversions
+encrypt [] (3) - encrypt 64-bit messages
+encrypt_r [] (3) - encrypt 64-bit messages
+end [] (3) - end of program segments
+endaliasent [] (3) - read an alias entry
+endfsent [] (3) - handle fstab entries
+endgame [] (6) - endgame chess screensaver
+endgrent [] (3) - get group file entry
+endhostent [] (3) - get network host entry
+endmntent [] (3) - get file system descriptor file entry
+endnetent [] (3) - get network entry
+endnetgrent [] (3) - handle network group entries
+endprotoent [] (3) - get protocol entry
+endpwent [] (3) - get password file entry
+endrpcent [] (3) - get RPC entry
+endservent [] (3) - get service entry
+endspent [] (3) - get shadow password file entry
+endttyent [] (3) - get ttys file entry
+endusershell [] (3) - get permitted user shells
+endutent [] (3) - access utmp file entries
+endwin [] (3) - curses screen initialization and manipulation routines
+engine [] (3) - ENGINE cryptographic module support
+engine [] (6) - draws a 3D four-stroke engine
+english [] (4) - flag format for English okspell dictionaries
+enscript [] (1) - convert text files to PostScript, HTML, RTF, ANSI, and overstrikes
+entry [] (n) - Create and manipulate entry widgets
+env [] (1) - run a program in a modified environment
+environ [] (7) - user environment
+envsubst [] (1) - substitutes environment variables in shell format strings
+envz_add [] (3) - environment string support
+envz_entry [] (3) - environment string support
+envz_get [] (3) - environment string support
+envz_merge [] (3) - environment string support
+envz_remove [] (3) - environment string support
+envz_strip [] (3) - environment string support
+eof [] (n) - Check for end of file condition on channel
+epic [] (1) - Internet Relay Chat client for UNIX like systems
+epicycle [] (6) - draws a point moving around a circle which moves around a cicle which..
+epoll [] (7) - I/O event notification facility
+epoll_create [] (2) - open an epoll file descriptor
+epoll_create1 [] (2) - open an epoll file descriptor
+epoll_ctl [] (2) - control interface for an epoll descriptor
+epoll_pwait [] (2) - wait for an I/O event on an epoll file descriptor
+epoll_wait [] (2) - wait for an I/O event on an epoll file descriptor
+eps2eps [] (1) - Ghostscript PostScript distiller
+epsffit [] (1) - fit encapsulated PostScript file (EPSF) into constrained size
+eqn [] (1) - format equations for troff or MathML
+eqn2graph [] (1) - convert an EQN equation into a cropped image
+erand48 [] (3) - generate uniformly distributed pseudo-random numbers
+erand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+erase [] (3) - clear all or part of a curses window
+erasechar [] (3) - curses environment query routines
+erasewchar [] (3) - curses environment query routines
+erf [] (3) - error function
+erfc [] (3) - complementary error function
+erfcf [] (3) - complementary error function
+erfcl [] (3) - complementary error function
+erff [] (3) - error function
+erfl, [] (3) - error function
+err [] (3) - error codes
+err [] (3) - formatted error messages
+errno [] (3) - number of last error
+error [] (3) - glibc error reporting functions
+error [] (n) - Generate an error
+error_at_line [] (3) - glibc error reporting functions
+error_message_count [] (3) - glibc error reporting functions
+error_on_per_line [] (3) - glibc error reporting functions
+error_print_progname [] (3) - glibc error reporting functions
+errstr [] (1) - lookup error codes
+errx [] (3) - formatted error messages
+escp2topbm [] (1) - see http://netpbm.sourceforge.net/doc/escp2topbm.html
+escputil [] (1) - maintain Epson Stylus inkjet printers
+esd [] (1) - The Enlightened Sound Daemon
+esd [] (1) - config - The Enlightened Sound Daemon
+esdcat [] (1) - play a sound file from stdin
+esdctl [] (1) - The Enlightened Sound Daemon
+esddsp [] (1) - attempt to reroute audio device to esd
+esdfilt [] (1) - The Enlightened Sound Daemon
+esdloop [] (1) - The Enlightened Sound Daemon
+esdmon [] (1) - The Enlightened Sound Daemon
+esdrec [] (1) - record a sound file
+esdsample [] (1) - play a sample
+etags [] (1) - generate tag file for Emacs, vi
+etext [] (3) - end of program segments
+ether_aton [] (3) - Ethernet address manipulation routines
+ether_aton_r [] (3) - Ethernet address manipulation routines
+ether_hostton [] (3) - Ethernet address manipulation routines
+ether_line [] (3) - Ethernet address manipulation routines
+ether_ntoa [] (3) - Ethernet address manipulation routines
+ether_ntoa_r [] (3) - Ethernet address manipulation routines
+ether_ntohost [] (3) - Ethernet address manipulation routines
+ethers [] (5) - Ethernet address to IP number database
+ethtool [] (8) - Display or change ethernet card settings
+euidaccess [] (3) - check effective user's permissions for a file
+euler2d [] (6) - two dimensional incompressible inviscid fluid flow
+eval [] (1) - bash built-in commands, see bash(1)
+eval [] (n) - Evaluate a Tcl script
+evdev [] (4) - Generic Linux input driver
+event [] (n) - Miscellaneous event facilities: define virtual events and generate events
+eventfd [] (2) - create a file descriptor for event notification
+eventlogadm [] (8) - push records into the Samba event log store
+eventtest [] (6) - test the waitevent function of svgalib
+evim [] (1) - easy Vim, edit a file with Vim and setup for modeless editing
+evp [] (3) - high-level cryptographic functions
+exa [] (4) - new 2D acceleration architecture for X.Org
+example_scalar_int: instantiates a few example scalars. [] (3) - This example merely creates some scalar registrations that allows some simple variables to be accessed via SNMP. More..
+exec [] (1) - bash built-in commands, see bash(1)
+exec [] (n) - Invoke subprocesses
+execl [] (3) - execute a file
+execle [] (3) - execute a file
+execlp [] (3) - execute a file
+execv [] (3) - execute a file
+execve [] (2) - execute program
+execvp [] (3) - execute a file
+exit [] (1) - bash built-in commands, see bash(1)
+exit [] (3) - cause normal process termination
+exit [] (n) - End the application
+exit_group [] (2) - exit all threads in a process
+exiv2 [] (1) - Image metadata manipulation tool
+exo [] (1) - csource - C code generation utility for arbitrary data
+exo [] (1) - open - Open URLs and launch preferred applications
+exo-csource (1) - C code generation utility for arbitrary data
+exo-open (1) - Open URLs and launch preferred applications
+exp [] (3) - base-e exponential function
+exp10 [] (3) - base-10 exponential function
+exp10f [] (3) - base-10 exponential function
+exp10l [] (3) - base-10 exponential function
+exp2 [] (3) - base-2 exponential function
+exp2f [] (3) - base-2 exponential function
+exp2l [] (3) - base-2 exponential function
+expand [] (1) - convert tabs to spaces
+expect [] (1) - programmed dialogue with interactive programs, Version 5
+expectk [] (1) - Expect with Tk support
+expf [] (3) - base-e exponential function
+expl [] (3) - base-e exponential function
+explodepkg [] (8) - Extract the contents of a tar+compression package (such as a Slackware software package) in the current directory
+expm1 [] (3) - exponential minus 1
+expm1f [] (3) - exponential minus 1
+expm1l [] (3) - exponential minus 1
+export [] (1) - bash built-in commands, see bash(1)
+exportfs [] (8) - maintain list of NFS exported file systems
+exports [] (5) - NFS file systems being exported (for Kernel based NFS)
+expr [] (1) - evaluate expressions
+expr [] (n) - Evaluate an expression
+extcompose [] (1) - Compose a reference to external data for inclusion in a mail message
+extend_dmalloc [] (1) - Analyze return-addresses from dmalloc logfiles
+extractrc [] (1) - Extract message strings from UI and GUI-RC files
+extractres [] (1) - filter to extract resources from a PostScript document
+extrusion [] (6) - various rotating extruded shapes
+eyuvtoppm [] (1) - convert a Berkeley YUV file to a portable pixmap (ppm) file
+fabs [] (3) - absolute value of floating-point number
+fabsf [] (3) - absolute value of floating-point number
+fabsl [] (3) - absolute value of floating-point number
+faccessat [] (2) - check user's permissions of a file relative to a directory file descriptor
+factor [] (1) - factor numbers
+factor [] (6) - factor a number, generate primes
+fadeplot [] (6) - draws a waving ribbon following a sinusoidal path
+faillog [] (5) - Login failure logging file
+faillog [] (8) - examine faillog and set login failure limits
+fallocate [] (2) - manipulate file space
+false [] (1) - do nothing, unsuccessfully
+fancontrol [] (8) - automated software based fan speed regulation
+fastmail [] (1) - quick batch mail interface to a single address
+faucet [] (1) - a fixture for a BSD network pipe
+fax2ps [] (1) - convert a TIFF facsimile to compressed (tm
+fax2tiff [] (1) - create a TIFF Class F fax file from raw fax data
+fb.modes [] (5) - frame buffer modes file
+fbdevhw [] (4) - os-specific submodule for framebuffer device access
+fblocked [] (n) - Test whether the last input operation exhausted all available input
+fbrun [] (1) - display run dialog window
+fbset [] (8) - show and modify frame buffer device settings
+fbsetbg [] (1) - set a background/wallpaper
+fbsetroot [] (1) - a simple background utility used by the Fluxbox window manager, originally written for and by the original Blackbox window manager team
+fc [] (1) - bash built-in commands, see bash(1)
+fc [] (1) - cache - build font information cache files
+fc [] (1) - cat - read font information cache files
+fc [] (1) - list - list available fonts
+fc [] (1) - match - match available fonts
+fchdir [] (2) - change working directory
+fchmod [] (2) - change permissions of a file
+fchmodat [] (2) - change permissions of a file relative to a directory file descriptor
+fchown [] (2) - change ownership of a file
+fchownat [] (2) - change ownership of a file relative to a directory file descriptor
+fclose [] (3) - close a stream
+fcloseall [] (3) - close all open streams
+fcntl [] (2) - manipulate file descriptor
+fconfigure [] (n) - Set and get options on a channel
+fcopy [] (n) - Copy data from one channel to another
+fcvt [] (3) - convert a floating-point number to a string
+fcvt_r [] (3) - convert a floating-point number to a string
+fd [] (4) - floppy disk device
+fd_to_handle [] (3) - file handle operations
+fdatasync [] (2) - synchronize a file's in-core state with storage device
+fdformat [] (8) - Low-level formats a floppy disk
+fdim [] (3) - positive difference
+fdimf [] (3) - positive difference
+fdiml [] (3) - positive difference
+fdisk [] (8) - Partition table manipulator for Linux
+fdmount [] (1) - Floppy disk mount utility
+fdopen [] (3) - stream open functions
+fdopendir [] (3) - open a directory
+fdrawcmd [] (1) - send raw commands to the floppy disk controller
+feature [] (3) - Perl pragma to enable new syntactic features
+feature_test_macros [] (7) - feature test macros
+feclearexcept [] (3) - floating-point rounding and exception handling
+fedisableexcept [] (3) - floating-point rounding and exception handling
+feenableexcept [] (3) - floating-point rounding and exception handling
+fegetenv [] (3) - floating-point rounding and exception handling
+fegetexcept [] (3) - floating-point rounding and exception handling
+fegetexceptflag [] (3) - floating-point rounding and exception handling
+fegetround [] (3) - floating-point rounding and exception handling
+feholdexcept [] (3) - floating-point rounding and exception handling
+feof [] (3) - check and reset stream status
+feraiseexcept [] (3) - floating-point rounding and exception handling
+ferror [] (3) - check and reset stream status
+fesetenv [] (3) - floating-point rounding and exception handling
+fesetexceptflag [] (3) - floating-point rounding and exception handling
+fesetround [] (3) - floating-point rounding and exception handling
+fetchmail [] (1) - fetch mail from a POP, IMAP, ETRN, or ODMR-capable server
+fetestexcept [] (3) - floating-point rounding and exception handling
+feupdateenv [] (3) - floating-point rounding and exception handling
+fexecve [] (3) - execute program specified via file descriptor
+fflush [] (3) - flush a stream
+ffs [] (3) - find first bit set in a word
+ffsl [] (3) - find first bit set in a word
+ffsll [] (3) - find first bit set in a word
+fg [] (1) - bash built-in commands, see bash(1)
+fgconsole [] (1) - print the number of the active VT
+fgetc [] (3) - input of characters and strings
+fgetgrent [] (3) - get group file entry
+fgetgrent_r [] (3) - get group file entry reentrantly
+fgetpos [] (3) - reposition a stream
+fgetpwent [] (3) - get password file entry
+fgetpwent_r [] (3) - get passwd file entry reentrantly
+fgets [] (3) - input of characters and strings
+fgetspent [] (3) - get shadow password file entry
+fgetspent_r [] (3) - get shadow password file entry
+fgetwc [] (3) - read a wide character from a FILE stream
+fgetws [] (3) - read a wide-character string from a FILE stream
+fgetxattr [] (2) - retrieve an extended attribute value
+fgrep [] (1) - print lines matching a pattern
+fiasco_c_options_delete [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_new [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_basisfile [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_chroma_quality [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_comment [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_frame_pattern fiasco_c_options_set_title [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_optimizations [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_prediction [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_progress_meter [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_quantization [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_smoothing [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_tiling [] (3) - define additional options of FIASCO coder and decoder
+fiasco_c_options_set_video_param [] (3) - define additional options of FIASCO coder and decoder
+fiasco_coder [] (3) - compress image files to a FIASCO file
+fiasco_d_options_delete [] (3) - define additional options of FIASCO decoder
+fiasco_d_options_new [] (3) - define additional options of FIASCO decoder
+fiasco_d_options_set_magnification [] (3) - define additional options of FIASCO decoder
+fiasco_d_options_set_smoothing fiasco_d_options_set_4_2_0_format [] (3) - define additional options of FIASCO decoder
+fiasco_decoder_delete [] (3) - decompress a FIASCO file
+fiasco_decoder_get_comment fiasco_decoder_is_color [] (3) - decompress a FIASCO file
+fiasco_decoder_get_frame [] (3) - decompress a FIASCO file
+fiasco_decoder_get_height fiasco_decoder_get_title [] (3) - decompress a FIASCO file
+fiasco_decoder_get_length [] (3) - decompress a FIASCO file
+fiasco_decoder_get_rate [] (3) - decompress a FIASCO file
+fiasco_decoder_get_width [] (3) - decompress a FIASCO file
+fiasco_decoder_new [] (3) - decompress a FIASCO file
+fiasco_decoder_write_frame [] (3) - decompress a FIASCO file
+fiasco_get_error_message [] (3) - return string describing last error catched in FIASCO library
+fiasco_get_verbosity [] (3) - get or set verbosity of FIASCO library
+fiasco_image_delete [] (3) - handle FIASCO image objects
+fiasco_image_get_height [] (3) - handle FIASCO image objects
+fiasco_image_get_width [] (3) - handle FIASCO image objects
+fiasco_image_is_color [] (3) - handle FIASCO image objects
+fiasco_image_new [] (3) - handle FIASCO image objects
+fiasco_options_delete [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_new [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_4_2_0_format [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_basisfile [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_chroma_quality [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_frame_pattern [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_magnification [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_optimizations [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_prediction [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_progress_meter [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_quantization [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_smoothing [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_tiling [] (3) - define additional options of FIASCO coder and decoder
+fiasco_options_set_video_param [] (3) - define additional options of FIASCO coder and decoder
+fiasco_renderer_delete [] (3) - convert a FIASCO image object to an X11 XImage
+fiasco_renderer_new [] (3) - convert a FIASCO image object to an X11 XImage
+fiasco_set_verbosity [] (3) - get or set verbosity of FIASCO library
+fiascotopnm [] (1) - Convert compressed FIASCO image to PGM, or PPM
+fiberlamp [] (6) - Fiber Optic Lamp
+fields [] (3) - compile-time class fields
+fifo [] (7) - first-in first-out special file, named pipe
+fig2dev [] (1) - translates Fig code to various graphics languages
+fig2ps2tex [] (1) - generate a TeX file for including a PostScript file
+file [] (1) - determine file type
+file [] (n) - Manipulate file names and attributes
+fileevent [] (n) - Execute a script when a channel becomes readable or writable
+filefrag [] (8) - report on file fragmentation
+filename [] (n) - File name conventions supported by Tcl commands
+fileno [] (3) - check and reset stream status
+filesystems [] (5) - Linux file-system types: minix, ext, ext2, ext3, Reiserfs, XFS, JFS, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs
+filetest [] (3) - Perl pragma to control the filetest permission operators
+filter [] (3) - miscellaneous curses utility routines
+filter [] (7) - cups file conversion filter interface
+find [] (1) - search for files in a directory hierarchy
+find2perl [] (1) - translate find command lines to Perl code
+findaffix [] (1) - Interactive spelling checking
+findfs [] (8) - Find a filesystem by label or UUID
+findsmb [] (1) - list info about machines that respond to SMB name queries on a subnet
+finger [] (1) - user information lookup program
+fingerd [] (8) - remote user information server
+finite [] (3) - BSD floating - point classification functions
+finitef [] (3) - BSD floating - point classification functions
+finitel [] (3) - BSD floating - point classification functions
+fireworkx [] (6) - pyrotechnics simulation eye-candy
+fish [] (6) - play Go Fish
+fitstopnm [] (1) - convert a FITS file into a portable anymap
+fix132x43 [] (1) - fix problems with certain (132 column) graphics modes dump the state of the card as the svgalib chipset driver sees it
+fixdlsrps [] (1) - filter to fix DviLaser/PS documents to work with PSUtils
+fixfmps [] (1) - filter to fix Framemaker documents so PSUtils work
+fixincludes [] (1) - Reduce the number of #includes in KDE source files
+fixmacps [] (1) - filter to fix Macintosh documents with saner version of md
+fixproc [] (1) - Fixes a process by performing the specified action
+fixps [] (1) - sanitize PostScript files
+fixpsditps [] (1) - filter to fix Transcript psdit documents so PSUtils work
+fixpspps [] (1) - filter to fix PSPrint PostScript so PSUtils work
+fixscribeps [] (1) - filter to fix Scribe documents so PSUtils work
+fixtpps [] (1) - filter to fix Tpscript documents to work with PSUtils
+fixwfwps [] (1) - filter to fix Word for Windows documents so PSUtils work
+fixwpps [] (1) - filter to fix WP documents so PSUtils work
+fixwwps [] (1) - filter to fix Windows Write documents so PSUtils work
+fiz [] (1) - analyze damaged zoo archive for data recovery
+flac [] (1) - Free Lossless Audio Codec
+flam3 [] (1) - animate flam3 - render flam3 - genome flam3 - convert - render and animate FLAM3s and manipulate their genomes
+flame [] (6) - draw weird cosmic fractals
+flash [] (3) - curses bell and screen flash routines
+flea [] (1) - Report a bug (or rather a flea) in mutt
+flex [] (1) - the fast lexical analyser generator
+flipflop [] (6) - draws a grid of 3D squares that change positions
+flipscreen3d [] (6) - rotates an image of the screen through 3 dimensions
+fliptext [] (6) - draws pages of text whose lines transparently flip around
+flistxattr [] (2) - list extended attribute names
+flock [] (1) - Manage locks from shell scripts
+flock [] (2) - apply or remove an advisory lock on an open file
+flockfile [] (3) - lock FILE for stdio
+floor [] (3) - largest integral value not greater than argument
+floorf [] (3) - largest integral value not greater than argument
+floorl [] (3) - largest integral value not greater than argument
+floppycontrol [] (1) - floppy driver configuration utility
+floppyd [] (1) - floppy daemon for remote access to floppy drive floppyd_installtest - tests whether floppyd is installed and running
+floppyd_installtest [] (1) - tests whether floppyd is installed and running
+floppymeter [] (1) - measure raw capacity and exact rotation speed of floppy drive
+flow [] (6) - strange attractors
+fluidballs [] (6) - the physics of bouncing balls
+flush [] (n) - Flush buffered output for a channel
+flushinp [] (3) - miscellaneous curses utility routines
+fluxbox [] (1) - A lightweight window manager for the X Windowing System
+fluxbox [] (1) - remote - command line access to key commands for fluxbox(1)
+fluxbox [] (5) - keys - keyboard shortcuts configuration for fluxbox(1)
+fluxstyle [] (1) - A comprehensive look at styles/themes for fluxbox(1)
+flyingtoasters [] (6) - 3d space-age jet-powered flying toasters (and toast)
+fma [] (3) - floating-point multiply and add
+fmaf [] (3) - floating-point multiply and add
+fmal [] (3) - floating-point multiply and add
+fmax [] (3) - determine maximum of two floating-point numbers
+fmaxf [] (3) - determine maximum of two floating-point numbers
+fmaxl [] (3) - determine maximum of two floating-point numbers
+fmemopen [] (3) - open memory as stream
+fmin [] (3) - determine minimum of two floating-point numbers
+fminf [] (3) - determine minimum of two floating-point numbers
+fminl [] (3) - determine minimum of two floating-point numbers
+fmod [] (3) - floating-point remainder function
+fmodf [] (3) - floating-point remainder function
+fmodl [] (3) - floating-point remainder function
+fmt [] (1) - simple optimal text formatter
+fmtmsg [] (3) - print formatted error messages
+fnmatch [] (3) - match filename or pathname
+focus [] (n) - Manage the input focus
+fold [] (1) - wrap each input line to fit in specified width
+font [] (n) - Create and inspect fonts
+font2c [] (1) - Write PostScript Type 0 or Type 1 font as C code
+fontglide [] (6) - characters float onto the screen to form words
+fonts.conf [] (5) - Font configuration files
+fonttosfnt [] (1) - Wrap a bitmap font in a sfnt (TrueType) wrapper
+foomatic [] (1) - rip - Universal print filter/RIP wrapper
+fopen [] (3) - stream open functions
+fopencookie [] (3) - opening a custom stream
+for [] (n) - 'For' loop
+foreach [] (n) - Iterate over all elements in one or more lists
+fork [] (2) - create a child process
+forkpty [] (3) - tty utility functions
+forktest [] (6) - tests the vga_safety_fork() function
+form [] (3) - curses extension for programming forms
+form_cursor [] (3) - position a form window cursor
+form_data [] (3) - test for off-screen data in given forms
+form_driver [] (3) - command-processing loop of the form system
+form_field [] (3) - make and break connections between fields and forms
+form_field_attributes [] (3) - color and attribute control for form fields
+form_field_buffer [] (3) - field buffer control
+form_field_info [] (3) - retrieve field characteristics
+form_field_just [] (3) - retrieve field characteristics
+form_field_new [] (3) - create and destroy form fields
+form_field_opts [] (3) - set and get field options
+form_field_userptr [] (3) - associate application data with a form field
+form_field_validation [] (3) - data type validation for fields
+form_fieldtype [] (3) - define validation-field types
+form_hook [] (3) - set hooks for automatic invocation by applications
+form_new [] (3) - create and destroy forms
+form_new_page [] (3) - form pagination functions
+form_opts [] (3) - set and get form options
+form_page [] (3) - set and get form page number
+form_post [] (3) - write or erase forms from associated subwindows
+form_requestname [] (3) - handle printable form request names
+form_userptr [] (3) - associate application data with a form item
+form_win [] (3) - make and break form window and subwindow associations
+formail [] (1) - mail (re)formatter
+format [] (n) - Format a string in the style of sprintf
+fortune [] (6) - print a random, hopefully interesting, adage
+fpathconf [] (3) - get configuration values for files
+fpclassify [] (3) - floating-point classification macros
+fpit [] (4) - Fujitsu Stylistic input driver
+fprint_description [] (3) - mib_api functions
+fprint_objid [] (3) - mib_api functions
+fprint_value [] (3) - mib_api functions
+fprint_variable [] (3) - mib_api functions
+fprintf [] (3) - formatted output conversion
+fpurge [] (3) - purge a stream
+fputc [] (3) - output of characters and strings
+fputs [] (3) - output of characters and strings
+fputwc [] (3) - write a wide character to a FILE stream
+fputws [] (3) - write a wide-character string to a FILE stream
+frame [] (n) - Create and manipulate frame widgets
+fread [] (3) - binary stream input/output
+free [] (1) - Display amount of free and used memory in the system
+free [] (3) - Allocate and free dynamic memory
+free_handle [] (3) - file handle operations
+free_hugepages [] (2) - allocate or free huge pages
+freeaddrinfo [] (3) - network address and service translation
+freehostent [] (3) - get network hostnames and addresses
+freeifaddrs [] (3) - get interface addresses
+fremovexattr [] (2) - remove an extended attribute
+freopen [] (3) - stream open functions
+frexp [] (3) - convert floating-point number to fractional and integral components
+frexpf [] (3) - convert floating-point number to fractional and integral components
+frexpl [] (3) - convert floating-point number to fractional and integral components
+frm [] (1) - list from and subject of selected messages in mailbox or folder
+fromdos [] (1) - convert DOS text file format to UNIX
+frontend [] (7) - spec - interface between jw and its frontends
+fscanf [] (3) - input format conversion
+fsck [] (8) - check and repair a Linux file system
+fsck.minix [] (8) - a file system consistency checker for Linux
+fsck.xfs [] (8) - do nothing, successfully
+fseek [] (3) - reposition a stream
+fseeko [] (3) - seek to or report file position
+fsetpos [] (3) - reposition a stream
+fsetxattr [] (2) - set an extended attribute value
+fsf [] (7) - funding - Funding Free Software
+fslsfonts [] (1) - list fonts served by X font server
+fssetdm_by_handle [] (3) - file handle operations
+fstab [] (5) - static information about the filesystems
+fstab [] (8) - decode - run a command with fstab-encoded arguments
+fstat [] (2) - get file status
+fstatat [] (2) - get file status relative to a directory file descriptor
+fstatfs [] (2) - get file system statistics
+fstatvfs [] (2) - get file system statistics
+fstobdf [] (1) - generate BDF font from X font server
+fstopgm [] (1) - convert a Usenix FaceSaver(tm) file into a portable graymap
+fsync [] (2) - synchronize a file's in-core state with storage device
+ftell [] (3) - reposition a stream
+ftello [] (3) - seek to or report file position
+ftime [] (2) - unimplemented system calls
+ftime [] (3) - return date and time
+ftok [] (3) - convert a pathname and a project identifier to a System V IPC key
+ftp [] (1) - Internet file transfer program
+ftpcount [] (1) - show current number of connections for each proftpd server configuration
+ftpdctl [] (8) - ProFTPD control program
+ftpshut [] (8) - shut down all proftpd servers at a given time
+ftptop [] (1) - display running status on proftpd server connections
+ftpusers [] (5) - list of users that may not log in via the FTP daemon
+ftpwho [] (1) - show current process information for each FTP session
+ftruncate [] (2) - truncate a file to a specified length
+ftrylockfile [] (3) - lock FILE for stdio
+fts [] (3) - traverse a file hierarchy
+fts_children [] (3) - traverse a file hierarchy
+fts_close [] (3) - traverse a file hierarchy
+fts_open [] (3) - traverse a file hierarchy
+fts_read [] (3) - traverse a file hierarchy
+fts_set [] (3) - traverse a file hierarchy
+ftw [] (3) - file tree walk
+full [] (4) - always full device
+fun [] (6) - draw pixels accumulating in clusters
+funlockfile [] (3) - lock FILE for stdio
+funzip [] (1) - filter for extracting from a ZIP archive in a pipe
+fuser [] (1) - identify processes using files or sockets
+futex [] (2) - Fast Userspace Locking system call
+futex [] (7) - Fast Userspace Locking
+futimens [] (2) - change file timestamps with nanosecond precision
+futimes [] (3) - change file timestamps
+futimesat [] (2) - change timestamps of a file relative to a directory file descriptor
+fuzzyflakes [] (6) - falling snowflakes/flower shapes
+fvwm [] (1) - config - query an existing FVWM installation
+fvwm [] (1) - menu-desktop - builds Gnome and KDE menus and style commands for FVWM
+fvwm [] (1) - menu-directory - builds a directory browsing menu for FVWM
+fvwm [] (1) - menu-headlines - builds headlines menu definition for FVWM
+fvwm [] (1) - menu-xlock - builds xlock menu definition for FVWM
+fvwm2 [] (1) - F(?) Virtual Window Manager (version 2) for X11
+fvwm24_convert [] (1) - convert FVWM 2.2.x configuration file to FVWM 2.4 syntax
+fvwmbug [] (1) - report a bug in FVWM
+fvwmrc_convert [] (1) - convert FVWM 1.xx configuration file to FVWM 2.xx style
+fwide [] (3) - set and determine the orientation of a FILE stream
+fwprintf [] (3) - formatted wide - character output conversion
+fwrite [] (3) - binary stream input/output
+g3topbm [] (1) - convert a Group 3 fax file into a portable bitmap
+gai_strerror [] (3) - network address and service translation
+galaxy [] (6) - draws spinning galaxies
+gamma [] (3) - (logarithm of the) gamma function
+gamma4scanimage [] (1) - create a gamma table for scanimage
+gammaf [] (3) - (logarithm of the) gamma function
+gammal [] (3) - (logarithm of the) gamma function
+gappletviewer [] (1) - Load and runs an applet
+gawk [] (1) - pattern scanning and processing language
+gc [] (1) - analyze - Analyze Garbage Collector (GC) memory dumps
+gcc [] (1) - GNU project C and C++ compiler
+gcc `pkg [] (3) - config --libs --cflags caca` example.c -o example
+gccmakedep [] (1) - create dependencies in makefiles using 'gcc -M'
+gcj [] (1) - Ahead-of-time compiler for the Java language
+gcj [] (1) - dbtool - Manipulate class file mapping databases for libgcj
+gcjh [] (1) - - generate header files from Java class files
+gcov [] (1) - coverage testing tool
+gcvt [] (3) - convert a floating-point number to a string
+gdb [] (1) - The GNU Debugger
+gdbserver [] (1) - Remote Server for the GNU Debugger
+gdiffmk [] (1) - mark differences between groff/nroff/troff files
+gdk [] (1) - pixbuf-csource - C code generation utility for GdkPixbuf images
+gdk [] (1) - pixbuf-query-loaders - GdkPixbuf loader registration utility
+gdk-pixbuf-csource (1) - C code generation utility for GdkPixbuf images
+gdk-pixbuf-query-loaders (1) - GdkPixbuf loader registration utility
+gears [] (6) - draw interlocking gears, for xscreensaver
+gemtopnm [] (1) - convert a GEM .img file into a portable anymap
+gendiff [] (1) - utility to aid in error-free diff file generation
+gendsa [] (1) - generate a DSA private key from a set of parameters
+genpowerd [] (8) - UPS monitor daemon
+genrsa [] (1) - generate an RSA private key
+gentest [] (8) - tests communication with UPS
+get_current_dir_name [] (3) - Get current working directory
+get_kernel_syms [] (2) - retrieve exported kernel and module symbols
+get_mempolicy [] (2) - Retrieve NUMA memory policy for a process
+get_module_node [] (3) - mib_api functions
+get_thread_area [] (2) - Get a Thread Local Storage (TLS) area
+get_wch [] (3) - get (or push back) a wide character from curses terminal keyboard
+get_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+getaddrinfo [] (3) - network address and service translation
+getafm [] (1) - create an AFM file for a PostScript font
+getaliasbyname [] (3) - read an alias entry
+getaliasbyname_r [] (3) - read an alias entry
+getaliasent [] (3) - read an alias entry
+getaliasent_r [] (3) - read an alias entry
+getbegx [] (3) - get curses cursor and window coordinates
+getbegy [] (3) - get curses cursor and window coordinates
+getbegyx [] (3) - get curses cursor and window coordinates
+getbkgd [] (3) - curses window background manipulation routines
+getbkgrnd [] (3) - curses window complex background manipulation routines
+getc [] (3) - input of characters and strings
+getc_unlocked [] (3) - non-locking stdio functions
+getcap [] (8) - examine file capabilities
+getcchar [] (3) - Get a wide character string and rendition from a cchar_t or set a cchar_t from a wide-character string
+getch [] (3) - get (or push back) characters from curses terminal keyboard
+getchar [] (3) - input of characters and strings
+getchar_unlocked [] (3) - non-locking stdio functions
+getcontext [] (2) - get or set the user context
+getcpu [] (2) - determine CPU and NUMA node on which the calling thread is running
+getcurx [] (3) - get curses cursor and window coordinates
+getcury [] (3) - get curses cursor and window coordinates
+getcwd [] (3) - Get current working directory
+getdate [] (3) - convert a date-plus-time string to broken-down time
+getdate_r [] (3) - convert a date-plus-time string to broken-down time
+getdelim [] (3) - delimited string input
+getdents [] (2) - get directory entries
+getdirentries [] (3) - get directory entries in a file system-independent format
+getdomainname [] (2) - get/set domain name
+getdtablesize [] (2) - get descriptor table size
+getegid [] (2) - get group identity
+getenv [] (3) - get an environment variable
+geteuid [] (2) - get user identity
+getfacl [] (1) - get file access control lists
+getfattr [] (1) - get extended attributes of filesystem objects
+getfdprm [] (1) - print the current format information
+getfilename [] (1) - Ask the user to name a file in a given format
+getfsent [] (3) - handle fstab entries
+getfsfile [] (3) - handle fstab entries
+getfsspec [] (3) - handle fstab entries
+getgid [] (2) - get group identity
+getgrent [] (3) - get group file entry
+getgrent_r [] (3) - get group file entry reentrantly
+getgrgid [] (3) - get group file entry
+getgrgid_r [] (3) - get group file entry
+getgrnam [] (3) - get group file entry
+getgrnam_r [] (3) - get group file entry
+getgrouplist [] (3) - get list of groups to which a user belongs
+getgroups [] (2) - get/set list of supplementary group IDs
+gethostbyaddr [] (3) - get network host entry
+gethostbyaddr_r [] (3) - get network host entry
+gethostbyname [] (3) - get network host entry
+gethostbyname2 [] (3) - get network host entry
+gethostbyname2_r [] (3) - get network host entry
+gethostbyname_r [] (3) - get network host entry
+gethostent [] (3) - get network host entry
+gethostent_r [] (3) - get network host entry
+gethostid [] (3) - get or set the unique identifier of the current host
+gethostname [] (2) - get/set hostname
+geticonset [] (1) - gets the current Window Maker iconset
+getifaddrs [] (3) - get interface addresses
+getipnodebyaddr [] (3) - get network hostnames and addresses
+getipnodebyname [] (3) - get network hostnames and addresses
+getitimer [] (2) - get or set value of an interval timer
+getkeycodes [] (8) - print kernel scancode-to-keycode mapping table
+getline [] (3) - delimited string input
+getloadavg [] (3) - get system load averages
+getlogin [] (3) - get username
+getlogin_r [] (3) - get username
+getmail [] (1) - retrieve messages from one or more POP3, IMAP4, or SDPS mailboxes and deliver to a maildir, mboxrd-format mbox file, or external MDA
+getmail_fetch [] (1) - retrieve messages from one or more POP3 or POP3-over-SSL mailboxes and deliver to a maildir, mboxrd-format mbox file, or external MDA
+getmail_maildir [] (1) - read a message from stdin and deliver to a named maildir
+getmail_mbox [] (1) - read a message from stdin and deliver to a named mboxrd-format mbox file with fcntl-style locking
+getmaxx [] (3) - get curses cursor and window coordinates
+getmaxy [] (3) - get curses cursor and window coordinates
+getmaxyx [] (3) - get curses cursor and window coordinates
+getmntent [] (3) - get file system descriptor file entry
+getmntent_r [] (3) - get file system descriptor file entry
+getmouse [] (3) - mouse interface through curses
+getn_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+getnameinfo [] (3) - address-to-name translation in protocol-independent manner
+getnetbyaddr [] (3) - get network entry
+getnetbyname [] (3) - get network entry
+getnetbyname_r [] (3) - get network entry (reentrant)
+getnetbynumber_r [] (3) - get network entry (reentrant)
+getnetent [] (3) - get network entry
+getnetent_r [] (3) - get network entry (reentrant)
+getnetgrent [] (3) - handle network group entries
+getnetgrent_r [] (3) - handle network group entries
+getnstr [] (3) - accept character strings from curses terminal keyboard
+getopt [] (1) - parse command options (enhanced)
+getopt [] (3) - Parse command-line options
+getopt [] (3) - Process single-character switches with switch clustering
+getopt_long [] (3) - Parse command-line options
+getopt_long_only [] (3) - Parse command-line options
+getopts [] (1) - bash built-in commands, see bash(1)
+getopts [] (3) - Process single-character switches with switch clustering
+getpagesize [] (2) - get memory page size
+getparentpaths_by_handle [] (3) - file handle operations
+getparents_by_handle [] (3) - file handle operations
+getparx [] (3) - get curses cursor and window coordinates
+getpary [] (3) - get curses cursor and window coordinates
+getparyx [] (3) - get curses cursor and window coordinates
+getpass [] (3) - get a password
+getpeername [] (1) - get information about this or that end of the socket's connection
+getpeername [] (2) - get name of connected peer socket
+getpgid [] (2) - set/get process group
+getpgrp [] (2) - set/get process group
+getpid [] (2) - get process identification
+getpmsg [] (2) - unimplemented system calls
+getppid [] (2) - get process identification
+getpriority [] (2) - get/set program scheduling priority
+getprotobyname [] (3) - get protocol entry
+getprotobyname_r [] (3) - get protocol entry (reentrant)
+getprotobynumber [] (3) - get protocol entry
+getprotobynumber_r [] (3) - get protocol entry (reentrant)
+getprotoent [] (3) - get protocol entry
+getprotoent_r [] (3) - get protocol entry (reentrant)
+getpt [] (3) - open the pseudo-terminal master (PTM)
+getpw [] (3) - Re-construct password line entry
+getpwent [] (3) - get password file entry
+getpwent_r [] (3) - get passwd file entry reentrantly
+getpwnam [] (3) - get password file entry
+getpwnam_r [] (3) - get password file entry
+getpwuid [] (3) - get password file entry
+getpwuid_r [] (3) - get password file entry
+getresgid [] (2) - get real, effective and saved user/group IDs
+getresuid [] (2) - get real, effective and saved user/group IDs
+getrlimit [] (2) - get/set resource limits
+getrpcbyname [] (3) - get RPC entry
+getrpcbyname_r [] (3) - get RPC entry (reentrant)
+getrpcbynumber [] (3) - get RPC entry
+getrpcbynumber_r [] (3) - get RPC entry (reentrant)
+getrpcent [] (3) - get RPC entry
+getrpcent_r [] (3) - get RPC entry (reentrant)
+getrpcport [] (3) - get RPC port number
+getrusage [] (2) - get resource usage
+gets [] (3) - input of characters and strings
+gets [] (n) - Read a line from a channel
+getservbyname [] (3) - get service entry
+getservbyname_r [] (3) - get service entry (reentrant)
+getservbyport [] (3) - get service entry
+getservbyport_r [] (3) - get service entry (reentrant)
+getservent [] (3) - get service entry
+getservent_r [] (3) - get service entry (reentrant)
+getsid [] (2) - get session ID
+getsockname [] (2) - get socket name
+getsockopt [] (2) - get and set options on sockets
+getspent [] (3) - get shadow password file entry
+getspent_r [] (3) - get shadow password file entry
+getspnam [] (3) - get shadow password file entry
+getspnam_r [] (3) - get shadow password file entry
+getstr [] (3) - accept character strings from curses terminal keyboard
+getstyle [] (1) - dumps the current Window Maker style related configuration or creates a theme pack
+getsubopt [] (3) - parse suboption arguments from a string
+getsyx [] (3) - low-level curses routines
+gettext [] (1) - translate message
+gettext [] (3) - translate message
+gettextize [] (1) - install or upgrade gettext infrastructure
+gettid [] (2) - get thread identification
+gettimeofday [] (2) - get / set time
+getttyent [] (3) - get ttys file entry
+getttynam [] (3) - get ttys file entry
+getty [] (1) - sets terminal mode, speed, and conditions port
+gettydefs [] (5) - speed and tty settings used by getty
+getuid [] (2) - get user identity
+getumask [] (3) - get file creation mask
+getusershell [] (3) - get permitted user shells
+getutent [] (3) - access utmp file entries
+getutid [] (3) - access utmp file entries
+getutline [] (3) - access utmp file entries
+getutmp [] (3) - copy utmp structure to utmpx, and vice versa
+getutmpx [] (3) - copy utmp structure to utmpx, and vice versa
+getw [] (3) - input and output of words (ints)
+getwc [] (3) - read a wide character from a FILE stream
+getwchar [] (3) - read a wide character from standard input
+getwd [] (3) - Get current working directory
+getwin [] (3) - miscellaneous curses utility routines
+getxattr [] (2) - retrieve an extended attribute value
+getyx [] (3) - get curses cursor and window coordinates
+getzones [] (1) - list AppleTalk zone names
+gfdl [] (7) - GNU Free Documentation License
+gflux [] (6) - rippling surface graphics hack
+gfortran [] (1) - GNU Fortran compiler
+gftp [] (1) - file transfer client for *NIX based machines
+gibi [] (7) - decimal and binary prefixes
+gif2tiff [] (1) - create a TIFF file from a GIF87 format image file
+giftopnm [] (1) - convert a GIF file into a portable anymap
+giga [] (7) - decimal and binary prefixes
+gij [] (1) - GNU interpreter for Java bytecode
+gimp [] (1) - an image manipulation and paint program
+gimp [] (1) - remote - tells a running GIMP to open a (local or remote) image file
+gimprc [] (5) - gimp configuration file
+gimptool [] (1) - 2.0 - script to perform various GIMPy functions
+git [] (1) - add - Add file contents to the index
+git [] (1) - am - Apply a series of patches from a mailbox
+git [] (1) - annotate - Annotate file lines with commit information
+git [] (1) - apply - Apply a patch on a git index file and a working tree
+git [] (1) - archimport - Import an Arch repository into git
+git [] (1) - archive - Create an archive of files from a named tree
+git [] (1) - bisect - Find by binary search the change that introduced a bug
+git [] (1) - blame - Show what revision and author last modified each line of a file
+git [] (1) - branch - List, create, or delete branches
+git [] (1) - bundle - Move objects and refs by archive
+git [] (1) - cat-file - Provide content or type and size information for repository objects
+git [] (1) - check-attr - Display gitattributes information
+git [] (1) - check-ref-format - Ensures that a reference name is well formed
+git [] (1) - checkout - Checkout a branch or paths to the working tree
+git [] (1) - checkout-index - Copy files from the index to the working tree
+git [] (1) - cherry - Find commits not merged upstream
+git [] (1) - cherry-pick - Apply the change introduced by an existing commit
+git [] (1) - citool - Graphical alternative to git-commit
+git [] (1) - clean - Remove untracked files from the working tree
+git [] (1) - clone - Clone a repository into a new directory
+git [] (1) - commit - Record changes to the repository
+git [] (1) - commit-tree - Create a new commit object
+git [] (1) - config - Get and set repository or global options
+git [] (1) - count-objects - Count unpacked number of objects and their disk consumption
+git [] (1) - cvsexportcommit - Export a single commit to a CVS checkout
+git [] (1) - cvsimport - Salvage your data out of another SCM people love to hate
+git [] (1) - cvsserver - A CVS server emulator for git
+git [] (1) - daemon - A really simple server for git repositories
+git [] (1) - describe - Show the most recent tag that is reachable from a commit
+git [] (1) - diff - Show changes between commits, commit and working tree, etc
+git [] (1) - diff-files - Compares files in the working tree and the index
+git [] (1) - diff-index - Compares content and mode of blobs between the index and repository
+git [] (1) - diff-tree - Compares the content and mode of blobs found via two tree objects
+git [] (1) - fast-export - Git data exporter
+git [] (1) - fast-import - Backend for fast Git data importers
+git [] (1) - fetch - Download objects and refs from another repository
+git [] (1) - fetch-pack - Receive missing objects from another repository
+git [] (1) - filter-branch - Rewrite branches
+git [] (1) - fmt-merge-msg - Produce a merge commit message
+git [] (1) - for-each-ref - Output information on each ref
+git [] (1) - format-patch - Prepare patches for e-mail submission
+git [] (1) - fsck - Verifies the connectivity and validity of the objects in the database
+git [] (1) - fsck-objects - Verifies the connectivity and validity of the objects in the database
+git [] (1) - gc - Cleanup unnecessary files and optimize the local repository
+git [] (1) - get-tar-commit-id - Extract commit ID from an archive created using git-archive
+git [] (1) - grep - Print lines matching a pattern
+git [] (1) - gui - A portable graphical interface to Git
+git [] (1) - hash-object - Compute object ID and optionally creates a blob from a file
+git [] (1) - help - display help information about git
+git [] (1) - http-fetch - Download from a remote git repository via HTTP
+git [] (1) - http-push - Push objects over HTTP/DAV to another repository
+git [] (1) - imap-send - Send a collection of patches from stdin to an IMAP folder
+git [] (1) - index-pack - Build pack index file for an existing packed archive
+git [] (1) - init - Create an empty git repository or reinitialize an existing one
+git [] (1) - init-db - Creates an empty git repository
+git [] (1) - instaweb - Instantly browse your working repository in gitweb
+git [] (1) - log - Show commit logs
+git [] (1) - lost-found - Recover lost refs that luckily have not yet been pruned
+git [] (1) - ls-files - Show information about files in the index and the working tree
+git [] (1) - ls-remote - List references in a remote repository
+git [] (1) - ls-tree - List the contents of a tree object
+git [] (1) - mailinfo - Extracts patch and authorship from a single e-mail message
+git [] (1) - mailsplit - Simple UNIX mbox splitter program
+git [] (1) - merge - Join two or more development histories together
+git [] (1) - merge-base - Find as good common ancestors as possible for a merge
+git [] (1) - merge-file - Run a three-way file merge
+git [] (1) - merge-index - Run a merge for files needing merging
+git [] (1) - merge-one-file - The standard helper program to use with git-merge-index
+git [] (1) - merge-tree - Show three-way merge without touching index
+git [] (1) - mergetool - Run merge conflict resolution tools to resolve merge conflicts
+git [] (1) - mktag - Creates a tag object
+git [] (1) - mktree - Build a tree-object from ls-tree formatted text
+git [] (1) - mv - Move or rename a file, a directory, or a symlink
+git [] (1) - name-rev - Find symbolic names for given revs
+git [] (1) - pack-objects - Create a packed archive of objects
+git [] (1) - pack-redundant - Find redundant pack files
+git [] (1) - pack-refs - Pack heads and tags for efficient repository access
+git [] (1) - parse-remote - Routines to help parsing remote repository access parameters
+git [] (1) - patch-id - Compute unique ID for a patch
+git [] (1) - peek-remote - List the references in a remote repository
+git [] (1) - prune - Prune all unreachable objects from the object database
+git [] (1) - prune-packed - Remove extra objects that are already in pack files
+git [] (1) - pull - Fetch from and merge with another repository or a local branch
+git [] (1) - push - Update remote refs along with associated objects
+git [] (1) - quiltimport - Applies a quilt patchset onto the current branch
+git [] (1) - read-tree - Reads tree information into the index
+git [] (1) - rebase - Forward-port local commits to the updated upstream head
+git [] (1) - receive-pack - Receive what is pushed into the repository
+git [] (1) - reflog - Manage reflog information
+git [] (1) - relink - Hardlink common objects in local repositories
+git [] (1) - remote - manage set of tracked repositories
+git [] (1) - repack - Pack unpacked objects in a repository
+git [] (1) - repo-config - Get and set repository or global options
+git [] (1) - request-pull - Generates a summary of pending changes
+git [] (1) - rerere - Reuse recorded resolution of conflicted merges
+git [] (1) - reset - Reset current HEAD to the specified state
+git [] (1) - rev-list - Lists commit objects in reverse chronological order
+git [] (1) - rev-parse - Pick out and massage parameters
+git [] (1) - revert - Revert an existing commit
+git [] (1) - rm - Remove files from the working tree and from the index
+git [] (1) - send-email - Send a collection of patches as emails
+git [] (1) - send-pack - Push objects over git protocol to another repository
+git [] (1) - sh-setup - Common git shell script setup code
+git [] (1) - shell - Restricted login shell for GIT-only SSH access
+git [] (1) - shortlog - Summarize 'git-log' output
+git [] (1) - show - Show various types of objects
+git [] (1) - show-branch - Show branches and their commits
+git [] (1) - show-index - Show packed archive index
+git [] (1) - show-ref - List references in a local repository
+git [] (1) - stage - Add file contents to the staging area
+git [] (1) - stash - Stash the changes in a dirty working directory away
+git [] (1) - status - Show the working tree status
+git [] (1) - stripspace - Filter out empty lines
+git [] (1) - submodule - Initialize, update or inspect submodules
+git [] (1) - svn - Bidirectional operation between a single Subversion branch and git
+git [] (1) - symbolic-ref - Read and modify symbolic refs
+git [] (1) - tag - Create, list, delete or verify a tag object signed with GPG
+git [] (1) - tar-tree - Create a tar archive of the files in the named tree object
+git [] (1) - the stupid content tracker
+git [] (1) - unpack-file - Creates a temporary file with a blob's contents
+git [] (1) - unpack-objects - Unpack objects from a packed archive
+git [] (1) - update-index - Register file contents in the working tree to the index
+git [] (1) - update-ref - Update the object name stored in a ref safely
+git [] (1) - update-server-info - Update auxiliary info file to help dumb servers
+git [] (1) - upload-archive - Send archive back to git-archive
+git [] (1) - upload-pack - Send objects packed back to git-fetch-pack
+git [] (1) - var - Show a git logical variable
+git [] (1) - verify-pack - Validate packed git archive files
+git [] (1) - verify-tag - Check the GPG signature of tags
+git [] (1) - web--browse - git helper script to launch a web browser
+git [] (1) - whatchanged - Show logs with difference each commit introduces
+git [] (1) - write-tree - Create a tree object from the current index
+gitattributes [] (5) - defining attributes per path
+gitcli [] (7) - git command line interface and conventions
+gitcore [] (7) - tutorial - A git core tutorial for developers
+gitcvs [] (7) - migration - git for CVS users
+gitdiffcore [] (7) - Tweaking diff output (June 2005)
+gitglossary [] (7) - A GIT Glossary
+githooks [] (5) - Hooks used by git
+gitignore [] (5) - Specifies intentionally untracked files to ignore
+gitk [] (1) - The git repository browser
+gitmodules [] (5) - defining submodule properties
+gitrepository [] (5) - layout - Git Repository Layout
+gittutorial [] (7) - 2 - A tutorial introduction to git: part two
+gittutorial [] (7) - A tutorial introduction to git (for version 1.5.1 or newer)
+gitworkflows [] (7) - An overview of recommended workflows with git
+gjar [] (1) - - Archive tool for Java archives
+gjarsigner [] (1) - Java ARchive (JAR) file signing and verification tool
+gjavah [] (1) - - generate header files from Java class files
+gkeytool [] (1) - Manage private keys and public certificates
+gkrellm [] (1) - The GNU Krell Monitors
+gkrellmd [] (1) - The GNU Krell Monitors Server
+gl_allocatecontext [] (3) - allocate a graphics context
+gl_bcircle [] (3) - draw a filled or unfilled Bresenham circle
+gl_circle [] (3) - draw a circle
+gl_clearscreen [] (3) - clear the screen
+gl_colorfont [] (3) - change the color of a font
+gl_compileboxmask [] (3) - compress a masked bitmap
+gl_compiledboxmasksize [] (3) - compute the size of a compiled masked box
+gl_copybox [] (3) - copy a rectangular screen area
+gl_copyboxfromcontext [] (3) - copy rectangular area from another context
+gl_copyboxtocontext [] (3) - copy a rectangular area to another context
+gl_copyscreen [] (3) - copy the screen contents of contexts
+gl_disableclipping [] (3) - disables clipping
+gl_enableclipping [] (3) - enables clipping
+gl_enablepageflipping [] (3) - enables automatic page flipping
+gl_expandfont [] (3) - expand a packed pixel font
+gl_fillbox [] (3) - fill a rectangular area
+gl_fillcircle [] (3) - draw a filled circle
+gl_font8x8 [] (3) - a packed 8x8 pixel font
+gl_freecontext [] (3) - free a virtual screen
+gl_getbox [] (3) - copy a rectangular pixmap from the screen to a buffer
+gl_getcontext [] (3) - get the current graphics contents
+gl_getpalette [] (3) - read the color palette
+gl_getpalettecolor [] (3) - read the color palette
+gl_getpalettecolors [] (3) - read the color palette
+gl_getpixel [] (3) - return the color of a pixel
+gl_getpixelrgb [] (3) - store color components of a pixel
+gl_hline [] (3) - draw a horizontal line
+gl_line [] (3) - draw a line
+gl_printf [] (3) - write formatted output in graphic mode
+gl_putbox [] (3) - copy a pixmap to a rectangular area
+gl_putboxmask [] (3) - copy a masked pixmap to a rectangular area
+gl_putboxmaskcompiled [] (3) - copy a compiled masked pixmap to a rectangular area
+gl_putboxpart [] (3) - copy a partial pixmap to a rectangular area
+gl_rgbcolor [] (3) - return pixel value corresponding to an rgb color
+gl_scalebox [] (3) - scale a pixmap
+gl_setclippingwindow [] (3) - set the clipping window
+gl_setcontext [] (3) - set a previously saved context
+gl_setcontextheight [] (3) - set the dimension of a context
+gl_setcontextvga [] (3) - set the context to the physical screen
+gl_setcontextvgavirtual [] (3) - set the context to a virtual mode
+gl_setcontextvirtual [] (3) - define a virtual context
+gl_setcontextwidth [] (3) - set the dimension of a context
+gl_setdisplaystart [] (3) - set the start of the screen are displayed
+gl_setfont [] (3) - set the text font to be used
+gl_setfontcolors [] (3) - set the font colors
+gl_setpalette [] (3) - set the color palette
+gl_setpalettecolor [] (3) - set the color palette
+gl_setpalettecolors [] (3) - set the color palette
+gl_setpixel [] (3) - draw a pixel
+gl_setpixelrgb [] (3) - draw a pixel
+gl_setrgbpalette [] (3) - set a 256-color RGB palette
+gl_setscreenoffset [] (3) - set a memory offset for copyscreen
+gl_setwritemode [] (3) - set the font writemode flags
+gl_striangle [] (3) - draw a solid colored triangle
+gl_swtriangle [] (3) - draw a solid pixmap mapped on a triangle
+gl_triangle [] (3) - draw a triangle with interpolated colors
+gl_trigetcolorlookup [] (3) - manages a color lookup table for shadowing
+gl_trisetcolorlookup [] (3) - manages a color lookup table for shadowing
+gl_trisetdrawpoint [] (3) - set a triangle drawing function
+gl_write [] (3) - write a text string
+gl_writen [] (3) - write a text string
+gl_wtriangle [] (3) - draw a shadowed pixmap mapped on a triangle
+glblur [] (6) - 3D radial blur texture fields
+glcells [] (6) - growing cells graphics hack
+gleidescope [] (6) - a tiled OpenGL kaleidescope
+glhanoi [] (6) - OpenGL Towers of Hanoi
+glib [] (1) - config - script to get information about the installed version of GLib
+glib [] (1) - genmarshal - C code marshaller generation utility for GLib closures
+glib [] (1) - gettextize - gettext internationalization utility
+glib [] (1) - mkenums - C language enum description generation utility
+glint [] (4) - GLINT/Permedia video driver
+glknots [] (6) - generates some twisting 3d knot patterns
+glmatrix [] (6) - simulates the title sequence effect of the movie
+glob [] (3) - find pathnames matching a pattern, free memory from glob()
+glob [] (7) - Globbing pathnames
+glob [] (n) - Return names of files that match patterns
+global [] (n) - Access global variables
+globaltime (1) - International multiclock timeconverter for the Xfce Desktop Environment. It is part of Orage
+globaltime [] (1) - International multiclock timeconverter for the Xfce Desktop Environment. It is part of Orage
+globfree [] (3) - find pathnames matching a pattern, free memory from glob()
+glplanet [] (6) - rotating 3d texture-mapped planet
+glschool [] (6) - a 3D schooling simulation
+glslideshow [] (6) - slideshow of images using smooth zooming and fades
+glsnake [] (6) - OpenGL enhanced Rubik's Snake cyclewaster
+gltext [] (6) - draws text spinning around in 3D
+gmtime [] (3) - transform date and time to broken-down time or ASCII
+gmtime_r [] (3) - transform date and time to broken-down time or ASCII
+gnative2ascii [] (1) - - An encoding converter
+gnu_get_libc_release [] (3) - get glibc version and release
+gnu_get_libc_version [] (3) - get glibc version and release
+gnuplot [] (1) - an interactive plotting program
+gnutls [] (1) - cli - GNU TLS test client
+gnutls [] (1) - cli-debug - GNU TLS test client, with verbose output
+gnutls [] (1) - serv - GNU TLS test server
+gnutls_alert_get [] (3) - Returns the last alert number received
+gnutls_alert_get_name [] (3) - Returns a string describing the alert number given
+gnutls_alert_send [] (3) - send an alert message to the peer
+gnutls_alert_send_appropriate [] (3) - send alert to peer depending on error code
+gnutls_anon_allocate_client_credentials [] (3) - Used to allocate a credentials structure
+gnutls_anon_allocate_server_credentials [] (3) - Used to allocate an gnutls_anon_server_credentials_t structure
+gnutls_anon_free_client_credentials [] (3) - Used to free an allocated gnutls_anon_client_credentials_t structure
+gnutls_anon_free_server_credentials [] (3) - Used to free an allocated gnutls_anon_server_credentials_t structure
+gnutls_anon_set_params_function [] (3) - set the DH or RSA parameters callback
+gnutls_anon_set_server_dh_params [] (3) - set the DH parameters for a server to use
+gnutls_anon_set_server_params_function [] (3) - set the DH parameters callback
+gnutls_auth_client_get_type [] (3) - Returns the type of credentials for the client authentication schema
+gnutls_auth_get_type [] (3) - Returns the type of credentials for the current authentication schema
+gnutls_auth_server_get_type [] (3) - Returns the type of credentials for the server authentication schema
+gnutls_bye [] (3) - terminate the current TLS/SSL connection
+gnutls_certificate_activation_time_peers [] (3) - return the peer's certificate activation time
+gnutls_certificate_allocate_credentials [] (3) - Used to allocate a gnutls_certificate_credentials_t structure
+gnutls_certificate_client_get_request_status [] (3) - return the certificate request status
+gnutls_certificate_client_set_retrieve_function [] (3) - Used to set a callback to retrieve the certificate
+gnutls_certificate_expiration_time_peers [] (3) - return the peer's certificate expiration time
+gnutls_certificate_free_ca_names [] (3) - Used to free all the CA names from a gnutls_certificate_credentials_t structure
+gnutls_certificate_free_cas [] (3) - Used to free all the CAs from a gnutls_certificate_credentials_t structure
+gnutls_certificate_free_credentials [] (3) - Used to free an allocated gnutls_certificate_credentials_t structure
+gnutls_certificate_free_crls [] (3) - Used to free all the CRLs from a gnutls_certificate_credentials_t structure
+gnutls_certificate_free_keys [] (3) - Used to free all the keys from a gnutls_certificate_credentials_t structure
+gnutls_certificate_get_openpgp_keyring [] (3) - Used to export the keyring from a gnutls_certificate_credentials_t structure
+gnutls_certificate_get_ours [] (3) - return the raw certificate sent in the last handshake
+gnutls_certificate_get_peers [] (3) - return the peer's raw certificate
+gnutls_certificate_get_x509_cas [] (3) - Used to export all the CAs from a gnutls_certificate_credentials_t structure
+gnutls_certificate_get_x509_crls [] (3) - Used to export all the CRLs from a gnutls_certificate_credentials_t structure
+gnutls_certificate_send_x509_rdn_sequence [] (3) - order gnutls to send or not the x.509 rdn sequence
+gnutls_certificate_server_set_request [] (3) - Used to set whether to request a client certificate
+gnutls_certificate_server_set_retrieve_function [] (3) - Used to set a callback to retrieve the certificate
+gnutls_certificate_set_dh_params [] (3) - set the DH parameters for a server to use
+gnutls_certificate_set_openpgp_key [] (3) - Used to set keys in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_openpgp_key_file [] (3) - Used to set OpenPGP keys
+gnutls_certificate_set_openpgp_key_file2 [] (3) - Used to set OpenPGP keys
+gnutls_certificate_set_openpgp_key_mem [] (3) - Used to set OpenPGP keys
+gnutls_certificate_set_openpgp_key_mem2 [] (3) - Used to set OpenPGP keys
+gnutls_certificate_set_openpgp_keyring_file [] (3) - Sets a keyring file for OpenPGP
+gnutls_certificate_set_openpgp_keyring_mem [] (3) - Add keyring data for OpenPGP
+gnutls_certificate_set_params_function [] (3) - set the DH or RSA parameters callback
+gnutls_certificate_set_rsa_export_params [] (3) - set the RSA parameters for a server to use
+gnutls_certificate_set_verify_flags [] (3) - set the flags to be used at certificate verification
+gnutls_certificate_set_verify_limits [] (3) - set the upper limits to be used at certificate verification
+gnutls_certificate_set_x509_crl [] (3) - Used to add CRLs in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_crl_file [] (3) - Used to add CRLs in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_crl_mem [] (3) - Used to add CRLs in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_key [] (3) - Used to set keys in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_key_file [] (3) - Used to set keys in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_key_mem [] (3) - Used to set keys in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_simple_pkcs12_file [] (3) - API function
+gnutls_certificate_set_x509_trust [] (3) - Used to add trusted CAs in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_trust_file [] (3) - Used to add trusted CAs in a gnutls_certificate_credentials_t structure
+gnutls_certificate_set_x509_trust_mem [] (3) - Used to add trusted CAs in a gnutls_certificate_credentials_t structure
+gnutls_certificate_type_get [] (3) - Returns the currently used certificate type
+gnutls_certificate_type_get_id [] (3) - Returns the gnutls id of the specified in string type
+gnutls_certificate_type_get_name [] (3) - Returns a string with the name of the specified certificate type
+gnutls_certificate_type_list [] (3) - Get a list of supported certificate types
+gnutls_certificate_type_set_priority [] (3) - Sets the priority on the certificate types supported by gnutls
+gnutls_certificate_verify_peers [] (3) - return the peer's certificate verification status
+gnutls_certificate_verify_peers2 [] (3) - return the peer's certificate verification status
+gnutls_check_version [] (3) - check the library's version
+gnutls_cipher_get [] (3) - Returns the currently used cipher
+gnutls_cipher_get_id [] (3) - Returns the gnutls id of the specified in string algorithm
+gnutls_cipher_get_key_size [] (3) - Returns the length of the cipher's key size
+gnutls_cipher_get_name [] (3) - Returns a string with the name of the specified cipher algorithm
+gnutls_cipher_list [] (3) - Get a list of supported ciphers
+gnutls_cipher_set_priority [] (3) - Sets the priority on the ciphers supported by gnutls
+gnutls_cipher_suite_get_name [] (3) - Returns a string with the name of the specified cipher suite
+gnutls_cipher_suite_info [] (3) - API function
+gnutls_compression_get [] (3) - Returns the currently used compression algorithm
+gnutls_compression_get_id [] (3) - Returns the gnutls id of the specified in string algorithm
+gnutls_compression_get_name [] (3) - Returns a string with the name of the specified compression algorithm
+gnutls_compression_list [] (3) - Get a list of supported compression methods
+gnutls_compression_set_priority [] (3) - Sets the priority on the compression algorithms supported by gnutls
+gnutls_credentials_clear [] (3) - Clears all the credentials previously set
+gnutls_credentials_set [] (3) - Sets the needed credentials for the specified authentication algorithm
+gnutls_crypto_bigint_register2 [] (3) - register a bigint interface
+gnutls_crypto_cipher_register2 [] (3) - register a cipher interface
+gnutls_crypto_digest_register2 [] (3) - register a digest interface
+gnutls_crypto_mac_register2 [] (3) - register a mac interface
+gnutls_crypto_pk_register2 [] (3) - register a public key interface
+gnutls_crypto_rnd_register2 [] (3) - register a random generator
+gnutls_crypto_single_cipher_register2 [] (3) - register a cipher algorithm
+gnutls_crypto_single_digest_register2 [] (3) - register a digest algorithm
+gnutls_crypto_single_mac_register2 [] (3) - register a MAC algorithm
+gnutls_db_check_entry [] (3) - check if the given db entry has expired
+gnutls_db_get_ptr [] (3) - Returns the pointer which is sent to db functions
+gnutls_db_remove_session [] (3) - remove the current session data from the database
+gnutls_db_set_cache_expiration [] (3) - Set the expiration time for resumed sessions
+gnutls_db_set_ptr [] (3) - Set a pointer to be sent to db functions
+gnutls_db_set_remove_function [] (3) - Set the function that will be used to remove data
+gnutls_db_set_retrieve_function [] (3) - Set the function that will be used to get data
+gnutls_db_set_store_function [] (3) - Set the function that will be used to put data
+gnutls_deinit [] (3) - clear all buffers associated with a session
+gnutls_dh_get_group [] (3) - return the group of the DH authentication
+gnutls_dh_get_peers_public_bits [] (3) - return the bits used in DH authentication
+gnutls_dh_get_prime_bits [] (3) - return the bits used in DH authentication
+gnutls_dh_get_pubkey [] (3) - return the peer's public key used in DH authentication
+gnutls_dh_get_secret_bits [] (3) - return the bits used in DH authentication
+gnutls_dh_params_cpy [] (3) - copy a DH parameters structure
+gnutls_dh_params_deinit [] (3) - deinitialize the DH parameters
+gnutls_dh_params_export_pkcs3 [] (3) - export DH params to a pkcs3 structure
+gnutls_dh_params_export_raw [] (3) - export the raw DH parameters
+gnutls_dh_params_generate2 [] (3) - generate new DH parameters
+gnutls_dh_params_import_pkcs3 [] (3) - import DH params from a pkcs3 structure
+gnutls_dh_params_import_raw [] (3) - import DH parameters
+gnutls_dh_params_init [] (3) - initialize the DH parameters
+gnutls_dh_set_prime_bits [] (3) - Used to set the bits for a DH ciphersuite
+gnutls_error_is_fatal [] (3) - Returns non-zero in case of a fatal error
+gnutls_error_to_alert [] (3) - return an alert code based on the given error code
+gnutls_ext_register [] (3) - Register a handler for a TLS extension
+gnutls_extra_check_version [] (3) - This function checks the library's version
+gnutls_fingerprint [] (3) - calculate the fingerprint of the given data
+gnutls_free [] (3) - Returns a free() like function
+gnutls_global_deinit [] (3) - deinitialize the global data
+gnutls_global_init [] (3) - initialize the global data to defaults
+gnutls_global_init_extra [] (3) - initializes the global state of gnutls-extra
+gnutls_global_set_log_function [] (3) - set the logging function
+gnutls_global_set_log_level [] (3) - set the logging level
+gnutls_global_set_mem_functions [] (3) - set the memory allocation functions
+gnutls_handshake [] (3) - This is the main function in the handshake protocol
+gnutls_handshake_get_last_in [] (3) - Returns the last handshake message received
+gnutls_handshake_get_last_out [] (3) - Returns the last handshake message sent
+gnutls_handshake_set_max_packet_length [] (3) - set the maximum size of the handshake
+gnutls_handshake_set_post_client_hello_function [] (3) - set callback to be called after the client hello is received
+gnutls_handshake_set_private_extensions [] (3) - Used to enable the private cipher suites
+gnutls_hex2bin [] (3) - convert hex string into binary buffer
+gnutls_hex_decode [] (3) - decode hex encoded data
+gnutls_hex_encode [] (3) - convert raw data to hex encoded
+gnutls_ia_allocate_client_credentials [] (3) - Used to allocate an gnutls_ia_server_credentials_t structure
+gnutls_ia_allocate_server_credentials [] (3) - Used to allocate an gnutls_ia_server_credentials_t structure
+gnutls_ia_enable [] (3) - Indicate willingness for TLS/IA application phases
+gnutls_ia_endphase_send [] (3) - API function
+gnutls_ia_extract_inner_secret [] (3) - API function
+gnutls_ia_free_client_credentials [] (3) - Used to free an allocated #gnutls_ia_client_credentials_t structure
+gnutls_ia_free_server_credentials [] (3) - Used to free an allocated #gnutls_ia_server_credentials_t structure
+gnutls_ia_generate_challenge [] (3) - API function
+gnutls_ia_get_client_avp_ptr [] (3) - Returns the pointer which is sent to TLS/IA callback
+gnutls_ia_get_server_avp_ptr [] (3) - Returns the pointer which is sent to TLS/IA callback
+gnutls_ia_handshake [] (3) - API function
+gnutls_ia_handshake_p [] (3) - API function
+gnutls_ia_permute_inner_secret [] (3) - API function
+gnutls_ia_recv [] (3) - read data from the TLS/IA protocol
+gnutls_ia_send [] (3) - API function
+gnutls_ia_set_client_avp_function [] (3) - Used to set a AVP callback
+gnutls_ia_set_client_avp_ptr [] (3) - Sets a pointer to be sent to TLS/IA callback
+gnutls_ia_set_server_avp_function [] (3) - Used to set a AVP callback
+gnutls_ia_set_server_avp_ptr [] (3) - Sets a pointer to be sent to TLS/IA callback
+gnutls_ia_verify_endphase [] (3) - API function
+gnutls_init [] (3) - initialize the session to null (null encryption etc...)
+gnutls_kx_get [] (3) - Returns the key exchange algorithm
+gnutls_kx_get_id [] (3) - Returns the gnutls id of the specified in string algorithm
+gnutls_kx_get_name [] (3) - Returns a string with the name of the specified key exchange algorithm
+gnutls_kx_list [] (3) - Get a list of supported key exchange methods
+gnutls_kx_set_priority [] (3) - Sets the priority on the key exchange algorithms supported by gnutls
+gnutls_mac_get [] (3) - Returns the currently used mac algorithm
+gnutls_mac_get_id [] (3) - Returns the gnutls id of the specified in string algorithm
+gnutls_mac_get_key_size [] (3) - Returns the length of the MAC's key size
+gnutls_mac_get_name [] (3) - Returns a string with the name of the specified mac algorithm
+gnutls_mac_list [] (3) - Get a list of supported MAC algorithms
+gnutls_mac_set_priority [] (3) - Sets the priority on the mac algorithms supported by gnutls
+gnutls_malloc [] (3) - Allocates and returns data
+gnutls_openpgp_crt_check_hostname [] (3) - compare hostname with the key's hostname
+gnutls_openpgp_crt_deinit [] (3) - deinitialize memory used by a #gnutls_openpgp_crt_t structure
+gnutls_openpgp_crt_export [] (3) - export a RAW or BASE64 encoded key
+gnutls_openpgp_crt_get_auth_subkey [] (3) - Gets the keyID of an authentication subkey
+gnutls_openpgp_crt_get_creation_time [] (3) - Extract the timestamp
+gnutls_openpgp_crt_get_expiration_time [] (3) - Extract the expire date
+gnutls_openpgp_crt_get_fingerprint [] (3) - Gets the fingerprint
+gnutls_openpgp_crt_get_key_id [] (3) - Gets the keyID
+gnutls_openpgp_crt_get_key_usage [] (3) - This function returns the key's usage
+gnutls_openpgp_crt_get_name [] (3) - Extracts the userID
+gnutls_openpgp_crt_get_pk_algorithm [] (3) - return the key's PublicKey algorithm
+gnutls_openpgp_crt_get_pk_dsa_raw [] (3) - export the DSA public key
+gnutls_openpgp_crt_get_pk_rsa_raw [] (3) - export the RSA public key
+gnutls_openpgp_crt_get_preferred_key_id [] (3) - Gets the preferred keyID
+gnutls_openpgp_crt_get_revoked_status [] (3) - Gets the revoked status of the key
+gnutls_openpgp_crt_get_subkey_count [] (3) - return the number of subkeys
+gnutls_openpgp_crt_get_subkey_creation_time [] (3) - Extract the timestamp
+gnutls_openpgp_crt_get_subkey_expiration_time [] (3) - Extract the expire date
+gnutls_openpgp_crt_get_subkey_fingerprint [] (3) - Gets the fingerprint of a subkey
+gnutls_openpgp_crt_get_subkey_id [] (3) - Gets the keyID
+gnutls_openpgp_crt_get_subkey_idx [] (3) - Returns the subkey's index
+gnutls_openpgp_crt_get_subkey_pk_algorithm [] (3) - return the subkey's PublicKey algorithm
+gnutls_openpgp_crt_get_subkey_pk_dsa_raw [] (3) - export the DSA public key
+gnutls_openpgp_crt_get_subkey_pk_rsa_raw [] (3) - export the RSA public key
+gnutls_openpgp_crt_get_subkey_revoked_status [] (3) - Gets the revoked status of the key
+gnutls_openpgp_crt_get_subkey_usage [] (3) - returns the key's usage
+gnutls_openpgp_crt_get_version [] (3) - Extracts the version of the key
+gnutls_openpgp_crt_import [] (3) - import a RAW or BASE64 encoded key
+gnutls_openpgp_crt_init [] (3) - initialize a #gnutls_openpgp_crt_t structure
+gnutls_openpgp_crt_print [] (3) - Pretty print OpenPGP certificates
+gnutls_openpgp_crt_set_preferred_key_id [] (3) - Sets the prefered keyID
+gnutls_openpgp_crt_verify_ring [] (3) - Verify all signatures in the key
+gnutls_openpgp_crt_verify_self [] (3) - Verify the self signature on the key
+gnutls_openpgp_keyring_check_id [] (3) - Check if a key id exists in the keyring
+gnutls_openpgp_keyring_deinit [] (3) - deinitializes memory used by a #gnutls_openpgp_keyring_t structure
+gnutls_openpgp_keyring_get_crt [] (3) - export an openpgp certificate from a keyring
+gnutls_openpgp_keyring_get_crt_count [] (3) - return the number of certificates
+gnutls_openpgp_keyring_import [] (3) - Import a raw- or Base64-encoded keyring
+gnutls_openpgp_keyring_init [] (3) - initializes a #gnutls_openpgp_keyring_t structure
+gnutls_openpgp_privkey_deinit [] (3) - deinitializes memory used by a #gnutls_openpgp_privkey_t structure
+gnutls_openpgp_privkey_export [] (3) - export a RAW or BASE64 encoded key
+gnutls_openpgp_privkey_export_dsa_raw [] (3) - This function will export the DSA private key
+gnutls_openpgp_privkey_export_rsa_raw [] (3) - This function will export the RSA private key
+gnutls_openpgp_privkey_export_subkey_dsa_raw [] (3) - export the DSA private key
+gnutls_openpgp_privkey_export_subkey_rsa_raw [] (3) - export the RSA private key
+gnutls_openpgp_privkey_get_fingerprint [] (3) - Gets the fingerprint
+gnutls_openpgp_privkey_get_key_id [] (3) - Gets the keyID
+gnutls_openpgp_privkey_get_pk_algorithm [] (3) - return the key's PublicKey algorithm
+gnutls_openpgp_privkey_get_preferred_key_id [] (3) - Gets the preferred keyID
+gnutls_openpgp_privkey_get_revoked_status [] (3) - Get the revoked status of the key
+gnutls_openpgp_privkey_get_subkey_count [] (3) - return the number of subkeys
+gnutls_openpgp_privkey_get_subkey_creation_time [] (3) - Extract the timestamp
+gnutls_openpgp_privkey_get_subkey_expiration_time [] (3) - Extract the expire date
+gnutls_openpgp_privkey_get_subkey_fingerprint [] (3) - Gets the fingerprint of a subkey
+gnutls_openpgp_privkey_get_subkey_id [] (3) - Gets the keyID
+gnutls_openpgp_privkey_get_subkey_idx [] (3) - Returns the subkey's index
+gnutls_openpgp_privkey_get_subkey_pk_algorithm [] (3) - return the subkey's PublicKey algorithm
+gnutls_openpgp_privkey_get_subkey_revoked_status [] (3) - Get the revoked status of the key
+gnutls_openpgp_privkey_import [] (3) - import a RAW or BASE64 encoded key
+gnutls_openpgp_privkey_init [] (3) - initializes a #gnutls_openpgp_privkey_t structure
+gnutls_openpgp_privkey_set_preferred_key_id [] (3) - Set the prefered keyID
+gnutls_openpgp_privkey_sign_hash [] (3) - sign the given data using the private key params
+gnutls_openpgp_send_cert [] (3) - order gnutls to send the openpgp fingerprint instead of the key
+gnutls_openpgp_set_recv_key_function [] (3) - Used to set a key retrieval callback for PGP keys
+gnutls_oprfi_enable_client [] (3) - API function
+gnutls_oprfi_enable_server [] (3) - API function
+gnutls_pem_base64_decode [] (3) - decode base64 encoded data
+gnutls_pem_base64_decode_alloc [] (3) - decode base64 encoded data
+gnutls_pem_base64_encode [] (3) - convert raw data to Base64 encoded
+gnutls_pem_base64_encode_alloc [] (3) - convert raw data to Base64 encoded
+gnutls_perror [] (3) - prints a string to stderr with a description of an error
+gnutls_pk_algorithm_get_name [] (3) - Get string with name of public key algorithm
+gnutls_pk_get_id [] (3) - Get #gnutls_pk_algorithm_t from a string
+gnutls_pk_get_name [] (3) - Get name string with #gnutls_pk_algorithm_t algorithm
+gnutls_pk_list [] (3) - Get a list of supported public key algorithms
+gnutls_pkcs12_bag_decrypt [] (3) - This function will decrypt an encrypted bag
+gnutls_pkcs12_bag_deinit [] (3) - This function deinitializes memory used by a gnutls_pkcs12_t structure
+gnutls_pkcs12_bag_encrypt [] (3) - This function will encrypt a bag
+gnutls_pkcs12_bag_get_count [] (3) - This function returns the bag's elements count
+gnutls_pkcs12_bag_get_data [] (3) - This function returns the bag's data
+gnutls_pkcs12_bag_get_friendly_name [] (3) - This function returns the friendly name of the bag element
+gnutls_pkcs12_bag_get_key_id [] (3) - This function gets the key ID from the bag element
+gnutls_pkcs12_bag_get_type [] (3) - This function returns the bag's type
+gnutls_pkcs12_bag_init [] (3) - This function initializes a gnutls_pkcs12_bag_t structure
+gnutls_pkcs12_bag_set_crl [] (3) - insert the CRL into the bag
+gnutls_pkcs12_bag_set_crt [] (3) - This function inserts a certificate into the bag
+gnutls_pkcs12_bag_set_data [] (3) - This function inserts data into the bag
+gnutls_pkcs12_bag_set_friendly_name [] (3) - This function sets a friendly name into the bag element
+gnutls_pkcs12_bag_set_key_id [] (3) - This function sets a key ID into the bag element
+gnutls_pkcs12_deinit [] (3) - This function deinitializes memory used by a gnutls_pkcs12_t structure
+gnutls_pkcs12_export [] (3) - This function will export the pkcs12 structure
+gnutls_pkcs12_generate_mac [] (3) - This function generates the MAC of the PKCS12 structure
+gnutls_pkcs12_get_bag [] (3) - This function returns a Bag from a PKCS12 structure
+gnutls_pkcs12_import [] (3) - This function will import a DER or PEM encoded PKCS12 structure
+gnutls_pkcs12_init [] (3) - This function initializes a gnutls_pkcs12_t structure
+gnutls_pkcs12_set_bag [] (3) - This function inserts a Bag into a PKCS12 structure
+gnutls_pkcs12_verify_mac [] (3) - This function verifies the MAC of the PKCS12 structure
+gnutls_pkcs7_deinit [] (3) - deinitializes a #gnutls_pkcs7_t structure
+gnutls_pkcs7_delete_crl [] (3) - deletes a CRL from a PKCS7 crl set
+gnutls_pkcs7_delete_crt [] (3) - deletes a certificate from a PKCS7 certificate set
+gnutls_pkcs7_export [] (3) - export the pkcs7 structure
+gnutls_pkcs7_get_crl_count [] (3) - returns the number of CRLs in a PKCS7 crl set
+gnutls_pkcs7_get_crl_raw [] (3) - This function returns a crl in a PKCS7 crl set
+gnutls_pkcs7_get_crt_count [] (3) - return the number of certificates in a PKCS7 certificate set
+gnutls_pkcs7_get_crt_raw [] (3) - get a certificate from a PKCS7 certificate set
+gnutls_pkcs7_import [] (3) - import a DER or PEM encoded PKCS7
+gnutls_pkcs7_init [] (3) - initialize a #gnutls_pkcs7_t structure
+gnutls_pkcs7_set_crl [] (3) - add a parsed crl in a PKCS7 crl set
+gnutls_pkcs7_set_crl_raw [] (3) - add a crl in a PKCS7 crl set
+gnutls_pkcs7_set_crt [] (3) - add a parsed certificate in a PKCS7 certificate set
+gnutls_pkcs7_set_crt_raw [] (3) - add a certificate in a PKCS7 certificate set
+gnutls_prf [] (3) - derive pseudo-random data using the TLS PRF
+gnutls_prf_raw [] (3) - access the TLS PRF directly
+gnutls_priority_deinit [] (3) - Deinitialize the priorities cache for the cipher suites supported by gnutls
+gnutls_priority_init [] (3) - Sets priorities for the cipher suites supported by gnutls
+gnutls_priority_set [] (3) - Sets priorities for the cipher suites supported by gnutls
+gnutls_priority_set_direct [] (3) - Sets priorities for the cipher suites supported by gnutls
+gnutls_protocol_get_id [] (3) - Returns the gnutls id of the specified in string protocol
+gnutls_protocol_get_name [] (3) - Returns a string with the name of the specified SSL/TLS version
+gnutls_protocol_get_version [] (3) - Returns the version of the currently used protocol
+gnutls_protocol_list [] (3) - Get a list of supported protocols
+gnutls_protocol_set_priority [] (3) - Sets the priority on the protocol versions supported by gnutls
+gnutls_psk_allocate_client_credentials [] (3) - Used to allocate an gnutls_psk_server_credentials_t structure
+gnutls_psk_allocate_server_credentials [] (3) - Used to allocate an gnutls_psk_server_credentials_t structure
+gnutls_psk_client_get_hint [] (3) - return the PSK identity hint of the peer
+gnutls_psk_free_client_credentials [] (3) - Used to free an allocated gnutls_psk_client_credentials_t structure
+gnutls_psk_free_server_credentials [] (3) - Used to free an allocated gnutls_psk_server_credentials_t structure
+gnutls_psk_netconf_derive_key [] (3) - derive PSK Netconf key from password
+gnutls_psk_server_get_username [] (3) - return the username of the peer
+gnutls_psk_set_client_credentials [] (3) - Used to set the username/password, in a gnutls_psk_client_credentials_t structure
+gnutls_psk_set_client_credentials_function [] (3) - Used to set a callback to retrieve the username and key
+gnutls_psk_set_params_function [] (3) - set the DH or RSA parameters callback
+gnutls_psk_set_server_credentials_file [] (3) - Used to set the password files, in a gnutls_psk_server_credentials_t structure
+gnutls_psk_set_server_credentials_function [] (3) - Used to set a callback to retrieve the user's PSK credentials
+gnutls_psk_set_server_credentials_hint [] (3) - Set a identity hint, in a %gnutls_psk_server_credentials_t structure
+gnutls_psk_set_server_dh_params [] (3) - set the DH parameters for a server to use
+gnutls_psk_set_server_params_function [] (3) - set the DH parameters callback
+gnutls_record_check_pending [] (3) - checks if there are any data to receive in gnutls buffers
+gnutls_record_disable_padding [] (3) - Used to disabled padding in TLS 1.0 and above
+gnutls_record_get_direction [] (3) - return the direction of the last interrupted function call
+gnutls_record_get_max_size [] (3) - returns the maximum record size
+gnutls_record_recv [] (3) - reads data from the TLS record protocol
+gnutls_record_send [] (3) - sends to the peer the specified data
+gnutls_record_set_max_size [] (3) - sets the maximum record size
+gnutls_register_md5_handler [] (3) - API function
+gnutls_rehandshake [] (3) - renegotiate security parameters
+gnutls_rsa_export_get_modulus_bits [] (3) - return the bits used in RSA-export key exchange
+gnutls_rsa_export_get_pubkey [] (3) - return the peer's public key used in RSA-EXPORT authentication
+gnutls_rsa_params_cpy [] (3) - copy an RSA parameters structure
+gnutls_rsa_params_deinit [] (3) - deinitialize the RSA parameters
+gnutls_rsa_params_export_pkcs1 [] (3) - export RSA params to a pkcs1 structure
+gnutls_rsa_params_export_raw [] (3) - export the RSA parameters
+gnutls_rsa_params_generate2 [] (3) - generate temporary RSA parameters
+gnutls_rsa_params_import_pkcs1 [] (3) - import RSA params from a pkcs1 structure
+gnutls_rsa_params_import_raw [] (3) - set the RSA parameters
+gnutls_rsa_params_init [] (3) - initialize the temporary RSA parameters
+gnutls_server_name_get [] (3) - Used to get the server name indicator send by a client
+gnutls_server_name_set [] (3) - Used to set a name indicator to be sent as an extension
+gnutls_session_enable_compatibility_mode [] (3) - disable certain features in TLS in order to honour compatibility
+gnutls_session_get_client_random [] (3) - get the session's client random value
+gnutls_session_get_data [] (3) - Returns all session parameters
+gnutls_session_get_data2 [] (3) - Returns all session parameters
+gnutls_session_get_id [] (3) - Returns session id
+gnutls_session_get_master_secret [] (3) - get the session's master secret value
+gnutls_session_get_ptr [] (3) - Get the user pointer from the session structure
+gnutls_session_get_server_random [] (3) - get the session's server random value
+gnutls_session_is_resumed [] (3) - check whether this session is a resumed one
+gnutls_session_set_data [] (3) - Sets all session parameters
+gnutls_session_set_finished_function [] (3) - API function
+gnutls_session_set_ptr [] (3) - Used to set the user pointer to the session structure
+gnutls_set_default_export_priority [] (3) - Sets some default priority on the cipher suites supported by gnutls
+gnutls_set_default_priority [] (3) - Sets some default priority on the cipher suites supported by gnutls
+gnutls_sign_algorithm_get_name [] (3) - Returns a string with the name of the specified sign algorithm
+gnutls_sign_callback_get [] (3) - API function
+gnutls_sign_callback_set [] (3) - API function
+gnutls_sign_get_id [] (3) - Returns the gnutls id of the specified in signature algorithm
+gnutls_sign_get_name [] (3) - Get name string for a #gnutls_sign_algorithm_t
+gnutls_sign_list [] (3) - Get a list of supported public key signature algorithms
+gnutls_srp_allocate_client_credentials [] (3) - Used to allocate an gnutls_srp_server_credentials_t structure
+gnutls_srp_allocate_server_credentials [] (3) - Used to allocate an gnutls_srp_server_credentials_t structure
+gnutls_srp_base64_decode [] (3) - decode SRP-base64 encoded data
+gnutls_srp_base64_decode_alloc [] (3) - decode SRP-base64 encoded data
+gnutls_srp_base64_encode [] (3) - Encode raw data using SRP-Base64
+gnutls_srp_base64_encode_alloc [] (3) - encode raw data using SRP-Base64
+gnutls_srp_free_client_credentials [] (3) - Used to free an allocated gnutls_srp_client_credentials_t structure
+gnutls_srp_free_server_credentials [] (3) - Used to free an allocated gnutls_srp_server_credentials_t structure
+gnutls_srp_server_get_username [] (3) - return the username of the peer
+gnutls_srp_set_client_credentials [] (3) - Used to set the username/password, in a gnutls_srp_client_credentials_t structure
+gnutls_srp_set_client_credentials_function [] (3) - Used to set a callback to retrieve the username and password
+gnutls_srp_set_prime_bits [] (3) - set the minimum bits for a SRP ciphersuite
+gnutls_srp_set_server_credentials_file [] (3) - Used to set the password files, in a gnutls_srp_server_credentials_t structure
+gnutls_srp_set_server_credentials_function [] (3) - Used to set a callback to retrieve the user's SRP credentials
+gnutls_srp_verifier [] (3) - Used to calculate an SRP verifier
+gnutls_strerror [] (3) - Returns a string with a description of an error
+gnutls_strerror_name [] (3) - API function
+gnutls_transport_get_ptr [] (3) - Used to return the first argument of the transport functions
+gnutls_transport_get_ptr2 [] (3) - Used to return the first argument of the transport functions
+gnutls_transport_set_errno [] (3) - API function
+gnutls_transport_set_global_errno [] (3) - API function
+gnutls_transport_set_lowat [] (3) - Used to set the lowat value in order for select to check for pending data
+gnutls_transport_set_ptr [] (3) - Used to set first argument of the transport functions
+gnutls_transport_set_ptr2 [] (3) - Used to set first argument of the transport functions
+gnutls_transport_set_pull_function [] (3) - set a read like function
+gnutls_transport_set_push_function [] (3) - set the function to send data
+gnutls_x509_crl_check_issuer [] (3) - This function checks if the CRL given has the given issuer
+gnutls_x509_crl_deinit [] (3) - deinitializes a #gnutls_x509_crl_t structure
+gnutls_x509_crl_export [] (3) - export the CRL
+gnutls_x509_crl_get_crt_count [] (3) - get number of revoked certificates in a CRL
+gnutls_x509_crl_get_crt_serial [] (3) - get the serial number of a revoked certificate
+gnutls_x509_crl_get_dn_oid [] (3) - returns the Certificate request issuer's distinguished name OIDs
+gnutls_x509_crl_get_issuer_dn [] (3) - returns the CRL's issuer distinguished name
+gnutls_x509_crl_get_issuer_dn_by_oid [] (3) - return the CRL's issuer distinguished name
+gnutls_x509_crl_get_next_update [] (3) - return the CRL's nextUpdate time
+gnutls_x509_crl_get_signature [] (3) - Returns the CRL's signature
+gnutls_x509_crl_get_signature_algorithm [] (3) - returns the CRL's signature algorithm
+gnutls_x509_crl_get_this_update [] (3) - return the CRL's thisUpdate time
+gnutls_x509_crl_get_version [] (3) - returns the CRL's version number
+gnutls_x509_crl_import [] (3) - import a DER or PEM encoded CRL
+gnutls_x509_crl_init [] (3) - initializes a #gnutls_x509_crl_t structure
+gnutls_x509_crl_print [] (3) - Pretty print X.509 certificate revocation list
+gnutls_x509_crl_set_crt [] (3) - This function will set a revoked certificate's serial number
+gnutls_x509_crl_set_crt_serial [] (3) - This function will set a revoked certificate's serial number
+gnutls_x509_crl_set_next_update [] (3) - This function will set the CRL next update time
+gnutls_x509_crl_set_this_update [] (3) - This function will set the CRL's issuing time
+gnutls_x509_crl_set_version [] (3) - This function will set the CRL version
+gnutls_x509_crl_sign [] (3) - This function will sign a CRL with a key
+gnutls_x509_crl_sign2 [] (3) - This function will sign a CRL with a key
+gnutls_x509_crl_verify [] (3) - This function verifies the given crl against a given trusted one
+gnutls_x509_crq_deinit [] (3) - This function deinitializes memory used by a gnutls_x509_crq_t structure
+gnutls_x509_crq_export [] (3) - Export the generated certificate request
+gnutls_x509_crq_get_attribute_by_oid [] (3) - This function will get an attribute of the request
+gnutls_x509_crq_get_challenge_password [] (3) - This function will get the challenge password
+gnutls_x509_crq_get_dn [] (3) - This function returns the Certificate request subject's distinguished name
+gnutls_x509_crq_get_dn_by_oid [] (3) - This function returns the Certificate request subject's distinguished name
+gnutls_x509_crq_get_dn_oid [] (3) - This function returns the Certificate request subject's distinguished name OIDs
+gnutls_x509_crq_get_pk_algorithm [] (3) - This function returns the certificate request's PublicKey algorithm
+gnutls_x509_crq_get_version [] (3) - This function returns the Certificate request's version number
+gnutls_x509_crq_import [] (3) - This function will import a DER or PEM encoded Certificate request
+gnutls_x509_crq_init [] (3) - This function initializes a gnutls_x509_crq_t structure
+gnutls_x509_crq_set_attribute_by_oid [] (3) - This function will set an attribute in the request
+gnutls_x509_crq_set_challenge_password [] (3) - This function will set a challenge password
+gnutls_x509_crq_set_dn_by_oid [] (3) - This function will set the Certificate request subject's distinguished name
+gnutls_x509_crq_set_key [] (3) - This function will associate the Certificate request with a key
+gnutls_x509_crq_set_key_rsa_raw [] (3) - associate Certificate request with a key
+gnutls_x509_crq_set_version [] (3) - This function will set the Certificate request version
+gnutls_x509_crq_sign [] (3) - This function will sign a Certificate request with a key
+gnutls_x509_crq_sign2 [] (3) - Sign a Certificate request with a key
+gnutls_x509_crt_check_hostname [] (3) - compares the hostname with certificate's hostname
+gnutls_x509_crt_check_issuer [] (3) - This function checks if the certificate given has the given issuer
+gnutls_x509_crt_check_revocation [] (3) - This function checks if the given certificate is revoked
+gnutls_x509_crt_cpy_crl_dist_points [] (3) - Copy the CRL dist points
+gnutls_x509_crt_deinit [] (3) - This function deinitializes memory used by a gnutls_x509_crt_t structure
+gnutls_x509_crt_export [] (3) - This function will export the certificate
+gnutls_x509_crt_get_activation_time [] (3) - returns the Certificate's activation time
+gnutls_x509_crt_get_authority_key_id [] (3) - This function returns the certificate authority's identifier
+gnutls_x509_crt_get_basic_constraints [] (3) - This function returns the certificate basic constraints
+gnutls_x509_crt_get_ca_status [] (3) - This function returns the certificate CA status
+gnutls_x509_crt_get_crl_dist_points [] (3) - This function returns the CRL distribution points
+gnutls_x509_crt_get_dn [] (3) - This function returns the Certificate's distinguished name
+gnutls_x509_crt_get_dn_by_oid [] (3) - This function returns the Certificate's distinguished name
+gnutls_x509_crt_get_dn_oid [] (3) - This function returns the Certificate's subject distinguished name OIDs
+gnutls_x509_crt_get_expiration_time [] (3) - returns the Certificate's expiration time
+gnutls_x509_crt_get_extension_by_oid [] (3) - This function returns the specified extension
+gnutls_x509_crt_get_extension_data [] (3) - Get the specified extension data
+gnutls_x509_crt_get_extension_info [] (3) - Get extension id and criticality
+gnutls_x509_crt_get_extension_oid [] (3) - This function returns the specified extension OID
+gnutls_x509_crt_get_fingerprint [] (3) - This function returns the Certificate's fingerprint
+gnutls_x509_crt_get_issuer [] (3) - API function
+gnutls_x509_crt_get_issuer_dn [] (3) - This function returns the Certificate's issuer distinguished name
+gnutls_x509_crt_get_issuer_dn_by_oid [] (3) - This function returns the Certificate's issuer distinguished name
+gnutls_x509_crt_get_issuer_dn_oid [] (3) - This function returns the Certificate's issuer distinguished name OIDs
+gnutls_x509_crt_get_key_id [] (3) - Return unique ID of public key's parameters
+gnutls_x509_crt_get_key_purpose_oid [] (3) - This function returns the Certificate's key purpose OIDs
+gnutls_x509_crt_get_key_usage [] (3) - return the certificate's key usage
+gnutls_x509_crt_get_pk_algorithm [] (3) - return the certificate's PublicKey algorithm
+gnutls_x509_crt_get_pk_dsa_raw [] (3) - This function will export the DSA public key
+gnutls_x509_crt_get_pk_rsa_raw [] (3) - This function will export the RSA public key
+gnutls_x509_crt_get_proxy [] (3) - This function returns the proxy certificate info
+gnutls_x509_crt_get_raw_dn [] (3) - This function returns the subject's DN DER encoded
+gnutls_x509_crt_get_raw_issuer_dn [] (3) - This function returns the issuer's DN DER encoded
+gnutls_x509_crt_get_serial [] (3) - This function returns the certificate's serial number
+gnutls_x509_crt_get_signature [] (3) - Returns the Certificate's signature
+gnutls_x509_crt_get_signature_algorithm [] (3) - This function returns the Certificate's signature algorithm
+gnutls_x509_crt_get_subject [] (3) - API function
+gnutls_x509_crt_get_subject_alt_name [] (3) - Get certificate's alternative name, if any
+gnutls_x509_crt_get_subject_alt_name2 [] (3) - Get certificate's alternative name, if any
+gnutls_x509_crt_get_subject_alt_othername_oid [] (3) - Get SAN otherName OID
+gnutls_x509_crt_get_subject_key_id [] (3) - This function returns the certificate's key identifier
+gnutls_x509_crt_get_version [] (3) - return the Certificate's version number
+gnutls_x509_crt_import [] (3) - This function will import a DER or PEM encoded Certificate
+gnutls_x509_crt_init [] (3) - This function initializes a gnutls_x509_crt_t structure
+gnutls_x509_crt_list_import [] (3) - This function will import a PEM encoded certificate list
+gnutls_x509_crt_list_verify [] (3) - This function verifies the given certificate list
+gnutls_x509_crt_print [] (3) - Pretty print X.509 certificates
+gnutls_x509_crt_set_activation_time [] (3) - Set the Certificate's activation time
+gnutls_x509_crt_set_authority_key_id [] (3) - Set the certificate authority's key id
+gnutls_x509_crt_set_basic_constraints [] (3) - Set the basicConstraints extension
+gnutls_x509_crt_set_ca_status [] (3) - Set the basicConstraints extension
+gnutls_x509_crt_set_crl_dist_points [] (3) - Set the CRL dist points
+gnutls_x509_crt_set_crl_dist_points2 [] (3) - Set the CRL dist points
+gnutls_x509_crt_set_crq [] (3) - Associate the Certificate with a request
+gnutls_x509_crt_set_dn_by_oid [] (3) - Set the Certificate request subject's distinguished name
+gnutls_x509_crt_set_expiration_time [] (3) - Set the Certificate's expiration time
+gnutls_x509_crt_set_extension_by_oid [] (3) - Set an arbitrary extension
+gnutls_x509_crt_set_issuer_dn_by_oid [] (3) - Set the Certificate request issuer's distinguished name
+gnutls_x509_crt_set_key [] (3) - This function will associate the Certificate with a key
+gnutls_x509_crt_set_key_purpose_oid [] (3) - Sets the Certificate's key purpose OIDs
+gnutls_x509_crt_set_key_usage [] (3) - Set the keyUsage extension
+gnutls_x509_crt_set_proxy [] (3) - Set the proxyCertInfo extension
+gnutls_x509_crt_set_proxy_dn [] (3) - Set Proxy Certificate subject's distinguished name
+gnutls_x509_crt_set_serial [] (3) - Set the certificate's serial number
+gnutls_x509_crt_set_subject_alt_name [] (3) - Set the subject Alternative Name
+gnutls_x509_crt_set_subject_alternative_name [] (3) - Set the subject Alternative Name
+gnutls_x509_crt_set_subject_key_id [] (3) - Set the certificate's subject key id
+gnutls_x509_crt_set_version [] (3) - Set the Certificate request version
+gnutls_x509_crt_sign [] (3) - Sign a certificate with a key
+gnutls_x509_crt_sign2 [] (3) - Sign a certificate with a key
+gnutls_x509_crt_verify [] (3) - This function verifies the given certificate against a given trusted one
+gnutls_x509_crt_verify_data [] (3) - This function will verify the given signed data
+gnutls_x509_dn_deinit [] (3) - API function
+gnutls_x509_dn_export [] (3) - This function will export the DN
+gnutls_x509_dn_get_rdn_ava [] (3) - API function
+gnutls_x509_dn_import [] (3) - API function
+gnutls_x509_dn_init [] (3) - API function
+gnutls_x509_dn_oid_known [] (3) - return true if the given OID is known
+gnutls_x509_privkey_cpy [] (3) - copy a private key
+gnutls_x509_privkey_deinit [] (3) - deinitializes a #gnutls_x509_privkey_t structure
+gnutls_x509_privkey_export [] (3) - export the private key
+gnutls_x509_privkey_export_dsa_raw [] (3) - export the DSA private key
+gnutls_x509_privkey_export_pkcs8 [] (3) - This function will export the private key to PKCS8 format
+gnutls_x509_privkey_export_rsa_raw [] (3) - export the RSA private key
+gnutls_x509_privkey_fix [] (3) - recalculate some parameters of the key
+gnutls_x509_privkey_generate [] (3) - generate a private key
+gnutls_x509_privkey_get_key_id [] (3) - Return unique ID of the key's parameters
+gnutls_x509_privkey_get_pk_algorithm [] (3) - returns the key's PublicKey algorithm
+gnutls_x509_privkey_import [] (3) - import a DER or PEM encoded key
+gnutls_x509_privkey_import_dsa_raw [] (3) - import a raw DSA key
+gnutls_x509_privkey_import_pkcs8 [] (3) - This function will import a DER or PEM PKCS8 encoded key
+gnutls_x509_privkey_import_rsa_raw [] (3) - import a raw RSA key
+gnutls_x509_privkey_init [] (3) - initialize a #gnutls_privkey_t structure
+gnutls_x509_privkey_sign_data [] (3) - sign data using the private key
+gnutls_x509_privkey_sign_hash [] (3) - sign hash using the private key
+gnutls_x509_privkey_verify_data [] (3) - Verify the signed data using private key
+gnutls_x509_rdn_get [] (3) - parse an RDN sequence and returns a string
+gnutls_x509_rdn_get_by_oid [] (3) - parse an RDN sequence and returns a string
+gnutls_x509_rdn_get_oid [] (3) - parse an RDN sequence and returns an OID
+gobject [] (1) - query - display a tree of types
+gomoku [] (6) - game of 5 in a row
+goop [] (6) - squishy transparent oil and bubble screenhack
+gorbd [] (1) - - An object request broker daemon
+gouldtoppm [] (1) - convert Gould scanner file into a portable pixmap
+gpasswd [] (1) - administer the /etc/group file
+gperf [] (1) - generate a perfect hash function from a key set
+gpg [] (1) - OpenPGP encryption and signing tool
+gpg [] (1) - agent - Secret key management for GnuPG
+gpg [] (1) - connect-agent - Communicate with a running agent
+gpg [] (1) - preset-passphrase - Put a passphrase into gpg-agent's cache
+gpg [] (1) - zip - Encrypt or sign files into an archive
+gpg [] (1) - ÉÎÓÔÒÕÍÅÎÔ ÄÌÑ ÛÉÆÒÏ×ÁÎÉÑ É ÃÉÆÒÏ×ÏÊ ÐÏÄÐÉÓÉ
+gpg2 [] (1) - OpenPGP encryption and signing tool
+gpgconf [] (1) - Modify .gnupg home directories
+gpgparsemail [] (1) - Parse a mail message into an annotated format
+gpgsm [] (1) - CMS encryption and signing tool
+gpgsm [] (1) - gencert.sh - Generate an X.509 certificate request
+gpgv [] (1) - Verify OpenPGP signatures
+gpgv2 [] (1) - Verify OpenPGP signatures
+gphoto2 [] (1) - command-line gphoto2 client
+gpl [] (7) - GNU General Public License
+gpm [] (1) - root - a default handler for gpm, used to draw menus on the root window
+gpm [] (8) - a cut and paste utility and mouse server for virtual consoles
+gprof [] (1) - display call graph profile data
+grab [] (n) - Confine pointer and keyboard events to a window sub-tree
+grantpt [] (3) - grant access to the slave pseudo-terminal
+grap2graph [] (1) - convert a grap diagram into a cropped bitmap image
+grav [] (6) - draws a simple orbital simulation
+grep [] (1) - print lines matching a pattern
+greynetic [] (6) - draw random stippled/color rectangles
+grid [] (n) - Geometry manager that arranges widgets in a grid
+grmic [] (1) - Generate stubs for Remote Method Invocation
+grmid [] (1) - - RMI activation system daemon
+grmiregistry [] (1) - - Remote object registry
+grn [] (1) - groff preprocessor for gremlin files
+grodvi [] (1) - convert groff output to TeX dvi format
+groff [] (1) - front-end for the groff document formatting system
+groff [] (7) - a short reference for the GNU roff language
+groff_char [] (7) - groff glyph names
+groff_diff [] (7) - differences between GNU troff and classical troff
+groff_font [] (5) - format of groff device and font description files
+groff_hdtbl [] (7) - groff `hdtbl' macros for generation of tables
+groff_man [] (7) - groff `man' macros to support generation of man pages
+groff_mdoc [] (7) - reference for groff's mdoc implementation
+groff_me [] (7) - troff macros for formatting papers
+groff_mm [] (7) - groff mm macros
+groff_mom [] (7) - groff `mom' macros
+groff_ms [] (7) - groff ms macros
+groff_out [] (5) - groff intermediate output format
+groff_tmac [] (5) - macro files in the roff typesetting system
+groff_trace [] (7) - groff macro package trace.tmac
+groff_www [] (7) - groff macros for authoring web pages
+groffer [] (1) - display groff files and man~pages on X and tty
+grog [] (1) - guess options for groff command
+grohtml [] (1) - html driver for groff
+grolbp [] (1) - groff driver for Canon CAPSL printers (LBP-4 and LBP-8 series laser printers)
+grolj4 [] (1) - groff driver for HP Laserjet 4 family
+grops [] (1) - PostScript driver for groff
+grotty [] (1) - groff driver for typewriter-like devices
+group [] (5) - user group file
+groupadd [] (8) - Create a new group
+groupdel [] (8) - Delete a group
+groupmod [] (8) - Modify a group
+groups [] (1) - display current group names
+growisofs [] (1) - combined mkisofs frontend/DVD recording program
+grpck [] (8) - verify integrity of group files
+grpconv [] (8) - convert to and from shadow passwords and groups
+grpunconv [] (8) - convert to and from shadow passwords and groups
+gs [] (1) - Ghostscript (PostScript and PDF language interpreter and previewer)
+gsbj [] (1) - Format and print text for BubbleJet printer using ghostscript
+gsdj [] (1) - Format and print text for DeskJet printer using ghostscript
+gsdj500 [] (1) - Format and print text for DeskJet 500 BubbleJet using ghostscript
+gserialver [] (1) - version command
+gsf [] (1) - archiving utility using the G Structured File library
+gsf [] (1) - vba-dump - extract Visual Basic for Applications macros
+gsignal [] (3) - software signal facility
+gslj [] (1) - Format and print text for LaserJet printer using ghostscript
+gslp [] (1) - Format and print text using ghostscript
+gsnd [] (1) - Run ghostscript (PostScript and PDF engine) without display
+gst [] (1) - feedback - generate debug info for GStreamer bug reports
+gst [] (1) - inspect - print info about a GStreamer plugin or element
+gst [] (1) - launch - build and run a GStreamer pipeline
+gst [] (1) - typefind - print MIME type of file
+gst [] (1) - visualise - Run a GStreamer pipeline to display an audio visualisation
+gst [] (1) - xmlinspect - print info about a GStreamer plugin or element
+gst [] (1) - xmllaunch - build and run a GStreamer pipeline from an XML serialization
+gtester [] (1) - report - test report formatting utility
+gtester [] (1) - test running utility
+gtf [] (1) - calculate VESA GTF mode lines
+gtk [] (1) - builder-convert - Glade file conversion utility
+gtk [] (1) - config - script to get information about the installed version of GTK+
+gtk [] (1) - query-immodules-2.0 - Input method module registration utility
+gtk [] (1) - update-icon-cache - Icon theme caching utility
+gtk-builder-convert (1) - Glade file conversion utility
+gtk-query-immodules-2.0 [gtk-query-immodules-2] (1) - Input method module registration utility
+gtk-update-icon-cache (1) - Icon theme caching utility
+gtnameserv [] (1) - Naming service
+gtty [] (2) - unimplemented system calls
+guile [] (1) - a Scheme interpreter
+gunzip [] (1) - compress or expand files
+gv [] (1) - Postscript and PDF viewer
+gv [] (1) - update-userconfig - update ~/.gv config file
+gxditview [] (1) - display groff intermediate output files
+gxine [] (1) - a GTK/GNOME frontend to the xine video player
+gxine_client [] (1) - the gxine video player command line client
+gzexe [] (1) - compress executable files in place
+gzip [] (1) - compress or expand files
+h2ph [] (1) - convert .h C header files to .ph Perl header files
+h2xs [] (1) - convert .h C header files to Perl extensions
+h_errno [] (3) - get network host entry
+hal [] (1) - disable-polling - disable polling on drives with removable media
+hal [] (1) - find-by-capability - find device objects by capability matching
+hal [] (1) - find-by-property - find device objects by property matching
+hal [] (1) - get-property - get a property from a device object
+hal [] (1) - is-caller-locked-out - determine if a caller is locked out
+hal [] (1) - lock - lock an interface
+hal [] (1) - set-property - set a property on a device object
+hald [] (8) - HAL daemon
+halfdelay [] (3) - curses input options
+halftone [] (6) - simple halftone pattern of moving mass points
+halo [] (6) - draw circular patterns
+halt [] (8) - stop the system
+handle_to_fshandle [] (3) - file handle operations
+hangman [] (6) - Computer version of the game hangman
+has_colors [] (3) - curses color manipulation routines
+has_ic [] (3) - curses environment query routines
+has_il [] (3) - curses environment query routines
+has_key [] (3) - get (or push back) characters from curses terminal keyboard
+hash [] (1) - bash built-in commands, see bash(1)
+hash [] (3) - hash database access method
+hasmntopt [] (3) - get file system descriptor file entry
+hattrib [] (1) - change HFS file or directory attributes
+hcd [] (1) - change working HFS directory
+hciattach [] (8) - attach serial devices via UART HCI to BlueZ stack
+hciconfig [] (8) - configure Bluetooth devices
+hcid [] (8) - Bluetooth Host Controller Interface Daemon
+hcidump [] (8) - Parse HCI data
+hcitool [] (1) - configure Bluetooth connections
+hcopy [] (1) - copy files from or to an HFS volume
+hcreate [] (3) - hash table management
+hcreate_r [] (3) - hash table management
+hd [] (4) - MFM/IDE hard disk devices
+hdel [] (1) - delete both forks of an HFS file
+hdestroy [] (3) - hash table management
+hdestroy_r [] (3) - hash table management
+hdifftopam [] (1) - see http://netpbm.sourceforge.net/doc/hdifftopam.html
+hdir [] (1) - display an HFS directory in long format
+hdparm [] (8) - get/set SATA/IDE device parameters
+head [] (1) - output the first part of files
+helix [] (6) - draw helical string-art patterns
+help [] (1) - bash built-in commands, see bash(1)
+herror [] (3) - get network host entry
+hexdump [] (1) - ascii, decimal, hexadecimal, octal dump
+hformat [] (1) - create a new HFS filesystem and make it current
+hfs [] (1) - shell for manipulating HFS volumes
+hfssh [] (1) - Tcl interpreter with HFS extensions
+hfsutils [] (1) - tools for reading and writing Macintosh HFS volumes
+hg [] (1) - Mercurial source code management system
+hgignore [] (5) - syntax for Mercurial ignore files
+hgrc [] (5) - configuration files for Mercurial
+hid2hci [] (8) - Bluetooth HID to HCI mode switching utility
+hidd [] (1) - Bluetooth HID daemon
+hier [] (7) - Description of the file system hierarchy
+hipstopgm [] (1) - convert a HIPS file into a portable graymap
+history [] (1) - bash built-in commands, see bash(1)
+history [] (3) - GNU History Library
+history [] (n) - Manipulate the history list
+hline [] (3) - create curses borders, horizontal and vertical lines
+hline_set [] (3) - create curses borders or lines using complex characters and renditions
+hls [] (1) - list files in an HFS directory
+hmkdir [] (1) - create a new HFS directory
+hmount [] (1) - introduce a new HFS volume and make it current
+hopalong [] (6) - draw real plane fractals
+hose [] (1) - the client end of a BSD network pipe
+host [] (1) - DNS lookup utility
+host.conf [] (5) - resolver configuration file
+hostid [] (1) - print the numeric identifier for the current host
+hostname [] (1) - show or set the system's host name
+hostname [] (7) - hostname resolution description
+hosts [] (5) - The static table lookup for hostnames
+hosts_access [] (3) - access control library
+hosts_access [] (5) - format of host access control files
+hosts_ctl [] (3) - access control library
+hosts_options [] (5) - host access control language extensions
+hpcdtoppm [] (1) - convert a Photo-CD file into a portable bitmap file
+hpftodit [] (1) - create font description files for use with groff -Tlj4
+hpwd [] (1) - print the full path to the current HFS working directory
+hqx2bin [] (1) - Macintosh file format transformer
+hrename [] (1) - rename or move an HFS file or directory
+hrmdir [] (1) - remove an empty HFS directory
+hsearch [] (3) - hash table management
+hsearch_r [] (3) - hash table management
+hstrerror [] (3) - get network host entry
+htcacheclean [] (8) - Clean up the disk cache
+htdbm [] (1) - Manipulate DBM password databases
+htdig [] (1) - pdfparser - parse a PDF document (wrapper script for htdig)
+htdig [] (1) - retrieve HTML documents for ht://Dig search engine
+htdigconfig [] (8) - script to create fuzzy databases for ht://Dig
+htdigest [] (1) - manage user files for digest authentication
+htdump [] (1) - write out an ASCII-text version of the document database
+htfuzzy [] (1) - fuzzy command-line search utility for the ht://Dig search engine
+htload [] (1) - reads in an ASCII-text version of the document database
+htmerge [] (1) - create document index and word database for the ht://Dig search engine
+htnotify [] (1) - sends email notifications about out-dated web pages discovered by htmerge
+htobe16 [] (3) - convert values between host and big - /little-endian byte order
+htobe32 [] (3) - convert values between host and big - /little-endian byte order
+htobe64 [] (3) - convert values between host and big - /little-endian byte order
+htole16 [] (3) - convert values between host and big - /little-endian byte order
+htole32 [] (3) - convert values between host and big - /little-endian byte order
+htole64 [] (3) - convert values between host and big - /little-endian byte order
+htonl [] (3) - convert values between host and network byte order
+htons [] (3) - convert values between host and network byte order
+htpasswd [] (1) - Manage user files for basic authentication
+htpurge [] (1) - remove unused odocuments from the database (general maintenance script)
+htsearch [] (1) - create document index and word database for the ht://Dig search engine
+htstat [] (1) - returns statistics on the document and word databases, much like the -s option to htdig or htmerge
+http [] (n) - Client-side implementation of the HTTP/1.1 protocol
+httpd [] (8) - Apache Hypertext Transfer Protocol Server
+humount [] (1) - remove an HFS volume from the list of known volumes
+hunt [] (6) - a multi - player multi-terminal game
+huntd [] (6) - hunt daemon, back - end for hunt game
+hvol [] (1) - display or change the current HFS volume
+hwclock [] (8) - query and set the hardware clock (RTC)
+hyperball [] (6) - 2d projection of a 4d object
+hypercube [] (6) - 2d projection of a 4d object
+hypertorus [] (6) - Draws a hypertorus that rotates in 4d
+hypnowheel [] (6) - draws overlapping, translucent spiral patterns
+hypot [] (3) - Euclidean distance function
+hypotf [] (3) - Euclidean distance function
+hypotl [] (3) - Euclidean distance function
+i128 [] (4) - Number 9 I128 Xorg video driver
+i2d_ASN1_OBJECT [] (3) - ASN1 OBJECT IDENTIFIER functions
+i2d_DHparams [] (3) - PKCS#3 DH parameter functions
+i2d_DSAPrivateKey [] (3) - DSA key encoding and parsing functions
+i2d_DSAPublicKey [] (3) - DSA key encoding and parsing functions
+i2d_DSA_PUBKEY [] (3) - DSA key encoding and parsing functions
+i2d_DSA_SIG [] (3) - DSA key encoding and parsing functions
+i2d_Netscape_RSA [] (3) - RSA public and private key encoding functions
+i2d_PKCS8PrivateKey_bio [] (3) - PKCS#8 format private key functions
+i2d_PKCS8PrivateKey_fp [] (3) - PKCS#8 format private key functions
+i2d_PKCS8PrivateKey_nid_bio [] (3) - PKCS#8 format private key functions
+i2d_PKCS8PrivateKey_nid_fp [] (3) - PKCS#8 format private key functions
+i2d_RSAPrivateKey [] (3) - RSA public and private key encoding functions
+i2d_RSAPublicKey [] (3) - RSA public and private key encoding functions
+i2d_RSA_PUBKEY [] (3) - RSA public and private key encoding functions
+i2d_SSL_SESSION [] (3) - convert SSL_SESSION object from/to ASN1 representation
+i2d_X509 [] (3) - X509 encode and decode functions
+i2d_X509_ALGOR [] (3) - AlgorithmIdentifier functions
+i2d_X509_CRL [] (3) - PKCS#10 certificate request functions
+i2d_X509_CRL_bio [] (3) - PKCS#10 certificate request functions
+i2d_X509_CRL_fp [] (3) - PKCS#10 certificate request functions
+i2d_X509_NAME [] (3) - X509_NAME encoding functions
+i2d_X509_REQ [] (3) - PKCS#10 certificate request functions
+i2d_X509_REQ_bio [] (3) - PKCS#10 certificate request functions
+i2d_X509_REQ_fp [] (3) - PKCS#10 certificate request functions
+i2d_X509_SIG [] (3) - DigestInfo functions
+i2d_X509_bio [] (3) - X509 encode and decode functions
+i2d_X509_fp [] (3) - X509 encode and decode functions
+i740 [] (4) - Intel i740 video driver
+ibm_hosts [] (5) - host database for x3270 and c3270
+icc2ps [] (1) - little cms PostScript converter
+icclink [] (1) - little cms device link generator
+iceauth [] (1) - ICE authority file utility
+icmp [] (7) - Linux IPv4 ICMP kernel module
+icmpinfo [] (1) - interpret ICMP messages
+ico [] (1) - animate an icosahedron or other polyhedron
+icombine [] (1) - Interactive spelling checking
+icontopbm [] (1) - convert a Sun icon into a portable bitmap
+iconv [] (3) - perform character set conversion
+iconv_close [] (3) - deallocate descriptor for character set conversion
+iconv_open [] (3) - allocate descriptor for character set conversion
+id [] (1) - print real and effective user and group IDs
+idcok [] (3) - curses output options
+ident [] (1) - identify RCS keyword strings in files
+identd [] (8) - TCP/IP IDENT protocol server
+identify [] (1) - describes the format and characteristics of one or more image files
+idle [] (2) - make process 0 idle
+idlok [] (3) - curses output options
+idmap_ad [] (8) - Samba's idmap_ad Backend for Winbind
+idmap_ldap [] (8) - Samba's idmap_ldap Backend for Winbind
+idmap_nss [] (8) - Samba's idmap_nss Backend for Winbind
+idmap_rid [] (8) - Samba's idmap_rid Backend for Winbind
+idmap_tdb [] (8) - Samba's idmap_tdb Backend for Winbind
+idn [] (1) - Internationalized Domain Names command line tool
+idna_strerror [] (3) - return string describing idna error code
+idna_to_ascii_4i [] (3) - convert Unicode domain name label to text
+idna_to_ascii_4z [] (3) - convert Unicode domain name label to text
+idna_to_ascii_8z [] (3) - convert Unicode domain name label to text
+idna_to_ascii_lz [] (3) - convert Unicode domain name label to text
+idna_to_unicode_44i [] (3) - convert domain name label to Unicode
+idna_to_unicode_4z4z [] (3) - convert domain name label to Unicode
+idna_to_unicode_8z4z [] (3) - convert domain name label to Unicode
+idna_to_unicode_8z8z [] (3) - convert domain name label to Unicode
+idna_to_unicode_8zlz [] (3) - convert domain name label to Unicode
+idna_to_unicode_lzlz [] (3) - convert domain name label to Unicode
+iecset [] (1) - Set or dump IEC958 status bits
+ieee1284_byte_read [] (3) - data transfer functions
+ieee1284_claim [] (3) - claim access to the port
+ieee1284_clear_irq [] (3) - interrupt notification
+ieee1284_close [] (3) - close an open port
+ieee1284_compat_write [] (3) - data transfer functions
+ieee1284_data_dir [] (3) - control the data lines
+ieee1284_do_nack_handshake [] (3) - manipulate control lines
+ieee1284_ecp_fwd_to_rev [] (3) - ECP direction switching
+ieee1284_ecp_read_addr [] (3) - data transfer functions
+ieee1284_ecp_read_data [] (3) - data transfer functions
+ieee1284_ecp_rev_to_fwd [] (3) - ECP direction switching
+ieee1284_ecp_write_addr [] (3) - data transfer functions
+ieee1284_ecp_write_data [] (3) - data transfer functions
+ieee1284_epp_read_addr [] (3) - data transfer functions
+ieee1284_epp_read_data [] (3) - data transfer functions
+ieee1284_epp_write_addr [] (3) - data transfer functions
+ieee1284_epp_write_data [] (3) - data transfer functions
+ieee1284_find_ports [] (3) - find ports on the system
+ieee1284_free_ports [] (3) - safely deallocate a port list
+ieee1284_frob_control [] (3) - manipulate control lines
+ieee1284_get_deviceid [] (3) - retrieve an IEEE 1284 Device ID
+ieee1284_get_irq_fd [] (3) - interrupt notification
+ieee1284_negotiate [] (3) - IEEE 1284 negotiation
+ieee1284_nibble_read [] (3) - data transfer functions
+ieee1284_open [] (3) - open a port
+ieee1284_read_control [] (3) - manipulate control lines
+ieee1284_read_data [] (3) - control the data lines
+ieee1284_read_status [] (3) - analyse status lines
+ieee1284_ref [] (3) - modify a port's reference count
+ieee1284_release [] (3) - release a port
+ieee1284_set_timeout [] (3) - modify inactivity timeout
+ieee1284_terminate [] (3) - IEEE 1284 negotiation
+ieee1284_unref [] (3) - modify a port's reference count
+ieee1284_wait_data [] (3) - control the data lines
+ieee1284_wait_status [] (3) - analyse status lines
+ieee1284_write_control [] (3) - manipulate control lines
+ieee1284_write_data [] (3) - control the data lines
+ietf2datebook [] (1) - Converts IETF agenda format to install-datebook format
+if [] (3) - use a Perl module if a condition holds
+if [] (n) - Execute scripts conditionally
+ifconfig [] (8) - configure a network interface
+ifnames [] (1) - Extract CPP conditionals from a set of files
+ifrename [] (8) - rename network interfaces based on various static criteria
+ifs [] (6) - draws spinning, colliding iterated-function-system images
+iftab [] (5) - static information about the network interfaces
+igawk [] (1) - gawk with include files
+ijoin [] (1) - Interactive spelling checking
+ijs [] (1) - config - script to get information about the installed version of ijs
+ijsgutenprint [] (1) - Ghostscript driver for Gutenprint
+ilbmtoppm [] (1) - convert an ILBM file into a portable pixmap
+ilogb [] (3) - get integer exponent of a floating-point value
+ilogbf [] (3) - get integer exponent of a floating-point value
+ilogbl [] (3) - get integer exponent of a floating-point value
+image [] (n) - Create and manipulate images
+images... It is unavoidable. Here the size of the canvas is set by the display. .IP (bu 2 Set the display's window name (only available in windowed displays [] (3) - like system using the following comman (requiring pkg-config and gcc):
+imake [] (1) - C preprocessor interface to the make utility
+imaxabs [] (3) - compute the absolute value of an integer
+imaxdiv [] (3) - compute quotient and remainder of an integer division
+img2txt [] (1) - convert images to various text-based coloured files
+imgcmp [] (1) - Image comparison utility
+imginfo [] (1) - Image information utility
+imgtoppm [] (1) - convert an Img-whatnot file into a portable pixmap
+imlib [] (1) - config - Display Imlib and GDK-Imlib Library Configuration
+imlib_config [] (1) - Imlib Configuration Editor
+immedok [] (3) - curses output options
+import [] (1) - saves any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen
+imsmap [] (6) - generate fractal maps
+in.identd [] (8) - TCP/IP IDENT protocol server
+in_wch [] (3) - extract a complex character and rendition from a window
+in_wchnstr [] (3) - get an array of complex characters and renditions from a curses window
+in_wchstr [] (3) - get an array of complex characters and renditions from a curses window
+inb [] (2) - port I/O
+inb_p [] (2) - port I/O
+inch [] (3) - get a character and attributes from a curses window
+inchnstr [] (3) - get a string of characters (and attributes) from a curses window
+inchstr [] (3) - get a string of characters (and attributes) from a curses window
+includeres [] (1) - filter to include resources in a PostScript document
+incr [] (n) - Increment the value of a variable
+indent [] (1) - changes the appearance of a C program by inserting or deleting whitespace
+index [] (3) - locate character in string
+index [] (3) - string operations
+indxbib [] (1) - make inverted index for bibliographic databases
+inet_addr [] (3) - Internet address manipulation routines
+inet_aton [] (3) - Internet address manipulation routines
+inet_aton [] (3) - load the C socket.h defines and structure manipulators
+inet_lnaof [] (3) - Internet address manipulation routines
+inet_makeaddr [] (3) - Internet address manipulation routines
+inet_netof [] (3) - Internet address manipulation routines
+inet_network [] (3) - Internet address manipulation routines
+inet_ntoa [] (3) - Internet address manipulation routines
+inet_ntoa [] (3) - load the C socket.h defines and structure manipulators
+inet_ntop [] (3) - convert IPv4 and IPv6 addresses from binary to text form
+inet_pton [] (3) - convert IPv4 and IPv6 addresses from text to binary form
+inetd [] (8) - internet super - server
+infnan [] (3) - deal with infinite or not-a-number (NaN) result
+info [] (1) - read Info documents
+info [] (5) - readable online documentation
+info [] (n) - Return information about the state of the Tcl interpreter
+infocmp [] (1) - compare or print out terminfo descriptions
+infokey [] (1) - compile customizations for Info
+infotocap [] (1) - convert a terminfo description into a termcap description
+infotopam [] (1) - see http://netpbm.sourceforge.net/doc/infotopam.html
+init [] (8) - process control initialization
+init_color [] (3) - curses color manipulation routines
+init_mib [] (3) - mib_api functions
+init_mib_internals [] (3) - mib_api functions
+init_module [] (2) - initialize a loadable module entry
+init_pair [] (3) - curses color manipulation routines
+initgroups [] (3) - initialize the supplementary group access list
+initlog [] (1) - log messages and events to the system logger
+initrd [] (4) - boot loader initialized RAM disk
+initscr [] (3) - curses screen initialization and manipulation routines
+initscript [] (5) - script that executes inittab commands
+initstate [] (3) - random number generator
+initstate_r [] (3) - reentrant random number generator
+inittab [] (5) - format of the inittab file used by the sysv-compatible init process
+inl [] (2) - port I/O
+inl_p [] (2) - port I/O
+innetgr [] (3) - handle network group entries
+innochecksum [] (1) - offline InnoDB file checksum utility
+innstr [] (3) - get a string of characters from a curses window
+innwstr [] (3) - get a string of wchar_t characters from a curses window
+inotify [] (7) - monitoring file system events
+inotify_add_watch [] (2) - add a watch to an initialized inotify instance
+inotify_init [] (2) - initialize an inotify instance
+inotify_init1 [] (2) - initialize an inotify instance
+inotify_rm_watch [] (2) - remove an existing watch from an inotify instance
+inotifywait [] (1) - wait for changes to files using inotify
+inotifywatch [] (1) - gather filesystem access statistics using inotify
+ins_nwstr [] (3) - insert a wide-character string into a curses window
+ins_wch [] (3) - insert a complex character and rendition into a window
+ins_wstr [] (3) - insert a wide-character string into a curses window
+insb [] (2) - port I/O
+insch [] (3) - insert a character before cursor in a curses window
+insdelln [] (3) - delete and insert lines in a curses window
+insertln [] (3) - delete and insert lines in a curses window
+insl [] (2) - port I/O
+insmod [] (8) - simple program to insert a module into the Linux Kernel
+insnstr [] (3) - insert string before cursor in a curses window
+insque [] (3) - insert/remove an item from a queue
+insstr [] (3) - insert string before cursor in a curses window
+install [] (1) - copy files and set attributes
+install [] (1) - info - update info/dir entries
+install [] (8) - catalog - Manage a SGML or XML centralized catalog
+installpkg [] (8) - install Slackware packages
+instance [] (3) - Process individual MIB instances easily
+instmodsh [] (1) - A shell to examine installed modules
+instr [] (3) - get a string of characters from a curses window
+insw [] (2) - port I/O
+integer [] (3) - Perl pragma to use integer arithmetic instead of floating point
+intel [] (4) - Intel integrated graphics chipsets
+intel_gpu_dump [] (1) - Print out debugging information on the state of the Intel GPU
+intel_gpu_top [] (1) - Display a top-like summary of Intel GPU usage
+intel_stepping [] (1) - Display the stepping information for an Intel GPU
+intel_upload_blit_large [] (1) - microbenchmark of Intel GPU performance
+intel_upload_blit_large_gtt [] (1) - microbenchmark of Intel GPU performance
+intel_upload_blit_large_map [] (1) - microbenchmark of Intel GPU performance
+intel_upload_blit_small [] (1) - microbenchmark of Intel GPU performance
+interaggregate [] (6) - Visualize the momentary and aggregate intersections between slowly moving circles
+interference [] (6) - decaying sinusoidal waves
+intermomentary [] (6) - Visualize the momentary and aggregate intersections between slowly moving circles
+interp [] (n) - Create and manipulate Tcl interpreters
+intltool [] (8) - extract - generate header files which can be read by gettext
+intltool [] (8) - merge - merge translated strings into various types of file
+intltool [] (8) - prepare - Prepare software to make use of intltool
+intltool [] (8) - update - updates PO template file and merge translations with it
+intltoolize [] (8) - copy intltool related files to software package
+intrflush [] (3) - curses input options
+intro [] (1) - Introduction to user commands
+intro [] (2) - Introduction to system calls
+intro [] (3) - Introduction to library functions
+intro [] (4) - Introduction to special files
+intro [] (5) - Introduction to file formats
+intro [] (6) - Introduction to games
+intro [] (7) - Introduction to overview, conventions, and miscellany section
+intro [] (8) - Introduction to administration and privileged commands
+inw [] (2) - port I/O
+inw_p [] (2) - port I/O
+inwstr [] (3) - get a string of wchar_t characters from a curses window
+io_cancel [] (2) - cancel an outstanding asynchronous I/O operation
+io_destroy [] (2) - destroy an asynchronous I/O context
+io_getevents [] (2) - read asynchronous I/O events from the completion queue
+io_setup [] (2) - create an asynchronous I/O context
+io_submit [] (2) - submit asynchronous I/O blocks for processing
+ioctl [] (2) - control device
+ioctl_list [] (2) - list of ioctl calls in Linux/i386 kernel
+ionice [] (1) - get/set program io scheduling class and priority
+ioperm [] (2) - set port input/output permissions
+iopl [] (2) - change I/O privilege level
+ioprio_get [] (2) - get/set I/O scheduling class and priority
+ioprio_set [] (2) - get/set I/O scheduling class and priority
+iostat [] (1) - Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions
+ip [] (7) - Linux IPv4 protocol implementation
+ip [] (8) - show / manipulate routing, devices, policy routing and tunnels
+ip6tables [] (8) - IPv6 packet filter administration
+ip6tables [] (8) - restore - Restore IPv6 Tables
+ip6tables [] (8) - save - Save IPv6 Tables
+ipc [] (2) - System V IPC system calls
+ipcrm [] (1) - remove a message queue, semaphore set or shared memory id
+ipcs [] (1) - provide information on ipc facilities
+ipmask [] (8) - determine network and broadcast addresses given a decimal netmask and IP address
+ipq_create_handle [] (3) - create and destroy libipq handles
+ipq_destroy_handle [] (3) - create and destroy libipq handles
+ipq_errstr [] (3) - libipq error handling routines
+ipq_get_packet [] (3) - query queue messages
+ipq_getmsgerr [] (3) - query queue messages
+ipq_message_type [] (3) - query queue messages
+ipq_perror [] (3) - libipq error handling routines
+ipq_read [] (3) - read queue messages from ip_queue and read into supplied buffer
+ipq_set_mode [] (3) - set the ip_queue queuing mode
+ipq_set_verdict [] (3) - issue verdict and optionally modified packet to kernel
+iptables [] (8) - administration tool for IPv4 packet filtering and NAT
+iptables [] (8) - restore - Restore IP Tables
+iptables [] (8) - save - Save IP Tables
+iptables [] (8) - xml - Convert iptables-save format to XML
+iptraf [] (8) - Interactive Colorful IP LAN Monitor
+ipv6 [] (7) - Linux IPv6 protocol implementation
+irb(main):009:0>Caca.constants =>['BROWN' [] (3) - rcaca -e 'c=Caca::Canvas.new(6, 3).fill_box(0, 0, 2, 2, '#'[0]); c2=Caca::Canvas.new(1, 1).put_str(0, 0, 'x'); c.blit(1, 1, c2); puts c.export_memory('irc')' ### #x# ###
+iruserok [] (3) - routines for returning a stream to a remote command
+is_cleared [] (3) - curses window properties
+is_idcok [] (3) - curses window properties
+is_idlok [] (3) - curses window properties
+is_immedok [] (3) - curses window properties
+is_keypad [] (3) - curses window properties
+is_leaveok [] (3) - curses window properties
+is_linetouched [] (3) - curses refresh control routines
+is_nodelay [] (3) - curses window properties
+is_scrollok [] (3) - curses window properties
+is_syncok [] (3) - curses window properties
+is_term_resized [] (3) - change the curses terminal size
+is_timeout [] (3) - curses window properties
+is_wintouched [] (3) - curses refresh control routines
+isadump [] (8) - examine ISA registers
+isalnum [] (3) - character classification routines
+isalpha [] (3) - character classification routines
+isapnp [] (8) - Configure ISA Plug-and-Play devices
+isapnp.conf [] (5) - File format used by isapnp
+isascii [] (3) - character classification routines
+isaset [] (8) - set ISA registers
+isatty [] (3) - test whether a file descriptor refers to a terminal
+isblank [] (3) - character classification routines
+iscntrl [] (3) - character classification routines
+isdigit [] (3) - character classification routines
+isendwin [] (3) - curses screen initialization and manipulation routines
+isfinite [] (3) - floating-point classification macros
+isgraph [] (3) - character classification routines
+isgreater [] (3) - floating-point relational tests without exception for NaN
+isgreaterequal [] (3) - floating-point relational tests without exception for NaN
+isinf [] (3) - BSD floating - point classification functions
+isinf [] (3) - floating-point classification macros
+isinff [] (3) - BSD floating - point classification functions
+isinfl [] (3) - BSD floating - point classification functions
+isless [] (3) - floating-point relational tests without exception for NaN
+islessequal [] (3) - floating-point relational tests without exception for NaN
+islessgreater [] (3) - floating-point relational tests without exception for NaN
+islower [] (3) - character classification routines
+isnan [] (3) - BSD floating - point classification functions
+isnan [] (3) - floating-point classification macros
+isnanf [] (3) - BSD floating - point classification functions
+isnanl [] (3) - BSD floating - point classification functions
+isnormal [] (3) - floating-point classification macros
+iso_8859 [] (7) - 1 - the ISO 8859-1 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 10 - the ISO 8859-10 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 11 - the ISO 8859-11 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 13 - the ISO 8859-13 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 14 - the ISO 8859-14 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 15 - the ISO 8859-15 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 16 - the ISO 8859-16 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 2 - the ISO 8859-2 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 3 - the ISO 8859-3 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 4 - the ISO 8859-4 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 5 - the ISO 8859-5 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 6 - the ISO 8859-6 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 7 - the ISO 8859-7 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 8 - the ISO 8859-8 character set encoded in octal, decimal, and hexadecimal
+iso_8859 [] (7) - 9 - the ISO 8859-9 character set encoded in octal, decimal, and hexadecimal
+isodebug [] (8) - print mkisofs debug info from ISO-9660 image
+isodump [] (5) - format of IEEE 1394 isochronous packets dump file
+isodump [] (8) - Utility programs for dumping and verifying iso9660 images
+isoinfo [] (8) - Utility programs for dumping and verifying iso9660 images
+isosize [] (8) - outputs the length of a iso9660 file system
+isovfy [] (8) - Utility programs for dumping and verifying iso9660 images
+ispell [] (1) - Interactive spelling checking
+ispell [] (4) - format of ispell dictionaries and affix files
+isprint [] (3) - character classification routines
+ispunct [] (3) - character classification routines
+isspace [] (3) - character classification routines
+issue [] (5) - pre-login message and identification file
+isunordered [] (3) - floating-point relational tests without exception for NaN
+isupper [] (3) - character classification routines
+iswalnum [] (3) - test for alphanumeric wide character
+iswalpha [] (3) - test for alphabetic wide character
+iswblank [] (3) - test for whitespace wide character
+iswcntrl [] (3) - test for control wide character
+iswctype [] (3) - wide-character classification
+iswdigit [] (3) - test for decimal digit wide character
+iswgraph [] (3) - test for graphic wide character
+iswlower [] (3) - test for lowercase wide character
+iswprint [] (3) - test for printing wide character
+iswpunct [] (3) - test for punctuation or symbolic wide character
+iswspace [] (3) - test for whitespace wide character
+iswupper [] (3) - test for uppercase wide character
+iswxdigit [] (3) - test for hexadecimal digit wide character
+isxdigit [] (3) - character classification routines
+iterator_info_s [] (3) - Holds iterator information containing functions which should be called by the iterator_handler to loop over your data set and sort it in a SNMP specific manner
+iw [] (8) - show / manipulate wireless devices and their configuration
+iwconfig [] (8) - configure a wireless network interface
+iwevent [] (8) - Display Wireless Events generated by drivers and setting changes
+iwgetid [] (8) - Report ESSID, NWID or AP/Cell Address of wireless network
+iwlist [] (8) - Get more detailed wireless information from a wireless interface
+iwpriv [] (8) - configure optionals (private) parameters of a wireless network interface
+iwspy [] (8) - Get wireless statistics from specific nodes
+j0 [] (3) - Bessel functions of the first kind
+j0f [] (3) - Bessel functions of the first kind
+j0l [] (3) - Bessel functions of the first kind
+j1 [] (3) - Bessel functions of the first kind
+j1f [] (3) - Bessel functions of the first kind
+j1l [] (3) - Bessel functions of the first kind
+jasper [] (1) - File format converter specialized in JPEG-2000 encoding
+jaztool [] (1) - Tool for IOMega JAZ and ZIP drives
+jbigtopnm [] (1) - JBIG to PNM image file converter
+jcf [] (1) - dump - print information about Java class files
+jfs_debugfs [] (8) - shell-type JFS file system editor
+jfs_fsck [] (8) - initiate replay of the JFS transaction log, and check and repair a JFS formatted device
+jfs_fscklog [] (8) - extract a JFS fsck service log into a file and/or format and display the extracted file
+jfs_logdump [] (8) - dump a JFS formatted device's journal log
+jfs_mkfs [] (8) - create a JFS formatted partition
+jfs_tune [] (8) - adjust tunable file system parameters on JFS
+jigglypuff [] (6) - save your screen by tormenting your eyes
+jigsaw [] (6) - permute an image like a jigsaw puzzle
+jiv [] (1) - Image display utility
+jn [] (3) - Bessel functions of the first kind
+jnf [] (3) - Bessel functions of the first kind
+jng [] (5) - JPEG Network Graphics (JNG) sub-format
+jnl [] (3) - Bessel functions of the first kind
+jobs [] (1) - bash built-in commands, see bash(1)
+joe [] (1) - Joe's Own Editor
+join [] (1) - join lines of two files on a common field
+join [] (n) - Create a string by joining together list elements
+jove [] (1) - an interactive display-oriented text editor
+joystick [] (4) - Joystick input driver
+joystick_close [] (3) - close a joystick
+joystick_getaxis [] (3) - query the current state of a joystick
+joystick_getbutton [] (3) - query the current state of a joystick
+joystick_getnumaxes [] (3) - query the capabilities of a joystick
+joystick_getnumbuttons [] (3) - query the capabilities of a joystick
+joystick_init [] (3) - open a joystick
+joystick_setdefaulthandler [] (3) - set the joystick event handler
+joystick_sethandler [] (3) - set the joystick event handler
+joystick_update [] (3) - query joysticks for status changes
+joytest [] (6) - test the svgalib joystick package in text mode
+jpeg2ktopam [] (1) - see http://netpbm.sourceforge.net/doc/jpeg2ktopam.html
+jpegicc [] (1) - little cms ICC profile applier for JPEG
+jpegtopnm [] (1) - convert JPEG/JFIF file to portable pixmap or graymap
+jpegtran [] (1) - lossless transformation of JPEG files
+jrand48 [] (3) - generate uniformly distributed pseudo-random numbers
+jrand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+juggle [] (6) - juggling man screen saver
+julia [] (6) - draws spinning, animating julia-set fractals
+jv [] (1) - convert - Convert file from one encoding to another
+jw [] (1) - (Jade Wrapper) converts SGML files to other formats
+kabcclient [] (1) - commandline client for the KDE addressbook
+kalzium [] (1) - A KDE based chemistry teaching tool
+kappfinder [] (1) - An app to add installed applications to the KDE menu
+karma_helper [] (1) - program to do something FIXME
+kate [] (1) - Advanced text editor for KDE
+kbd [] (4) - Keyboard input driver
+kbd_mode [] (1) - report or set the keyboard mode
+kbdrate [] (8) - reset the keyboard repeat rate and delay time
+kbookmarkmerger [] (1) - A program for merging a given set of bookmarks into the user's list of bookmarks
+kbruch [] (1) - Learn calculating with fractions
+kbuildsycoca4 [] (8) - Rebuilds the system configuration cache
+kcookiejar4 [] (8) - KDE HTTP cookie daemon
+kde4 [] (1) - config - Prints KDE installation paths
+kded4 [] (8) - KDE daemon - triggers Sycoca database updates when needed
+kdeinit4 [] (8) - Start all other KDE programs and kdeinit loadable modules (KLMs)
+kdeoptions [] (7) - Common commandline options for all applications based on the KDE libraries
+kdesu [] (1) - Runs a program with elevated privileges
+key_decryptsession [] (3) - interfaces to rpc keyserver daemon
+key_defined [] (3) - check if a keycode is defined
+key_encryptsession [] (3) - interfaces to rpc keyserver daemon
+key_gendes [] (3) - interfaces to rpc keyserver daemon
+key_name [] (3) - miscellaneous curses utility routines
+key_secretkey_is_set [] (3) - interfaces to rpc keyserver daemon
+key_setsecret [] (3) - interfaces to rpc keyserver daemon
+keyboard_clearstate [] (3) - reset the state of all keys when in raw keyboard mode
+keyboard_close [] (3) - return the keyboard to normal operation from raw mode
+keyboard_getstate [] (3) - get a pointer to a buffer holding the state of all keys in raw keyboard mode
+keyboard_init [] (3) - initialize the keyboard to raw mode
+keyboard_init_return_fd [] (3) - initialize the keyboard to raw mode
+keyboard_keypressed [] (3) - check if a key is pressed when in raw keyboard mode
+keyboard_setdefaulteventhandler [] (3) - define an event handler for keyboard events in raw mode
+keyboard_seteventhandler [] (3) - define an event handler for keyboard events in raw mode
+keyboard_translatekeys [] (3) - modify scancode mappings in raw keyboard mode
+keyboard_update [] (3) - process raw keyboard events
+keyboard_waitforupdate [] (3) - process raw keyboard events
+keybound [] (3) - return definition of keycode
+keymaps [] (5) - keyboard table descriptions for loadkeys and dumpkeys
+keyname [] (3) - miscellaneous curses utility routines
+keyok [] (3) - enable or disable a keycode
+keypad [] (3) - curses input options
+keysyms [] (n) - keysyms recognized by Tk
+keytest [] (6) - tests the svgalib raw keyboard functions
+kfind [] (1) - file find utility for KDE
+khangman [] (6) - The classical hangman game for KDE
+kibi [] (7) - decimal and binary prefixes
+kibitz [] (1) - allow two people to interact with one shell
+kig [] (1) - an interactive geometry program for KDE
+kill [] (1) - bash built-in commands, see bash(1)
+kill [] (1) - terminate a process
+kill [] (2) - send signal to a process
+killall [] (1) - kill processes by name
+killall5 [] (8) - - send a signal to all processes
+killchar [] (3) - curses environment query routines
+killpg [] (2) - send signal to a process group
+killwchar [] (3) - curses environment query routines
+kilo [] (7) - decimal and binary prefixes
+kjs [] (1) - KDE ECMAScript compatible interpreter
+kjscmd [] (1) - KDE KJSEmbed interpreter
+klein [] (6) - A Klein Bottle (and other parametric surfaces) visualization
+klogctl [] (2) - read and/or clear kernel message ring buffer; set console_loglevel
+klogd [] (8) - Kernel Log Daemon
+kmag [] (1) - Screen magnifier
+kmem [] (4) - system memory, kernel memory and system ports
+kmousetool [] (1) - Accessibility tool to help click the mouse
+kmouth [] (1) - A type-and-say front end for speech synthesizers
+kmplot [] (1) - mathematical function plotter
+koi8 [] (7) - r - Russian Net Character Set encoded in octal, decimal, and hexadecimal
+koi8 [] (7) - u - Ukrainian Net Character Set encoded in octal, decimal, and hexadecimal
+koi8rxterm [] (1) - X terminal emulator for KOI8-R environments
+kross [] (1) - KDE application to run kross scripts
+ksh93 [] (1) - KornShell, a
+ktouch [] (1) - a typing tutor for KDE
+kumppa [] (6) - spiraling, spinning, splashes of color rush toward the screen
+l2ping [] (1) - Send L2CAP echo request and receive answer
+l64a [] (3) - convert between long and base-64
+label [] (n) - Create and manipulate label widgets
+labelframe [] (n) - Create and manipulate labelframe widgets
+labs [] (3) - compute the absolute value of an integer
+lament [] (6) - animates the Lament Configuration
+lappend [] (n) - Append list elements onto a variable
+lassign [] (n) - Assign list elements to variables
+last [] (1) - list logins on the system
+last [] (1) - show listing of last logged in users
+lastb [] (1) - show listing of last logged in users
+lastcomm [] (1) - print out information about previously executed commands
+lastlog [] (8) - examine lastlog file
+lavalite [] (6) - 3D OpenGL simulation of a Lavalite
+lbxproxy [] (1) - Low BandWidth X proxy
+lcdscrub [] (6) - attempt to repair burn-in on LCD screens
+lchown [] (2) - change ownership of a file
+lckpwdf [] (3) - get shadow password file entry
+lcong48 [] (3) - generate uniformly distributed pseudo-random numbers
+lcong48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+ld [] (1) - The GNU linker
+ld [] (8) - linux.so* - dynamic linker/loader
+ld.so [] (8) - linux.so* - dynamic linker/loader
+ld86 [] (1) - Linker for as86(1)
+ld_errno [] (3) - LDAP protocol error handling routines
+ldap [] (3) - OpenLDAP Lightweight Directory Access Protocol API
+ldap.conf [] (5) - ldap configuration file
+ldap_abandon [] (3) - Abandon an LDAP operation in progress
+ldap_abandon_ext [] (3) - Abandon an LDAP operation in progress
+ldap_add [] (3) - Perform an LDAP add operation
+ldap_add_ext [] (3) - Perform an LDAP add operation
+ldap_add_ext_s [] (3) - Perform an LDAP add operation
+ldap_add_s [] (3) - Perform an LDAP add operation
+ldap_attributetype2name [] (3) - Schema definition handling routines
+ldap_attributetype2str [] (3) - Schema definition handling routines
+ldap_attributetype_free [] (3) - Schema definition handling routines
+ldap_bind [] (3) - LDAP bind routines
+ldap_bind_s [] (3) - LDAP bind routines
+ldap_compare [] (3) - Perform an LDAP compare operation
+ldap_compare_s [] (3) - Perform an LDAP compare operation
+ldap_count_entries [] (3) - LDAP result entry parsing and counting routines
+ldap_count_messages [] (3) - Stepping through messages in a result chain
+ldap_count_references [] (3) - Stepping through continuation references in a result chain
+ldap_count_values [] (3) - LDAP attribute value handling routines
+ldap_delete [] (3) - Perform an LDAP delete operation
+ldap_delete_s [] (3) - Perform an LDAP delete operation
+ldap_dn2ufn [] (3) - LDAP DN handling routines
+ldap_err2string [] (3) - LDAP protocol error handling routines
+ldap_errlist [] (3) - LDAP protocol error handling routines
+ldap_explode_dn [] (3) - LDAP DN handling routines
+ldap_explode_rdn [] (3) - LDAP DN handling routines
+ldap_first_attribute [] (3) - step through LDAP entry attributes
+ldap_first_entry [] (3) - LDAP result entry parsing and counting routines
+ldap_first_message [] (3) - Stepping through messages in a result chain
+ldap_first_reference [] (3) - Stepping through continuation references in a result chain
+ldap_free_urldesc [] (3) - LDAP Uniform Resource Locator routines
+ldap_get_dn [] (3) - LDAP DN handling routines
+ldap_get_values [] (3) - LDAP attribute value handling routines
+ldap_get_values_len [] (3) - LDAP attribute value handling routines
+ldap_init [] (3) - Initialize the LDAP library and open a connection to an LDAP server
+ldap_is_ldap_url [] (3) - LDAP Uniform Resource Locator routines
+ldap_matchingrule2name [] (3) - Schema definition handling routines
+ldap_matchingrule2str [] (3) - Schema definition handling routines
+ldap_matchingrule_free [] (3) - Schema definition handling routines
+ldap_modify [] (3) - Perform an LDAP modify operation
+ldap_modify_s [] (3) - Perform an LDAP modify operation
+ldap_modrdn [] (3) - Perform an LDAP modify RDN operation
+ldap_modrdn2 [] (3) - Perform an LDAP modify RDN operation
+ldap_modrdn2_s [] (3) - Perform an LDAP modify RDN operation
+ldap_modrdn_s [] (3) - Perform an LDAP modify RDN operation
+ldap_next_attribute [] (3) - step through LDAP entry attributes
+ldap_next_entry [] (3) - LDAP result entry parsing and counting routines
+ldap_next_message [] (3) - Stepping through messages in a result chain
+ldap_next_reference [] (3) - Stepping through continuation references in a result chain
+ldap_objectclass2name [] (3) - Schema definition handling routines
+ldap_objectclass2str [] (3) - Schema definition handling routines
+ldap_objectclass_free [] (3) - Schema definition handling routines
+ldap_open [] (3) - Initialize the LDAP library and open a connection to an LDAP server
+ldap_parse_reference [] (3) - Extract referrals and controls from a reference message
+ldap_parse_result [] (3) - Parsing results
+ldap_parse_sasl_bind_result [] (3) - LDAP bind routines
+ldap_perror [] (3) - LDAP protocol error handling routines
+ldap_result [] (3) - Wait for the result of an LDAP operation
+ldap_result2error [] (3) - LDAP protocol error handling routines
+ldap_sasl_bind [] (3) - LDAP bind routines
+ldap_sasl_bind_s [] (3) - LDAP bind routines
+ldap_sasl_interactive_bind_s [] (3) - LDAP bind routines
+ldap_scherr2str [] (3) - Schema definition handling routines
+ldap_search [] (3) - Perform an LDAP search operation
+ldap_search_s [] (3) - Perform an LDAP search operation
+ldap_search_st [] (3) - Perform an LDAP search operation
+ldap_simple_bind [] (3) - LDAP bind routines
+ldap_simple_bind_s [] (3) - LDAP bind routines
+ldap_sort_entries [] (3) - LDAP sorting routines
+ldap_sort_strcasecmp [] (3) - LDAP sorting routines
+ldap_sort_values [] (3) - LDAP sorting routines
+ldap_str2attributetype [] (3) - Schema definition handling routines
+ldap_str2matchingrule [] (3) - Schema definition handling routines
+ldap_str2objectclass [] (3) - Schema definition handling routines
+ldap_str2syntax [] (3) - Schema definition handling routines
+ldap_syntax2name [] (3) - Schema definition handling routines
+ldap_syntax2str [] (3) - Schema definition handling routines
+ldap_syntax_free [] (3) - Schema definition handling routines
+ldap_unbind [] (3) - LDAP bind routines
+ldap_unbind_s [] (3) - LDAP bind routines
+ldap_url_parse [] (3) - LDAP Uniform Resource Locator routines
+ldapadd [] (1) - LDAP modify entry and LDAP add entry tools
+ldapcompare [] (1) - LDAP compare tool
+ldapdelete [] (1) - LDAP delete entry tool
+ldapmodify [] (1) - LDAP modify entry and LDAP add entry tools
+ldapmodrdn [] (1) - LDAP rename entry tool
+ldappasswd [] (1) - change the password of an LDAP entry
+ldapsearch [] (1) - LDAP search tool
+ldapwhoami [] (1) - LDAP who am i? tool
+ldattach [] (8) - attach a line discipline to a serial line
+ldbadd [] (1) - Command-line utility for adding records to an LDB
+ldbdel [] (1) - Command-line program for deleting LDB records
+ldbedit [] (1) - Edit LDB databases using your preferred editor
+ldbmodify [] (1) - Modify records in a LDB database
+ldbsearch [] (1) - Search for records in a LDB database
+ldd [] (1) - print shared library dependencies
+ldexp [] (3) - multiply floating-point number by integral power of 2
+ldexpf [] (3) - multiply floating-point number by integral power of 2
+ldexpl [] (3) - multiply floating-point number by integral power of 2
+ldif [] (5) - LDAP Data Interchange Format
+ldiv [] (3) - compute quotient and remainder of an integer division
+le16toh [] (3) - convert values between host and big - /little-endian byte order
+le32toh [] (3) - convert values between host and big - /little-endian byte order
+le64toh [] (3) - convert values between host and big - /little-endian byte order
+leaf_handlers [] (3) - Process individual leaf objects A group of handlers to implement individual leaf objects and instances (both scalar objects, and individual objects and instances within a table)
+leaftoppm [] (1) - convert Interleaf image format to PPM image
+leaveok [] (3) - curses output options
+less [] (1) - opposite of more
+less [] (3) - perl pragma to request less of something
+lesskey [] (1) - specify key bindings for less
+let [] (1) - bash built-in commands, see bash(1)
+lfind [] (3) - linear search of an array
+lftp [] (1) - Sophisticated file transfer program
+lftpget [] (1) - get a file with lftp(1)
+lgamma [] (3) - log gamma function
+lgamma_r [] (3) - log gamma function
+lgammaf [] (3) - log gamma function
+lgammaf_r [] (3) - log gamma function
+lgammal [] (3) - log gamma function
+lgammal_r [] (3) - log gamma function
+lgetxattr [] (2) - retrieve an extended attribute value
+lh_delete [] (3) - dynamic hash table
+lh_doall [] (3) - dynamic hash table
+lh_doall_arg [] (3) - dynamic hash table
+lh_error [] (3) - dynamic hash table
+lh_free [] (3) - dynamic hash table
+lh_insert [] (3) - dynamic hash table
+lh_new [] (3) - dynamic hash table
+lh_node_stats [] (3) - LHASH statistics
+lh_node_stats_bio [] (3) - LHASH statistics
+lh_node_usage_stats [] (3) - LHASH statistics
+lh_node_usage_stats_bio [] (3) - LHASH statistics
+lh_retrieve [] (3) - dynamic hash table
+lh_stats [] (3) - LHASH statistics
+lh_stats_bio [] (3) - LHASH statistics
+lib [] (3) - manipulate @INC at compile time
+libXp [] (3) - X Print Client Library
+libao.conf [] (5) - configuration for libao
+libarchive [] (3) - functions for reading and writing streaming archives
+libarchive [] (5) - formats - archive formats supported by the libarchive library
+libarchive_internals [] (3) - description of libarchive internal interfaces
+libblkid [] (3) - block device identification library
+libc [] (7) - Overview of standard C libraries on Linux
+libcaca [] (3) - authors - Libcaca authors Sam Hocevar <sam@zoy.org>
+libcaca [] (3) - canvas - The libcaca canvas format (version 1) All types are big endian
+libcaca [] (3) - env - Libcaca environment variables Some environment variables can be used to change the behaviour of libcaca without having to modify the program which uses them. These variables are:
+libcaca [] (3) - font - The libcaca font format (version 1) All types are big endian
+libcaca [] (3) - migrating - Migrating from libcaca 0.x to the 1.0 API This section will guide you through the migration of a libcaca 0.x application to the latest API version
+libcaca [] (3) - news - Libcaca news
+libcaca [] (3) - ruby - Libcaca ruby bindings There is no real documentation yet for the Ruby binding but fCmethods on any object should help you :)
+libcaca [] (3) - ruby-api - Libcaca Ruby API Theclasses available for libcaca are :
+libcaca [] (3) - style - Libcaca coding style
+libcaca [] (3) - thanks - Libcaca thanks
+libcaca [] (3) - tutorial - A libcaca tutorial First, a very simple working program, to check for basic libcaca functionalities
+libcurl [] (3) - client-side URL transfers
+libcurl [] (3) - easy - easy interface overview
+libcurl [] (3) - errors - error codes in libcurl
+libcurl [] (3) - multi - how to use the multi interface
+libcurl [] (3) - share - how to use the share interface
+libcurl [] (3) - tutorial - libcurl programming tutorial
+libexpect [] (3) - programmed dialogue library with interactive programs
+libexslt [] (3) - extension library for XSLT
+libgphoto2 [] (3) - cross-platform digital camera library
+libgphoto2_port [] (3) - cross-platform port access library
+libieee1284 [] (3) - IEEE1284 communications library
+libipq [] (3) - iptables userspace packet queuing library
+libmcrypt [] (3) - encryption/decryption library
+libmng [] (3) - Multiple-image Network Graphics (MNG) Reference Library 1.0.9
+libnetFAQ [] (3) - libnet Frequently Asked Questions
+libnetcfg [] (1) - configure libnet
+libnetlink [] (3) - A library for accessing the netlink service
+libnetpbm [] (3) - see http://netpbm.sourceforge.net/doc/libnetpbm.html
+libntfs [] (8) - gnomevfs - Module for GNOME VFS that allows access to NTFS filesystems
+libntfs [] (8) - library for accessing and managing NTFS volumes
+libpbm [] (3) - functions to read and write PBM image files
+libpgm [] (3) - functions to support portable graymap (PGM) programs
+libpng [] (3) - Portable Network Graphics (PNG) Reference Library 1.2.35
+libpng [] (3) - Portable Network Graphics (PNG) Reference Library 1.2.35 (private functions)
+libpnm [] (3) - functions to support pnm and pam programs
+libppm [] (3) - functions to support portable pixmap (PPM) programs
+libraptor [] (3) - Raptor RDF parser and serializer library
+librasqal [] (3) - Rasqal RDF query library
+libsensors [] (3) - publicly accessible functions provided by the sensors library
+libsmbclient [] (7) - An extension library for browsers and that can be used as a generic browsing API
+libsox [] (3) - SoX, an audio file-format and effect library
+libtiff [] (3) - introduction to
+libvga.config [] (5) - the svgalib configuration file
+libvga.et4000 [] (7) - Information for Tseng ET4000 users
+libxml [] (3) - library used to parse XML files
+libxslt [] (3) - library used to do XSL transformations on XML documents
+libzip [] (3) - library for manipulating zip archives
+lilo [] (8) - install boot loader
+lilo.conf [] (5) - configuration file for lilo
+limits [] (5) - Resource limits definition
+lindex [] (n) - Retrieve an element from a list
+line [] (1) - read one line
+lineart [] (6) - test a linear frame buffer
+link [] (1) - call the link function to create a link to a file
+link [] (2) - make a new name for a file
+linkat [] (2) - create a file link relative to directory file descriptors
+links [] (1) - lynx-like alternative character mode WWW browser
+linsert [] (n) - Insert elements into a list
+linuxdoc [] (1) - LinuxDoc DTD SGML converter to other output format
+lispmtopgm [] (1) - convert a Lisp Machine bitmap file into pgm format
+list [] (n) - Create a list
+listalias [] (1) - list user and system aliases
+listbox [] (n) - Create and manipulate listbox widgets
+listen [] (2) - listen for connections on a socket
+listres [] (1) - list resources in widgets
+listxattr [] (2) - list extended attribute names
+lj4_font [] (5) - groff fonts for use with devlj4
+ljlatest [] (6) - prints the most recent public posts on livejournal.com
+lkbib [] (1) - search bibliographic databases
+llabs [] (3) - compute the absolute value of an integer
+lldiv [] (3) - compute quotient and remainder of an integer division
+llength [] (n) - Count the number of elements in a list
+llistxattr [] (2) - list extended attribute names
+llrint [] (3) - round to nearest integer
+llrintf [] (3) - round to nearest integer
+llrintl [] (3) - round to nearest integer
+llround [] (3) - round to nearest integer, away from zero
+llroundf [] (3) - round to nearest integer, away from zero
+llroundl [] (3) - round to nearest integer, away from zero
+lmhosts [] (5) - The Samba NetBIOS hosts file
+ln [] (1) - make links between files
+lndir [] (1) - create a shadow directory of symbolic links to another directory tree
+lnstat [] (8) - unified linux network statistics
+load [] (n) - Load machine code and initialize new commands
+loadTk [] (n) - Load Tk into a safe interpreter
+loaderinfo [] (1) - report SCSI tape device info
+loadkeys [] (1) - load keyboard translation tables
+loadunimap [] (8) - load the kernel unicode-to-font mapping table
+local [] (1) - bash built-in commands, see bash(1)
+locale [] (3) - Perl pragma to use and avoid POSIX locales for built-in operations
+locale [] (5) - Describes a locale definition file
+locale [] (7) - Description of multi-language support
+localeconv [] (3) - get numeric formatting information
+localtime [] (3) - transform date and time to broken-down time or ASCII
+localtime_r [] (3) - transform date and time to broken-down time or ASCII
+lock [] (2) - unimplemented system calls
+lockf [] (3) - apply, test or remove a POSIX lock on an open file
+lockfile [] (1) - conditional semaphore-file creator
+lockward [] (6) - Rotating spinning color-cycling things
+log [] (3) - natural logarithmic function
+log10 [] (3) - base-10 logarithmic function
+log10f [] (3) - base-10 logarithmic function
+log10l [] (3) - base-10 logarithmic function
+log1p [] (3) - logarithm of 1 plus argument
+log1pf [] (3) - logarithm of 1 plus argument
+log1pl [] (3) - logarithm of 1 plus argument
+log2 [] (3) - base-2 logarithmic function
+log2f [] (3) - base-2 logarithmic function
+log2l [] (3) - base-2 logarithmic function
+log2pcap [] (1) - Extract network traces from Samba log files
+logb [] (3) - get exponent of a floating-point value
+logbf [] (3) - get exponent of a floating-point value
+logbl [] (3) - get exponent of a floating-point value
+logf [] (3) - natural logarithmic function
+logger [] (1) - a shell command interface to the syslog(3) system log module
+login [] (1) - begin session on the system
+login [] (3) - write utmp and wtmp entries
+login.access [] (5) - Login access control table
+login_tty [] (3) - tty utility functions
+logl [] (3) - natural logarithmic function
+logname [] (1) - print user's login name
+logout [] (1) - bash built-in commands, see bash(1)
+logout [] (3) - write utmp and wtmp entries
+logoutd [] (8) - Enforce login time restrictions
+logresolve [] (8) - Resolve IP-addresses to hostnames in Apache log files
+logrotate [] (8) - rotates, compresses, and mails system logs
+logsave [] (8) - save the output of a command in a logfile
+logwtmp [] (3) - append an entry to the wtmp file
+longjmp [] (3) - non-local jump to a saved stack context
+longname [] (3) - curses environment query routines
+look [] (1) - display lines beginning with a given string
+look [] (3) - search for key in dictionary file
+lookbib [] (1) - search bibliographic databases
+lookup_dcookie [] (2) - return a directory entry's path
+loop [] (6) - cellular automaton
+losetup [] (8) - set up and control loop devices
+lower [] (n) - Change a window's position in the stacking order
+lp [] (1) - print files
+lp [] (4) - line printer devices
+lpadmin [] (8) - configure cups printers and classes
+lpc [] (8) - line printer control program
+lpinfo [] (8) - show available devices or drivers
+lpmove [] (8) - move a job or all jobs to a new destination
+lpoptions [] (1) - display or set printer options and defaults
+lppasswd [] (1) - add, change, or delete digest passwords
+lpq [] (1) - show printer queue status
+lpr [] (1) - print files
+lprm [] (1) - cancel print jobs
+lpstat [] (1) - print cups status information
+lrand48 [] (3) - generate uniformly distributed pseudo-random numbers
+lrand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+lrange [] (n) - Return one or more adjacent elements from a list
+lremovexattr [] (2) - remove an extended attribute
+lrepeat [] (n) - Build a list by repeating elements
+lreplace [] (n) - Replace elements in a list with new elements
+lreverse [] (n) - Reverse the order of a list
+lrint [] (3) - round to nearest integer
+lrintf [] (3) - round to nearest integer
+lrintl [] (3) - round to nearest integer
+lround [] (3) - round to nearest integer, away from zero
+lroundf [] (3) - round to nearest integer, away from zero
+lroundl [] (3) - round to nearest integer, away from zero
+ls [] (1) - list directory contents
+lsattr [] (1) - list file attributes on a Linux second extended file system
+lsdev [] (8) - display information about installed hardware
+lsearch [] (3) - linear search of an array
+lsearch [] (n) - See if a list contains a particular element
+lseek [] (2) - reposition read/write file offset
+lseek64 [] (3) - reposition 64-bit read/write file offset
+lset [] (n) - Change an element in a list
+lsetxattr [] (2) - set an extended attribute value
+lshal [] (1) - list HAL devices
+lsmod [] (8) - program to show the status of modules in the Linux Kernel
+lsof [] (8) - list open files
+lsort [] (n) - Sort the elements of a list
+lspci [] (8) - list all PCI devices
+lspcmcia [] (8) - display extended PCMCIA debugging information
+lsscsi [] (8) - list SCSI devices (or hosts) and their attributes
+lstat [] (2) - get file status
+lsusb [] (8) - list USB devices
+luit [] (1) - Locale and ISO 2022 support for Unicode terminals
+lutimes [] (3) - change file timestamps
+lvchange [] (8) - change attributes of a logical volume
+lvconvert [] (8) - convert a logical volume from linear to mirror or snapshot
+lvcreate [] (8) - create a logical volume in an existing volume group
+lvdisplay [] (8) - display attributes of a logical volume
+lvextend [] (8) - extend the size of a logical volume
+lvm [] (8) - LVM2 tools
+lvm.conf [] (5) - Configuration file for LVM2
+lvmchange [] (8) - change attributes of the logical volume manager
+lvmdiskscan [] (8) - scan for all devices visible to LVM2
+lvmdump [] (8) - create lvm2 information dumps for diagnostic purposes
+lvreduce [] (8) - reduce the size of a logical volume
+lvremove [] (8) - remove a logical volume
+lvrename [] (8) - rename a logical volume
+lvresize [] (8) - resize a logical volume
+lvs [] (8) - report information about logical volumes
+lvscan [] (8) - scan (all disks) for logical volumes
+lwres [] (3) - introduction to the lightweight resolver library
+lwres_addr_parse [] (3) - lightweight resolver utility functions
+lwres_buffer_add [] (3) - lightweight resolver buffer management
+lwres_buffer_back [] (3) - lightweight resolver buffer management
+lwres_buffer_clear [] (3) - lightweight resolver buffer management
+lwres_buffer_first [] (3) - lightweight resolver buffer management
+lwres_buffer_forward [] (3) - lightweight resolver buffer management
+lwres_buffer_getmem [] (3) - lightweight resolver buffer management
+lwres_buffer_getuint16 [] (3) - lightweight resolver buffer management
+lwres_buffer_getuint32 [] (3) - lightweight resolver buffer management
+lwres_buffer_getuint8 [] (3) - lightweight resolver buffer management
+lwres_buffer_init [] (3) - lightweight resolver buffer management
+lwres_buffer_invalidate [] (3) - lightweight resolver buffer management
+lwres_buffer_putmem [] (3) - lightweight resolver buffer management
+lwres_buffer_putuint16 [] (3) - lightweight resolver buffer management
+lwres_buffer_putuint32 [] (3) - lightweight resolver buffer management
+lwres_buffer_putuint8 [] (3) - lightweight resolver buffer management
+lwres_buffer_subtract [] (3) - lightweight resolver buffer management
+lwres_conf_clear [] (3) - lightweight resolver configuration
+lwres_conf_get [] (3) - lightweight resolver configuration
+lwres_conf_init [] (3) - lightweight resolver configuration
+lwres_conf_parse [] (3) - lightweight resolver configuration
+lwres_conf_print [] (3) - lightweight resolver configuration
+lwres_context_allocmem [] (3) - lightweight resolver context management
+lwres_context_create [] (3) - lightweight resolver context management
+lwres_context_destroy [] (3) - lightweight resolver context management
+lwres_context_freemem [] (3) - lightweight resolver context management
+lwres_context_initserial [] (3) - lightweight resolver context management
+lwres_context_nextserial [] (3) - lightweight resolver context management
+lwres_context_sendrecv [] (3) - lightweight resolver context management
+lwres_endhostent [] (3) - lightweight resolver get network host entry
+lwres_endhostent_r [] (3) - lightweight resolver get network host entry
+lwres_freeaddrinfo [] (3) - socket address structure to host and service name
+lwres_freehostent [] (3) - lightweight resolver nodename / address translation API
+lwres_freerrset [] (3) - retrieve DNS records
+lwres_gabnrequest_free [] (3) - lightweight resolver getaddrbyname message handling
+lwres_gabnrequest_parse [] (3) - lightweight resolver getaddrbyname message handling
+lwres_gabnrequest_render [] (3) - lightweight resolver getaddrbyname message handling
+lwres_gabnresponse_free [] (3) - lightweight resolver getaddrbyname message handling
+lwres_gabnresponse_parse [] (3) - lightweight resolver getaddrbyname message handling
+lwres_gabnresponse_render [] (3) - lightweight resolver getaddrbyname message handling
+lwres_gai_strerror [] (3) - print suitable error string
+lwres_getaddrinfo [] (3) - socket address structure to host and service name
+lwres_getaddrsbyname [] (3) - lightweight resolver utility functions
+lwres_gethostbyaddr [] (3) - lightweight resolver get network host entry
+lwres_gethostbyaddr_r [] (3) - lightweight resolver get network host entry
+lwres_gethostbyname [] (3) - lightweight resolver get network host entry
+lwres_gethostbyname2 [] (3) - lightweight resolver get network host entry
+lwres_gethostbyname_r [] (3) - lightweight resolver get network host entry
+lwres_gethostent [] (3) - lightweight resolver get network host entry
+lwres_gethostent_r [] (3) - lightweight resolver get network host entry
+lwres_getipnodebyaddr [] (3) - lightweight resolver nodename / address translation API
+lwres_getipnodebyname [] (3) - lightweight resolver nodename / address translation API
+lwres_getnamebyaddr [] (3) - lightweight resolver utility functions
+lwres_getnameinfo [] (3) - lightweight resolver socket address structure to hostname and service name
+lwres_getrrsetbyname [] (3) - retrieve DNS records
+lwres_gnbarequest_free [] (3) - lightweight resolver getnamebyaddress message handling
+lwres_gnbarequest_parse [] (3) - lightweight resolver getnamebyaddress message handling
+lwres_gnbarequest_render [] (3) - lightweight resolver getnamebyaddress message handling
+lwres_gnbaresponse_free [] (3) - lightweight resolver getnamebyaddress message handling
+lwres_gnbaresponse_parse [] (3) - lightweight resolver getnamebyaddress message handling
+lwres_gnbaresponse_render [] (3) - lightweight resolver getnamebyaddress message handling
+lwres_herror [] (3) - lightweight resolver error message generation
+lwres_hstrerror [] (3) - lightweight resolver error message generation
+lwres_lwpacket_parseheader [] (3) - lightweight resolver packet handling functions
+lwres_lwpacket_renderheader [] (3) - lightweight resolver packet handling functions
+lwres_net_ntop [] (3) - lightweight resolver IP address presentation
+lwres_nooprequest_free [] (3) - lightweight resolver no-op message handling
+lwres_nooprequest_parse [] (3) - lightweight resolver no-op message handling
+lwres_nooprequest_render [] (3) - lightweight resolver no-op message handling
+lwres_noopresponse_free [] (3) - lightweight resolver no-op message handling
+lwres_noopresponse_parse [] (3) - lightweight resolver no-op message handling
+lwres_noopresponse_render [] (3) - lightweight resolver no-op message handling
+lwres_sethostent [] (3) - lightweight resolver get network host entry
+lwres_sethostent_r [] (3) - lightweight resolver get network host entry
+lwres_string_parse [] (3) - lightweight resolver utility functions
+lwresd [] (8) - lightweight resolver daemon
+lynx [] (1) - a general purpose distributed information browser for the World Wide Web
+lzcmp [] (1) - compare LZMA compressed files
+lzdiff [] (1) - compare LZMA compressed files
+lzgrep [] (1) - search LZMA compressed files for a regular expression
+lzless [] (1) - view LZMA compressed (text) files
+lzmore [] (1) - view LZMA compressed (text) files
+m17n [] (1) - config - Print compile/link options of the m17n library
+m17n [] (1) - db - Print information about the m17n database
+m17nCharacter [] (3) - Character: Character objects and API for them
+m17nCharset [] (3) - Charset: Charset objects and API for them
+m17nChartable [] (3) - Chartable: Chartable objects and API for them
+m17nConv [] (3) - Code Conversion: Coding system objects and API for them
+m17nCore [] (3) - CORE API: API provided by libm17n-core.so
+m17nDatabase [] (3) - Database: The m17n database and API for it
+m17nDebug [] (3) - Debugging: Support for m17n library users to debug their programs
+m17nDraw [] (3) - Drawing: Drawing M-texts on a window
+m17nError [] (3) - Error Handling: Error handling of the m17n library
+m17nFLT [] (3) - FLT API: API provided by libm17n-flt.so
+m17nFace [] (3) - Face: A face is an object to control appearance of M-text
+m17nFont [] (3) - Font: Font object
+m17nFontset [] (3) - Fontset: A fontset is an object that maps a character to fonts
+m17nFrame [] (3) - Frame: A frame is an object corresponding to the graphic device
+m17nGUI [] (3) - GUI API: API provided by libm17n-gui.so
+m17nInputMethod [] (3) - Input Method (basic): API for Input method
+m17nInputMethodWin [] (3) - Input Method (GUI): Input method support on window systems
+m17nIntro [] (3) - Introduction: Introduction to the m17n library
+m17nLocale [] (3) - Locale: Locale objects and API for them
+m17nMisc [] (3) - MISC API: Miscellaneous API
+m17nMtext [] (3) - M-text: M-text objects and API for them
+m17nObject [] (3) - Managed Object: Objects managed by the reference count
+m17nPlist [] (3) - Property List: Property List objects and API for them
+m17nShell [] (3) - SHELL API: API provided by libm17n.so
+m17nSymbol [] (3) - Symbol: Symbol objects and API for them
+m17nTextProperty [] (3) - Text Property: Function to handle text properties
+m17n_object [] (3) - m17n_object: Allocate a managed object
+m17n_object_ref [] (3) - m17n_object_ref: Increment the reference count of a managed object
+m17n_object_unref [] (3) - m17n_object_unref: Decrement the reference count of a managed object
+m17n_status [] (3) - m17n_status: Report which part of the m17n library is initialized
+m4 [] (1) - macro processor
+macbinary [] (1) - Macintosh file format transformer
+mach32info [] (6) - read out configuration information of a Mach32
+macptopbm [] (1) - convert a MacPaint file into a portable bitmap
+madplay [] (1) - decode and play MPEG audio stream(s)
+madvise [] (2) - give advice about use of memory
+madvise1 [] (2) - unimplemented system calls
+magic [] (5) - file command's magic pattern file
+magic_buffer [] (3) - Magic number recognition library
+magic_check [] (3) - Magic number recognition library
+magic_close [] (3) - Magic number recognition library
+magic_compile [] (3) - Magic number recognition library
+magic_error [] (3) - Magic number recognition library
+magic_file [] (3) - Magic number recognition library
+magic_load [] (3) - Magic number recognition library
+magic_open [] (3) - Magic number recognition library
+magic_setflags [] (3) - Magic number recognition library
+mail.local [] (8) - store mail in a mailbox
+mailaddr [] (7) - mail addressing description
+mailcap [] (5) - metamail capabilities file
+mailq [] (1) - print the mail queue
+mailstats [] (8) - display mail statistics
+mailto [] (1) - Simple multimedia mail sending program
+mailto [] (1) - hebrew - Run the mailto program to send Hebrew/English mail
+mailto.conf [] (5) - configuration file for cups email notifier
+mailx [] (1) - send and receive Internet mail
+main programmer Jean [] (3) - Yves Lamoureux <jylam@lnxscene.org>
+major [] (3) - manage a device number
+make [] (1) - GNU make utility to maintain groups of programs
+make_win_bin_dist [] (1) - package MySQL distribution as ZIP archive
+make_win_src_distribution [] (1) - create source distribution for Windows
+makecontext [] (3) - manipulate user context
+makedbm [] (8) - create or dump a ypserv database file
+makedepend [] (1) - create dependencies in makefiles
+makedev [] (3) - manage a device number
+makeg [] (1) - make a debuggable executable
+makeinfo [] (1) - translate Texinfo documents
+makekdewidgets [] (1) - Builds Qt widget plugins from an ini style description file
+makemap [] (8) - create database maps for sendmail
+makepkg [] (8) - make Slackware packages
+makestrs [] (1) - makes string table C source and header(s)
+makewhatis [] (8) - Create the whatis database
+malloc [] (3) - Allocate and free dynamic memory
+man [] (1) - format and display the on-line manual pages
+man [] (7) - macros to format man pages
+man [] (7) - pages - conventions for writing Linux man pages
+man.conf [] (5) - configuration data for man
+man2html [] (1) - format a manual page in html
+manuals with [] (7) - mdoc
+mapscrn [] (8) - load screen output mapping table
+math_error [] (7) - detecting errors from mathematical functions
+matherr [] (3) - SVID math library exception handling
+mathfunc [] (n) - Mathematical functions for Tcl expressions
+mathop [] (n) - Mathematical operators as Tcl commands
+mattrib [] (1) - change MSDOS file attribute flags
+maze [] (6) - an automated X11 demo repeatedly creating and solving a random maze
+mbadblocks [] (1) - tests a floppy disk, and marks the bad blocks in the FAT
+mbind [] (2) - Set memory policy for a memory range
+mblen [] (3) - determine number of bytes in next multibyte character
+mbox [] (5) - Format for mail message storage
+mbrlen [] (3) - determine number of bytes in next multibyte character
+mbrtowc [] (3) - convert a multibyte sequence to a wide character
+mbsinit [] (3) - test for initial shift state
+mbsnrtowcs [] (3) - convert a multibyte string to a wide-character string
+mbsrtowcs [] (3) - convert a multibyte string to a wide-character string
+mbstowcs [] (3) - convert a multibyte string to a wide-character string
+mbtowc [] (3) - convert a multibyte sequence to a wide character
+mc [] (1) - Visual shell for Unix-like systems
+mcabber [] (1) - a simple Jabber console client
+mcat [] (1) - dump raw disk image
+mcd [] (1) - change MSDOS directory
+mcedit [] (1) - Internal file editor of GNU Midnight Commander
+mchar_decode [] (3) - Decode a code-point
+mchar_define_charset [] (3) - Define a charset
+mchar_define_property [] (3) - Define a character property
+mchar_encode [] (3) - Encode a character code
+mchar_get_prop [] (3) - Get the value of a character property
+mchar_get_prop_table [] (3) - Get the char-table for a character property
+mchar_list_charset [] (3) - List symbols representing charsets
+mchar_map_charset [] (3) - Call a function for all the characters in a specified charset
+mchar_put_prop [] (3) - Set the value of a character property
+mchar_resolve_charset [] (3) - Resolve charset name
+mchartable [] (3) - Create a new chartable
+mchartable_lookup [] (3) - Return the assigned value of a character in a chartable
+mchartable_map [] (3) - Call a function for characters in a chartable
+mchartable_max_char [] (3) - Return the maximum character whose value is set in a chartabe
+mchartable_min_char [] (3) - Return the minimum character whose value is set in a chartabe
+mchartable_range [] (3) - Search for characters that have non-default value
+mchartable_set [] (3) - Assign a value to a character in a chartable
+mchartable_set_range [] (3) - Assign a value to the characters in the specified range
+mconv_buffer_converter [] (3) - Create a code converter bound to a buffer
+mconv_decode [] (3) - Decode a byte sequence into an M-text
+mconv_decode_buffer [] (3) - Decode a buffer area based on a coding system
+mconv_decode_stream [] (3) - Decode a stream input based on a coding system
+mconv_define_coding [] (3) - Define a coding system
+mconv_encode [] (3) - Encode an M-text into a byte sequence
+mconv_encode_buffer [] (3) - Encode an M-text into a buffer area
+mconv_encode_range [] (3) - Encode a part of an M-text
+mconv_encode_stream [] (3) - Encode an M-text to write to a stream
+mconv_free_converter [] (3) - Free a code converter
+mconv_getc [] (3) - Read a character via a code converter
+mconv_gets [] (3) - Read a line using a code converter
+mconv_list_codings [] (3) - List symbols representing coding systems
+mconv_putc [] (3) - Write a character via a code converter
+mconv_rebind_buffer [] (3) - Bind a buffer to a code converter
+mconv_rebind_stream [] (3) - Bind a stream to a code converter
+mconv_reset_converter [] (3) - Reset a code converter
+mconv_resolve_coding [] (3) - Resolve coding system name
+mconv_stream_converter [] (3) - Create a code converter bound to a stream
+mconv_ungetc [] (3) - Push a character back to a code converter
+mcookie [] (1) - generate magic cookies for xauth
+mcopy [] (1) - copy MSDOS files to/from Unix
+mcprint [] (3) - ship binary data to printer
+mcview [] (1) - Internal file viewer of GNU Midnight Commander
+md [] (4) - Multiple Device driver aka Linux Software RAID
+md2 [] (1) - message digests
+md4 [] (1) - message digests
+md5 [] (1) - message digests
+md5sum [] (1) - compute and check MD5 message digest
+mdadm [] (8) - manage MD devices aka Linux Software RAID
+mdadm.conf [] (5) - configuration for management of Software RAID with mdadm
+mdatabase_define [] (3) - Define a data of the m17n database
+mdatabase_find [] (3) - Look for a data in the database
+mdatabase_list [] (3) - Return a data list of the m17n database
+mdatabase_load [] (3) - Load a data from the database
+mdatabase_tag [] (3) - Get tags of a data
+mdatopbm [] (1) - convert a Microdesign .mda or .mdp file into a portable bitmap
+mdbCharsetList [] (5) - List of character set definitions
+mdbCodingList [] (5) - List of coding system definitions
+mdbDir [] (5) - List of data in a database directory
+mdbFLT [] (5) - Font Layout Table
+mdbFontEncoding [] (5) - Font Encoding
+mdbFontSize [] (5) - Font Size
+mdbFontset [] (5) - Fontset
+mdbGeneral [] (5) - General Format
+mdbIM [] (5) - Input Method
+mdbTutorialIM [] (5) - Tutorial of input method
+mdc2 [] (1) - message digests
+mdebug_dump_all_symbols [] (3) - Dump all symbol names
+mdebug_dump_chartab [] (3) - Dump a chartable
+mdebug_dump_face [] (3) - Dump a face
+mdebug_dump_flt [] (3) - Dump a Font Layout Table
+mdebug_dump_font [] (3) - Dump a font
+mdebug_dump_fontset [] (3) - Dump a fontset
+mdebug_dump_im [] (3) - Dump an input method
+mdebug_dump_mtext [] (3) - Dump an M-text
+mdebug_dump_plist [] (3) - Dump a property list
+mdebug_dump_symbol [] (3) - Dump a symbol
+mdebug_hook [] (3) - Hook function called on an error
+mdel [] (1) - delete an MSDOS file mdeltree - recursively delete an MSDOS directory and its contents
+mdeltree [] (1) - recursively delete an MSDOS directory and its contents
+mdir [] (1) - display an MSDOS directory
+mdoc [] (7) - quick reference guide for the - mdoc macro package
+mdoc.samples [] (7) - tutorial sampler for writing
+mdraw_clear_cache [] (3) - clear cached information
+mdraw_coordinates_position [] (3) - Return the character position nearest to the coordinates
+mdraw_default_line_break [] (3) - Calculate a line breaking position
+mdraw_glyph_info [] (3) - Compute information about a glyph
+mdraw_glyph_list [] (3) - Compute information about glyph sequence
+mdraw_image_text [] (3) - Draw an M-text on a window as an image
+mdraw_per_char_extents [] (3) - Obtain per character dimension information
+mdraw_text [] (3) - Draw an M-text on a window
+mdraw_text_extents [] (3) - Compute text pixel width
+mdraw_text_items [] (3) - Draw one or more textitems
+mdraw_text_per_char_extents [] (3) - Compute the text dimensions of each character of M-text
+mdraw_text_with_control [] (3) - Draw an M-text on a window with fine control
+mdu [] (1) - display the amount of space occupied by an MSDOS directory
+mebi [] (7) - decimal and binary prefixes
+mega [] (7) - decimal and binary prefixes
+megatron [] (1) - Macintosh file format transformer
+meinproc4 [] (8) - KDE translator for XML
+mem [] (4) - system memory, kernel memory and system ports
+mem_d [] (3) - AA-lib memory driver
+memalign [] (3) - Allocate aligned memory
+memccpy [] (3) - byte string operations
+memccpy [] (3) - copy memory area
+memchr [] (3) - byte string operations
+memchr [] (3) - scan memory for a character
+memcmp [] (3) - byte string operations
+memcmp [] (3) - compare memory areas
+memcpy [] (3) - byte string operations
+memcpy [] (3) - copy memory area
+memfrob [] (3) - byte string operations
+memfrob [] (3) - frobnicate (encrypt) a memory area
+memmem [] (3) - byte string operations
+memmem [] (3) - locate a substring
+memmove [] (3) - byte string operations
+memmove [] (3) - copy memory area
+memory [] (n) - Control Tcl memory debugging capabilities
+mempcpy [] (3) - copy memory area
+memrchr [] (3) - scan memory for a character
+memscroller [] (6) - scrolls a dump of its own RAM across the screen
+memset [] (3) - byte string operations
+memset [] (3) - fill memory with a constant byte
+mencoder [] (1) - movie encoder
+menger [] (6) - 3D menger gasket fractal
+menu [] (3) - curses extension for programming menus
+menu [] (n) - Create and manipulate menu widgets
+menu_attributes [] (3) - color and attribute control for menus
+menu_cursor [] (3) - position a menu's cursor
+menu_driver [] (3) - command-processing loop of the menu system
+menu_format [] (3) - set and get menu sizes
+menu_hook [] (3) - set hooks for automatic invocation by applications
+menu_items [] (3) - make and break connections between items and menus
+menu_mark [] (3) - get and set the menu mark string
+menu_new [] (3) - create and destroy menus
+menu_opts [] (3) - set and get menu options
+menu_pattern [] (3) - get and set a menu's pattern buffer
+menu_post [] (3) - write or erase menus from associated subwindows
+menu_requestname [] (3) - handle printable menu request names
+menu_spacing [] (3) - Control spacing between menu items
+menu_userptr [] (3) - associate application data with a menu item
+menu_win [] (3) - make and break menu window and subwindow associations
+menubutton [] (n) - Create and manipulate menubutton widgets
+merge [] (1) - three-way file merge
+mergelib [] (1) - merge one library into another
+mesg [] (1) - display (do not display) messages from other users
+message [] (n) - Create and manipulate message widgets
+messages [] (1) - quick count of messages in mailbox or folder
+meta [] (3) - curses input options
+metaflac [] (1) - program to list, add, remove, or edit metadata in one or more FLAC files
+metamail [] (1) - infrastructure for mailcap-based multimedia mail handling
+metasend [] (1) - Crude interface for sending non-text mail
+mev [] (1) - a program to report mouse events
+mface [] (3) - Create a new face
+mface_copy [] (3) - Make a copy of a face
+mface_equal [] (3) - Compare faces
+mface_from_font [] (3) - Make a face from a font
+mface_get_hook [] (3) - Get the hook function of a face
+mface_get_prop [] (3) - Get the value of a face property
+mface_merge [] (3) - Merge faces
+mface_put_hook [] (3) - Set a hook function to a face
+mface_put_prop [] (3) - Set a value of a face property
+mface_update [] (3) - Update a face
+mflt_coverage [] (3) - Return a coverage of a FLT
+mflt_find [] (3) - Find an FLT suitable for the specified character and font
+mflt_get [] (3) - Return an FLT object that has a specified name
+mflt_name [] (3) - Return the name of an FLT
+mflt_run [] (3) - Layout characters with an FLT
+mfont [] (3) - Create a new font
+mfont_check [] (3) - Check the usability of a font
+mfont_close [] (3) - Close a font
+mfont_copy [] (3) - Make a copy of a font
+mfont_encapsulate [] (3) - Encapusulate a font
+mfont_find [] (3) - Find a font
+mfont_from_name [] (3) - Create a new font from fontname
+mfont_get_prop [] (3) - Get a property value of a font
+mfont_list [] (3) - Get a list of fonts
+mfont_list_family_names [] (3) - Get a list of font famiy names
+mfont_match_p [] (3) - Check is a font matches with a font spec
+mfont_name [] (3) - Create a fontname from a font
+mfont_open [] (3) - Open a font
+mfont_parse_name [] (3) - Create a font by parsing a fontname
+mfont_put_prop [] (3) - Put a property value to a font
+mfont_resize_ratio [] (3) - Get resize information of a font
+mfont_selection_priority [] (3) - Return the font selection priority
+mfont_set_encoding [] (3) - Set encoding of a font
+mfont_set_selection_priority [] (3) - Set the font selection priority
+mfont_unparse_name [] (3) - Create a fontname from a font
+mfontset [] (3) - Return a fontset
+mfontset_copy [] (3) - Make a copy of a fontset
+mfontset_lookup [] (3) - Lookup a fontset
+mfontset_modify_entry [] (3) - Modify the contents of a fontset
+mfontset_name [] (3) - Return the name of a fontset
+mformat [] (1) - add an MSDOS filesystem to a low-level formatted floppy disk
+mframe [] (3) - Create a new frame
+mframe_get_prop [] (3) - Return property value of frame
+mga [] (4) - Matrox video driver
+mgrtopbm [] (1) - convert a MGR bitmap into a portable bitmap
+mhash [] (3) - Hash Library
+mib2c [] (1) - - generate template code for extending the agent
+mib2c [] (1) - update - script to merge custom code into updated mib2c code
+mib2c.conf [] (5) - - How to write mib2c.conf files to do ANYTHING based on MIB input
+mib_handler_methods [] (3) - Defines the subhandlers to be called by the multiplexer helper
+mii [] (8) - tool - view, manipulate media-independent interface status
+mille [] (6) - play Mille Bornes
+mime.convs [] (5) - mime type conversion file for cups
+mime.types [] (5) - mime type description file for cups
+mimencode [] (1) - Translate to and from mail-oriented encoding formats
+mincore [] (2) - determine whether pages are resident in memory
+minfo [] (1) - print the parameters of a MSDOS filesystem
+minicom [] (1) - friendly serial communication program
+minor [] (3) - manage a device number
+minput_close_im [] (3) - Close an input method
+minput_config_command [] (3) - Configure the key sequence of an input method command
+minput_config_file [] (3) - Get the name of per-user customization file
+minput_config_variable [] (3) - Configure the value of an input method variable
+minput_create_ic [] (3) - Create an input context
+minput_destroy_ic [] (3) - Destroy an input context
+minput_event_to_key [] (3) - Convert an event to an input key
+minput_filter [] (3) - Filter an input key
+minput_get_command [] (3) - Get information about input method command(s)
+minput_get_description [] (3) - Get description text of an input method
+minput_get_title_icon [] (3) - Get title and icon filename of an input method
+minput_get_variable [] (3) - Get information about input method variable(s)
+minput_lookup [] (3) - Look up a text produced in the input context
+minput_open_im [] (3) - Open an input method
+minput_reset_ic [] (3) - Reset an input context
+minput_save_config [] (3) - Save configurations in per-user customization file
+minput_set_spot [] (3) - Set the spot of the input context
+minput_toggle [] (3) - Toggle input method
+mirrorblob [] (6) - Draws a wobbly blob that distorts the image behind it
+mitem_current [] (3) - set and get current_menu_item
+mitem_name [] (3) - get menu item name and description fields
+mitem_new [] (3) - create and destroy menu items
+mitem_opts [] (3) - set and get menu item options
+mitem_userptr [] (3) - associate application data with a menu item
+mitem_value [] (3) - set and get menu item values
+mitem_visible [] (3) - check visibility of a menu item
+mjoytest [] (6) - test the svgalib joystick package in graphics mode
+mk_cmds [] (1) - error table compiler
+mkcomposecache [] (8) - create a cache file for a compose file explicitely
+mkdir [] (1) - make directories
+mkdir [] (2) - create a directory
+mkdirat [] (2) - create a directory relative to a directory file descriptor
+mkdirhier [] (1) - makes a directory hierarchy
+mkdosfs [] (8) - create an MS-DOS file system under Linux
+mkdtemp [] (3) - create a unique temporary directory
+mke2fs [] (8) - create an ext2/ext3 filesystem
+mke2fs.conf [] (5) - Configuration file for mke2fs
+mkfifo [] (1) - make FIFOs (named pipes)
+mkfifo [] (3) - make a FIFO special file (a named pipe)
+mkfifoat [] (3) - make a FIFO (named pipe) relative to a directory file descriptor
+mkfontdir [] (1) - create an index of X font files in a directory
+mkfontscale [] (1) - create an index of scalable font files for X
+mkfs [] (8) - build a Linux file system
+mkfs.bfs [] (8) - make an SCO bfs filesystem
+mkfs.minix [] (8) - make a Linux MINIX filesystem
+mkfs.xfs [] (8) - construct an XFS filesystem
+mkhtmlindex [] (1) - generate index files for HTML man pages
+mkinitrd [] (8) - create or rebuilt an initrd (initial ramdisk) using initramfs (simple cpio+gzip)
+mkisofs [] (8) - create an hybrid ISO9660/JOLIET/HFS filesystem with optional Rock Ridge attributes
+mklost+found [] (8) - create a lost+found directory on a mounted Linux second extended file system
+mkmanifest [] (1) - makes list of file names and their DOS 8+3 equivalent
+mknetid [] (8) - generate data for netid map
+mknod [] (1) - make block or character special files
+mknod [] (2) - create a special or ordinary file
+mknodat [] (2) - create a special or ordinary file relative to a directory file descriptor
+mkntfs [] (8) - create an NTFS file system
+mkostemp [] (3) - create a unique temporary file
+mkpasswd [] (1) - generate new password, optionally apply it to a user
+mkpasswd [] (8) - Update passwd and group database files
+mkreiserfs [] (8) - The create tool for the Linux ReiserFS filesystem
+mkrescue [] (8) - make rescue floppy
+mkstemp [] (3) - create a unique temporary file
+mkswap [] (8) - set up a Linux swap area
+mktemp [] (1) - create a temporary file or directory
+mktemp [] (1) - make temporary filename (unique)
+mktemp [] (3) - make a unique temporary filename
+mktime [] (3) - transform date and time to broken-down time or ASCII
+mkzftree [] (1) - Create a zisofs/RockRidge compressed file tree
+mlabel [] (1) - make an MSDOS volume label
+mlocale_get_prop [] (3) - Get the value of a locale property
+mlocale_set [] (3) - Set the current locale
+mlock [] (2) - lock and unlock memory
+mlockall [] (2) - lock and unlock memory
+mm [] (1) - config - OSSP mm library configuration/build utility
+mmap [] (2) - map or unmap files or devices into memory
+mmap2 [] (2) - map files or devices into memory
+mmd [] (1) - make an MSDOS subdirectory
+mmount [] (1) - mount an MSDOS disk
+mmove [] (1) - move or rename an MSDOS file or subdirectory
+mmroff [] (1) - reference preprocessor
+mng [] (5) - Multiple-image Network Graphics (MNG) format
+mode3 [] (8) - set a vesa mode
+mode_end_call [] (3) - At the end of a series of requests, call another handler hook
+modf [] (3) - extract signed integral and fractional values from floating - point number
+modff [] (3) - extract signed integral and fractional values from floating - point number
+modfl [] (3) - extract signed integral and fractional values from floating - point number
+modify_ldt [] (2) - get or set ldt
+modinfo [] (8) - program to show information about a Linux Kernel module
+modprobe [] (8) - program to add and remove modules from the Linux Kernel
+modprobe.conf [] (5) - Configuration file/directory for modprobe
+modprobe.d [] (5) - Configuration file/directory for modprobe
+modules.dep [] (5) - List of module dependencies
+moduli [] (5) - Diffie Hellman moduli
+moebius [] (6) - Escher's Moebuis Strip II, with ants
+moebiusgears [] (6) - draw a moebius strip of interlocking gears
+mogrify [] (1) - resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. Mogrify overwrites the original image file, whereas, convert(1) writes to a different image file
+moire [] (6) - draw circular interference patterns
+moire2 [] (6) - circular interference patterns
+molecule [] (6) - draws 3D molecular structures
+monop [] (6) - Monopoly game
+montage [] (1) - create a composite image by combining several separate images. The images are tiled on the composite image optionall adorned with a border, frame, image name, and more
+more [] (1) - file perusal filter for crt viewing
+morph3d [] (6) - 3d morphing objects
+morse [] (6) - reformat input as punch cards, paper tape or morse code
+most [] (1) - browse or page through a text file
+motd [] (5) - message of the day
+mount [] (2) - mount file system
+mount [] (8) - mount a file system
+mount.cifs [] (8) - mount using the Common Internet File System (CIFS)
+mount.nfs [] (8) - mount a Network File System
+mount.nfs4 [] (8) - mount a Network File System
+mountain [] (6) - random 3D plots that look vaguely mountainous
+mountpoint [] (1) - see if a directory is a mountpoint
+mouse [] (1) - test - a tool for determining mouse type and device it's attached to
+mouse [] (4) - Xorg mouse input driver
+mouse [] (4) - serial mouse interface
+mouse_close [] (3) - explicitly close a mouse
+mouse_getbutton [] (3) - query the mouse state
+mouse_getcaps [] (3) - returns the capabilities of the mouse
+mouse_getposition_6d [] (3) - provide an interface to 3d mice
+mouse_getx [] (3) - query the mouse state
+mouse_gety [] (3) - query the mouse state
+mouse_init [] (3) - specifically initialize a mouse
+mouse_init_return_fd [] (3) - specifically initialize a mouse
+mouse_setdefaulteventhandler [] (3) - set a mouse event handler
+mouse_seteventhandler [] (3) - set a mouse event handler
+mouse_setposition [] (3) - set the current mouse position
+mouse_setposition_6d [] (3) - provide an interface to 3d mice
+mouse_setrange_6d [] (3) - provide an interface to 3d mice
+mouse_setscale [] (3) - sets a mouse scale factor
+mouse_setwrap [] (3) - set what happens at the mouse boundaries
+mouse_setxrange [] (3) - define the boundaries for the mouse cursor
+mouse_setyrange [] (3) - define the boundaries for the mouse cursor
+mouse_trafo [] (3) - mouse interface through curses
+mouse_update [] (3) - updates the mouse state
+mouse_waitforupdate [] (3) - wait for an mouse update
+mouseinterval [] (3) - mouse interface through curses
+mousemask [] (3) - mouse interface through curses
+mousetest [] (6) - tests the svgalib mouse driver
+move [] (3) - move curses window cursor
+move_pages [] (2) - move individual pages of a process to another node
+mpartition [] (1) - partition an MSDOS hard disk
+mpg321 [] (1) - Free clone of mpg123, a command - line mp3 player
+mplayer [] (1) - movie player
+mplist [] (3) - Create a property list object
+mplist_add [] (3) - Add a property at the end of a property list
+mplist_copy [] (3) - Copy a property list
+mplist_deserialize [] (3) - Generate a property list by deserializing an M-text
+mplist_find_by_key [] (3) - Find a property of a specific key in a property list
+mplist_find_by_value [] (3) - Find a property of a specific value in a property list
+mplist_get [] (3) - Get the value of a property in a property list
+mplist_get_func [] (3) - Get the value (function pointer) of a property in a property list
+mplist_key [] (3) - Return the key of the first property in a property list
+mplist_length [] (3) - Return the length of a property list
+mplist_next [] (3) - Return the next sublist of a property list
+mplist_pop [] (3) - Remove a property at the beginning of a property list
+mplist_push [] (3) - Add a property at the beginning of a property list
+mplist_put [] (3) - Set the value of a property in a property list
+mplist_put_func [] (3) - Set the value (function pointer) of a property in a property list
+mplist_set [] (3) - Set the first property in a property list
+mplist_value [] (3) - Return the value of the first property in a property list
+mpool [] (3) - shared memory buffer pool
+mprotect [] (2) - set protection on a region of memory
+mpstat [] (1) - Report processors related statistics
+mpx [] (2) - unimplemented system calls
+mq_close [] (3) - close a message queue descriptor
+mq_getattr [] (3) - get/set message queue attributes
+mq_getsetattr [] (2) - get/set message queue attributes
+mq_notify [] (3) - register for notification when a message is available
+mq_open [] (3) - open a message queue
+mq_overview [] (7) - Overview of POSIX message queues
+mq_receive [] (3) - receive a message from a message queue
+mq_send [] (3) - send a message to a message queue
+mq_setattr [] (3) - get/set message queue attributes
+mq_timedreceive [] (3) - receive a message from a message queue
+mq_timedsend [] (3) - send a message to a message queue
+mq_unlink [] (3) - remove a message queue
+mrand48 [] (3) - generate uniformly distributed pseudo-random numbers
+mrand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+mrd [] (1) - remove an MSDOS subdirectory
+mremap [] (2) - re-map a virtual memory address
+mren [] (1) - rename an existing MSDOS file
+mrftopbm [] (1) - see http://netpbm.sourceforge.net/doc/mrftopbm.html
+mro [] (3) - Method Resolution Order
+msgattrib [] (1) - attribute matching and manipulation on message catalog
+msgcat [] (1) - combines several message catalogs
+msgcat [] (n) - Tcl message catalog
+msgcmp [] (1) - compare message catalog and template
+msgcomm [] (1) - match two message catalogs
+msgconv [] (1) - character set conversion for message catalog
+msgctl [] (2) - message control operations
+msgen [] (1) - create English message catalog
+msgexec [] (1) - process translations of message catalog
+msgfilter [] (1) - edit translations of message catalog
+msgfmt [] (1) - compile message catalog to binary format
+msgget [] (2) - get a message queue identifier
+msggrep [] (1) - pattern matching on message catalog
+msginit [] (1) - initialize a message catalog
+msgmerge [] (1) - merge message catalog and template
+msgrcv [] (2) - message operations
+msgsnd [] (2) - message operations
+msgunfmt [] (1) - uncompile message catalog from binary format
+msguniq [] (1) - unify duplicate translations in message catalog
+mshowfat [] (1) - shows FAT clusters allocated to file
+msql2mysql [] (1) - convert mSQL programs for use with MySQL
+msymbol [] (3) - Get a symbol
+msymbol_as_managing_key [] (3) - Create a managing key
+msymbol_exist [] (3) - Search for a symbol that has a specified name
+msymbol_get [] (3) - Get the value of a symbol property
+msymbol_get_func [] (3) - Get the value (function pointer) of a symbol property
+msymbol_is_managing_key [] (3) - Check if a symbol is a managing key
+msymbol_name [] (3) - Get symbol name
+msymbol_put [] (3) - Set the value of a symbol property
+msymbol_put_func [] (3) - Set the value (function pointer) of a symbol property
+msync [] (2) - synchronize a file with a memory map
+mt [] (1) - control magnetic tape drive operation
+mtext [] (3) - Allocate a new M-text
+mtext_attach_property [] (3) - Attach a text property to an M-text
+mtext_case_compare [] (3) - Compare specified regions of two M-texts ignoring cases
+mtext_casecmp [] (3) - Compare two M-texts ignoring cases
+mtext_cat [] (3) - Append an M-text to another
+mtext_cat_char [] (3) - Append a character to an M-text
+mtext_character [] (3) - Search a character in an M-text
+mtext_chr [] (3) - Return the position of the first occurrence of a character in an M-text
+mtext_cmp [] (3) - Compare two M-texts character-by-character
+mtext_coll [] (3) - Compare two M-texts using the current locale
+mtext_compare [] (3) - Compare specified regions of two M-texts
+mtext_copy [] (3) - Copy characters in the specified range into an M-text
+mtext_cpy [] (3) - Copy an M-text to another
+mtext_cspn [] (3) - Search an M-text for the complement of a set of characters
+mtext_data [] (3) - Get information about the text data in M-text
+mtext_del [] (3) - Delete characters in the specified range destructively
+mtext_deserialize [] (3) - Deserialize text properties in an M-text
+mtext_detach_property [] (3) - Detach a text property from an M-text
+mtext_dup [] (3) - Create a copy of an M-text
+mtext_duplicate [] (3) - Create a new M-text from a part of an existing M-text
+mtext_from_data [] (3) - Allocate a new M-text with specified data
+mtext_ftime [] (3) - Format date and time
+mtext_get_prop [] (3) - Get the value of the topmost text property
+mtext_get_prop_keys [] (3) - Get a list of text property keys at a position of an M-text
+mtext_get_prop_values [] (3) - Get multiple values of a text property
+mtext_get_properties [] (3) - Get multiple text properties
+mtext_get_property [] (3) - Get the topmost text property
+mtext_getenv [] (3) - Get an environment variable
+mtext_ins [] (3) - Insert an M-text into another M-text
+mtext_ins_char [] (3) - Insert a character into an M-text
+mtext_insert [] (3) - Insert sub-text of an M-text into another M-text
+mtext_len [] (3) - Number of characters in M-text
+mtext_line_break [] (3) - Find a linebreak postion of an M-text
+mtext_lowercase [] (3) - Lowercase an M-text
+mtext_ncasecmp [] (3) - Compare initial parts of two M-texts ignoring cases
+mtext_ncat [] (3) - Append a part of an M-text to another
+mtext_ncmp [] (3) - Compare initial parts of two M-texts character-by-character
+mtext_ncpy [] (3) - Copy the first some characters in an M-text to another
+mtext_pbrk [] (3) - Search an M-text for any of a set of characters
+mtext_pop_prop [] (3) - Pop a text property
+mtext_prop_range [] (3) - Find the range where the value of a text property is the same
+mtext_property [] (3) - Create a text property
+mtext_property_end [] (3) - Return the end position of a text property
+mtext_property_key [] (3) - Return the key of a text property
+mtext_property_mtext [] (3) - Return the M-text of a text property
+mtext_property_start [] (3) - Return the start position of a text property
+mtext_property_value [] (3) - Return the value of a text property
+mtext_push_prop [] (3) - Push a text property
+mtext_push_property [] (3) - Push a text property onto an M-text
+mtext_put_prop [] (3) - Set a text property
+mtext_put_prop_values [] (3) - Set multiple text properties with the same key
+mtext_putenv [] (3) - Change or add an environment variable
+mtext_rchr [] (3) - Return the position of the last occurrence of a character in an M-text
+mtext_ref_char [] (3) - Return the character at the specified position in an M-text
+mtext_replace [] (3) - Replace sub-text of M-text with another
+mtext_search [] (3) - Locate an M-text in a specific range of another
+mtext_serialize [] (3) - Serialize text properties in an M-text
+mtext_set_char [] (3) - Store a character into an M-text
+mtext_spn [] (3) - Search an M-text for a set of characters
+mtext_text [] (3) - Locate an M-text in another
+mtext_titlecase [] (3) - Titlecase an M-text
+mtext_tok [] (3) - Look for a token in an M-text
+mtext_uppercase [] (3) - Uppercase an M-text
+mtools [] (1) - utilities to access DOS disks in Unix
+mtools.conf [] (5) - mtools configuration files
+mtoolstest [] (1) - tests and displays the configuration
+mtr [] (8) - a network diagnostic tool
+mtrace [] (3) - malloc debugging
+mtree [] (5) - format of mtree dir hierarchy files
+mtvtoppm [] (1) - convert output from the MTV or PRT ray tracers into a portable pixmap
+mtx [] (1) - control SCSI media changer devices
+mtype [] (1) - display contents of an MSDOS file
+multiplexer [] (3) - Splits mode requests into calls to different handlers
+multixterm [] (1) - drive multiple xterms separately or together
+munch [] (6) - munching squares
+munchlist [] (1) - Interactive spelling checking
+munlock [] (2) - lock and unlock memory
+munlockall [] (2) - lock and unlock memory
+munmap [] (2) - map or unmap files or devices into memory
+muntrace [] (3) - malloc debugging
+mutouch [] (4) - Microtouch input driver
+mutt [] (1) - The Mutt Mail User Agent
+mutt_dotlock [] (1) - Lock mail spool files
+muttrc [] (5) - Configuration file for the Mutt Mail User Agent
+mv [] (1) - move (rename) files
+mvadd_wch [] (3) - add a complex character and rendition to a curses window, then advance the cursor
+mvadd_wchnstr [] (3) - add an array of complex characters (and attributes) to a curses window
+mvadd_wchstr [] (3) - add an array of complex characters (and attributes) to a curses window
+mvaddch [] (3) - add a character (with attributes) to a curses window, then advance the cursor
+mvaddchnstr [] (3) - add a string of characters (and attributes) to a curses window
+mvaddchstr [] (3) - add a string of characters (and attributes) to a curses window
+mvaddnstr [] (3) - add a string of characters to a curses window and advance cursor
+mvaddnwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+mvaddstr [] (3) - add a string of characters to a curses window and advance cursor
+mvaddwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+mvchgat [] (3) - curses character and window attribute control routines
+mvcur [] (3) - curses interfaces to terminfo database
+mvdelch [] (3) - delete character under the cursor in a curses window
+mvderwin [] (3) - create curses windows
+mvget_wch [] (3) - get (or push back) a wide character from curses terminal keyboard
+mvget_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+mvgetch [] (3) - get (or push back) characters from curses terminal keyboard
+mvgetn_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+mvgetnstr [] (3) - accept character strings from curses terminal keyboard
+mvgetstr [] (3) - accept character strings from curses terminal keyboard
+mvhline [] (3) - create curses borders, horizontal and vertical lines
+mvhline_set [] (3) - create curses borders or lines using complex characters and renditions
+mvin_wch [] (3) - extract a complex character and rendition from a window
+mvin_wchnstr [] (3) - get an array of complex characters and renditions from a curses window
+mvin_wchstr [] (3) - get an array of complex characters and renditions from a curses window
+mvinch [] (3) - get a character and attributes from a curses window
+mvinchnstr [] (3) - get a string of characters (and attributes) from a curses window
+mvinchstr [] (3) - get a string of characters (and attributes) from a curses window
+mvinnstr [] (3) - get a string of characters from a curses window
+mvinnwstr [] (3) - get a string of wchar_t characters from a curses window
+mvins_nwstr [] (3) - insert a wide-character string into a curses window
+mvins_wch [] (3) - insert a complex character and rendition into a window
+mvins_wstr [] (3) - insert a wide-character string into a curses window
+mvinsch [] (3) - insert a character before cursor in a curses window
+mvinsnstr [] (3) - insert string before cursor in a curses window
+mvinsstr [] (3) - insert string before cursor in a curses window
+mvinstr [] (3) - get a string of characters from a curses window
+mvinwstr [] (3) - get a string of wchar_t characters from a curses window
+mvprintw [] (3) - print formatted output in curses windows
+mvscanw [] (3) - convert formatted input from a curses window
+mvvline [] (3) - create curses borders, horizontal and vertical lines
+mvvline_set [] (3) - create curses borders or lines using complex characters and renditions
+mvwadd_wch [] (3) - add a complex character and rendition to a curses window, then advance the cursor
+mvwadd_wchnstr [] (3) - add an array of complex characters (and attributes) to a curses window
+mvwadd_wchstr [] (3) - add an array of complex characters (and attributes) to a curses window
+mvwaddch [] (3) - add a character (with attributes) to a curses window, then advance the cursor
+mvwaddchnstr [] (3) - add a string of characters (and attributes) to a curses window
+mvwaddchstr [] (3) - add a string of characters (and attributes) to a curses window
+mvwaddnstr [] (3) - add a string of characters to a curses window and advance cursor
+mvwaddnwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+mvwaddstr [] (3) - add a string of characters to a curses window and advance cursor
+mvwaddwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+mvwchgat [] (3) - curses character and window attribute control routines
+mvwdelch [] (3) - delete character under the cursor in a curses window
+mvwget_wch [] (3) - get (or push back) a wide character from curses terminal keyboard
+mvwget_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+mvwgetch [] (3) - get (or push back) characters from curses terminal keyboard
+mvwgetn_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+mvwgetnstr [] (3) - accept character strings from curses terminal keyboard
+mvwgetstr [] (3) - accept character strings from curses terminal keyboard
+mvwhline [] (3) - create curses borders, horizontal and vertical lines
+mvwhline_set [] (3) - create curses borders or lines using complex characters and renditions
+mvwin [] (3) - create curses windows
+mvwin_wch [] (3) - extract a complex character and rendition from a window
+mvwin_wchnstr [] (3) - get an array of complex characters and renditions from a curses window
+mvwin_wchstr [] (3) - get an array of complex characters and renditions from a curses window
+mvwinch [] (3) - get a character and attributes from a curses window
+mvwinchnstr [] (3) - get a string of characters (and attributes) from a curses window
+mvwinchstr [] (3) - get a string of characters (and attributes) from a curses window
+mvwinnstr [] (3) - get a string of characters from a curses window
+mvwinnwstr [] (3) - get a string of wchar_t characters from a curses window
+mvwins_nwstr [] (3) - insert a wide-character string into a curses window
+mvwins_wch [] (3) - insert a complex character and rendition into a window
+mvwins_wstr [] (3) - insert a wide-character string into a curses window
+mvwinsch [] (3) - insert a character before cursor in a curses window
+mvwinsnstr [] (3) - insert string before cursor in a curses window
+mvwinsstr [] (3) - insert string before cursor in a curses window
+mvwinstr [] (3) - get a string of characters from a curses window
+mvwinwstr [] (3) - get a string of wchar_t characters from a curses window
+mvwprintw [] (3) - print formatted output in curses windows
+mvwscanw [] (3) - convert formatted input from a curses window
+mvwvline [] (3) - create curses borders, horizontal and vertical lines
+mvwvline_set [] (3) - create curses borders or lines using complex characters and renditions
+mwm [] (1) - The M*tif Window Manager
+mwmrc [] (5) - The M*tif Window Manager configuration file
+my_print_defaults [] (1) - display options from option files
+myisam_ftdump [] (1) - display full-text index information
+myisamchk [] (1) - MyISAM table-maintenance utility
+myisamlog [] (1) - display MyISAM log file contents
+myisampack [] (1) - generate compressed, read-only MyISAM tables
+mysql [] (1) - stress-test.pl - server stress test program
+mysql [] (1) - test-run.pl - run MySQL test suite
+mysql [] (1) - the MySQL command-line tool
+mysql.server [] (1) - MySQL server startup script
+mysql_client_test [] (1) - test client API
+mysql_client_test_embedded [] (1) - test client API for embedded server
+mysql_config [] (1) - get compile options for compiling clients
+mysql_convert_table_format [] (1) - convert tables to use a given storage engine
+mysql_explain_log [] (1) - use EXPLAIN on statements in query log
+mysql_find_rows [] (1) - extract SQL statements from files
+mysql_fix_extensions [] (1) - normalize table file name extensions
+mysql_fix_privilege_tables [] (1) - upgrade MySQL system tables
+mysql_install_db [] (1) - initialize MySQL data directory
+mysql_secure_installation [] (1) - improve MySQL installation security
+mysql_setpermission [] (1) - interactively set permissions in grant tables
+mysql_tableinfo [] (1) - generate database metadata
+mysql_tzinfo_to_sql [] (1) - load the time zone tables
+mysql_upgrade [] (1) - check tables for MySQL upgrade
+mysql_waitpid [] (1) - kill process and wait for its termination
+mysql_zap [] (1) - kill processes that match a pattern
+mysqlaccess [] (1) - client for checking access privileges
+mysqladmin [] (1) - client for administering a MySQL server
+mysqlbinlog [] (1) - utility for processing binary log files
+mysqlbug [] (1) - generate bug report
+mysqlcheck [] (1) - a table maintenance and repair program
+mysqld [] (8) - the MySQL server
+mysqld_multi [] (1) - manage multiple MySQL servers
+mysqld_safe [] (1) - MySQL server startup script
+mysqldump [] (1) - a database backup program
+mysqldumpslow [] (1) - Summarize slow query log files
+mysqlhotcopy [] (1) - a database backup program
+mysqlimport [] (1) - a data import program
+mysqlman [] (1) - default man page for mysql
+mysqlmanager [] (8) - the MySQL Instance Manager
+mysqlshow [] (1) - display database, table, and column information
+mysqltest [] (1) - program to run test cases
+mysqltest_embedded [] (1) - program to run embedded test cases
+mzip [] (1) - change protection mode and eject disk on Zip/Jaz drive
+named [] (8) - Internet domain name server
+named [] (8) - checkconf - named configuration file syntax checking tool
+named [] (8) - checkzone, named-compilezone - zone file validity checking or converting tool
+named.conf [] (5) - configuration file for named
+namei [] (1) - follow a pathname until a terminal point is found
+nameif [] (8) - name network interfaces based on MAC addresses
+namespace [] (n) - create and manipulate contexts for commands and variables
+nan [] (3) - return 'Not a Number'
+nanf [] (3) - return 'Not a Number'
+nanl [] (3) - return 'Not a Number'
+nano [] (1) - Nano's ANOther editor, an enhanced free Pico clone
+nanorc [] (5) - GNU nano's rcfile
+nanosleep [] (2) - high-resolution sleep
+napms [] (3) - low-level curses routines
+nasm [] (1) - the Netwide Assembler, a portable 80x86 assembler
+nbp [] (1) - access NBP database
+nbp_name [] (3) - NBP name parsing
+nbplkup [] (1) - access NBP database
+nbprgstr [] (1) - access NBP database
+nbpunrgstr [] (1) - access NBP database
+nc [] (1) - TCP/IP swiss army knife
+ncat [] (1) - Concatenate and redirect sockets
+ncftp [] (1) - Browser program for the File Transfer Protocol
+ncftpbatch [] (1) - Individual batch FTP job processor
+ncftpget [] (1) - Internet file transfer program for scripts
+ncftpls [] (1) - Internet file transfer program for scripts
+ncftpput [] (1) - Internet file transfer program for scripts
+ncftpspooler [] (1) - Global batch FTP job processor daemon
+ncurses [] (3) - CRT screen handling and optimization package
+ndiff [] (1) - Utility to compare the results of Nmap scans
+ndisasm [] (1) - the Netwide Disassembler, an 80x86 binary file disassembler
+ne_add_request_header [] (3) - add headers to a request
+ne_addr_destroy [] (3) - functions to resolve hostnames to addresses
+ne_addr_error [] (3) - functions to resolve hostnames to addresses
+ne_addr_first [] (3) - functions to resolve hostnames to addresses
+ne_addr_next [] (3) - functions to resolve hostnames to addresses
+ne_addr_resolve [] (3) - functions to resolve hostnames to addresses
+ne_addr_result [] (3) - functions to resolve hostnames to addresses
+ne_buffer [] (3) - string buffer handling
+ne_buffer_altered [] (3) - general purpose of group of functions
+ne_buffer_append [] (3) - append data to a string buffer
+ne_buffer_clear [] (3) - general purpose of group of functions
+ne_buffer_concat [] (3) - append data to a string buffer
+ne_buffer_create [] (3) - general purpose of group of functions
+ne_buffer_destroy [] (3) - destroy a buffer object
+ne_buffer_finish [] (3) - destroy a buffer object
+ne_buffer_grow [] (3) - general purpose of group of functions
+ne_buffer_ncreate [] (3) - general purpose of group of functions
+ne_buffer_zappend [] (3) - append data to a string buffer
+ne_calloc [] (3) - memory allocation wrappers
+ne_close_connection [] (3) - set up HTTP sessions
+ne_forget_auth [] (3) - register authentication callbacks
+ne_get_error [] (3) - error handling for HTTP sessions
+ne_get_request_flag [] (3) - set and retrieve per-request flags
+ne_get_response_header [] (3) - functions to access response headers
+ne_get_scheme [] (3) - common properties for HTTP sessions
+ne_get_server_hostport [] (3) - common properties for HTTP sessions
+ne_get_session_flag [] (3) - set and retrieve session flags
+ne_get_status [] (3) - retrieve HTTP response status for request
+ne_has_support [] (3) - determine feature support status
+ne_i18n_init [] (3) - functions to initialize internationalization support
+ne_iaddr_cmp [] (3) - functions to manipulate and compare network addresses
+ne_iaddr_free [] (3) - functions to manipulate and compare network addresses
+ne_iaddr_make [] (3) - functions to manipulate and compare network addresses
+ne_iaddr_print [] (3) - functions to manipulate and compare network addresses
+ne_iaddr_typeof [] (3) - functions to manipulate and compare network addresses
+ne_malloc [] (3) - memory allocation wrappers
+ne_oom_callback [] (3) - memory allocation wrappers
+ne_print_request_header [] (3) - add headers to a request
+ne_qtoken [] (3) - string tokenizers
+ne_realloc [] (3) - memory allocation wrappers
+ne_request_create [] (3) - low-level HTTP request handling
+ne_request_destroy [] (3) - low-level HTTP request handling
+ne_request_dispatch [] (3) - low-level HTTP request handling
+ne_response_header_iterate [] (3) - functions to access response headers
+ne_session_create [] (3) - set up HTTP sessions
+ne_session_destroy [] (3) - set up HTTP sessions
+ne_session_proxy [] (3) - set up HTTP sessions
+ne_set_connect_timeout [] (3) - common properties for HTTP sessions
+ne_set_error [] (3) - error handling for HTTP sessions
+ne_set_proxy_auth [] (3) - register authentication callbacks
+ne_set_read_timeout [] (3) - common properties for HTTP sessions
+ne_set_request_body_buffer [] (3) - include a message body with a request
+ne_set_request_body_fd [] (3) - include a message body with a request
+ne_set_request_body_fd64 [] (3) - include a message body with a request
+ne_set_request_flag [] (3) - set and retrieve per-request flags
+ne_set_server_auth [] (3) - register authentication callbacks
+ne_set_session_flag [] (3) - set and retrieve session flags
+ne_set_useragent [] (3) - common properties for HTTP sessions
+ne_shave [] (3) - trim whitespace from a string
+ne_sock_exit [] (3) - perform library initialization
+ne_sock_init [] (3) - perform library initialization
+ne_ssl_cert_cmp [] (3) - functions to operate on certificate objects
+ne_ssl_cert_export [] (3) - functions to read or write certificates to and from files or strings
+ne_ssl_cert_free [] (3) - functions to operate on certificate objects
+ne_ssl_cert_identity [] (3) - functions to access certificate properties
+ne_ssl_cert_import [] (3) - functions to read or write certificates to and from files or strings
+ne_ssl_cert_issuer [] (3) - functions to access certificate properties
+ne_ssl_cert_read [] (3) - functions to read or write certificates to and from files or strings
+ne_ssl_cert_signedby [] (3) - functions to access certificate properties
+ne_ssl_cert_subject [] (3) - functions to access certificate properties
+ne_ssl_cert_write [] (3) - functions to read or write certificates to and from files or strings
+ne_ssl_clicert_decrypt [] (3) - SSL client certificate handling
+ne_ssl_clicert_encrypted [] (3) - SSL client certificate handling
+ne_ssl_clicert_free [] (3) - SSL client certificate handling
+ne_ssl_clicert_name [] (3) - SSL client certificate handling
+ne_ssl_clicert_owner [] (3) - SSL client certificate handling
+ne_ssl_clicert_read [] (3) - SSL client certificate handling
+ne_ssl_dname_cmp [] (3) - SSL distinguished name handling
+ne_ssl_readable_dname [] (3) - SSL distinguished name handling
+ne_ssl_set_verify [] (3) - register an SSL certificate verification callback
+ne_ssl_trust_cert [] (3) - functions to indicate that certificates are trusted
+ne_ssl_trust_default_ca [] (3) - functions to indicate that certificates are trusted
+ne_status [] (3) - HTTP status structure
+ne_strdup [] (3) - memory allocation wrappers
+ne_strndup [] (3) - memory allocation wrappers
+ne_token [] (3) - string tokenizers
+ne_version_match [] (3) - library versioning
+ne_version_string [] (3) - library versioning
+ne_xml_create [] (3) - create and destroy an XML parser
+ne_xml_destroy [] (3) - create and destroy an XML parser
+nearbyint [] (3) - round to nearest integer
+nearbyintf [] (3) - round to nearest integer
+nearbyintl [] (3) - round to nearest integer
+neomagic [] (4) - Neomagic video driver
+neon [] (1) - config - script providing information about installed copy of neon library
+neon [] (3) - HTTP and WebDAV client library
+neotoppm [] (1) - convert an Atari Neochrome .neo into a PPM image
+neqn [] (1) - format equations for ascii output
+nerverot [] (6) - induces edginess in the viewer
+net [] (1) - snmp-config - returns information about installed net-snmp libraries and binaries
+net [] (8) - Tool for administration of Samba and remote CIFS servers
+netatalk [] (1) - config - script to get information about the installed version of netatalk
+netatalk.conf [] (5) - Configuration file used by netatalk(8) to determine its general configuration
+netdate [] (8) - set date and time by ARPA Internet RFC 868
+netdevice [] (7) - Low level access to Linux network devices
+netgroup [] (5) - specify network groups
+netlink [] (3) - Netlink macros
+netlink [] (7) - Communication between kernel and userspace (AF_NETLINK)
+netpbm [] (1) - package of graphics manipulation programs and libraries
+netrc [] (5) - user configuration for ftp
+netstat [] (8) - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
+networks [] (5) - network name information
+newalias [] (1) - install new elm aliases for user and/or system
+newaliases [] (1) - rebuild the data base for the mail aliases file
+newgrp [] (1) - log in to a new group
+newmail [] (1) - programs to asynchronously notify of new mail
+newpad [] (3) - create and display curses pads
+newport [] (4) - Newport video driver
+newsetup [] (1) - a program to set up a .newsrc file
+newsgroups [] (1) - a program to list unsubscribed newsgroups
+newspost [] (1) - a usenet binary autoposter
+newterm [] (3) - curses screen initialization and manipulation routines
+newusers [] (8) - update and create new users in batch
+newwin [] (3) - create curses windows
+nextafter [] (3) - floating - point number manipulation
+nextafterf [] (3) - floating - point number manipulation
+nextafterl [] (3) - floating - point number manipulation
+nexttoward [] (3) - floating - point number manipulation
+nexttowardf [] (3) - floating - point number manipulation
+nexttowardl [] (3) - floating - point number manipulation
+nfrm [] (1) - list from and subject of selected messages in mailbox or folder
+nfs [] (5) - fstab format and options for the nfs and nfs4 file systems
+nfsd [] (7) - special filesystem for controlling Linux NFS server
+nfsservctl [] (2) - syscall interface to kernel nfs daemon
+nfsstat [] (8) - list NFS statistics
+nftw [] (3) - file tree walk
+ngettext [] (1) - translate message and choose plural form
+ngettext [] (3) - translate message and choose plural form
+nice [] (1) - run a program with modified scheduling priority
+nice [] (2) - change process priority
+nisdomainname [] (1) - show or set system's NIS/YP domain name
+nisdomainname [] (8) - set or display name of current NIS(YP) domain
+nl [] (1) - number lines of files
+nl [] (3) - curses output options
+nl_langinfo [] (3) - query language and locale information
+nlmconv [] (1) - converts object code into an NLM
+nm [] (1) - list symbols from object files
+nmap [] (1) - Network exploration tool and security / port scanner
+nmbd [] (8) - NetBIOS name server to provide NetBIOS over IP naming services to clients
+nmblookup [] (1) - NetBIOS over TCP/IP client used to lookup NetBIOS names
+nn [] (1) - efficient net news interface (No News is good news)
+nnacct [] (1) - news accounting and access authorization (nn)
+nnadmin [] (1) - nn database administration
+nncheck [] (1) - check for unread articles
+nngoback [] (1) - make news articles unread on a day-by-day basis (nn)
+nngrab [] (1) - news retrieval by keyword (nn)
+nngrep [] (1) - grep for news group names (nn)
+nnmaster [] (8) - nn database manager
+nnpost [] (1) - post news articles (nn)
+nnspew [] (8) - subject database manager (nn)
+nnstats [] (1) - display nnmaster collection and expire statistics
+nntidy [] (1) - tidy your personal .newsrc file
+nnusage [] (1) - display nn usage statistics
+nnview [] (1) - invokes nn on a folder
+nocbreak [] (3) - curses input options
+nodelay [] (3) - curses input options
+nodename [] (1) - show or set the system's DECnet node name
+noecho [] (3) - curses input options
+nofilter [] (3) - miscellaneous curses utility routines
+nohup [] (1) - run a command immune to hangups, with output to a non-tty
+nologin [] (5) - prevent non-root users from logging into the system
+none [] (3) - undocumented library functions
+nonl [] (3) - curses output options
+noof [] (6) - draw rotatey patterns
+noqiflush [] (3) - curses input options
+noraw [] (3) - curses input options
+normalize [] (1) - adjusts volume levels of audio files
+normalize [] (1) - mp3 - adjust levels of mp3 or ogg files by running normalize(1), then re - encoding
+noseguy [] (6) - a little guy with a big nose wanders around being witty
+notimeout [] (3) - curses input options
+nrand48 [] (3) - generate uniformly distributed pseudo-random numbers
+nrand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+nroff [] (1) - emulate nroff command with groff
+nseq [] (1) - create or examine a netscape certificate sequence
+nslookup [] (1) - query Internet name servers interactively
+nsswitch.conf [] (5) - System Databases and Name Service Switch configuration file
+nstat [] (8) - network statistics tools
+nsupdate [] (1) - Dynamic DNS update utility
+ntfs [] (8) - 3g - Third Generation Read/Write NTFS Driver
+ntfs [] (8) - 3g.probe - Probe an NTFS volume mountability
+ntfscat [] (8) - print NTFS files and streams on the standard output
+ntfsclone [] (8) - Efficiently clone, image, restore or rescue an NTFS
+ntfscluster [] (8) - identify files in a specified region of an NTFS volume
+ntfscmp [] (8) - compare two NTFS filesystems and tell the differences
+ntfscp [] (8) - copy file to an NTFS volume
+ntfsfix [] (8) - fix common errors and force Windows to check NTFS
+ntfsinfo [] (8) - dump a file's attributes
+ntfslabel [] (8) - display/change the label on an ntfs file system
+ntfsls [] (8) - list directory contents on an NTFS filesystem
+ntfsmount [] (8) - Read/Write userspace NTFS driver
+ntfsprogs [] (8) - tools for doing neat things with NTFS
+ntfsresize [] (8) - resize an NTFS filesystem without data loss
+ntfsundelete [] (8) - recover a deleted file from an NTFS volume
+ntlm_auth [] (1) - tool to allow external access to Winbind's NTLM authentication function
+ntohl [] (3) - convert values between host and network byte order
+ntohs [] (3) - convert values between host and network byte order
+ntp [] (1) - keygen - Create a NTP host key
+ntpd [] (1) - NTP daemon program
+ntpdc [] (1) - vendor-specific NTP query program
+ntpdsim [] (1) - NTP daemon simulation program
+ntpq [] (1) - standard NTP query program
+null [] (4) - data sink
+numa [] (7) - overview of Non-Uniform Memory Architecture
+number [] (6) - convert Arabic numerals to English
+nv [] (4) - NVIDIA video driver
+obexftp [] (1) - Mobile Equipment file transfer tool
+obexftpd [] (1) - Mobile Equipment file transfer server
+objcopy [] (1) - copy and translate object files
+objdump [] (1) - display information from object files
+oclock [] (1) - round X clock
+ocsp [] (1) - Online Certificate Status Protocol utility
+od [] (1) - dump files in octal and other formats
+offsetof [] (3) - offset of a structure member
+ogg123 [] (1) - plays Ogg Vorbis files
+oggdec [] (1) - simple decoder, Ogg Vorbis file to PCM audio file (WAV or RAW)
+oggenc [] (1) - encode audio into the Ogg Vorbis format
+ogginfo [] (1) - gives information about Ogg files, and does extensive validity checking
+ogonkify [] (1) - international support for PostScript
+old_api [] (3) - Calls mib module code written in the old style of code
+omshell [] (1) - OMAPI Command Shell
+omshell [] (3) - OMAPI Command Shell
+on_ac_power [] (1) - test whether the computer is running on line power
+on_exit [] (3) - register a function to be called at normal process termination
+onsgmls [] (1) - An SGML/XML parser and validator
+opannotate [] (1) - produce source or assembly annotated with profile data
+oparchive [] (1) - produce archive of oprofile data for offline analysis
+opcontrol [] (1) - control OProfile profiling
+open [] (2) - open and possibly create a file or device
+open [] (3) - perl pragma to set default PerlIO layers for input and output
+open [] (n) - Open a file-based or command pipeline channel
+open2 [] (3) - open a process for both reading and writing
+open3 [] (3) - open a process for reading, writing, and error handling
+open_by_handle [] (3) - file handle operations
+open_memstream [] (3) - open memory as stream
+open_wmemstream [] (3) - open memory as stream
+openat [] (2) - open a file relative to a directory file descriptor
+openchrome [] (4) - video driver for VIA Unichromes
+opendir [] (3) - open a directory
+openjade [] (1) - apply a DSSSL stylesheet to an SGML or XML document
+openlog [] (3) - send messages to the system logger
+openpty [] (3) - tty utility functions
+openssl [] (1) - OpenSSL command line tool
+openvpn [] (8) - secure IP tunnel daemon
+openvt [] (1) - start a program on a new virtual terminal (VT)
+opgprof [] (1) - produce gprof-format profile data
+ophelp [] (1) - list OProfile events
+opimport [] (1) - converts sample database files
+opml2snow [] (1) - snownews OPML subsription file import/export utility
+opreport [] (1) - produce symbol or binary image summaries
+oprofile [] (1) - a system-wide profiler
+ops [] (3) - Perl pragma to restrict unsafe operations when compiling
+optarg [] (3) - Parse command-line options
+opterr [] (3) - Parse command-line options
+optind [] (3) - Parse command-line options
+option [] (n) - Add/retrieve window options to/from the option database
+options [] (n) - Standard options supported by widgets
+optopt [] (3) - Parse command-line options
+orage (1) - Calendar for the Xfce Desktop Environment
+orage [] (1) - Calendar for the Xfce Desktop Environment
+osgmlnorm [] (1) - An SGML/XML document normalizer
+ospam [] (1) - An SGML/XML markup stream editor
+ospcat [] (1) - SGML print catalog
+ospent [] (1) - Concatenates entities in an SGML/XML document
+osx [] (1) - An SGML to XML converter
+outb [] (2) - port I/O
+outb_p [] (2) - port I/O
+outl [] (2) - port I/O
+outl_p [] (2) - port I/O
+outsb [] (2) - port I/O
+outsl [] (2) - port I/O
+outsw [] (2) - port I/O
+outw [] (2) - port I/O
+outw_p [] (2) - port I/O
+overlay [] (3) - overlay and manipulate overlapped curses windows
+overload [] (3) - Package for overloading Perl operations
+overwrite [] (3) - overlay and manipulate overlapped curses windows
+ownership [] (8) - Compaq ownership tag retriever
+p2c [] (1) - Pascal to C translator, version 1.21alpha-07.Dec.93
+p2cc [] (1) - Pascal compiler using p2c
+pack [] (n) - Geometry manager that packs around edges of cavity
+pack [] (n) - old - Obsolete syntax for packer geometry manager
+package [] (n) - Facilities for package loading and version control
+packet [] (7) - packet interface on device level
+pacman [] (6) - simulates a game of Pac-Man on a randomly-created level
+pair_content [] (3) - curses color manipulation routines
+pal2rgb [] (1) - convert a palette color TIFF image to a full color image
+palmtopnm [] (1) - convert a Palm pixmap into a portable anymap
+pam [] (5) - portable arbitrary map file format
+pam_winbind [] (7) - PAM module for Winbind
+pamaddnoise [] (1) - see http://netpbm.sourceforge.net/doc/pamaddnoise.html
+pamarith [] (1) - see http://netpbm.sourceforge.net/doc/pamarith.html
+pambayer [] (1) - see http://netpbm.sourceforge.net/doc/pambayer.html
+pamchannel [] (1) - extract channels from a PAM image
+pamcomp [] (1) - see http://netpbm.sourceforge.net/doc/pamcomp.html
+pamcut [] (1) - cut a rectangle out of a PAM, PBM, PGM, or PPM image
+pamdeinterlace [] (1) - remove ever other row from a PAM/PNM image
+pamdepth [] (1) - see http://netpbm.sourceforge.net/doc/pamdepth.html
+pamdice [] (1) - slice a Netpbm image into many horizontally and/or vertically
+pamditherbw [] (1) - see http://netpbm.sourceforge.net/doc/pamditherbw.html
+pamedge [] (1) - see http://netpbm.sourceforge.net/doc/pamedge.html
+pamendian [] (1) - see http://netpbm.sourceforge.net/doc/pamendian.html
+pamenlarge [] (1) - see http://netpbm.sourceforge.net/doc/pamenlarge.html
+pamfile [] (1) - describe a Netpbm (PAM or PNM) file
+pamflip [] (1) - see http://netpbm.sourceforge.net/doc/pamflip.html
+pamfunc [] (1) - see http://netpbm.sourceforge.net/doc/pamfunc.html
+pamgauss [] (1) - see http://netpbm.sourceforge.net/doc/pamgauss.html
+pamgradient [] (1) - see http://netpbm.sourceforge.net/doc/pamgradient.html
+pamlookup [] (1) - see http://netpbm.sourceforge.net/doc/pamlookup.html
+pammasksharpen [] (1) - see http://netpbm.sourceforge.net/doc/pammasksharpen.html
+pammixinterlace [] (1) - see http://netpbm.sourceforge.net/doc/pammixinterlace.html
+pamoil [] (1) - turn a PAM image into an oil painting
+pamperspective [] (1) - see http://netpbm.sourceforge.net/doc/pamperspective.html
+pampick [] (1) - see http://netpbm.sourceforge.net/doc/pampick.html
+pampop9 [] (1) - see http://netpbm.sourceforge.net/doc/pampop9.html
+pamrgbatopng [] (1) - see http://netpbm.sourceforge.net/doc/pamrgbatopng.html
+pamscale [] (1) - see http://netpbm.sourceforge.net/doc/pamscale.html
+pamseq [] (1) - see http://netpbm.sourceforge.net/doc/pamseq.html
+pamsharpmap [] (1) - see http://netpbm.sourceforge.net/doc/pamsharpmap.html
+pamsharpness [] (1) - see http://netpbm.sourceforge.net/doc/pamsharpness.html
+pamslice [] (1) - see http://netpbm.sourceforge.net/doc/pamslice.html
+pamsplit [] (1) - see http://netpbm.sourceforge.net/doc/pamsplit.html
+pamstack [] (1) - see http://netpbm.sourceforge.net/doc/pamstack.html
+pamstereogram [] (1) - see http://netpbm.sourceforge.net/doc/pamstereogram.html
+pamstretch [] (1) - gen - use pamstretch and pnmscale to scale by non-integer values
+pamstretch [] (1) - scale up a PNM or PAM image by interpolating between pixels
+pamsumm [] (1) - see http://netpbm.sourceforge.net/doc/pamsumm.html
+pamsummcol [] (1) - see http://netpbm.sourceforge.net/doc/pamsummcol.html
+pamthreshold [] (1) - see http://netpbm.sourceforge.net/doc/pamthreshold.html
+pamtilt [] (1) - see http://netpbm.sourceforge.net/doc/pamtilt.html
+pamtodjvurle [] (1) - see http://netpbm.sourceforge.net/doc/pamtodjvurle.html
+pamtofits [] (1) - see http://netpbm.sourceforge.net/doc/pamtofits.html
+pamtohdiff [] (1) - see http://netpbm.sourceforge.net/doc/pamtohdiff.html
+pamtohtmltbl [] (1) - see http://netpbm.sourceforge.net/doc/pamtohtmltbl.html
+pamtojpeg2k [] (1) - see http://netpbm.sourceforge.net/doc/pamtojpeg2k.html
+pamtopfm [] (1) - see http://netpbm.sourceforge.net/doc/pamtopfm.html
+pamtopnm [] (1) - convert PAM image to PBM, PGM, or PPM
+pamtosvg [] (1) - see http://netpbm.sourceforge.net/doc/pamtosvg.html
+pamtotga [] (1) - see http://netpbm.sourceforge.net/doc/pamtotga.html
+pamtotiff [] (1) - see http://netpbm.sourceforge.net/doc/pamtotiff.html
+pamtouil [] (1) - see http://netpbm.sourceforge.net/doc/pamtouil.html
+pamtoxvmini [] (1) - see http://netpbm.sourceforge.net/doc/pamtoxvmini.html
+pamx [] (1) - see http://netpbm.sourceforge.net/doc/pamx.html
+pand [] (1) - BlueZ Bluetooth PAN daemon
+panedwindow [] (n) - Create and manipulate panedwindow widgets
+panel [] (3) - panel stack extension for curses
+pango [] (1) - querymodules - Module registration utility
+pap [] (1) - client interface to remote printers using Printer Access Protocol
+papd [] (8) - AppleTalk print server daemon
+papd.conf [] (5) - Configuration file used by papd(8) to determine the configuration of printers used by the Netatalk printing daemon
+papstatus [] (8) - get the status of an AppleTalk-connected printer
+parport [] (3) - representation of a parallel port
+parport_list [] (3) - a collection of parallel ports
+parray [] (n) - standard library of Tcl procedures
+partprobe [] (8) - inform the OS of partition table changes
+passmass [] (1) - change password on multiple machines
+passwd [] (1) - change user password
+passwd [] (1) - compute password hashes
+passwd [] (5) - The password file
+passwd2des [] (3) - RFS password encryption
+paste [] (1) - merge lines of files
+patch [] (1) - apply a diff file to an original
+patch [] (1) - metamail - Install a patch to the latest metamail release
+path_id [] (8) - udev callout to create a device path based unique name for a device to implement the Linux Persistent Device Naming scheme
+path_to_fshandle [] (3) - file handle operations
+path_to_handle [] (3) - file handle operations
+pathchk [] (1) - check whether file names are valid or portable
+pathconf [] (3) - get configuration values for files
+pause [] (2) - wait for signal
+pbm [] (5) - portable bitmap file format
+pbmclean [] (1) - flip isolated pixels in portable bitmap
+pbmfilters [] (1) - list of all programs in the PBMPlus package
+pbmlife [] (1) - apply Conway's rules of Life to a portable bitmap
+pbmmake [] (1) - create a blank bitmap of a specified size
+pbmmask [] (1) - create a mask bitmap from a regular bitmap
+pbmpage [] (1) - create a one page test pattern for printing
+pbmpscale [] (1) - enlarge a portable bitmap with edge smoothing
+pbmreduce [] (1) - read a portable bitmap and reduce it N times
+pbmtext [] (1) - render text into a bitmap
+pbmtextps [] (1) - see http://netpbm.sourceforge.net/doc/pbmtextps.html
+pbmto10x [] (1) - convert a portable bitmap into Gemini 10X printer graphics
+pbmto4425 [] (1) - Display PBM images on an AT&T 4425 terminal
+pbmtoascii [] (1) - convert a portable bitmap into ASCII graphics
+pbmtoatk [] (1) - convert portable bitmap to Andrew Toolkit raster object
+pbmtobg [] (1) - convert a portable bitmap into BitGraph graphics
+pbmtocmuwm [] (1) - convert a portable bitmap into a CMU window manager bitmap
+pbmtodjvurle [] (1) - see http://netpbm.sourceforge.net/doc/pbmtodjvurle.html
+pbmtoepsi [] (1) - convert a portable bitmap into an encapsulated PostScript style preview bitmap
+pbmtoepson [] (1) - convert a portable bitmap into Epson printer graphics
+pbmtoescp2 [] (1) - see http://netpbm.sourceforge.net/doc/pbmtoescp2.html
+pbmtog3 [] (1) - convert a portable bitmap into a Group 3 fax file
+pbmtogem [] (1) - convert a portable bitmap into a GEM .img file
+pbmtogo [] (1) - convert a portable bitmap into compressed GraphOn graphics
+pbmtoibm23xx [] (1) - see http://netpbm.sourceforge.net/doc/pbmtoibm23xx.html
+pbmtoicon [] (1) - convert a portable bitmap into a Sun icon
+pbmtolj [] (1) - convert a PBM image to HP LaserJet format
+pbmtoln03 [] (1) - convert protable bitmap to DEC LN03+ Sixel output
+pbmtolps [] (1) - convert portable bitmap to PostScript
+pbmtomacp [] (1) - convert a portable bitmap into a MacPaint file
+pbmtomatrixorbital [] (1) - see http://netpbm.sourceforge.net/doc/pbmtomatrixorbital.html
+pbmtomda [] (1) - convert a portable bitmap to a Microdesign .mda
+pbmtomgr [] (1) - convert a portable bitmap into a MGR bitmap
+pbmtomrf [] (1) - see http://netpbm.sourceforge.net/doc/pbmtomrf.html
+pbmtonokia [] (1) - convert a portable bitmap to Nokia Smart Messaging Formats
+pbmtopgm [] (1) - convert PBM image to PGM by averaging areas
+pbmtopi3 [] (1) - convert a portable bitmap into an Atari Degas .pi3 file
+pbmtopk [] (1) - convert a portable bitmap into a packed (PK) format font
+pbmtoplot [] (1) - convert a portable bitmap into a Unix plot(5) file
+pbmtoppa [] (1) - convert PBM image to HP Printer Performance Architecture (PPA)
+pbmtopsg3 [] (1) - convert PBM images to Postscript with G3 fax compression
+pbmtoptx [] (1) - convert a portable bitmap into Printronix printer graphics
+pbmtowbmp [] (1) - convert a portable bitmap (pbm) to a wireless bitmap (wbmp) file
+pbmtox10bm [] (1) - convert a portable bitmap into an X10 bitmap
+pbmtoxbm [] (1) - convert a portable bitmap into an X11 bitmap
+pbmtozinc [] (1) - convert a portable bitmap into a Zinc bitmap
+pbmupc [] (1) - create a Universal Product Code bitmap
+pc1toppm [] (1) - see http://netpbm.sourceforge.net/doc/pc1toppm.html
+pcap [] (1) - config - write libpcap compiler and linker flags to standard output
+pcap [] (3) - Packet Capture library
+pcap [] (5) - savefile - libpcap savefile format
+pcap [] (7) - filter - packet filter syntax
+pcap [] (7) - linktype - link-layer header types supported by libpcap
+pcap_activate [] (3) - activate a capture handle
+pcap_breakloop [] (3) - force a pcap_dispatch() or pcap_loop() call to return
+pcap_can_set_rfmon [] (3) - check whether monitor mode can be set for a not - yet-activated capture handle
+pcap_close [] (3) - close a capture device or savefile
+pcap_compile [] (3) - compile a filter expression
+pcap_create [] (3) - create a live capture handle
+pcap_datalink [] (3) - get the link-layer header type
+pcap_datalink_name_to_val [] (3) - get the link-layer header type value corresponding to a header type name
+pcap_datalink_val_to_description [] (3) - get a name or description for a link - layer header type value
+pcap_datalink_val_to_name [] (3) - get a name or description for a link - layer header type value
+pcap_dispatch [] (3) - process packets from a live capture or savefile
+pcap_dump [] (3) - write a packet to a capture file
+pcap_dump_close [] (3) - close a savefile being written to
+pcap_dump_file [] (3) - get the standard I/O stream for a savefile being written
+pcap_dump_flush [] (3) - flush to a savefile packets dumped
+pcap_dump_fopen [] (3) - open a file to which to write packets
+pcap_dump_ftell [] (3) - get the current file offset for a savefile being written
+pcap_dump_open [] (3) - open a file to which to write packets
+pcap_file [] (3) - get the standard I/O stream for a savefile being read
+pcap_fileno [] (3) - get the file descriptor for a live capture
+pcap_findalldevs [] (3) - get a list of capture devices
+pcap_fopen_offline [] (3) - open a saved capture file for reading
+pcap_free_datalinks [] (3) - free a list of link-layer header types from pcap_get_datalinks()
+pcap_freealldevs [] (3) - free a list of capture devices
+pcap_freecode [] (3) - free a BPF program
+pcap_get_selectable_fd [] (3) - get a file descriptor on which a select() can be done for a live capture
+pcap_geterr [] (3) - get or print libpcap error message text
+pcap_getnonblock [] (3) - set or get the state of non - blocking mode on a capture device
+pcap_inject [] (3) - transmit a packet
+pcap_is_swapped [] (3) - find out whether a savefile has the native byte order
+pcap_lib_version [] (3) - get the version information for libpcap
+pcap_list_datalinks [] (3) - get a list of link-layer header types supported by a capture device
+pcap_lookupdev [] (3) - find the default device on which to capture
+pcap_lookupnet [] (3) - find the IPv4 network number and netmask for a device
+pcap_loop [] (3) - process packets from a live capture or savefile
+pcap_major_version [] (3) - get the version number of a savefile
+pcap_minor_version [] (3) - get the version number of a savefile
+pcap_next [] (3) - read the next packet from a pcap_t
+pcap_next_ex [] (3) - read the next packet from a pcap_t
+pcap_offline_filter [] (3) - check whether a filter matches a packet
+pcap_open_dead [] (3) - open a fake pcap_t for compiling filters or opening a capture for output
+pcap_open_live [] (3) - open a device for capturing
+pcap_open_offline [] (3) - open a saved capture file for reading
+pcap_perror [] (3) - get or print libpcap error message text
+pcap_sendpacket [] (3) - transmit a packet
+pcap_set_buffer_size [] (3) - set the buffer size for a not-yet-activated capture handle
+pcap_set_datalink [] (3) - set the link-layer header type to be used by a capture device
+pcap_set_promisc [] (3) - set promiscuous mode for a not-yet-activated capture handle
+pcap_set_rfmon [] (3) - set monitor mode for a not-yet-activated capture handle
+pcap_set_snaplen [] (3) - set the snapshot length for a not-yet-activated capture handle
+pcap_set_timeout [] (3) - set the read timeout for a not-yet-activated capture handle
+pcap_setdirection [] (3) - set the direction for which packets will be captured
+pcap_setfilter [] (3) - set the filter
+pcap_setnonblock [] (3) - set or get the state of non - blocking mode on a capture device
+pcap_snapshot [] (3) - get the snapshot length
+pcap_stats [] (3) - get capture statistics
+pcap_statustostr [] (3) - convert a PCAP_ERROR_ or PCAP_WARNING_ value to a string
+pcap_strerror [] (3) - convert an errno value to a string
+pccardctl [] (8) - PCMCIA card control utility
+pcdindex [] (1) - create index image for a photo CD
+pcdovtoppm [] (1) - see http://netpbm.sourceforge.net/doc/pcdovtoppm.html
+pciconfig_iobase [] (2) - pci device information handling
+pciconfig_read [] (2) - pci device information handling
+pciconfig_write [] (2) - pci device information handling
+pclose [] (3) - pipe stream to or from a process
+pcre [] (1) - config - program to return PCRE configuration
+pcregrep [] (1) - a grep with Perl-compatible regular expressions
+pcretest [] (1) - a program for testing Perl-compatible regular expressions
+pcxtoppm [] (1) - convert a PCX file into a portable pixmap
+pdbedit [] (8) - manage the SAM database (Database of Samba Users)
+pdf2dsc [] (1) - generate a PostScript page list of a PDF document
+pdf2ps [] (1) - Ghostscript PDF to PostScript translator
+pdffonts [] (1) - Portable Document Format (PDF) font analyzer (version 3.00)
+pdfimages [] (1) - Portable Document Format (PDF) image extractor (version 3.00)
+pdfinfo [] (1) - Portable Document Format (PDF) document information extractor (version 3.00)
+pdfopt [] (1) - Ghostscript PDF Optimizer
+pdfroff [] (1) - create PDF documents using groff
+pdftohtml [] (1) - program to convert pdf files into html, xml and png images
+pdftoppm [] (1) - Portable Document Format (PDF) to Portable Pixmap (PPM) converter (version 3.00)
+pdftops [] (1) - Portable Document Format (PDF) to PostScript converter (version 3.00)
+pdftotext [] (1) - Portable Document Format (PDF) to text converter (version 3.00)
+pdiff [] (1) - produce a pretty comparison between files
+pecho_wchar [] (3) - create and display curses pads
+pechochar [] (3) - create and display curses pads
+pedal [] (6) - pretty geometric picture program
+penetrate [] (6) - simulates a classic arcade shooting game
+penmount [] (4) - PenMount input driver
+penrose [] (6) - draws quasiperiodic tilings
+perl [] (1) - Practical Extraction and Report Language
+perl5004delta [] (1) - what's new for perl5.004
+perl5005delta [] (1) - what's new for perl5.005
+perl561delta [] (1) - what's new for perl v5.6.x
+perl56delta [] (1) - what's new for perl v5.6.0
+perl570delta [] (1) - what's new for perl v5.7.0
+perl571delta [] (1) - what's new for perl v5.7.1
+perl572delta [] (1) - what's new for perl v5.7.2
+perl573delta [] (1) - what's new for perl v5.7.3
+perl581delta [] (1) - what is new for perl v5.8.1
+perl582delta [] (1) - what is new for perl v5.8.2
+perl583delta [] (1) - what is new for perl v5.8.3
+perl584delta [] (1) - what is new for perl v5.8.4
+perl585delta [] (1) - what is new for perl v5.8.5
+perl586delta [] (1) - what is new for perl v5.8.6
+perl587delta [] (1) - what is new for perl v5.8.7
+perl588delta [] (1) - what is new for perl v5.8.8
+perl58delta [] (1) - what is new for perl v5.8.0
+perl590delta [] (1) - what is new for perl v5.9.0
+perl591delta [] (1) - what is new for perl v5.9.1
+perl592delta [] (1) - what is new for perl v5.9.2
+perl593delta [] (1) - what is new for perl v5.9.3
+perl594delta [] (1) - what is new for perl v5.9.4
+perl595delta [] (1) - what is new for perl v5.9.5
+perlXStut [] (1) - Tutorial for writing XSUBs
+perlamiga [] (1) - Perl under Amiga OS
+perlapi [] (1) - autogenerated documentation for the perl public API
+perlapio [] (1) - perl's IO abstraction interface
+perlartistic [] (1) - the Perl Artistic License
+perlbook [] (1) - Perl book information
+perlboot [] (1) - Beginner's Object-Oriented Tutorial
+perlbot [] (1) - Bag'o Object Tricks (the BOT)
+perlbug [] (1) - how to submit bug reports on Perl
+perlcall [] (1) - Perl calling conventions from C
+perlce [] (1) - Perl for WinCE
+perlcheat [] (1) - Perl 5 Cheat Sheet
+perlclib [] (1) - Internal replacements for standard C library functions
+perlcn [] (1) - XXXX Perl XX
+perlcommunity [] (1) - a brief overview of the Perl community
+perlcompile [] (1) - Introduction to the Perl Compiler-Translator
+perldata [] (1) - Perl data types
+perldbmfilter [] (1) - Perl DBM Filters
+perldebguts [] (1) - Guts of Perl debugging
+perldebtut [] (1) - Perl debugging tutorial
+perldebug [] (1) - Perl debugging
+perldelta [] (1) - what is new for perl 5.10.0
+perldgux [] (1) - Perl under DG/UX
+perldiag [] (1) - various Perl diagnostics
+perldoc [] (1) - Look up Perl documentation in Pod format
+perldos [] (1) - Perl under DOS, W31, W95
+perldsc [] (1) - Perl Data Structures Cookbook
+perlebcdic [] (1) - Considerations for running Perl on EBCDIC platforms
+perlembed [] (1) - how to embed perl in your C program
+perlfaq [] (1) - frequently asked questions about Perl
+perlfaq1 [] (1) - General Questions About Perl ($Revision: 10427 $)
+perlfaq2 [] (1) - Obtaining and Learning about Perl ($Revision: 10144 $)
+perlfaq3 [] (1) - Programming Tools ($Revision: 10127 $)
+perlfaq4 [] (1) - Data Manipulation ($Revision: 10394 $)
+perlfaq5 [] (1) - Files and Formats ($Revision: 10126 $)
+perlfaq6 [] (1) - Regular Expressions ($Revision: 10126 $)
+perlfaq7 [] (1) - General Perl Language Issues ($Revision: 10100 $)
+perlfaq8 [] (1) - System Interaction ($Revision: 10183 $)
+perlfaq9 [] (1) - Networking ($Revision: 8539 $)
+perlfilter [] (1) - Source Filters
+perlfork [] (1) - Perl's fork() emulation
+perlform [] (1) - Perl formats
+perlfunc [] (1) - Perl builtin functions
+perlglossary [] (1) - Perl Glossary
+perlgpl [] (1) - the GNU General Public License, version 2
+perlguts [] (1) - Introduction to the Perl API
+perlhack [] (1) - How to hack at the Perl internals
+perlhist [] (1) - the Perl history records
+perlintern [] (1) - autogenerated documentation of purely internal Perl functions
+perlintro [] (1) - - a brief introduction and overview of Perl
+perliol [] (1) - C API for Perl's implementation of IO in Layers
+perlipc [] (1) - Perl interprocess communication (signals, fifos, pipes, safe subprocesses, sockets, and semaphores)
+perlivp [] (1) - Perl Installation Verification Procedure
+perljp [] (1) - XXX Perl XXX
+perlko [] (1) - PerlX XXX XXX
+perllexwarn [] (1) - Perl Lexical Warnings
+perllocale [] (1) - Perl locale handling (internationalization and localization)
+perllol [] (1) - Manipulating Arrays of Arrays in Perl
+perlmod [] (1) - Perl modules (packages and symbol tables)
+perlmodinstall [] (1) - Installing CPAN Modules
+perlmodlib [] (1) - constructing new Perl modules and finding existing ones
+perlmodstyle [] (1) - Perl module style guide
+perlnetware [] (1) - Perl for NetWare
+perlnewmod [] (1) - preparing a new module for distribution
+perlnumber [] (1) - semantics of numbers and numeric operations in Perl
+perlobj [] (1) - Perl objects
+perlop [] (1) - Perl operators and precedence
+perlopentut [] (1) - tutorial on opening things in Perl
+perlos2 [] (1) - Perl under OS/2, DOS, Win0.3*, Win0.95 and WinNT
+perlothrtut [] (1) - old tutorial on threads in Perl
+perlpacktut [] (1) - tutorial on pack and unpack
+perlplan9 [] (1) - Plan 9-specific documentation for Perl
+perlpod [] (1) - the Plain Old Documentation format
+perlpodspec [] (1) - Plain Old Documentation: format specification and notes
+perlport [] (1) - Writing portable Perl
+perlpragma [] (1) - how to write a user pragma
+perlre [] (1) - Perl regular expressions
+perlreapi [] (1) - perl regular expression plugin interface
+perlrebackslash [] (1) - Perl Regular Expression Backslash Sequences and Escapes
+perlrecharclass [] (1) - Perl Regular Expression Character Classes
+perlref [] (1) - Perl references and nested data structures
+perlreftut [] (1) - Mark's very short tutorial about references
+perlreguts [] (1) - Description of the Perl regular expression engine
+perlrequick [] (1) - Perl regular expressions quick start
+perlreref [] (1) - Perl Regular Expressions Reference
+perlretut [] (1) - Perl regular expressions tutorial
+perlrun [] (1) - how to execute the Perl interpreter
+perlsec [] (1) - Perl security
+perlstyle [] (1) - Perl style guide
+perlsub [] (1) - Perl subroutines
+perlsyn [] (1) - Perl syntax
+perlthrtut [] (1) - Tutorial on threads in Perl
+perltie [] (1) - how to hide an object class in a simple variable
+perltoc [] (1) - perl documentation table of contents
+perltodo [] (1) - Perl TO-DO List
+perltooc [] (1) - Tom's OO Tutorial for Class Data in Perl
+perltoot [] (1) - Tom's object-oriented tutorial for perl
+perltrap [] (1) - Perl traps for the unwary
+perltw [] (1) - XXXX Perl XX
+perlunicode [] (1) - Unicode support in Perl
+perlunifaq [] (1) - Perl Unicode FAQ
+perluniintro [] (1) - Perl Unicode introduction
+perlunitut [] (1) - Perl Unicode Tutorial
+perlutil [] (1) - utilities packaged with the Perl distribution
+perluts [] (1) - Perl under UTS
+perlvar [] (1) - Perl predefined variables
+perlvms [] (1) - VMS-specific documentation for Perl
+perlwin32 [] (1) - Perl under Windows
+perlxs [] (1) - XS language reference manual
+perror [] (1) - explain error codes
+perror [] (3) - print a system error message
+personality [] (2) - set the process execution domain
+petri [] (6) - simulates mold growing in a petri dish
+pf2afm [] (1) - Make an AFM file from Postscript (PFB/PFA/PFM) font files using ghostscript
+pfbtopfa [] (1) - Convert Postscript .pfb fonts to .pfa format using ghostscript
+pfbtops [] (1) - translate a PostScript font in .pfb format to ASCII
+pfifo [] (8) - Packet limited First In, First Out queue .P bfifo - Byte limited First In, First Out queue
+pfifo_fast [] (8) - three-band first in, first out queue
+pfksh [] (1) - KornShell, a
+pfksh93 [] (1) - KornShell, a
+pfmtopam [] (1) - see http://netpbm.sourceforge.net/doc/pfmtopam.html
+pfsh [] (1) - shell, the
+pg [] (1) - browse pagewise through text files
+pgm [] (5) - portable graymap file format
+pgmabel [] (1) - see http://netpbm.sourceforge.net/doc/pgmabel.html
+pgmbentley [] (1) - Bentleyize a portable graymap
+pgmcrater [] (1) - create cratered terrain by fractal forgery
+pgmdeshadow [] (1) - see http://netpbm.sourceforge.net/doc/pgmdeshadow.html
+pgmedge [] (1) - edge-detect a portable graymap
+pgmenhance [] (1) - edge-enhance a portable graymap
+pgmhist [] (1) - print a histogram of the values in a portable graymap
+pgmkernel [] (1) - generate a convolution kernel
+pgmmake [] (1) - see http://netpbm.sourceforge.net/doc/pgmmake.html
+pgmmedian [] (1) - see http://netpbm.sourceforge.net/doc/pgmmedian.html
+pgmminkowski [] (1) - see http://netpbm.sourceforge.net/doc/pgmminkowski.html
+pgmmorphconv [] (1) - see http://netpbm.sourceforge.net/doc/pgmmorphconv.html
+pgmnoise [] (1) - create a graymap made up of white noise
+pgmramp [] (1) - generate a grayscale ramp
+pgmslice [] (1) - extract one line of pixel values out of a portable graymap
+pgmtexture [] (1) - calculate textural features on a portable graymap
+pgmtofs [] (1) - convert portable graymap to Usenix FaceSaver(tm) format
+pgmtolispm [] (1) - convert a portable graymap into Lisp Machine format
+pgmtopbm [] (1) - convert a portable graymap into a portable bitmap
+pgmtopgm [] (1) - see http://netpbm.sourceforge.net/doc/pgmtopgm.html
+pgmtoppm [] (1) - colorize a PGM (grayscale) image into a PGM (color) image
+pgmtoybm [] (1) - convert a portable bitmap into a Bennet Yee face file
+pgrep [] (1) - look up or signal processes based on name and other attributes
+phantasia [] (6) - an interterminal fantasy game
+phosphor [] (6) - simulates an old terminal with long-sustain phosphor
+photo [] (n) - Full-color images
+photopile [] (6) - displays multiple images in a periodically shuffled pile
+pi1toppm [] (1) - convert an Atari Degas .pi1 into a portable pixmap
+pi3topbm [] (1) - convert an Atari Degas .pi3 file into a portable bitmap
+pic [] (1) - compile pictures for troff or TeX
+pic2graph [] (1) - convert a PIC diagram into a cropped image
+pic2tpic [] (1) - Convert pic files to tpic format
+pico [] (1) - simple text editor in the style of the Alpine Composer
+piconv [] (1) - - iconv(1), reinvented in perl
+picttoppm [] (1) - convert a Macintosh PICT file into a portable pixmap
+pid [] (n) - Retrieve process identifiers
+pidgin [] (1) - Instant Messaging client
+pidof [] (8) - - find the process ID of a running program
+piecewise [] (6) - lots of moving circles intersecting in interesting ways
+pig [] (6) - eformatray inputway asway Igpay Atinlay
+pilot [] (1) - addresses - Read and write address book databases to and from a Palm handheld
+pilot [] (1) - clip - Get or Set the Palm Clipboard contents from STDOUT/STDIN
+pilot [] (1) - csd - Connection Service Daemon for Palm Devices
+pilot [] (1) - debugsh - Simple debugging console for a Palm Handheld device [deprecated]
+pilot [] (1) - dedupe - Removes duplicate records from any Palm database
+pilot [] (1) - dlpsh - An interactive Desktop Link Protocol (DLP) Shell for your Palm device
+pilot [] (1) - file - Dump application and header information from your local PRC/PDB files
+pilot [] (1) - foto - Palm 'Foto' Image Installer/Remover/Fetcher/Converter
+pilot [] (1) - foto-treo600 - Copies Treo foto databases to current directory and extracts image files from within them
+pilot [] (1) - foto-treo650 - Copies Treo foto databases and videos to the current directory
+pilot [] (1) - getram - Retrieves the RAM image from your Palm device for use in debugging
+pilot [] (1) - getrom - Retrieves the ROM image from your Palm device for use in debugging
+pilot [] (1) - getromtoken - Reads a ROM token from a Palm Handheld device
+pilot [] (1) - hinotes - Syncronize your Hi-Notes database with your desktop machine
+pilot [] (1) - install-datebook - Installs one or more new datebook entries onto your Palm handheld
+pilot [] (1) - install-expenses - Install an expense record entries onto your Palm handheld device
+pilot [] (1) - install-hinote - Install local files into your Hi-Note database on your Palm handheld
+pilot [] (1) - install-memo - Installs a new Memo Pad entry onto your Palm handheld
+pilot [] (1) - install-netsync - reads or sets the Network Preferences information on a Palm Device
+pilot [] (1) - install-todo - Updates the Palm ToDo list with one new entry
+pilot [] (1) - install-todos - Updates the Palm ToDo list with entries from a local file
+pilot [] (1) - install-user - Reads or sets a Palm User and UserID on a Palm Device
+pilot [] (1) - memos - Manipulate Memo entries from a file or your Palm device
+pilot [] (1) - nredir - Accept connection and redirect via Network Hotsync Protocol
+pilot [] (1) - read-expenses - Export Palm Expense application data in a text format
+pilot [] (1) - read-ical - Exports the DatebookDB and/or ToDo applications to ical format
+pilot [] (1) - read-notepad - List the record information found in the Palm Notepad
+pilot [] (1) - read-palmpix - Convert all pictures in the files given or found on a Palm handheld
+pilot [] (1) - read-screenshot - Read screenshots from Palm (ScreenShotDB)
+pilot [] (1) - read-todos - Syncronize your Palm ToDo application's database with your desktop machine
+pilot [] (1) - read-veo - Synchronize your Veo Traveler databases
+pilot [] (1) - reminders - Exports your Palm Datebook database into a remind(1) data file format
+pilot [] (1) - schlep - Pack an arbitrary file and install it on your Palm or unpack a file from your Palm
+pilot [] (1) - simple file system browser in the style of the Alpine Composer
+pilot [] (1) - wav - Decodes Palm Voice Memo files to wav files you can read on your desktop
+pilot [] (1) - xfer - Backup, sync, and restore databases from a Palm handheld device
+pilot [] (7) - link - A suite of tools for communicating with Palm handhelds, such as those made by Palm, Handspring, Handera, TRGPro, Sony or other Palm Compatible Handheld PDA device
+ping [] (8) - send ICMP ECHO_REQUEST to network hosts
+ping6 [] (8) - send ICMP ECHO_REQUEST to network hosts
+pinion [] (6) - draws a scrolling sequence of interconnected gears
+pinky [] (1) - lightweight finger
+pipe [] (2) - create pipe
+pipe [] (7) - overview of pipes and FIFOs
+pipe2 [] (2) - create pipe
+pipes [] (6) - fill the screen with a plumbing system
+pivot_root [] (2) - change the root file system
+pivot_root [] (8) - change the root file system
+pixmap [] (n) - image type for the XPM file format
+pjtoppm [] (1) - convert an HP PaintJet file to a portable pixmap
+pkcs12 [] (1) - PKCS#12 file utility
+pkcs7 [] (1) - PKCS#7 utility
+pkcs8 [] (1) - PKCS#8 format private key conversion tool
+pkg [] (1) - config - Return metainformation about installed libraries
+pkg::create [] (n) - Construct an appropriate 'package ifneeded' command for a given package specification
+pkg_mkIndex [] (n) - Build an index for automatic loading of packages
+pkgtool [] (8) - software package maintenance tool
+pkill [] (1) - look up or signal processes based on name and other attributes
+pktopbm [] (1) - convert packed (PK) format font into portable bitmap(s)
+pl2pm [] (1) - Rough tool to translate Perl4 .pl files to Perl5 .pm modules
+place [] (n) - Geometry manager for fixed or rubber-sheet placement
+plane [] (6) - draw a 3 dimensional plane
+platform [] (n) - System identification support code and utilities
+platform::shell [] (n) - System identification support code and utilities
+plipconfig [] (8) - fine tune PLIP device parameters
+pluginviewer [] (8) - list loadable SASL plugins and their properties
+pm [] (1) - is-supported - Test whether suspend or hibernate is supported
+pm [] (8) - action - Suspend or Hibernate your computer
+pm [] (8) - pmu - suspend the computer on machines using a Macintosh-style PMU
+pm [] (8) - powersave - Put your computer into low power mode
+pmake [] (1) - maintain program dependencies
+pmap_dump [] (8) - print a list of all registered RPC programs
+pmap_set [] (8) - set the list of registered RPC programs
+png [] (5) - Portable Network Graphics (PNG) format
+pngtopnm [] (1) - convert a Portable Network Graphics file into a portable anymap
+pnm [] (5) - portable anymap file format
+pnmalias [] (1) - antialias a portable anyumap
+pnmarith [] (1) - perform arithmetic on two portable anymaps
+pnmcat [] (1) - concatenate portable anymaps
+pnmcolormap [] (1) - create quantization color map for a Netpbm image
+pnmcomp [] (1) - composite (overlay) two portable anymap files together
+pnmconvol [] (1) - general MxN convolution on a portable anymap
+pnmcrop [] (1) - crop a portable anymap
+pnmcut [] (1) - cut a rectangle out of a PBM, PGM, or PPM image
+pnmdepth [] (1) - change the maxval in a portable anymap
+pnmenlarge [] (1) - read a portable anymap and enlarge it N times
+pnmfile [] (1) - describe a portable anymap
+pnmflip [] (1) - perform one or more flip operations on a portable anymap
+pnmgamma [] (1) - perform gamma correction on a PNM image
+pnmhisteq [] (1) - histogram equalise a portable anymap
+pnmhistmap [] (1) - draw a histogram for a PGM or PPM file
+pnmindex [] (1) - build a visual index of a bunch of anymaps
+pnminvert [] (1) - invert a portable anymap
+pnmmargin [] (1) - add a border to a portable anymap
+pnmmontage [] (1) - create a montage of portable anymaps
+pnmnlfilt [] (1) - non-linear filters: smooth, alpha trim mean, optimal estimation smoothing, edge enhancement
+pnmnorm [] (1) - normalize the contrast in a Netbpm image
+pnmpad [] (1) - add borders to portable anymap
+pnmpaste [] (1) - paste a rectangle into a portable anymap
+pnmpsnr [] (1) - compute the difference between two images (the PSNR)
+pnmquant [] (1) - quantize the colors in a Netpbm image to a smaller set
+pnmremap [] (1) - replace colors in a PPM image with colors from another set
+pnmrotate [] (1) - rotate a portable anymap by some angle
+pnmscale [] (1) - scale a PNM file quickly
+pnmscale [] (1) - scale a PNM image
+pnmshear [] (1) - shear a portable anymap by some angle
+pnmsmooth [] (1) - smooth out an image
+pnmsplit [] (1) - split a multi-image PNM file into multiple single-image files
+pnmstitch [] (1) - see http://netpbm.sourceforge.net/doc/pnmstitch.html
+pnmtile [] (1) - replicate a portable anymap into a specified size
+pnmtoddif [] (1) - Convert a portable anymap to DDIF format
+pnmtofiasco [] (1) - Convert PNM file to FIASCO compressed file
+pnmtofits [] (1) - convert a portable anymap into FITS format
+pnmtojbig [] (1) - PNM to JBIG file converter
+pnmtojpeg [] (1) - convert PNM image to a JFIF (JPEG) image
+pnmtopalm [] (1) - convert a portable anymap into a Palm pixmap
+pnmtopclxl [] (1) - see http://netpbm.sourceforge.net/doc/pnmtopclxl.html
+pnmtoplainpnm [] (1) - convert portable any map to plain (ASCII) anymap format
+pnmtopng [] (1) - convert a portable anymap into a Portable Network Graphics file
+pnmtops [] (1) - convert portable anymap to PostScript
+pnmtorast [] (1) - convert a portable pixmap into a Sun rasterfile
+pnmtorle [] (1) - convert a Netpbm image file into an RLE image file
+pnmtosgi [] (1) - convert a portable anymap to a SGI image file
+pnmtosir [] (1) - convert a portable anymap into a Solitaire format
+pnmtotiff [] (1) - convert a PNM image to a TIFF file
+pnmtotiffcmyk [] (1) - convert a a portable anymap into a CMYK encoded TIFF file
+pnmtoxwd [] (1) - convert a portable anymap into an X11 window dump
+pnoutrefresh [] (3) - create and display curses pads
+pnpdump [] (8) - Dump ISA Plug-And-Play devices resource information
+po2xml [] (1) - Translates an DocBook XML file using a PO file
+pod2html [] (1) - convert .pod files to .html files
+pod2latex [] (1) - convert pod documentation to latex format
+pod2man [] (1) - Convert POD data to formatted *roff input
+pod2text [] (1) - Convert POD data to formatted ASCII text
+pod2usage [] (1) - print usage messages from embedded pod docs in files
+pod2usage() [] (3) - print a usage message from embedded pod documentation
+podchecker [] (1) - check the syntax of POD format documentation files
+podchecker() [] (3) - check pod documents for syntax errors
+podselect [] (1) - print selected sections of pod documentation on standard output
+podselect() [] (3) - extract selected sections of POD from input
+poll [] (2) - wait for some event on a file descriptor
+polyhedra [] (6) - draws the 80 uniform polyhedra and their duals
+polyominoes [] (6) - fill a rectangle with irregularly-shaped blocks
+polytopes [] (6) - Draws one of the six regular 4d polytopes rotating in 4d
+pom [] (6) - display the phase of the moon
+pong [] (6) - Pong Home Video Game Emulator
+popa3d [] (8) - Post Office Protocol (POP3) server
+popd [] (1) - bash built-in commands, see bash(1)
+popen [] (3) - pipe stream to or from a process
+popt [] (3) - Parse command line options
+port [] (4) - system memory, kernel memory and system ports
+portmap [] (8) - DARPA port to RPC program number mapper
+porttime [] (5) - port access time file
+posix_fadvise [] (2) - predeclare an access pattern for file data
+posix_fallocate [] (3) - allocate file space
+posix_memalign [] (3) - Allocate aligned memory
+posix_openpt [] (3) - open a pseudo-terminal device
+posixoptions [] (7) - optional parts of the POSIX standard
+pow [] (3) - power functions
+pow10 [] (3) - base-10 power functions
+pow10f [] (3) - base-10 power functions
+pow10l [] (3) - base-10 power functions
+poweroff [] (8) - stop the system
+powf [] (3) - power functions
+powl [] (3) - power functions
+ppdc [] (1) - cups ppd compiler
+ppdcfile [] (5) - cups ppd compiler source file format
+ppdhtml [] (1) - cups html summary generator
+ppdi [] (1) - import ppd files
+ppdmerge [] (1) - merge ppd files
+ppdpo [] (1) - cups message catalog generator
+ppm [] (5) - portable pixmap file format
+ppm2tiff [] (1) - create a TIFF file from PPM, PGM and PBM image files
+ppm3d [] (1) - convert two portable pixmap into a red/blue 3d glasses pixmap
+ppmbrighten [] (1) - change an images Saturation and Value from an HSV map
+ppmchange [] (1) - change all pixels of one color to another in a portable pixmap
+ppmcie [] (1) - draw a CIE color chart as a PPM image
+ppmcolormask [] (1) - produce mask of areas of a certain color in a PPM file
+ppmcolors [] (1) - generate a color map of all colors of a certain maxval
+ppmdcfont [] (1) - see http://netpbm.sourceforge.net/doc/ppmdcfont.html
+ppmddumpfont [] (1) - see http://netpbm.sourceforge.net/doc/ppmddumpfont.html
+ppmdim [] (1) - dim a portable pixmap down to total blackness
+ppmdist [] (1) - simplistic grayscale assignment for machine generated, color images
+ppmdither [] (1) - ordered dither for color images
+ppmdmkfont [] (1) - see http://netpbm.sourceforge.net/doc/ppmdmkfont.html
+ppmdraw [] (1) - see http://netpbm.sourceforge.net/doc/ppmdraw.html
+ppmfade [] (1) - generate a transition between two image files using special effects
+ppmflash [] (1) - brighten a picture up to complete white-out
+ppmforge [] (1) - fractal forgeries of clouds, planets, and starry skies
+ppmglobe [] (1) - see http://netpbm.sourceforge.net/doc/ppmglobe.html
+ppmhist [] (1) - print a histogram of a PPM image
+ppmlabel [] (1) - add text to a portable pixmap
+ppmmake [] (1) - create a pixmap of a specified size and color
+ppmmix [] (1) - blend together two portable pixmaps
+ppmntsc [] (1) - Make RGB colors legal for NTSC or PAL color systems
+ppmpat [] (1) - make a pretty pixmap
+ppmquant [] (1) - quantize the colors in a portable pixmap down to a specified number
+ppmquantall [] (1) - run ppmquant on a bunch of files all at once, so they share a common colormap
+ppmqvga [] (1) - 8 plane quantization
+ppmrainbow [] (1) - Generate a rainbow
+ppmrelief [] (1) - run a Laplacian relief filter on a portable pixmap
+ppmrough [] (1) - see http://netpbm.sourceforge.net/doc/ppmrough.html
+ppmshadow [] (1) - add simulated shadows to a portable pixmap image
+ppmshift [] (1) - shift lines of a portable pixmap left or right by a random amount
+ppmspread [] (1) - displace a portable pixmap's pixels by a random amount
+ppmsvgalib [] (1) - display PPM image on Linux console using Svgalib
+ppmtoacad [] (1) - convert portable pixmap to AutoCAD database or slide
+ppmtoarbtxt [] (1) - see http://netpbm.sourceforge.net/doc/ppmtoarbtxt.html
+ppmtobmp [] (1) - convert a portable pixmap into a BMP file
+ppmtoeyuv [] (1) - convert a portable pixmap into a Berkeley YUV file
+ppmtogif [] (1) - convert a portable pixmap into a GIF file
+ppmtoicr [] (1) - convert a portable pixmap into NCSA ICR format
+ppmtoilbm [] (1) - convert a portable pixmap into an ILBM file
+ppmtoleaf [] (1) - convert PPM image to Interleaf image format
+ppmtolj [] (1) - convert a portable pixmap to an HP LaserJet PCL 5 Color file
+ppmtomap [] (1) - extract all colors from a portable pixmap
+ppmtomitsu [] (1) - convert a portable pixmap to a Mitsubishi S340-10 file
+ppmtompeg [] (1) - encodes MPEG-1 bitstreams
+ppmtoneo [] (1) - convert a portable pixmap into an Atari Neochrome .neo file
+ppmtopcx [] (1) - convert a portable pixmap into a PCX file
+ppmtopgm [] (1) - convert a portable pixmap into a portable graymap
+ppmtopi1 [] (1) - convert a portable pixmap into an Atari Degas .pi1 file
+ppmtopict [] (1) - convert a portable pixmap into a Macintosh PICT file
+ppmtopj [] (1) - convert a portable pixmap to an HP PaintJet file
+ppmtopjxl [] (1) - convert a portable pixmap into an HP PaintJet XL PCL file
+ppmtoppm [] (1) - see http://netpbm.sourceforge.net/doc/ppmtoppm.html
+ppmtopuzz [] (1) - convert a portable pixmap into an X11 puzzle file
+ppmtorgb3 [] (1) - separate a portable pixmap into three portable graymaps
+ppmtosixel [] (1) - convert a portable pixmap into DEC sixel format
+ppmtoterm [] (1) - see http://netpbm.sourceforge.net/doc/ppmtoterm.html
+ppmtotga [] (1) - convert portable pixmap into a TrueVision Targa file
+ppmtouil [] (1) - convert a portable pixmap into a Motif UIL icon file
+ppmtowinicon [] (1) - convert 1 or more portable pixmaps into a Windows .ico file
+ppmtoxpm [] (1) - convert a PPM iamge into an X11 pixmap
+ppmtoyuv [] (1) - convert a portable pixmap into an Abekas YUV file
+ppmtoyuvsplit [] (1) - convert a portable pixmap into 3 subsampled raw YUV files
+ppmtv [] (1) - make a portable pixmap look like taken from an American TV
+ppmwheel [] (1) - see http://netpbm.sourceforge.net/doc/ppmwheel.html
+ppoll [] (2) - wait for some event on a file descriptor
+pppd [] (8) - Point-to-Point Protocol Daemon
+pppdump [] (8) - convert PPP record file to readable format
+pppoe [] (8) - connect - Shell script to manage a PPPoE link
+pppoe [] (8) - relay - user-space PPPoE relay agent
+pppoe [] (8) - server - user-space PPPoE server
+pppoe [] (8) - setup - Shell script to configure Roaring Penguin PPPoE client
+pppoe [] (8) - sniff - examine network for non-standard PPPoE frames
+pppoe [] (8) - start - Shell script to bring up a PPPoE link
+pppoe [] (8) - status - Shell script to report on status of PPPoE link
+pppoe [] (8) - stop - Shell script to shut down a PPPoE link
+pppoe [] (8) - user-space PPPoE client
+pppoe.conf [] (5) - Configuration file used by pppoe-start(8), pppoe - stop(8), pppoe-status(8) and pppoe-connect(8)
+pppstats [] (8) - print PPP statistics
+ppt [] (6) - reformat input as punch cards, paper tape or morse code
+pr [] (1) - convert text files for printing
+pr29_4 [] (3) - check if input trigger Unicode normalization bugs
+pr29_4z [] (3) - check if input trigger Unicode normalization bugs
+pr29_8z [] (3) - check if input trigger Unicode normalization bugs
+pr29_strerror [] (3) - return string describing pr29 error code
+praliases [] (8) - display system mail aliases
+prctl [] (2) - operations on a process
+pread [] (2) - read from or write to a file descriptor at a given offset
+preconv [] (1) - convert encoding of input files to something GNU troff understands
+prefresh [] (3) - create and display curses pads
+prezip [] (1) - bin - prefix zip delta word list compressor/decompressor
+primes [] (6) - factor a number, generate primes
+print_description [] (3) - mib_api functions
+print_mib [] (3) - mib_api functions
+print_objid [] (3) - mib_api functions
+print_value [] (3) - mib_api functions
+print_variable [] (3) - mib_api functions
+printafm [] (1) - Print the metrics from a Postscript font in AFM format using ghostscript
+printenv [] (1) - print all or part of environment
+printers.conf [] (5) - printer configuration file for cups
+printf [] (1) - bash built-in commands, see bash(1)
+printf [] (1) - format and print data
+printf [] (3) - formatted output conversion
+printftest [] (6) - tests the vgagl gl_printf function
+printmail [] (1) - format mail in a readable fashion for printing
+printw [] (3) - print formatted output in curses windows
+proc [] (5) - process information pseudo-file system
+proc [] (n) - Create a Tcl procedure
+procinfo [] (8) - display system status gathered from /proc
+procmail [] (1) - autonomous mail processor
+procmailex [] (5) - procmail rcfile examples
+procmailrc [] (5) - procmail rcfile
+procmailsc [] (5) - procmail weighted scoring technique
+prof [] (2) - unimplemented system calls
+profil [] (2) - unimplemented system calls
+profil [] (3) - execution time profile
+profiles [] (1) - A utility to report and change SIDs in registry files
+proftpd [] (8) - Professional configurable, secure file transfer protocol server
+program_invocation_name [] (3) - obtain name used to invoke calling program
+program_invocation_short_name [] (3) - obtain name used to invoke calling program
+protocols [] (5) - the protocols definition file
+prove [] (1) - - A command-line tool for running tests against Test::Harness
+providence [] (6) - eye in glory screenhack
+proxymngr [] (1) - proxy manager service
+pruneemptydirs [] (1) - Detects stale source directories in a CVS tree
+ps [] (1) - report a snapshot of the current processes
+ps2ascii [] (1) - Ghostscript translator from PostScript or PDF to ASCII
+ps2epsi [] (1) - generate conforming Encapsulated PostScript
+ps2pdf [] (1) - Convert PostScript to PDF using ghostscript
+ps2pdf12 [] (1) - Convert PostScript to PDF 1.2 (Acrobat 3-and-later compatible) using ghostscript
+ps2pdf13 [] (1) - Convert PostScript to PDF 1.3 (Acrobat 4-and-later compatible) using ghostscript
+ps2pdfwr [] (1) - Convert PostScript to PDF without specifying CompatibilityLevel, using ghostscript
+ps2ps [] (1) - Ghostscript PostScript distiller
+psbook [] (1) - rearrange pages in PostScript file into signatures
+psc [] (1) - prepare sc files
+psed [] (1) - a stream editor
+pselect [] (2) - synchronous I/O multiplexing
+psf [] (8) - PostScript filter
+psfaddtable [] (1) - add a Unicode character table to a console font
+psfgettable [] (1) - extract the embedded Unicode character table from a console font
+psfstriptable [] (1) - remove the embedded Unicode character table from a console font
+psfxtable [] (1) - handle Unicode character tables for console fonts
+psidtopgm [] (1) - convert PostScript image data into a portable graymap
+psignal [] (3) - print signal message
+psktool [] (1) - Simple PSK password tool
+psmandup [] (1) - print duplex on non duplex printers
+psmerge [] (1) - filter to merge several PostScript files into one
+psnup [] (1) - multiple pages per sheet
+psorder [] (1) - PostScript pageorder filter
+pspell [] (1) - config - prints information about a libpspell installation
+psresize [] (1) - multiple pages per sheet
+psselect [] (1) - select pages from a PostScript file
+psset [] (1) - insert page device request in PostScript files
+pstopnm [] (1) - convert a PostScript file into a portable anymap
+pstops [] (1) - shuffle pages in a PostScript file
+pstree [] (1) - display a tree of processes
+pstruct [] (1) - Dump C structures as generated from cc -g -S stabs
+ptar [] (1) - a tar-like program written in perl
+ptardiff [] (1) - program that diffs an extracted archive against an unextracted one
+pth [] (1) - config - Pth library build utility
+pth [] (3) - GNU Portable Threads
+pthread.h [] (3) - threads
+pthread_atfork [] (3) - register fork handlers
+pthread_attr_destroy [] (3) - destroy and initialize the thread attributes object
+pthread_attr_destroy [] (3) - initialize and destroy thread attributes object
+pthread_attr_getaffinity_np [] (3) - set/get CPU affinity attribute in thread attributes object
+pthread_attr_getdetachstate [] (3) - get and set the detachstate attribute
+pthread_attr_getdetachstate [] (3) - set/get detach state attribute in thread attributes object
+pthread_attr_getguardsize [] (3) - get and set the thread guardsize attribute
+pthread_attr_getguardsize [] (3) - set/get guard size attribute in thread attributes object
+pthread_attr_getinheritsched [] (3) - get and set the inheritsched attribute (REALTIME THREADS)
+pthread_attr_getinheritsched [] (3) - set/get inherit scheduler attribute in thread attributes object
+pthread_attr_getschedparam [] (3) - get and set the schedparam attribute
+pthread_attr_getschedparam [] (3) - set/get scheduling parameter attributes in thread attributes object
+pthread_attr_getschedpolicy [] (3) - get and set the schedpolicy attribute (REALTIME THREADS)
+pthread_attr_getschedpolicy [] (3) - set/get scheduling policy attribute in thread attributes object
+pthread_attr_getscope [] (3) - get and set the contentionscope attribute (REALTIME THREADS)
+pthread_attr_getscope [] (3) - set/get contention scope attribute in thread attributes object
+pthread_attr_getstack [] (3) - get and set stack attributes
+pthread_attr_getstack [] (3) - set/get stack attributes in thread attributes object
+pthread_attr_getstackaddr [] (3) - get and set the stackaddr attribute
+pthread_attr_getstackaddr [] (3) - set/get stack address attribute in thread attributes object
+pthread_attr_getstacksize [] (3) - get and set the stacksize attribute
+pthread_attr_getstacksize [] (3) - set/get stack size attribute in thread attributes object
+pthread_attr_init [] (3) - destroy and initialize the thread attributes object
+pthread_attr_init [] (3) - initialize and destroy thread attributes object
+pthread_attr_setaffinity_np [] (3) - set/get CPU affinity attribute in thread attributes object
+pthread_attr_setdetachstate [] (3) - get and set the detachstate attribute
+pthread_attr_setdetachstate [] (3) - set/get detach state attribute in thread attributes object
+pthread_attr_setguardsize [] (3) - get and set the thread guardsize attribute
+pthread_attr_setguardsize [] (3) - set/get guard size attribute in thread attributes object
+pthread_attr_setinheritsched [] (3) - get and set the inheritsched attribute (REALTIME THREADS)
+pthread_attr_setinheritsched [] (3) - set/get inherit scheduler attribute in thread attributes object
+pthread_attr_setschedparam [] (3) - get and set the schedparam attribute
+pthread_attr_setschedparam [] (3) - set/get scheduling parameter attributes in thread attributes object
+pthread_attr_setschedpolicy [] (3) - get and set the schedpolicy attribute (REALTIME THREADS)
+pthread_attr_setschedpolicy [] (3) - set/get scheduling policy attribute in thread attributes object
+pthread_attr_setscope [] (3) - get and set the contentionscope attribute (REALTIME THREADS)
+pthread_attr_setscope [] (3) - set/get contention scope attribute in thread attributes object
+pthread_attr_setstack [] (3) - get and set stack attributes
+pthread_attr_setstack [] (3) - set/get stack attributes in thread attributes object
+pthread_attr_setstackaddr [] (3) - get and set the stackaddr attribute
+pthread_attr_setstackaddr [] (3) - set/get stack address attribute in thread attributes object
+pthread_attr_setstacksize [] (3) - get and set the stacksize attribute
+pthread_attr_setstacksize [] (3) - set/get stack size attribute in thread attributes object
+pthread_barrier_destroy [] (3) - destroy and initialize a barrier object (ADVANCED REALTIME THREADS)
+pthread_barrier_init [] (3) - destroy and initialize a barrier object (ADVANCED REALTIME THREADS)
+pthread_barrier_wait [] (3) - synchronize at a barrier (ADVANCED REALTIME THREADS)
+pthread_barrierattr_destroy [] (3) - destroy and initialize the barrier attributes object (ADVANCED REALTIME THREADS)
+pthread_barrierattr_getpshared [] (3) - get and set the process - shared attribute of the barrier attributes object (ADVANCED REALTIME THREADS)
+pthread_barrierattr_init [] (3) - destroy and initialize the barrier attributes object (ADVANCED REALTIME THREADS)
+pthread_barrierattr_setpshared [] (3) - get and set the process - shared attribute of the barrier attributes object (ADVANCED REALTIME THREADS)
+pthread_cancel [] (3) - cancel execution of a thread
+pthread_cancel [] (3) - send a cancellation request to a thread
+pthread_cleanup_pop [] (3) - establish cancellation handlers
+pthread_cleanup_pop [] (3) - push and pop thread cancellation clean - up handlers
+pthread_cleanup_pop_restore_np [] (3) - push and pop thread cancellation clean - up handlers while saving cancelability type
+pthread_cleanup_push [] (3) - establish cancellation handlers
+pthread_cleanup_push [] (3) - push and pop thread cancellation clean - up handlers
+pthread_cleanup_push_defer_np [] (3) - push and pop thread cancellation clean - up handlers while saving cancelability type
+pthread_cond_broadcast [] (3) - broadcast or signal a condition
+pthread_cond_destroy [] (3) - destroy and initialize condition variables
+pthread_cond_init [] (3) - destroy and initialize condition variables
+pthread_cond_signal [] (3) - broadcast or signal a condition
+pthread_cond_timedwait [] (3) - wait on a condition
+pthread_cond_wait [] (3) - wait on a condition
+pthread_condattr_destroy [] (3) - destroy and initialize the condition variable attributes object
+pthread_condattr_getclock [] (3) - get and set the clock selection condition variable attribute (ADVANCED REALTIME)
+pthread_condattr_getpshared [] (3) - get and set the process - shared condition variable attributes
+pthread_condattr_init [] (3) - destroy and initialize the condition variable attributes object
+pthread_condattr_setclock [] (3) - get and set the clock selection condition variable attribute (ADVANCED REALTIME)
+pthread_condattr_setpshared [] (3) - get and set the process - shared condition variable attributes
+pthread_create [] (3) - create a new thread
+pthread_create [] (3) - thread creation
+pthread_detach [] (3) - detach a thread
+pthread_equal [] (3) - compare thread IDs
+pthread_exit [] (3) - terminate calling thread
+pthread_exit [] (3) - thread termination
+pthread_getaffinity_np [] (3) - set/get CPU affinity of a thread
+pthread_getattr_np [] (3) - get attributes of created thread
+pthread_getconcurrency [] (3) - get and set the level of concurrency
+pthread_getcpuclockid [] (3) - access a thread CPU-time clock (ADVANCED REALTIME THREADS)
+pthread_getcpuclockid [] (3) - retrieve ID of a thread's CPU time clock
+pthread_getschedparam [] (3) - dynamic thread scheduling parameters access (REALTIME THREADS)
+pthread_getspecific [] (3) - thread-specific data management
+pthread_join [] (3) - join with a terminated thread
+pthread_join [] (3) - wait for thread termination
+pthread_key_create [] (3) - thread-specific data key creation
+pthread_key_delete [] (3) - thread-specific data key deletion
+pthread_kill [] (3) - send a signal to a thread
+pthread_kill_other_threads_np [] (3) - terminate all other threads in process
+pthread_mutex_destroy [] (3) - destroy and initialize a mutex
+pthread_mutex_getprioceiling [] (3) - get and set the priority ceiling of a mutex (REALTIME THREADS)
+pthread_mutex_init [] (3) - destroy and initialize a mutex
+pthread_mutex_lock [] (3) - lock and unlock a mutex
+pthread_mutex_setprioceiling [] (3) - get and set the priority ceiling of a mutex (REALTIME THREADS)
+pthread_mutex_timedlock [] (3) - lock a mutex (ADVANCED REALTIME)
+pthread_mutex_trylock [] (3) - lock and unlock a mutex
+pthread_mutex_unlock [] (3) - lock and unlock a mutex
+pthread_mutexattr_destroy [] (3) - destroy and initialize the mutex attributes object
+pthread_mutexattr_getprioceiling [] (3) - get and set the prioceiling attribute of the mutex attributes object (REALTIME THREADS)
+pthread_mutexattr_getprotocol [] (3) - get and set the protocol attribute of the mutex attributes object (REALTIME THREADS)
+pthread_mutexattr_getpshared [] (3) - get and set the process - shared attribute
+pthread_mutexattr_gettype [] (3) - get and set the mutex type attribute
+pthread_mutexattr_init [] (3) - destroy and initialize the mutex attributes object
+pthread_mutexattr_setprioceiling [] (3) - get and set the prioceiling attribute of the mutex attributes object (REALTIME THREADS)
+pthread_mutexattr_setprotocol [] (3) - get and set the protocol attribute of the mutex attributes object (REALTIME THREADS)
+pthread_mutexattr_setpshared [] (3) - get and set the process - shared attribute
+pthread_mutexattr_settype [] (3) - get and set the mutex type attribute
+pthread_once [] (3) - dynamic package initialization
+pthread_rwlock_destroy [] (3) - destroy and initialize a read - write lock object
+pthread_rwlock_init [] (3) - destroy and initialize a read - write lock object
+pthread_rwlock_rdlock [] (3) - lock a read-write lock object for reading
+pthread_rwlock_timedrdlock [] (3) - lock a read-write lock for reading
+pthread_rwlock_timedwrlock [] (3) - lock a read-write lock for writing
+pthread_rwlock_tryrdlock [] (3) - lock a read-write lock object for reading
+pthread_rwlock_trywrlock [] (3) - lock a read-write lock object for writing
+pthread_rwlock_unlock [] (3) - unlock a read-write lock object
+pthread_rwlock_wrlock [] (3) - lock a read-write lock object for writing
+pthread_rwlockattr_destroy [] (3) - destroy and initialize the read - write lock attributes object
+pthread_rwlockattr_getpshared [] (3) - get and set the process - shared attribute of the read - write lock attributes object
+pthread_rwlockattr_init [] (3) - destroy and initialize the read - write lock attributes object
+pthread_rwlockattr_setpshared [] (3) - get and set the process - shared attribute of the read - write lock attributes object
+pthread_self [] (3) - compare thread IDs
+pthread_self [] (3) - get the calling thread ID
+pthread_self [] (3) - obtain ID of the calling thread
+pthread_setaffinity_np [] (3) - set/get CPU affinity of a thread
+pthread_setcancelstate [] (3) - set cancelability state
+pthread_setcancelstate [] (3) - set cancelability state and type
+pthread_setcanceltype [] (3) - set cancelability state
+pthread_setcanceltype [] (3) - set cancelability state and type
+pthread_setconcurrency [] (3) - get and set the level of concurrency
+pthread_setschedparam [] (3) - dynamic thread scheduling parameters access (REALTIME THREADS)
+pthread_setschedparam [] (3) - set/get scheduling policy and parameters of a thread
+pthread_setschedprio [] (3) - dynamic thread scheduling parameters access (REALTIME THREADS)
+pthread_setschedprio [] (3) - set scheduling priority of a thread
+pthread_setspecific [] (3) - thread-specific data management
+pthread_sigmask [] (3) - examine and change mask of blocked signals
+pthread_spin_destroy [] (3) - destroy or initialize a spin lock object (ADVANCED REALTIME THREADS)
+pthread_spin_init [] (3) - destroy or initialize a spin lock object (ADVANCED REALTIME THREADS)
+pthread_spin_lock [] (3) - lock a spin lock object (ADVANCED REALTIME THREADS)
+pthread_spin_trylock [] (3) - lock a spin lock object (ADVANCED REALTIME THREADS)
+pthread_spin_unlock [] (3) - unlock a spin lock object (ADVANCED REALTIME THREADS)
+pthread_testcancel [] (3) - request delivery of any pending cancellation request
+pthread_testcancel [] (3) - set cancelability state
+pthread_timedjoin_np [] (3) - try to join with a terminated thread
+pthread_tryjoin_np [] (3) - try to join with a terminated thread
+pthreads [] (7) - POSIX threads
+ptmx and pts [] (4) - pseudo-terminal master and slave
+ptrace [] (2) - process trace
+ptsname [] (3) - get the name of the slave pseudo-terminal
+ptsname_r [] (3) - get the name of the slave pseudo-terminal
+ptx [] (1) - produce a permuted index of file contents
+pty [] (7) - pseudo-terminal interfaces
+pulsar [] (6) - intersecting planes, alpha blending, fog, and textures
+punycode_decode [] (3) - decode Punycode to Unicode
+punycode_encode [] (3) - encode Unicode to Punycode
+punycode_strerror [] (3) - return string describing punycode error code
+pushd [] (1) - bash built-in commands, see bash(1)
+putc [] (3) - output of characters and strings
+putc_unlocked [] (3) - non-locking stdio functions
+putchar [] (3) - output of characters and strings
+putchar_unlocked [] (3) - non-locking stdio functions
+putenv [] (3) - change or add an environment variable
+putgrent [] (3) - write a group database entry to a file
+putp [] (3) - curses interfaces to terminfo database
+putpmsg [] (2) - unimplemented system calls
+putpwent [] (3) - write a password file entry
+puts [] (3) - output of characters and strings
+puts [] (n) - Write to a channel
+putspent [] (3) - get shadow password file entry
+pututline [] (3) - access utmp file entries
+putw [] (3) - input and output of words (ints)
+putwc [] (3) - write a wide character to a FILE stream
+putwchar [] (3) - write a wide character to standard output
+putwin [] (3) - miscellaneous curses utility routines
+pvchange [] (8) - change attributes of a physical volume
+pvck [] (8) - check physical volume metadata
+pvcreate [] (8) - initialize a disk or partition for use by LVM
+pvdisplay [] (8) - display attributes of a physical volume
+pvmove [] (8) - move physical extents
+pvremove [] (8) - remove a physical volume
+pvresize [] (8) - resize a disk or partition in use by LVM2
+pvs [] (8) - report information about physical volumes
+pvscan [] (8) - scan all disks for physical volumes
+pwauth [] (3) - administrator defined password authentication routines
+pwauth [] (8) - administrator defined password authentication
+pwck [] (8) - verify integrity of password files
+pwconv [] (8) - convert to and from shadow passwords and groups
+pwd [] (1) - bash built-in commands, see bash(1)
+pwd [] (1) - print name of current/working directory
+pwd [] (n) - Return the absolute path of the current working directory
+pwmconfig [] (8) - tests the PWM outputs of sensors and configures fancontrol
+pwrite [] (2) - read from or write to a file descriptor at a given offset
+pwunconv [] (8) - convert to and from shadow passwords and groups
+pwupdate [] (8) - updates passwd and shadow NIS map
+pyro [] (6) - simulate fireworks
+python [] (1) - an interpreted, interactive, object-oriented programming language
+qcatool [] (1) - command line tool for the Qt Cryptographic Architecture
+qecvt [] (3) - convert a floating-point number to a string
+qecvt_r [] (3) - convert a floating-point number to a string
+qfcvt [] (3) - convert a floating-point number to a string
+qfcvt_r [] (3) - convert a floating-point number to a string
+qgcvt [] (3) - convert a floating-point number to a string
+qiflush [] (3) - curses input options
+qix [] (6) - bounce colored lines around a window
+qrttoppm [] (1) - convert output from the QRT ray tracer into a portable pixmap
+qsort [] (3) - sorts an array
+qtdoc [] (1) - Open a Qt help page in Konqueror
+qtoptions [] (7) - Common commandline options for all applications based on the Qt toolkit
+queens [] (6) - n queens screensaver
+query_module [] (2) - query the kernel for various bits pertaining to modules
+quiz [] (6) - random knowledge tests
+quot [] (8) - summarize filesystem ownership
+quota [] (1) - display disk usage and limits
+quotacheck [] (8) - scan a filesystem for disk usage, create, check and repair quota files
+quotactl [] (2) - manipulate disk quotas
+quotaoff [] (8) - turn filesystem quotas on and off
+quotaon [] (8) - turn filesystem quotas on and off
+quotastats [] (8) - Program to query quota statistics
+r128 [] (4) - ATI Rage 128 video driver
+radattr.so [] (8) - RADIUS utility plugin for
+radeon [] (4) - ATI RADEON video driver
+radeonhd [] (4) - AMD GPG (ATI) R5xx/R6xx/R7xx video driver
+radiobutton [] (n) - Create and manipulate radiobutton widgets
+radius.so [] (8) - RADIUS authentication plugin for
+rain [] (6) - animated raindrops display
+raise [] (3) - send a signal to the caller
+raise [] (n) - Change a window's position in the stacking order
+ram [] (4) - ram disk device
+rand [] (1) - generate pseudo-random bytes
+rand [] (3) - pseudo-random number generator
+rand_r [] (3) - pseudo-random number generator
+random [] (3) - random number generator
+random [] (4) - kernel random number source devices
+random [] (6) - random lines from a file or random numbers
+random_r [] (3) - reentrant random number generator
+ranlib [] (1) - generate index to archive
+rapper [] (1) - Raptor RDF parsing and serializing utility
+raptor [] (1) - config - script to get information about the installed version of Raptor
+rarp [] (8) - manipulate the system RARP table
+rarpd [] (8) - answer RARP REQUESTs
+ras2tiff [] (1) - create a TIFF file from a Sun rasterfile
+rasqal [] (1) - config - script to get information about the installed version of the RDF query library
+rastertoescpx [] (1) - enhanced esc/p raster driver for cups
+rastertopclx [] (1) - enhanced pcl raster driver for cups
+rasttopnm [] (1) - convert a Sun rasterfile into a portable anymap
+raw [] (3) - curses input options
+raw [] (7) - Linux IPv4 raw sockets
+raw [] (8) - bind a Linux raw character device
+raw2tiff [] (1) - create a TIFF file from a raw data
+rawmemchr [] (3) - scan memory for a character
+rawtopgm [] (1) - convert raw grayscale bytes into a portable graymap
+rawtoppm [] (1) - convert raw RGB bytes into a portable pixmap
+rb [] (1) - XMODEM, YMODEM, ZMODEM (Batch) file receive
+rbash [] (1) - restricted bash, see bash(1)
+rc.inet1 [] (8) - Slackware network configuration script
+rc.inet1.conf [] (5) - Slackware network configuration file
+rclock (ouR CLOCK) [] (1) - clock and appointment reminder for X11
+rcmd [] (3) - routines for returning a stream to a remote command
+rcp [] (1) - remote file copy
+rcs [] (1) - change RCS file attributes
+rcsclean [] (1) - clean up working files
+rcsdiff [] (1) - compare RCS revisions
+rcsfile [] (5) - format of RCS file
+rcsfreeze [] (1) - freeze a configuration of sources checked in under RCS
+rcsintro [] (1) - introduction to RCS commands
+rcsmerge [] (1) - merge RCS revisions
+rd [] (6) - bomb - reaction/diffusion textures
+rdesktop [] (1) - Remote Desktop Protocol client
+rdev [] (8) - query/set image root device, RAM disk size, or video mode
+rdfproc [] (1) - Redland RDF processor utility
+rdisc [] (8) - network router discovery daemon
+rdist [] (1) - remote file distribution client program
+rdistd [] (1) - remote file distribution server program
+rdjpgcom [] (1) - display text comments from a JPEG file
+re [] (3) - Perl pragma to alter regular expression behaviour
+re_comp [] (3) - BSD regex functions
+re_exec [] (3) - BSD regex functions
+re_syntax [] (n) - Syntax of Tcl regular expressions
+read [] (1) - bash built-in commands, see bash(1)
+read [] (2) - read from a file descriptor
+read [] (n) - Read from a channel
+read_all_mibs [] (3) - mib_api functions
+read_configs [] (3) - read_config functions
+read_mib [] (3) - mib_api functions
+read_module [] (3) - mib_api functions
+read_module_node [] (3) - mib_api functions
+read_objid [] (3) - mib_api functions
+read_only [] (3) - Make your handler read_only automatically The only purpose of this handler is to return an appropriate error for any requests passed to it in a SET mode
+read_premib_configs [] (3) - read_config functions
+readahead [] (2) - perform file readahead into page cache
+readcd [] (1) - read or write data Compact Discs
+readdir [] (2) - read directory entry
+readdir [] (3) - read a directory
+readdir_r [] (3) - read a directory
+readelf [] (1) - Displays information about ELF files
+readline [] (3) - get a line from a user with editing
+readlink [] (1) - display value of a symbolic link
+readlink [] (2) - read value of a symbolic link
+readlink_by_handle [] (3) - file handle operations
+readlinkat [] (2) - read value of a symbolic link relative to a directory file descriptor
+readmsg [] (1) - extract messages from a mail folder
+readonly [] (1) - bash built-in commands, see bash(1)
+readprofile [] (1) - a tool to read kernel profiling information
+readv [] (2) - read or write data into multiple buffers
+realloc [] (3) - Allocate and free dynamic memory
+realpath [] (3) - return the canonicalized absolute pathname
+reboot [] (2) - reboot or enable/disable Ctrl-Alt-Del
+reboot [] (8) - stop the system
+recno [] (3) - record number database access method
+recode [] (1) - sr-latin - convert Serbian text from Cyrillic to Latin script
+recv [] (2) - receive a message from a socket
+recvfrom [] (2) - receive a message from a socket
+recvmsg [] (2) - receive a message from a socket
+red [] (1) - text editor
+red [] (8) - Random Early Detection
+redland [] (1) - config - script to get information about the installed version of Redland
+redland [] (1) - db-upgrade - upgrade older Redland databases to 0.9.12 format
+redrawwin [] (3) - refresh curses windows and lines
+ref [] (1) - Display a C function header
+refchan [] (n) - Command handler API of reflected channels, version 1
+refer [] (1) - preprocess bibliographic references for groff
+refresh [] (3) - refresh curses windows and lines
+regcomp [] (3) - POSIX regex functions
+regdbdump [] (8) - parse and print out regulatory rules file
+regerror [] (3) - POSIX regex functions
+regex [] (7) - POSIX.2 regular expressions
+regexec [] (3) - POSIX regex functions
+regexp [] (n) - Match a regular expression against a string
+regfree [] (3) - POSIX regex functions
+register_config_handler [] (3) - read_config functions
+register_mib_handlers [] (3) - read_config functions
+register_premib_handler unregister_config_handler [] (3) - read_config functions
+registry [] (n) - Manipulate the Windows registry
+regsub [] (n) - Perform substitutions based on regular expression pattern matching
+regulatory.bin [] (5) - The Linux wireless regulatory database
+reiserfsck [] (8) - The checking tool for the ReiserFS filesystem
+reiserfstune [] (8) - The tunning tool for the ReiserFS filesystem
+remainder [] (3) - floating - point remainder function
+remainderf [] (3) - floating - point remainder function
+remainderl [] (3) - floating - point remainder function
+remap_file_pages [] (2) - create a non-linear file mapping
+remove [] (3) - remove a file or directory
+removepkg [] (8) - remove Slackware packages
+removexattr [] (2) - remove an extended attribute
+remque [] (3) - insert/remove an item from a queue
+remquo [] (3) - remainder and part of quotient
+remquof [] (3) - remainder and part of quotient
+remquol [] (3) - remainder and part of quotient
+rename [] (1) - Rename files
+rename [] (2) - change the name or location of a file
+rename [] (n) - Rename or delete a command
+renameat [] (2) - rename a file relative to directory file descriptors
+rendercheck [] (1) - simple tests of the X Render extension
+rendition [] (4) - Rendition video driver
+renice [] (1) - alter priority of running processes
+replace [] (1) - a string-replacement utility
+reportview [] (1) - ask KWeatherService to display a weather report
+repquota [] (8) - summarize quotas for a filesystem
+req [] (1) - PKCS#10 certificate request and certificate generating utility
+request_init [] (3) - access control library
+request_set [] (3) - access control library
+require'caca' c= Caca::Canvas.new(20 [] (3) - 1)) && ! e.quit?) p e d.refresh end
+res_init [] (3) - resolver routines
+res_mkquery [] (3) - resolver routines
+res_query [] (3) - resolver routines
+res_querydomain [] (3) - resolver routines
+res_search [] (3) - resolver routines
+res_send [] (3) - resolver routines
+reset [] (1) - initialize a terminal or query terminfo database
+reset [] (1) - terminal initialization
+reset_prog_mode [] (3) - low-level curses routines
+reset_shell_mode [] (3) - low-level curses routines
+resetty [] (3) - low-level curses routines
+resize [] (1) - set TERMCAP and terminal settings to current xterm window size
+resize2fs [] (8) - ext2/ext3 file system resizer
+resize_reiserfs [] (8) - resizer tool for the ReiserFS filesystem
+resize_term [] (3) - change the curses terminal size
+resizecons [] (8) - change kernel idea of the console size
+resizeterm [] (3) - change the curses terminal size
+resolv.conf [] (5) - resolver configuration file
+resolve_stack_dump [] (1) - resolve numeric stack trace dump to symbols
+resolveip [] (1) - resolve host name to IP address or vice versa
+restartterm [] (3) - curses interfaces to terminfo database
+restorefont [] (1) - save or restore the SVGA font for textmode
+restorepalette [] (1) - set the color palette for textmode
+restoretextmode [] (1) - save or restore the SVGA registers for textmode
+return 0; } .fi What does it do? .IP (bu 2 Create a display. Physically [] (3) - like system using the following comman (requiring pkg-config and gcc):
+return [] (1) - bash built-in commands, see bash(1)
+return [] (n) - Return from a procedure, or set return code of a script
+rev [] (1) - reverse lines of a file or files
+revnetgroup [] (8) - generate reverse netgroup data
+revpath [] (1) - generate a relative path that can be used to undo a change-directory
+rewind [] (3) - reposition a stream
+rewinddir [] (3) - reset directory stream
+rexec [] (3) - return stream to a remote command
+rexecd [] (8) - remote execution server
+rexima [] (1) - a curses-based (and command-line) mixer
+rfcomm [] (1) - RFCOMM configuration utility
+rgb2ycbcr [] (1) - convert non-YCbCr TIFF images to a YCbCr TIFF image
+rgb3toppm [] (1) - combine three portable graymaps into one portable pixmap
+rgrep [] (1) - a recursive, highlighting grep program
+richtext [] (1) - View a richtext document, typically a mail message
+rindex [] (3) - locate character in string
+rindex [] (3) - string operations
+rint [] (3) - round to nearest integer
+rintf [] (3) - round to nearest integer
+rintl [] (3) - round to nearest integer
+riocp [] (1) - program to upload files to the Rio Karma
+ripemd160 [] (1) - message digests
+ripoffline [] (3) - low-level curses routines
+ripples [] (6) - interference patterns
+ripquery [] (8) - send a RIP request to a remote host
+rksh [] (1) - KornShell, a
+rksh93 [] (1) - KornShell, a
+rlatopam [] (1) - see http://netpbm.sourceforge.net/doc/rlatopam.html
+rletopnm [] (1) - convert a Utah Raster Tools RLE image file into a PNM image file
+rlog [] (1) - print log messages and other information about RCS files
+rlogin [] (1) - remote login
+rlogind [] (8) - remote login server
+rm [] (1) - remove files or directories
+rmail [] (8) - handle remote mail received via uucp
+rmdir [] (1) - remove empty directories
+rmdir [] (2) - delete a directory
+rmmod [] (8) - simple program to remove a module from the Linux Kernel
+rmt [] (8) - remote magtape protocol module
+rnano [] (1) - Restricted mode for Nano's ANOther editor, an enhanced free Pico clone
+rndc [] (8) - confgen - rndc key generation tool
+rndc [] (8) - name server control utility
+rndc.conf [] (5) - rndc configuration file
+robots [] (6) - fight off villainous robots
+rocks [] (6) - animation of flying through an asteroid field
+roff [] (7) - concepts and history of roff typesetting
+roff2dvi [] (1) - transform roff code into dvi mode
+roff2html [] (1) - transform roff code into html mode
+roff2pdf [] (1) - transform roff code into pdf mode
+roff2ps [] (1) - transform roff code into ps mode
+roff2text [] (1) - transform roff code into text mode
+roff2x [] (1) - transform roff code into x mode
+roqet [] (1) - Rasqal RDF query utility
+rorschach [] (6) - simulate ink-blot patterns
+rot13 [] (6) - decrypt caesar cyphers
+rotatelogs [] (8) - Piped logging program to rotate Apache logs
+rotzoomer [] (6) - animated rotations and scalings of portions of the screen
+round [] (3) - round to nearest integer, away from zero
+roundf [] (3) - round to nearest integer, away from zero
+roundl [] (3) - round to nearest integer, away from zero
+route [] (8) - show / manipulate the IP routing table
+routed [] (8) - network routing daemon
+routef [] (8) - flush routes
+routel [] (8) - list routes with pretty output format
+row_merge [] (3) - Calls sub handlers with request for one row at a time
+rpc [] (3) - library routines for remote procedure calls
+rpc [] (5) - rpc program number data base
+rpc.mountd [] (8) - NFS mount daemon
+rpc.nfsd [] (8) - NFS server process
+rpc.rquotad [] (8) - remote quota server
+rpc.rusersd [] (8) - logged in users server
+rpc.rwalld [] (8) - write messages to users currently logged in server
+rpc.statd [] (8) - NSM status monitor
+rpc.yppasswdd [] (8) - NIS password update daemon
+rpc.ypxfrd [] (8) - NIS map transfer server
+rpcclient [] (1) - tool for executing client side MS-RPC functions
+rpcdebug [] (8) - set and clear NFS and RPC kernel debug flags
+rpdump [] (1) - alpine remote data utility
+rpload [] (1) - alpine remote data utility
+rpm [] (8) - RPM Package Manager
+rpm2cpio [] (8) - Extract cpio archive from RPM Package Manager (RPM) package
+rpmatch [] (3) - determine if the answer to a question is affirmative or negative
+rpmbuild [] (8) - Build RPM Package(s)
+rpmdeps [] (8) - Generate RPM Package Dependencies
+rpmgraph [] (8) - Display RPM Package Dependency Graph
+rquota [] (3) - implement quotas on remote machines
+rquotad [] (8) - remote quota server
+rresvport [] (3) - routines for returning a stream to a remote command
+rsa [] (1) - RSA key processing tool
+rsa [] (3) - RSA public key cryptosystem
+rsautl [] (1) - RSA utility
+rscsi [] (1) - remote generic SCSI transport protocol server
+rsh [] (1) - remote shell
+rsh [] (1) - shell, the
+rshd [] (8) - remote shell server
+rstart [] (1) - a sample implementation of a Remote Start client
+rstartd [] (1) - a sample implementation of a Remote Start rsh helper
+rsvg [] (1) - Turn SVG files into raster images
+rsync [] (1) - a fast, versatile, remote (and local) file - copying tool
+rsyncd.conf [] (5) - configuration file for rsync in daemon mode
+rt_sigqueueinfo [] (2) - queue a signal and data to a process
+rtacct [] (8) - network statistics tools
+rtc [] (4) - real-time clock
+rtcwake [] (8) - enter a system sleep state until specified wakeup time
+rtf2rtf [] (1) - programs to postprocess the raw RTF generated by the mapping files
+rtime [] (3) - get time from a remote machine
+rtin [] (1) - A Usenet newsreader
+rtin [] (5) - related files
+rtld [] (7) - audit - auditing API for the dynamic linker
+rtmon [] (8) - listens to and monitors RTnetlink
+rtnetlink [] (3) - macros to manipulate rtnetlink messages
+rtnetlink [] (7) - Linux IPv4 routing socket
+rubik [] (6) - screen saver that solves Rubik's Cube
+ruby [] (1) - Interpreted object - oriented scripting language
+run [] (1) - with-aspell - script to help use GNU Aspell as an ispell replacement
+run [] (8) - parts - run scripts found in a directory
+runcon [] (1) - run command with specified security context
+rundig [] (1) - sample script to create a search database for ht://Dig
+runlevel [] (8) - - find the current and previous system runlevel
+runscript [] (1) - script interpreter for minicom
+runx [] (1) - try to overcome problems of Xfree96 restoring textmode using svgalib
+rup [] (1) - remote status display
+ruptime [] (1) - show host status of local machines
+ruserok [] (3) - routines for returning a stream to a remote command
+rusers [] (1) - who is logged in to machines on local network
+rvnamed [] (8) - reverse name resolution daemon for
+rwall [] (1) - send a message to users logged on a host
+rwho [] (1) - who is logged in on local machines
+rwhod [] (8) - system status server
+rx [] (1) - XMODEM, YMODEM, ZMODEM (Batch) file receive
+rxvt (ouR XVT) [] (1) - a VT102 emulator for the X window system
+rz [] (1) - XMODEM, YMODEM, ZMODEM (Batch) file receive
+rzip [] (1) - a large-file compression program
+s3virge [] (4) - S3 ViRGE video driver
+s_client [] (1) - SSL/TLS client program
+s_server [] (1) - SSL/TLS server program
+s_time [] (1) - SSL/TLS performance timing program
+sa [] (8) - summarizes accounting information
+sa1 [] (8) - Collect and store binary data in the system activity daily data file
+sa2 [] (8) - Write a daily report in the /var/log/sa directory
+sadc [] (8) - System activity data collector
+sadf [] (1) - Display data collected by sar in multiple formats
+safe_mysqld [] (1) - MySQL server startup script
+sail [] (6) - multi-user wooden ships and iron men
+samba [] (7) - A Windows SMB/CIFS fileserver for UNIX
+sane [] (1) - config - get information about the installed version of libsane
+sane [] (1) - find-scanner - find SCSI and USB scanners and their device files
+sane [] (5) - abaton - SANE backend for Abaton flatbed scanners
+sane [] (5) - agfafocus - SANE backend for AGFA Focus flatbed scanners
+sane [] (5) - apple - SANE backend for Apple flatbed scanners
+sane [] (5) - artec - SANE backend for Artec flatbed scanners
+sane [] (5) - artec_eplus48u - SANE backend for the scanner Artec E+ 48U and re-badged models
+sane [] (5) - as6e - SANE backend for using the Artec AS6E parallel port interface scanner
+sane [] (5) - avision - SANE backend for original Avision and Avision OEM scanners (HP, Minolta, Mitsubishi, UMAX and possibly more) flatbed and film scanners
+sane [] (5) - bh - SANE backend for Bell+Howell Copiscan II series document scanners
+sane [] (5) - canon - SANE backend for Canon SCSI scanners
+sane [] (5) - canon630u - SANE backend for the Canon 630u USB flatbed scanner
+sane [] (5) - canon_pp - SANE backend for Canon CanoScan Parallel Port flatbed scanners
+sane [] (5) - cardscan - SANE backend for Corex CardScan 800c usb scanner
+sane [] (5) - coolscan - SANE backend for Nikon film-scanners
+sane [] (5) - coolscan2 - SANE backend for Nikon Coolscan film scanners
+sane [] (5) - dc210 - SANE backend for Kodak DC210 Digital Camera
+sane [] (5) - dc240 - SANE backend for Kodak DC240 Digital Camera
+sane [] (5) - dc25 - SANE backend for Kodak DC20/DC25 Digital Cameras
+sane [] (5) - dll - SANE dynamic backend loader
+sane [] (5) - dmc - SANE backend for the Polaroid Digital Microscope Camera
+sane [] (5) - epjitsu - SANE backend for Epson-based Fujitsu USB scanners
+sane [] (5) - epson - SANE backend for EPSON scanners
+sane [] (5) - fujitsu - SANE backend for Fujitsu flatbed and ADF scanners
+sane [] (5) - genesys - SANE backend for GL646 and GL841 based USB flatbed scanners
+sane [] (5) - gphoto2 - SANE backend for gphoto2 supported cameras
+sane [] (5) - gt68xx - SANE backend for GT-68XX based USB flatbed scanners
+sane [] (5) - hp - SANE backend for HP ScanJet scanners
+sane [] (5) - hp3500 - SANE backend for Hewlett-Packard ScanJet 3500 series scanners
+sane [] (5) - hp3900 - SANE backend for RTS8822 chipset based scanners
+sane [] (5) - hp4200 - SANE backend for Hewlett-Packard 4200 scanners
+sane [] (5) - hp5400 - SANE backend for Hewlett-Packard 54XX scanners
+sane [] (5) - hp5590 - SANE backend for Hewlett-Packard 5550/5590/7650 Workgroup/Document scanners
+sane [] (5) - hpljm1005 - SANE backend for Hewlett-Packard LaserJet M1005 MFP Scanner
+sane [] (5) - hpsj5s - SANE backend for HP ScanJet 5S sheet-fed scanner
+sane [] (5) - hs2p - SANE backend for Ricoh SCSI flatbed/ADF scanners
+sane [] (5) - ibm - SANE backend for IBM and Ricoh SCSI flatbed scanners
+sane [] (5) - leo - SANE backend for LEO Technologies scanners
+sane [] (5) - lexmark - SANE backend for Lexmark X1100/X1200 Series scanners
+sane [] (5) - ma1509 - SANE backend for Mustek BearPaw 1200F USB scanner
+sane [] (5) - matsushita - SANE backend for Panasonic KV-SS high speed scanners
+sane [] (5) - microtek - SANE backend for Microtek scanners
+sane [] (5) - microtek2 - SANE backend for Microtek scanners with SCSI-2 command set
+sane [] (5) - mustek - SANE backend for Mustek SCSI flatbed scanners (and some other devices)
+sane [] (5) - mustek_pp - SANE backend for Mustek parallel port flatbed scanners
+sane [] (5) - mustek_usb - SANE backend for Mustek USB flatbed scanners
+sane [] (5) - mustek_usb2 - SANE backend for SQ113 based USB flatbed scanners
+sane [] (5) - nec - SANE backend for NEC scanners
+sane [] (5) - net - SANE network backend
+sane [] (5) - niash - SANE backend for scanners based on the NIASH chipset
+sane [] (5) - pie - SANE backend for PIE, Devcom and AdLib SCSI flatbed scanners
+sane [] (5) - pint - SANE backend for scanners that use the PINT device driver
+sane [] (5) - pixma - SANE backend for Canon PIXMA MP series
+sane [] (5) - plustek - SANE backend for LM983[1/2/3] based USB flatbed scanners
+sane [] (5) - plustek_pp - SANE backend for Plustek parallel port flatbed scanners
+sane [] (5) - pnm - SANE PNM image reader pseudo-backend
+sane [] (5) - qcam - SANE backend for Connectix QuickCam cameras
+sane [] (5) - ricoh - SANE backend for Ricoh flatbed scanners
+sane [] (5) - s9036 - SANE backend for Siemens 9036 flatbed scanners
+sane [] (5) - sceptre - SANE backend for SCEPTRE scanners
+sane [] (5) - scsi - SCSI adapter tips for scanners
+sane [] (5) - sharp - SANE backend for SHARP scanners
+sane [] (5) - sm3600 - SANE backend for Microtek scanners with M011 USB chip
+sane [] (5) - sm3840 - SANE backend for Microtek scanners with SCAN08 USB chip
+sane [] (5) - snapscan - SANE backend for AGFA SnapScan flatbed scanners
+sane [] (5) - sp15c - SANE backend for Fujitsu ScanPartner 15C flatbed scanner
+sane [] (5) - st400 - SANE backend for Siemens ST/Highscan flatbed scanners
+sane [] (5) - stv680 - SANE backend for STV680 camera's
+sane [] (5) - tamarack - SANE backend for Tamarack flatbed scanners
+sane [] (5) - teco1 - SANE backend for TECO / RELISYS scanners
+sane [] (5) - teco2 - SANE backend for TECO / RELISYS scanners
+sane [] (5) - teco3 - SANE backend for TECO / RELISYS scanners
+sane [] (5) - test - SANE backend for testing frontends
+sane [] (5) - u12 - SANE backend for Plustek USB flatbed scanners, based on older parport designs
+sane [] (5) - umax - SANE backend for UMAX scanners
+sane [] (5) - umax1220u - SANE backend for the UMAX Astra 1220U and similar scanners
+sane [] (5) - umax_pp - SANE backend for Umax Astra parallel port flatbed scanners
+sane [] (5) - usb - USB configuration tips for SANE
+sane [] (5) - v4l - SANE interface for Video for Linux API
+sane [] (7) - Scanner Access Now Easy: API for accessing scanners
+saned [] (8) - SANE network daemon
+sar [] (1) - Collect, report, or save system activity information
+sasl_authorize_t [] (3) - The SASL authorization callback
+sasl_auxprop [] (3) - How to work with SASL auxiliary properties
+sasl_auxprop_getctx [] (3) - Acquire an auxiliary property context
+sasl_auxprop_request [] (3) - Request Auxiliary Properties from SASL
+sasl_callbacks [] (3) - How to work with SASL callbacks
+sasl_chalprompt_t [] (3) - Realm Acquisition Callback
+sasl_checkapop [] (3) - Check an APOP challenge/response
+sasl_checkpass [] (3) - Check a plaintext password
+sasl_client_init [] (3) - SASL client authentication initialization
+sasl_client_new [] (3) - Create a new client authentication object
+sasl_client_start [] (3) - Begin an authentication negotiation
+sasl_client_step [] (3) - Perform a step in the authentication negotiation
+sasl_decode [] (3) - Decode data received
+sasl_dispose [] (3) - Dispose of a SASL connection object
+sasl_done [] (3) - Dispose of a SASL connection object
+sasl_encode [] (3) - Encode data for transport to authenticated host
+sasl_errdetail [] (3) - Retrieve detailed information about an error
+sasl_errors [] (3) - SASL error codes
+sasl_errstring [] (3) - Translate a SASL return code to a human-readable form
+sasl_getconfpath_t [] (3) - The SASL callback to indicate location of the config files
+sasl_getopt_t [] (3) - The SASL get option callback
+sasl_getpath_t [] (3) - The SASL callback to indicate location of the mechanism drivers
+sasl_getprop [] (3) - Get a SASL property
+sasl_getrealm_t [] (3) - Realm Acquisition Callback
+sasl_getsecret_t [] (3) - The SASL callback for secrets (passwords)
+sasl_getsimple_t [] (3) - The SASL callback for username/authname/realm
+sasl_idle [] (3) - Perform precalculations during an idle period
+sasl_listmech [] (3) - Retrieve a list of the supported SASL mechanisms
+sasl_log_t [] (3) - The SASL logging callback
+sasl_server_init [] (3) - SASL server authentication initialization
+sasl_server_new [] (3) - Create a new server authentication object
+sasl_server_start [] (3) - Begin an authentication negotiation
+sasl_server_step [] (3) - Perform a step in the authentication negotiation
+sasl_server_userdb_checkpass_t [] (3) - Plaintext Password Verification Callback
+sasl_server_userdb_setpass_t [] (3) - UserDB Plaintext Password Setting Callback
+sasl_setpass [] (3) - Check a plaintext password
+sasl_setprop [] (3) - Set a SASL property
+sasl_user_exists [] (3) - Check if a user exists on server
+sasl_verifyfile_t [] (3) - The SASL file verification
+saslauthd [] (8) - sasl authentication server
+sasldblistusers2 [] (8) - list users in sasldb
+saslpasswd2 [] (8) - set a user's sasl password
+savage [] (4) - S3 Savage video driver
+save_d [] (3) - AA-lib driver used to save ascii-art image into file in used specified format
+savelog [] (8) - save a log file
+savetextmode [] (1) - save or restore the complete SVGA status for textmode
+savetty [] (3) - low-level curses routines
+sb [] (1) - XMODEM, YMODEM, ZMODEM file send
+sballs [] (6) - draws balls spinning like crazy in GL
+sbigtopgm [] (1) - convert an SBIG CCDOPS file into a portable graymap
+sbrk [] (2) - change data segment size
+sc [] (1) - spreadsheet calculator
+scalar [] (3) - Process scalars easily
+scalar_group [] (3) - Process groups of scalars
+scalb [] (3) - multiply floating-point number by integral power of radix (OBSOLETE)
+scalbf [] (3) - multiply floating-point number by integral power of radix (OBSOLETE)
+scalbl [] (3) - multiply floating-point number by integral power of radix (OBSOLETE)
+scalbln [] (3) - multiply floating - point number by integral power of radix
+scalblnf [] (3) - multiply floating - point number by integral power of radix
+scalblnl [] (3) - multiply floating - point number by integral power of radix
+scalbn [] (3) - multiply floating - point number by integral power of radix
+scalbnf [] (3) - multiply floating - point number by integral power of radix
+scalbnl [] (3) - multiply floating - point number by integral power of radix
+scale [] (n) - Create and manipulate scale widgets
+scan [] (n) - Parse string using conversion specifiers in the style of sscanf
+scanadf [] (1) - acquire multiple images from a scanner equipped with an ADF
+scandir [] (3) - scan a directory for matching entries
+scanf [] (3) - input format conversion
+scanimage [] (1) - scan an image
+scanw [] (3) - convert formatted input from a curses window
+scdaemon [] (1) - Smartcard daemon for the GnuPG system
+scgcheck [] (1) - check and validate the ABI of libscg
+sched_get_priority_max [] (2) - get static priority range
+sched_get_priority_min [] (2) - get static priority range
+sched_getaffinity [] (2) - set and get a process's CPU affinity mask
+sched_getcpu [] (3) - determine CPU on which the calling thread is running
+sched_getparam [] (2) - set and get scheduling parameters
+sched_getscheduler [] (2) - set and get scheduling policy/parameters
+sched_rr_get_interval [] (2) - get the SCHED_RR interval for the named process
+sched_setaffinity [] (2) - set and get a process's CPU affinity mask
+sched_setparam [] (2) - set and get scheduling parameters
+sched_setscheduler [] (2) - set and get scheduling policy/parameters
+sched_yield [] (2) - yield the processor
+scim [] (1) - make-table - generate data file for SCIM generic table module
+scp [] (1) - secure copy (remote file copy program)
+scr_dump [] (3) - read (write) a curses screen from (to) a file
+scr_init [] (3) - read (write) a curses screen from (to) a file
+scr_restore [] (3) - read (write) a curses screen from (to) a file
+scr_set [] (3) - read (write) a curses screen from (to) a file
+screen [] (1) - screen manager with VT100/ANSI terminal emulation
+script [] (1) - make typescript of terminal session
+scriptreplay [] (1) - play back typescripts, using timing information
+scrl [] (3) - scroll a curses window
+scroll [] (3) - scroll a curses window
+scrollbar [] (n) - Create and manipulate scrollbar widgets
+scrollok [] (3) - curses output options
+scrolltest [] (6) - tests some scrolling algorithms with svgalib
+scsi_id [] (8) - retrieve and generate a unique SCSI identifier
+scsitape [] (1) - control SCSI tape devices
+sd [] (4) - Driver for SCSI Disk Drives
+sdiff [] (1) - side-by-side merge of file differences
+sdparm [] (8) - fetch and potentially change SCSI device attributes. Send commands
+sdptool [] (1) - control and interrogate SDP servers
+seamonkey [] (1) - an internet application suite (browser, mail, etc.)
+securetty [] (5) - file which lists ttys from which root can log in
+security [] (2) - unimplemented system calls
+sed [] (1) - stream editor for filtering and transforming text
+seed48 [] (3) - generate uniformly distributed pseudo-random numbers
+seed48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+seek [] (n) - Change the access position for an open channel
+seekdir [] (3) - set the position of the next readdir() call in the directory stream
+select [] (2) - synchronous I/O multiplexing
+selection [] (n) - Manipulate the X selection
+sem_close [] (3) - close a named semaphore
+sem_destroy [] (3) - destroy an unnamed semaphore
+sem_getvalue [] (3) - get the value of a semaphore
+sem_init [] (3) - initialize an unnamed semaphore
+sem_open [] (3) - initialize and open a named semaphore
+sem_overview [] (7) - Overview of POSIX semaphores
+sem_post [] (3) - unlock a semaphore
+sem_timedwait [] (3) - lock a semaphore
+sem_trywait [] (3) - lock a semaphore
+sem_unlink [] (3) - remove a named semaphore
+sem_wait [] (3) - lock a semaphore
+semctl [] (2) - semaphore control operations
+semget [] (2) - get a semaphore set identifier
+semop [] (2) - semaphore operations
+semtimedop [] (2) - semaphore operations
+send [] (2) - send a message on a socket
+send [] (n) - Execute a command in a different application
+send_easy_trap [] (3) - send TRAPs or INFORMs from a Net-SNMP MIB module
+send_trap_vars [] (3) - send TRAPs or INFORMs from a Net-SNMP MIB module
+send_v2trap [] (3) - send TRAPs or INFORMs from a Net-SNMP MIB module
+sendfile [] (2) - transfer data between file descriptors
+sendiso [] (1) - send IEEE 1394 isochronous packets from dump file
+sendmail [] (8) - an electronic mail transport agent
+sendmsg [] (2) - send a message on a socket
+sendto [] (2) - send a message on a socket
+sensors [] (1) - print sensors information
+sensors [] (8) - detect - detect hardware monitoring chips
+sensors.conf [] (5) - libsensors configuration file
+seq [] (1) - print a sequence of numbers
+serialize [] (3) - Calls sub handlers one request at a time
+services [] (5) - Internet network services list
+sess_id [] (1) - SSL/TLS session handling utility
+sessreg [] (1) - manage utmp/wtmp entries for non-init clients
+set [] (1) - bash built-in commands, see bash(1)
+set [] (n) - Read and write variables
+set_curterm [] (3) - curses interfaces to terminfo database
+set_mempolicy [] (2) - set default NUMA memory policy for a process and its children
+set_term [] (3) - curses screen initialization and manipulation routines
+set_thread_area [] (2) - Set a Thread Local Storage (TLS) area
+set_tid_address [] (2) - set pointer to thread ID
+setaliasent [] (3) - read an alias entry
+setarch [] (8) - change reported architecture in new program environment and set personality flags
+setbuf [] (3) - stream buffering operations
+setbuffer [] (3) - stream buffering operations
+setcap [] (8) - set file capabilities
+setcchar [] (3) - Get a wide character string and rendition from a cchar_t or set a cchar_t from a wide-character string
+setcontext [] (2) - get or set the user context
+setdomainname [] (2) - get/set domain name
+setegid [] (2) - set effective user or group ID
+setenv [] (3) - change or add an environment variable
+seteuid [] (2) - set effective user or group ID
+setfacl [] (1) - set file access control lists
+setfattr [] (1) - set extended attributes of filesystem objects
+setfdprm [] (1) - sets user-provided floppy disk parameters
+setfont [] (8) - load EGA/VGA console screen font
+setfsent [] (3) - handle fstab entries
+setfsgid [] (2) - set group identity used for file system checks
+setfsuid [] (2) - set user identity used for file system checks
+setgid [] (2) - set group identity
+setgrent [] (3) - get group file entry
+setgroups [] (2) - get/set list of supplementary group IDs
+sethostent [] (3) - get network host entry
+sethostid [] (3) - get or set the unique identifier of the current host
+sethostname [] (2) - get/set hostname
+seticons [] (1) - sets the icon images used in Window Maker
+setitimer [] (2) - get or set value of an interval timer
+setjmp [] (3) - save stack context for non-local goto
+setkey [] (3) - encrypt 64-bit messages
+setkey_r [] (3) - encrypt 64-bit messages
+setkeycodes [] (8) - load kernel scancode-to-keycode mapping table entries
+setleds [] (1) - set the keyboard leds
+setlinebuf [] (3) - stream buffering operations
+setlocale [] (3) - set the current locale
+setlogmask [] (3) - set log priority mask
+setmclk [] (1) - adjust the memory timing of certain Cirrus cards
+setmetamode [] (1) - define the keyboard meta key handling
+setmntent [] (3) - get file system descriptor file entry
+setnetent [] (3) - get network entry
+setnetgrent [] (3) - handle network group entries
+setpci [] (8) - configure PCI devices
+setpgid [] (2) - set/get process group
+setpgrp [] (2) - set/get process group
+setpriority [] (2) - get/set program scheduling priority
+setprotoent [] (3) - get protocol entry
+setpwent [] (3) - get password file entry
+setquota [] (8) - set disk quotas
+setregid [] (2) - set real and/or effective user or group ID
+setresgid [] (2) - set real, effective and saved user or group ID
+setresuid [] (2) - set real, effective and saved user or group ID
+setreuid [] (2) - set real and/or effective user or group ID
+setrlimit [] (2) - get/set resource limits
+setrpcent [] (3) - get RPC entry
+setscrreg [] (3) - curses output options
+setserial [] (8) - get/set Linux serial port information
+setservent [] (3) - get service entry
+setsid [] (1) - run a program in a new session
+setsid [] (2) - creates a session and sets the process group ID
+setsockopt [] (2) - get and set options on sockets
+setspent [] (3) - get shadow password file entry
+setstate [] (3) - random number generator
+setstate_r [] (3) - reentrant random number generator
+setstyle [] (1) - set style related options for Window Maker or loads a theme
+setsyx [] (3) - low-level curses routines
+setterm [] (1) - set terminal attributes
+setterm [] (3) - curses interfaces to terminfo database
+settimeofday [] (2) - get / set time
+setttyent [] (3) - get ttys file entry
+setuid [] (2) - set user identity
+setup [] (2) - setup devices and file systems, mount root file system
+setupterm [] (3) - curses interfaces to terminfo database
+setusershell [] (3) - get permitted user shells
+setutent [] (3) - access utmp file entries
+setvbuf [] (3) - stream buffering operations
+setxattr [] (2) - set an extended attribute value
+setxkbmap [] (1) - set the keyboard using the X Keyboard Extension
+sfdisk [] (8) - Partition table manipulator for Linux
+sfq [] (8) - Stochastic Fairness Queueing
+sftp [] (1) - secure file transfer program
+sftp [] (8) - server - SFTP server subsystem
+sg [] (1) - execute command as different group ID
+sgetmask [] (2) - manipulation of signal mask (obsolete)
+sgetspent [] (3) - get shadow password file entry
+sgetspent_r [] (3) - get shadow password file entry
+sgi2tiff [] (1) - create a TIFF file from an SGI image file
+sgitopnm [] (1) - convert a SGI image file to a portable anymap
+sgml2html [] (1) - create HTML output from a LinuxDoc DTD SGML source file
+sgml2info [] (1) - create GNU info output from a LinuxDoc DTD SGML source file
+sgml2latex [] (1) - create LaTeX, DVI, PostScript or PDF output from a LinuxDoc DTD SGML source file
+sgml2lyx [] (1) - create LyX output from a LinuxDoc DTD SGML source file
+sgml2rtf [] (1) - create RTF output from a LinuxDoc DTD SGML source file
+sgml2txt [] (1) - create plain text output from a LinuxDoc DTD SGML source file
+sgmlcheck [] (1) - check the syntax of an LinuxDoc DTD sgml source file
+sgmldiff [] (1) - Find differences in the markup of two SGML files
+sgmlpre [] (1) - handle SGML conditionalization for SGML-tools
+sgmlsasp [] (1) - translate output of sgmls using ASP replacement files
+sgmlspl [] (1) - a simple post-processor for nsgmls
+sh [] (1) - command interpreter (shell)
+sha [] (1) - message digests
+sha1 [] (1) - message digests
+sha1sum [] (1) - compute and check SHA1 message digest
+sha224sum [] (1) - compute and check SHA224 message digest
+sha256sum [] (1) - compute and check SHA256 message digest
+sha384sum [] (1) - compute and check SHA384 message digest
+sha512sum [] (1) - compute and check SHA512 message digest
+shadebobs [] (6) - oscillating vapor trails
+shadow [] (3) - encrypted password file routines
+shadow [] (5) - encrypted password file
+shadowconfig [] (8) - toggle shadow passwords on and off
+shar [] (1) - create shell archives
+shasum [] (1) - Print or Check SHA Checksums
+shells [] (5) - pathnames of valid login shells
+shift [] (1) - bash built-in commands, see bash(1)
+shm_open [] (3) - Create/open or unlink POSIX shared memory objects
+shm_overview [] (7) - Overview of POSIX shared memory
+shm_unlink [] (3) - Create/open or unlink POSIX shared memory objects
+shmat [] (2) - shared memory operations
+shmctl [] (2) - shared memory control
+shmdt [] (2) - shared memory operations
+shmget [] (2) - allocates a shared memory segment
+shopt [] (1) - bash built-in commands, see bash(1)
+showaudio [] (1) - Play an audio email message
+showconsolefont [] (8) - Show the current EGA/VGA console screen font
+showexternal [] (1) - Fetch and display the body of a mail message that is included by reference
+showfont [] (1) - font dumper for X font server
+showkey [] (1) - examine the codes sent by the keyboard
+showmount [] (8) - show mount information for an NFS server
+shownonascii [] (1) - View all or part of a mail message in a non-ASCII font
+showpartial [] (1) - Fetch and display the body of a mail message that is included by reference
+showpicture [] (1) - View an image received in the mail
+showrgb [] (1) - display an rgb color-name database
+shred [] (1) - overwrite a file to hide its contents, and optionally delete it
+shuf [] (1) - generate random permutations
+shutdown [] (2) - shut down part of a full-duplex connection
+shutdown [] (8) - bring the system down
+shutdown_mib [] (3) - mib_api functions
+sierpinski [] (6) - draws Sierpinski triangle fractals
+sierpinski3d [] (6) - 3D Sierpinski triangle fractal
+sigaction [] (2) - examine and change a signal action
+sigaddset [] (3) - POSIX signal set operations
+sigaltstack [] (2) - set and/or get signal stack context
+sigblock [] (3) - BSD signal API
+sigdelset [] (3) - POSIX signal set operations
+sigemptyset [] (3) - POSIX signal set operations
+sigfillset [] (3) - POSIX signal set operations
+siggetmask [] (3) - BSD signal API
+sighold [] (3) - System V signal API
+sigignore [] (3) - System V signal API
+siginterrupt [] (3) - allow signals to interrupt system calls
+sigismember [] (3) - POSIX signal set operations
+siglongjmp [] (3) - non-local jump to a saved stack context
+sigmask [] (3) - BSD signal API
+signal [] (2) - ANSI C signal handling
+signal [] (7) - overview of signals
+signalfd [] (2) - create a file descriptor for accepting signals
+signbit [] (3) - test sign of a real floating-point number
+signgam [] (3) - log gamma function
+significand [] (3) - get mantissa of floating - point number
+significandf [] (3) - get mantissa of floating - point number
+significandl [] (3) - get mantissa of floating - point number
+sigpause [] (3) - atomically release blocked signals and wait for interrupt
+sigpending [] (2) - examine pending signals
+sigprocmask [] (2) - examine and change blocked signals
+sigqueue [] (2) - queue a signal and data to a process
+sigrelse [] (3) - System V signal API
+sigreturn [] (2) - return from signal handler and cleanup stack frame
+sigset [] (3) - System V signal API
+sigsetjmp [] (3) - save stack context for non-local goto
+sigsetmask [] (3) - BSD signal API
+sigsuspend [] (2) - wait for a signal
+sigtimedwait [] (2) - synchronously wait for queued signals
+sigtrap [] (3) - Perl pragma to enable simple signal handling
+sigvec [] (3) - BSD signal API
+sigwait [] (3) - wait for a signal
+sigwaitinfo [] (2) - synchronously wait for queued signals
+siliconmotion [] (4) - Silicon Motion video driver
+sin [] (3) - sine function
+sincos [] (3) - calculate sin and cos simultaneously
+sincosf [] (3) - calculate sin and cos simultaneously
+sincosl [] (3) - calculate sin and cos simultaneously
+sinf [] (3) - sine function
+single2bin [] (1) - Macintosh file format transformer
+sinh [] (3) - hyperbolic sine function
+sinhf [] (3) - hyperbolic sine function
+sinhl [] (3) - hyperbolic sine function
+sinl [] (3) - sine function
+sirtopnm [] (1) - convert a Solitaire file into a portable anymap
+sis [] (4) - SiS and XGI video driver
+sisusb [] (4) - SiS USB video driver
+size [] (1) - list section sizes and total size
+sk98lin [] (4) - Marvell/SysKonnect Gigabit Ethernet driver v6.21
+skill [] (1) - send a signal or report process status
+skytentacles [] (6) - 3D tentacles from the sky!
+slabtop [] (1) - display kernel slab cache information in real time
+slackpkg [] (8) - Automated tool for managing Slackware Linux packages
+slackpkg.conf [] (5) - Configuration data for slackpkg
+slang) or even the whole screen (VGA). .IP (bu 2 Get the display's associated canvas. A canvas is the surface where everything happens: writing characters [] (3) - like system using the following comman (requiring pkg-config and gcc):
+slattach [] (8) - attach a network interface to a serial line
+sldtoppm [] (1) - convert an AutoCAD slide file into a portable pixmap
+sleep [] (1) - delay for a specified amount of time
+sleep [] (3) - Sleep for the specified number of seconds
+sliceprint [] (1) - slice documents with long lines
+slidescreen [] (6) - permute the screen image like an 8-puzzle
+slip [] (6) - sucks your screen into a jet engine
+slk_attr [] (3) - curses soft label routines
+slk_attr_off [] (3) - curses soft label routines
+slk_attr_on [] (3) - curses soft label routines
+slk_attr_set [] (3) - curses soft label routines
+slk_attroff [] (3) - curses soft label routines
+slk_attron [] (3) - curses soft label routines
+slk_attrset [] (3) - curses soft label routines
+slk_clear [] (3) - curses soft label routines
+slk_color [] (3) - curses soft label routines
+slk_init [] (3) - curses soft label routines
+slk_label [] (3) - curses soft label routines
+slk_noutrefresh [] (3) - curses soft label routines
+slk_refresh [] (3) - curses soft label routines
+slk_restore [] (3) - curses soft label routines
+slk_set [] (3) - curses soft label routines
+slk_touch [] (3) - curses soft label routines
+slocate [] (1) - Security Enhanced version of the GNU Locate
+slrn [] (1) - An easy to use NNTP / spool based newsreader
+slrnpull [] (1) - Pull a small newsfeed for offline reading
+slsh [] (1) - Interpreter for S-Lang scripts
+sm [] (8) - notify - Send out NSM reboot notifications
+smartctl [] (8) - Control and Monitor Utility for SMART Disks
+smartd [] (8) - SMART Disk Monitoring Daemon
+smartd.conf [] (5) - SMART Disk Monitoring Daemon Configuration File
+smb.conf [] (5) - The configuration file for the Samba suite
+smbcacls [] (1) - Set or get ACLs on an NT file or directory names
+smbclient [] (1) - ftp-like client to access SMB/CIFS resources on servers
+smbcontrol [] (1) - send messages to smbd, nmbd or winbindd processes
+smbcquotas [] (1) - Set or get QUOTAs of NTFS 5 shares
+smbd [] (8) - server to provide SMB/CIFS services to clients
+smbget [] (1) - wget-like utility for download files over SMB
+smbgetrc [] (5) - configuration file for smbget
+smbpasswd [] (5) - The Samba encrypted password file
+smbpasswd [] (8) - change a user's SMB password
+smbspool [] (8) - send a print file to an SMB printer
+smbstatus [] (1) - report on current Samba connections
+smbtar [] (1) - shell script for backing up SMB/CIFS shares directly to UNIX tape drives
+smbtree [] (1) - A text based smb network browser
+smime [] (1) - S/MIME utility
+smproxy [] (1) - Session Manager Proxy
+smrsh [] (8) - restricted shell for sendmail
+snake [] (6) - display chase game
+snice [] (1) - send a signal or report process status
+snmp.conf [] (5) - configuration files for the Net-SNMP applications
+snmp.conf [] (5) - snmp configuration file for cups
+snmp_agent_api [] (3) - embedding an agent into a external application
+snmp_alarm_register [] (3) - alarm functions
+snmp_alarm_register_hr [] (3) - alarm functions
+snmp_alarm_unregister [] (3) - alarm functions
+snmp_api_errstring [] (3) - send and receive SNMP messages
+snmp_close [] (3) - send and receive SNMP messages
+snmp_config [] (5) - handling of Net-SNMP configuration files
+snmp_error [] (3) - send and receive SNMP messages
+snmp_free_pdu [] (3) - send and receive SNMP messages
+snmp_open [] (3) - send and receive SNMP messages
+snmp_perror [] (3) - send and receive SNMP messages
+snmp_read [] (3) - send and receive SNMP messages
+snmp_select_info [] (3) - send and receive SNMP messages
+snmp_send [] (3) - send and receive SNMP messages
+snmp_sess_async_send [] (3) - session functions
+snmp_sess_close [] (3) - session functions
+snmp_sess_error [] (3) - session functions
+snmp_sess_init [] (3) - send and receive SNMP messages
+snmp_sess_init [] (3) - session functions
+snmp_sess_open [] (3) - session functions
+snmp_sess_perror [] (3) - send and receive SNMP messages
+snmp_sess_read [] (3) - session functions
+snmp_sess_select_info [] (3) - session functions
+snmp_sess_send [] (3) - session functions
+snmp_sess_session [] (3) - session functions
+snmp_sess_timeout [] (3) - session functions
+snmp_set_mib_warnings [] (3) - mib_api functions
+snmp_set_save_descriptions [] (3) - mib_api functions
+snmp_timeout [] (3) - send and receive SNMP messages
+snmpbulkget [] (1) - communicates with a network entity using SNMP GETBULK requests
+snmpbulkwalk [] (1) - retrieve a subtree of management values using SNMP GETBULK requests
+snmpcmd [] (1) - options and behaviour common to most of the Net-SNMP command-line tools
+snmpconf [] (1) - creates and modifies SNMP configuration files
+snmpd [] (8) - daemon to respond to SNMP request packets
+snmpd.conf [] (5) - configuration file for the Net-SNMP SNMP agent
+snmpd.examples [] (5) - example configuration for the Net-SNMP agent
+snmpd.internal [] (5) - internal configuration of the Net-SNMP agent
+snmpdelta [] (1) - Monitor delta differences in SNMP Counter values
+snmpdf [] (1) - display disk space usage on a network entity via SNMP
+snmpget [] (1) - communicates with a network entity using SNMP GET requests
+snmpgetnext [] (1) - communicates with a network entity using SNMP GETNEXT requests
+snmpinform [] (1) - sends an SNMP notification to a manager
+snmpnetstat [] (1) - display networking status and configuration information from a network entity via SNMP
+snmpset [] (1) - communicates with a network entity using SNMP SET requests
+snmpstatus [] (1) - retrieves a fixed set of management information from a network entity
+snmptable [] (1) - retrieve an SNMP table and display it in tabular form
+snmptest [] (1) - communicates with a network entity using SNMP requests
+snmptranslate [] (1) - translate MIB OID names between numeric and textual forms
+snmptrap [] (1) - sends an SNMP notification to a manager
+snmptrapd [] (8) - Receive and log SNMP trap messages
+snmptrapd.conf [] (5) - configuration file for the Net-SNMP notification receiver
+snmpusm [] (1) - creates and maintains SNMPv3 users on a network entity
+snmpvacm [] (1) - creates and maintains SNMPv3 View-based Access Control entries on a network entity
+snmpwalk [] (1) - retrieve a subtree of management values using SNMP GETNEXT requests
+snownews [] (1) - console RSS newsreader
+snprint_objid [] (3) - mib_api functions
+snprint_value [] (3) - mib_api functions
+snprint_variable [] (3) - mib_api functions
+snprintf [] (3) - formatted output conversion
+snscore [] (6) - display chase game
+sntp [] (1) - standard SNTP program
+sockaddr_in [] (3) - load the C socket.h defines and structure manipulators
+sockaddr_un [] (3) - load the C socket.h defines and structure manipulators
+sockatmark [] (3) - determine whether socket is at out-of-band mark
+sockdown [] (1) - shutdown(2) a socket
+socket [] (2) - create an endpoint for communication
+socket [] (7) - Linux socket interface
+socket [] (n) - Open a TCP network connection
+socketcall [] (2) - socket system calls
+socketpair [] (2) - create a pair of connected sockets
+socklist [] (8) - display list of open sockets
+soelim [] (1) - interpret .so requests in groff input
+sonar [] (6) - display a sonar scope
+sort [] (1) - sort lines of text files
+sort [] (3) - perl pragma to control sort() behaviour
+source [] (1) - bash built-in commands, see bash(1)
+source [] (n) - Evaluate a file or resource as a Tcl script
+spctoppm [] (1) - convert an Atari compressed Spectrum file into a portable pixmap
+speaker [] (1) - test - command-line speaker test tone generator for ALSA
+speed [] (1) - test library performance
+speedmine [] (6) - simulates speeding down a rocky mineshaft, or a funky dancing worm
+speedtest [] (6) - tests the speed of memory access under svgalib
+spheremonics [] (6) - 3d spherical harmonic shapes
+spider [] (6) - play double deck solitaire
+spin [] (6) - test a 6-dimension mouse or pointer device with svgalib
+spinbox [] (n) - Create and manipulate spinbox widgets
+spkac [] (1) - SPKAC printing and generating utility
+splain [] (1) - produce verbose warning diagnostics
+splain [] (3) - produce verbose warning diagnostics
+splice [] (2) - splice data to/from a pipe
+split [] (1) - split a file into pieces
+split [] (n) - Split a string into a proper Tcl list
+split2po [] (1) - Creates a po file from two DocBook XML files
+splitmail [] (1) - Split a large mail message into MIME-compliant partial messages
+splitvt [] (1) - run two shells in a split window
+spotlight [] (6) - move spotlight around desktop
+spottopgm [] (1) - convert SPOT satellite images to Portable Greymap format
+sprint_realloc_objid [] (3) - mib_api functions
+sprint_realloc_value [] (3) - mib_api functions
+sprint_realloc_variable [] (3) - mib_api functions
+sprintf [] (3) - formatted output conversion
+sprites [] (3) - like system using the following comman (requiring pkg-config and gcc):
+sproingies [] (6) - Q-Bert meets Marble Madness!
+spu_create [] (2) - create a new spu context
+spu_run [] (2) - execute an SPU context
+spufs [] (7) - the SPU file system
+sputoppm [] (1) - convert an Atari uncompressed Spectrum file into a portable pixmap
+sqlite3 [] (1) - A command line interface for SQLite version 3
+sqrt [] (3) - square root function
+sqrtf [] (3) - square root function
+sqrtl [] (3) - square root function
+squiral [] (6) - square spirals screensaver
+srand [] (3) - pseudo-random number generator
+srand48 [] (3) - generate uniformly distributed pseudo-random numbers
+srand48_r [] (3) - generate uniformly distributed pseudo-random numbers reentrantly
+srandom [] (3) - random number generator
+srandom_r [] (3) - reentrant random number generator
+srptool [] (1) - Simple SRP password tool
+ss [] (8) - another utility to investigate sockets
+sscanf [] (3) - input format conversion
+ssetmask [] (2) - manipulation of signal mask (obsolete)
+ssh [] (1) - OpenSSH SSH client (remote login program)
+ssh [] (1) - add - adds RSA or DSA identities to the authentication agent
+ssh [] (1) - agent - authentication agent
+ssh [] (1) - copy-id - install your public key in a remote machine's authorized_keys
+ssh [] (1) - keygen - authentication key generation, management and conversion
+ssh [] (1) - keyscan - gather ssh public keys
+ssh [] (8) - keysign - ssh helper program for host - based authentication
+ssh_config [] (5) - OpenSSH SSH client configuration files
+sshd [] (8) - OpenSSH SSH daemon
+sshd_config [] (5) - OpenSSH SSH daemon configuration file
+ssignal [] (3) - software signal facility
+st [] (4) - SCSI tape device
+stairs [] (6) - Escher's infinite staircase
+standards [] (7) - C and UNIX Standards
+standend [] (3) - curses character and window attribute control routines
+standout [] (3) - curses character and window attribute control routines
+starfish [] (6) - radially-symmetric throbbing colormap-hacking graphics demo
+start_color [] (3) - curses color manipulation routines
+startfluxbox [] (1) - start a fluxbox session
+startx [] (1) - initialize an X session
+starwars [] (6) - draws a perspective text crawl, like at the beginning of the movie
+stash_cache [] (3) - Automatically caches data for certain handlers
+stat [] (1) - display file or file system status
+stat [] (2) - get file status
+states [] (1) - awk alike text processing tool
+statfs [] (2) - get file system statistics
+statvfs [] (2) - get file system statistics
+stdarg [] (3) - variable argument lists
+stderr [] (3) - standard I/O streams
+stdin [] (3) - standard I/O streams
+stdio [] (3) - standard input/output library functions
+stdout [] (3) - standard I/O streams
+stime [] (2) - set time
+stinit [] (8) - initialize SCSI magnetic tape drives
+stonerview [] (6) - 3D undulating ribbons of squares
+stpcpy [] (3) - copy a string returning a pointer to its end
+stpncpy [] (3) - copy a fixed-size string, returning a pointer to its end
+strace [] (1) - trace system calls and signals
+strange [] (6) - draws strange attractors
+strcasecmp [] (3) - compare two strings ignoring case
+strcasecmp [] (3) - string operations
+strcasestr [] (3) - locate a substring
+strcat [] (3) - concatenate two strings
+strcat [] (3) - string operations
+strchr [] (3) - locate character in string
+strchr [] (3) - string operations
+strchrnul [] (3) - locate character in string
+strcmp [] (3) - compare two strings
+strcmp [] (3) - string operations
+strcoll [] (3) - compare two strings using the current locale
+strcoll [] (3) - string operations
+strcpy [] (3) - copy a string
+strcpy [] (3) - string operations
+strcspn [] (3) - search a string for a set of characters
+strcspn [] (3) - string operations
+strdup [] (3) - duplicate a string
+strdup [] (3) - string operations
+strdupa [] (3) - duplicate a string
+stream [] (1) - a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats
+strerror [] (3) - return string describing error number
+strerror_r [] (3) - return string describing error number
+strfile [] (8) - create a random access file for storing strings
+strfmon [] (3) - convert monetary value to a string
+strfry [] (3) - randomize a string
+strfry [] (3) - string operations
+strftime [] (3) - format date and time
+strict [] (3) - Perl pragma to restrict unsafe constructs
+string [] (n) - Manipulate strings
+stringprep [] (3) - prepare internationalized string
+stringprep_4i [] (3) - prepare internationalized string
+stringprep_4zi [] (3) - prepare internationalized string
+stringprep_check_version [] (3) - check for library version
+stringprep_convert [] (3) - encode string using new character set
+stringprep_locale_charset [] (3) - return charset used in current locale
+stringprep_locale_to_utf8 [] (3) - convert locale encoded string to UTF-8
+stringprep_profile [] (3) - prepare internationalized string
+stringprep_strerror [] (3) - return string describing stringprep error code
+stringprep_ucs4_nfkc_normalize [] (3) - normalize Unicode string
+stringprep_ucs4_to_utf8 [] (3) - convert UCS-4 string to UTF-8
+stringprep_unichar_to_utf8 [] (3) - convert Unicode code point to UTF-8
+stringprep_utf8_nfkc_normalize [] (3) - normalize Unicode string
+stringprep_utf8_to_locale [] (3) - encode UTF-8 string to locale encoding
+stringprep_utf8_to_ucs4 [] (3) - convert UTF-8 string to UCS-4
+stringprep_utf8_to_unichar [] (3) - convert UTF-8 to Unicode code point
+strings [] (1) - find printable strings in a file
+strings [] (1) - print the strings of printable characters in files
+strings [] (3) - like system using the following comman (requiring pkg-config and gcc):
+strip [] (1) - Discard symbols from object files
+strlen [] (3) - calculate the length of a string
+strlen [] (3) - string operations
+strncasecmp [] (3) - compare two strings ignoring case
+strncasecmp [] (3) - string operations
+strncat [] (3) - concatenate two strings
+strncat [] (3) - string operations
+strncmp [] (3) - compare two strings
+strncmp [] (3) - string operations
+strncpy [] (3) - copy a string
+strncpy [] (3) - string operations
+strndup [] (3) - duplicate a string
+strndupa [] (3) - duplicate a string
+strnlen [] (3) - determine the length of a fixed-size string
+strpbrk [] (3) - search a string for any of a set of characters
+strpbrk [] (3) - string operations
+strptime [] (3) - convert a string representation of time to a time tm structure
+strrchr [] (3) - locate character in string
+strrchr [] (3) - string operations
+strsep [] (3) - extract token from string
+strsep [] (3) - string operations
+strsignal [] (3) - return string describing signal
+strspn [] (3) - search a string for a set of characters
+strspn [] (3) - string operations
+strstr [] (3) - locate a substring
+strstr [] (3) - string operations
+strtod [] (3) - convert ASCII string to floating-point number
+strtof [] (3) - convert ASCII string to floating-point number
+strtoimax [] (3) - convert string to integer
+strtok [] (3) - extract tokens from strings
+strtok [] (3) - string operations
+strtok_r [] (3) - extract tokens from strings
+strtol [] (3) - convert a string to a long integer
+strtold [] (3) - convert ASCII string to floating-point number
+strtoll [] (3) - convert a string to a long integer
+strtoq [] (3) - convert a string to a long integer
+strtoul [] (3) - convert a string to an unsigned long integer
+strtoull [] (3) - convert a string to an unsigned long integer
+strtoumax [] (3) - convert string to integer
+strtouq [] (3) - convert a string to an unsigned long integer
+struct berval [] (3) - LBER types and allocation functions
+struct { magic: uint8_t caca_header[2]; // 'xCAxCA' uint8_t caca_file_type[2]; // 'CV' canvas_header: uint32_t control_size; // Control size (canvas_data [] (3) - canvas_header) uint32_t data_size; // Data size (EOF - canvas_data)
+struct { magic: uint8_t caca_header[2]; // 'xCAxCA' uint8_t caca_file_type[2]; // 'FT' font_header: uint32_t control_size; // Control size (font_data [] (3) - font_header) uint32_t data_size; // Data size (EOF - font_data)
+strverscmp [] (3) - compare two version strings
+strxfrm [] (3) - string operations
+strxfrm [] (3) - string transformation
+stty [] (1) - change and print terminal line settings
+stty [] (2) - unimplemented system calls
+stunnel [] (8) - universal SSL tunnel
+su [] (1) - change user ID or become super-user
+suauth [] (5) - Detailed su control file
+subpad [] (3) - create and display curses pads
+subs [] (3) - Perl pragma to predeclare sub names
+subscriptions.conf [] (5) - subscriptions file for cups
+subst [] (n) - Perform backslash, command, and variable substitutions
+substrate [] (6) - Grow crystal-like lines on a computational substrate
+subwin [] (3) - create curses windows
+sudo [] (8) - execute a command as another user
+sudoedit [] (8) - execute a command as another user
+sudoers [] (5) - list of which users may execute what
+suexec [] (8) - Switch user before executing external programs
+suffixes [] (7) - list of file suffixes
+sulogin [] (8) - Single-user login
+sum [] (1) - checksum and count the blocks in a file
+superformat [] (1) - format floppies
+superquadrics [] (6) - morphing 3d shapes
+suspend [] (1) - bash built-in commands, see bash(1)
+svgakeymap [] (1) - generates keymaps for svgalib
+svgalib [] (7) - a low level graphics library for linux
+svgalib.chips [] (7) - Information for Chips and Technologies Users
+svgalib.et4000 [] (7) - Information for Tseng ET4000 users
+svgalib.faq [] (7) - frequently asked questions about svgalib
+svgalib.mach32 [] (7) - Information on the Mach32 chipset driver
+svgalibrc [] (5) - the svgalib configuration file
+svgtopam [] (1) - see http://netpbm.sourceforge.net/doc/svgtopam.html
+svidtune [] (6) - tunes svgalib modes
+svipc [] (7) - System V interprocess communication mechanisms
+svn [] (1) - Subversion command line client tool
+svnadmin [] (1) - Subversion repository administration tool
+svndumpfilter [] (1) - Filter a subversion repository 'dumpfile'
+svnlook [] (1) - Subversion repository examination tool
+svnserve [] (8) - Server for the 'svn' repository access method
+svnserve.conf [] (5) - Repository configuration file for svnserve
+svnsync [] (1) - Subversion repository synchronization tool
+svnversion [] (1) - Produce a compact version number for a working copy
+swab [] (3) - swap adjacent bytes
+swapcontext [] (3) - manipulate user context
+swapoff [] (2) - start/stop swapping to file/device
+swapoff [] (8) - enable/disable devices and files for paging and swapping
+swapon [] (2) - start/stop swapping to file/device
+swapon [] (8) - enable/disable devices and files for paging and swapping
+swappo [] (1) - swap msgid and msgstr fields in a PO file
+swat [] (8) - Samba Web Administration Tool
+swirl [] (6) - draws swirly color-cycling patterns
+switch [] (n) - Evaluate one of several scripts, depending on a given value
+swprintf [] (3) - formatted wide - character output conversion
+sx [] (1) - XMODEM, YMODEM, ZMODEM file send
+sxpm [] (1) - Show an XPM (X PixMap) file and/or convert XPM 1 or 2 files to XPM 3
+symcryptrun [] (1) - Call a simple symmetric encryption tool
+symlink [] (2) - make a new name for a file
+symlink [] (7) - symbolic link handling
+symlinkat [] (2) - create a symbolic link relative to a directory file descriptor
+synaptics [] (4) - Synaptics touchpad input driver
+sync [] (1) - flush file system buffers
+sync [] (2) - commit buffer cache to disk
+sync [] (8) - synchronize data on disk with memory
+sync_file_range [] (2) - sync a file segment with disk
+synclient [] (1) - commandline utitlity to query and modify Synaptics driver options
+syncok [] (3) - create curses windows
+syndaemon [] (1) - a program that monitors keyboard activity and disables the touchpad when the keyboard is being used
+syscall [] (2) - indirect system call
+syscalls [] (2) - Linux system calls
+sysconf [] (3) - Get configuration information at runtime
+sysctl [] (2) - read/write system parameters
+sysctl [] (8) - configure kernel parameters at runtime
+sysctl.conf [] (5) - sysctl(8) preload/configuration file
+sysfs [] (2) - get file system type information
+sysinfo [] (2) - returns information on overall system statistics
+sysklogd [] (8) - Linux system logging utilities
+syslog [] (2) - read and/or clear kernel message ring buffer; set console_loglevel
+syslog [] (3) - send messages to the system logger
+syslog.conf [] (5) - syslogd(8) configuration file
+system [] (3) - execute a shell command
+systool [] (1) - view system device information by bus, class, and topology
+sysv_signal [] (3) - signal handling with System V semantics
+sz [] (1) - XMODEM, YMODEM, ZMODEM file send
+table [] (3) - Helps you implement a table
+table_array [] (3) - Helps you implement a table when data can be stored locally
+table_data [] (3) - Helps you implement a table with datamatted storage
+table_dataset [] (3) - Helps you implement a table with automatted storage
+table_iterator [] (3) - The table iterator helper is designed to simplify the task of writing a table handler for the net-snmp agent when the data being accessed is not in an oid sorted form and must be accessed externally
+tac [] (1) - concatenate and print files in reverse
+tail [] (1) - output the last part of files
+tailf [] (1) - follow the growth of a log file
+talk [] (1) - talk to another user
+talkd [] (8) - remote user communication server
+tan [] (3) - tangent function
+tanf [] (3) - tangent function
+tangram [] (6) - watch the computer solve tangram puzzles
+tanh [] (3) - hyperbolic tangent function
+tanhf [] (3) - hyperbolic tangent function
+tanhl [] (3) - hyperbolic tangent function
+tanl [] (3) - tangent function
+tapeinfo [] (1) - report SCSI tape device info
+tar [] (1) - The GNU version of the tar archiving utility
+tar [] (1) - manipulate tape archives
+tar [] (5) - format of tape archive files
+taskset [] (1) - retrieve or set a process's CPU affinity
+tbf [] (8) - Token Bucket Filter
+tbl [] (1) - format tables for troff
+tc [] (8) - show / manipulate traffic control settings
+tcdrain [] (3) - get and set terminal attributes, line control, get and set baud rate
+tcflow [] (3) - get and set terminal attributes, line control, get and set baud rate
+tcflush [] (3) - get and set terminal attributes, line control, get and set baud rate
+tcgetattr [] (3) - get and set terminal attributes, line control, get and set baud rate
+tcgetpgrp [] (3) - get and set terminal foreground process group
+tcgetsid [] (3) - get session ID
+tcl_endOfWord [] (n) - standard library of Tcl procedures
+tcl_findLibrary [] (n) - standard library of Tcl procedures
+tcl_startOfNextWord [] (n) - standard library of Tcl procedures
+tcl_startOfPreviousWord [] (n) - standard library of Tcl procedures
+tcl_wordBreakAfter [] (n) - standard library of Tcl procedures
+tcl_wordBreakBefore [] (n) - standard library of Tcl procedures
+tclsh [] (1) - Simple shell containing Tcl interpreter
+tcltest [] (n) - Test harness support code and utilities
+tclvars [] (n) - Variables used by Tcl
+tcp [] (7) - TCP protocol
+tcpd [] (8) - access control facility for internet services
+tcpdchk [] (8) - tcp wrapper configuration checker
+tcpdmatch [] (8) - tcp wrapper oracle
+tcpdump [] (1) - dump traffic on a network
+tcsendbreak [] (3) - get and set terminal attributes, line control, get and set baud rate
+tcsetattr [] (3) - get and set terminal attributes, line control, get and set baud rate
+tcsetpgrp [] (3) - get and set terminal foreground process group
+tcsh [] (1) - C shell with file name completion and command line editing
+tdbbackup [] (8) - tool for backing up and for validating the integrity of samba .tdb files
+tdbdump [] (8) - tool for printing the contents of a TDB file
+tdbtool [] (8) - manipulate the contents TDB files
+tdelete [] (3) - manage a binary tree
+tdestroy [] (3) - manage a binary tree
+tdfx [] (4) - 3Dfx video driver
+teachgammon [] (6) - learn to play backgammon
+teachjove [] (1) - learn how to use the JOVE editor
+tee [] (1) - read from standard input and write to standard output and files
+tee [] (2) - duplicating pipe content
+telinit [] (8) - process control initialization
+tell [] (n) - Return current access position for an open channel
+telldir [] (3) - return current location in directory stream
+telnet [] (1) - user interface to the TELNET protocol
+telnetd [] (8) - DARPA telnet protocol server
+tempfile [] (1) - create a temporary file in a safe manner
+tempnam [] (3) - create a name for a temporary file
+term [] (5) - format of compiled term file
+term [] (7) - conventions for naming terminal types
+term_attrs [] (3) - curses environment query routines
+termattrs [] (3) - curses environment query routines
+termcap [] (5) - terminal capability database
+terminfo [] (5) - terminal capability data base
+termio [] (7) - the System V terminal driver interface
+termios [] (3) - get and set terminal attributes, line control, get and set baud rate
+termname [] (3) - curses environment query routines
+test [] (1) - bash built-in commands, see bash(1)
+test [] (1) - check file types and compare values
+testaccel [] (6) - test the old style blitter functions and vga_ext_set()
+testgl [] (6) - test the vgagl library
+testlibraw [] (1) - run basic functionality tests on libraw1394
+testlinear [] (6) - test a linear frame buffer
+testparm [] (1) - check an smb.conf configuration file for internal correctness
+texi2dvi [] (1) - convert Texinfo documents to DVI
+texi2dvi [] (1) - convert Texinfo documents to PDF
+texi2dvi4a2ps [] (1) - Compile Texinfo and LaTeX files to DVI or PDF
+texindex [] (1) - sort Texinfo index files
+texinfo [] (5) - software documentation system
+text [] (n) - Create and manipulate text widgets
+textdomain [] (3) - set domain for future gettext() calls
+textmode [] (1) - save or restore the complete SVGA status for textmode
+tfind [] (3) - manage a binary tree
+tfmtodit [] (1) - create font files for use with groff -Tdvi
+tftp [] (1) - IPv4 Trivial File Transfer Protocol client
+tftpd [] (8) - IPv4 Trivial File Transfer Protocol server
+tgamma [] (3) - true gamma function
+tgammaf [] (3) - true gamma function
+tgammal [] (3) - true gamma function
+tgatoppm [] (1) - convert TrueVision Targa file into a portable pixmap
+tgetent [] (3) - direct curses interface to the terminfo capability database
+tgetflag [] (3) - direct curses interface to the terminfo capability database
+tgetnum [] (3) - direct curses interface to the terminfo capability database
+tgetstr [] (3) - direct curses interface to the terminfo capability database
+tgkill [] (2) - send a signal to a thread
+tgoto [] (3) - direct curses interface to the terminfo capability database
+the canvas will be automatically freed as well. You can then compile this code on an UNIX [] (3) - like system using the following comman (requiring pkg-config and gcc):
+the display is either a window or a context in a terminal (ncurses [] (3) - like system using the following comman (requiring pkg-config and gcc):
+thinkjettopbm [] (1) - convert HP ThinkJet printer commands file to PBM
+thornbird [] (6) - Bird in a Thornbush fractal
+threads::shared [] (3) - Perl extension for sharing data structures between threads
+threed [] (6) - The svgalib 3d demo
+threedkit [] (7) - a set of functions for 3D support
+thumbnail [] (1) - create a TIFF file with thumbnail images
+tic [] (1) - the terminfo entry-description compiler
+tiff2bw [] (1) - convert a color TIFF image to greyscale
+tiff2pdf [] (1) - convert a TIFF image to a PDF document
+tiff2ps [] (1) - convert a TIFF image to (tm
+tiff2rgba [] (1) - convert a TIFF image to RGBA color space
+tiffcmp [] (1) - compare two TIFF files
+tiffcp [] (1) - copy (and possibly convert) a TIFF file
+tiffdither [] (1) - convert a greyscale image to bilevel using dithering
+tiffdump [] (1) - print verbatim information about TIFF files
+tiffgt [] (1) - display an image stored in a TIFF file (Silicon Graphics version)
+tifficc [] (1) - little cms ICC profile applier for TIFF
+tiffinfo [] (1) - print information about TIFF files
+tiffmedian [] (1) - apply the median cut algorithm to data in a TIFF file
+tiffset [] (1) - set a field in a TIFF header
+tiffsplit [] (1) - split a multi-image TIFF into single - image TIFF files
+tiffsv [] (1) - save an image from the framebuffer in a TIFF file (Silicon Graphics version)
+tifftopnm [] (1) - convert a TIFF file into a portable anymap
+tigetflag [] (3) - curses interfaces to terminfo database
+tigetnum [] (3) - curses interfaces to terminfo database
+tigetstr [] (3) - curses interfaces to terminfo database
+time [] (1) - time a simple command or give resource usage
+time [] (2) - get time in seconds
+time [] (7) - overview of time and timers
+time [] (n) - Time the execution of a script
+timed [] (8) - time server daemon
+timedc [] (8) - timed control program
+timegm [] (3) - inverses of gmtime and localtime
+timelimit [] (1) - spawn a subprocess and if the child does not finish within the time limit either kill it, or exit, leaving the child in the background
+timelocal [] (3) - inverses of gmtime and localtime
+timelord [] (8) - Macintosh time server daemon
+timeout [] (1) - run a command with a time limit
+timeout [] (3) - curses input options
+timer_create [] (2) - create a POSIX per-process timer
+timer_delete [] (2) - delete a POSIX per-process timer
+timer_getoverrun [] (2) - get overrun count for a POSIX per-process timer
+timer_gettime [] (2) - arm/disarm and fetch state of POSIX per - process timer
+timer_settime [] (2) - arm/disarm and fetch state of POSIX per - process timer
+timeradd [] (3) - timeval operations
+timerclear [] (3) - timeval operations
+timercmp [] (3) - timeval operations
+timerfd_create [] (2) - timers that notify via file descriptors
+timerfd_gettime [] (2) - timers that notify via file descriptors
+timerfd_settime [] (2) - timers that notify via file descriptors
+timerisset [] (3) - timeval operations
+timersub [] (3) - timeval operations
+times [] (1) - bash built-in commands, see bash(1)
+times [] (2) - get process times
+timetunnel [] (6) - Plasma tunnels fade in and out
+timezone [] (3) - initialize time conversion information
+tin [] (1) - A Usenet newsreader
+tin [] (5) - related files
+tinews.pl [] (1) - Post and sign an article via NNTP
+tix [] (n) - Manipulate internal states of the Tix library
+tixBalloon [] (n) - Create and manipulate tixBalloon widgets
+tixButtonBox [] (n) - Create and manipulate Tix ButtonBox widgets
+tixCheckList [] (n) - Create and manipulate tixCheckList widgets
+tixComboBox [] (n) - Create and manipulate tixComboBox widgets
+tixControl [] (n) - Create and manipulate tixControl widgets
+tixDestroy [] (n) - Destroy Tix Objects
+tixDirList [] (n) - Create and manipulate tixDirList widgets
+tixDirSelectDialog [] (n) - Create and manipulate directory selection dialogs
+tixDirTree [] (n) - Create and manipulate tixDirTree widgets
+tixDisplayStyle [] (n) - Create style object for Tix display items
+tixExFileSelectBox [] (n) - Create and manipulate tixExFileSelectBox widgets
+tixExFileSelectDialog [] (n) - Create and manipulate tixExFileSelectDialog widgets
+tixFileEntry [] (n) - Create and manipulate tixFileEntry widgets
+tixFileSelectBox [] (n) - Create and manipulate Tix FileSelectBox widgets
+tixFileSelectDialog [] (n) - Create and manipulate tixFileSelectDialog widgets
+tixForm [] (n) - Geometry manager based on attachment rules
+tixGetBoolean [] (n) - Get the boolean value of a string
+tixGetInt [] (n) - Get the integer value of a string
+tixGrid [] (n) - Create and manipulate Tix Grid widgets
+tixHList [] (n) - Create and manipulate Tix Hierarchial List widgets
+tixInputOnly [] (n) - Create and manipulate TIX InputOnly widgets
+tixLabelEntry [] (n) - Create and manipulate tixLabelEntry widgets
+tixLabelFrame [] (n) - Create and manipulate tixLabelFrame widgets
+tixListNoteBook [] (n) - Create and manipulate tixListNoteBook widgets
+tixMeter [] (n) - Create and manipulate Tix Meter widgets
+tixMwm [] (n) - Communicate with the Motif(tm) window manager
+tixNBFrame [] (n) - Create and manipulate Tix NoteBook Frame widgets
+tixNoteBook [] (n) - Create and manipulate tixNoteBook widgets
+tixOptionMenu [] (n) - Create and manipulate tixOptionMenu widgets
+tixPanedWindow [] (n) - Create and manipulate tixPanedWindow widgets
+tixPopupMenu [] (n) - Create and manipulate tixPopupMenu widgets
+tixScrolledHList [] (n) - Create and manipulate Tix ScrolledHList widgets
+tixScrolledListBox [] (n) - Create and manipulate Tix ScrolledListBox widgets
+tixScrolledText [] (n) - Create and manipulate Tix ScrolledText widgets
+tixScrolledWindow [] (n) - Create and manipulate Tix ScrolledWindow widgets
+tixSelect [] (n) - Create and manipulate tixSelect widgets
+tixStdButtonBox [] (n) - Create and manipulate Tix StdButtonBox widgets
+tixTList [] (n) - Create and manipulate Tix Tabular List widgets
+tixTree [] (n) - Create and manipulate tixTree widgets
+tixUtils [] (n) - Utility commands in Tix
+tk [] (n) - Manipulate Tk internal state
+tk_bindForTraversal [] (n) - Obsolete support for menu bars
+tk_bisque [] (n) - Modify the Tk color palette
+tk_chooseColor [] (n) - pops up a dialog box for the user to select a color
+tk_chooseDirectory [] (n) - pops up a dialog box for the user to select a directory
+tk_dialog [] (n) - Create modal dialog and wait for response
+tk_focusFollowsMouse [] (n) - Utility procedures for managing the input focus
+tk_focusNext [] (n) - Utility procedures for managing the input focus
+tk_focusPrev [] (n) - Utility procedures for managing the input focus
+tk_getOpenFile [] (n) - pop up a dialog box for the user to select a file to open or save
+tk_getSaveFile [] (n) - pop up a dialog box for the user to select a file to open or save
+tk_menuBar [] (n) - Obsolete support for menu bars
+tk_menuSetFocus [] (n) - Create and manipulate menu widgets
+tk_messageBox [] (n) - pops up a message window and waits for user response
+tk_optionMenu [] (n) - Create an option menubutton and its menu
+tk_popup [] (n) - Post a popup menu
+tk_setPalette [] (n) - Modify the Tk color palette
+tk_textCopy [] (n) - Create and manipulate text widgets
+tk_textCut [] (n) - Create and manipulate text widgets
+tk_textPaste [] (n) - Create and manipulate text widgets
+tkerror [] (n) - Command invoked to process background errors
+tkill [] (2) - send a signal to a thread
+tkmib [] (1) - an interactive graphical MIB browser for SNMP
+tknewsbiff [] (1) - pop up a window when news appears
+tkvars [] (n) - Variables used or set by Tk
+tkwait [] (n) - Wait for variable to change or window to be destroyed
+tld_check_4 [] (3) - verify that characters are permitted
+tld_check_4t [] (3) - verify that characters are permitted
+tld_check_4tz [] (3) - verify that characters are permitted
+tld_check_4z [] (3) - verify that characters are permitted
+tld_check_8z [] (3) - verify that characters are permitted
+tld_check_lz [] (3) - verify that characters are permitted
+tld_default_table [] (3) - get table for a TLD name
+tld_get_4 [] (3) - extract top level domain part in input Unicode string
+tld_get_4z [] (3) - extract top level domain part in input Unicode string
+tld_get_table [] (3) - get table for a TLD name in table
+tld_get_z [] (3) - extract top level domain part in input string
+tld_strerror [] (3) - return string describing tld error code
+tload [] (1) - graphic representation of system load average
+tm [] (n) - Facilities for locating and loading of Tcl Modules
+tmpfile [] (3) - create a temporary file
+tmpnam [] (3) - create a name for a temporary file
+tmpnam_r [] (3) - create a name for a temporary file
+toascii [] (3) - convert character to ASCII
+todos [] (1) - convert UNIX text file format to DOS
+toe [] (1) - table of (terminfo) entries
+tolower [] (3) - convert letter to upper or lower case
+top [] (1) - display Linux tasks
+topblock [] (6) - a 3D world of falling blocks that build up and up
+toplevel [] (n) - Create and manipulate toplevel widgets
+touch [] (1) - change file timestamps
+touchline [] (3) - curses refresh control routines
+touchwin [] (3) - curses refresh control routines
+toupper [] (3) - convert letter to upper or lower case
+towctrans [] (3) - wide-character transliteration
+towlower [] (3) - convert a wide character to lowercase
+towupper [] (3) - convert a wide character to uppercase
+tparm [] (3) - curses interfaces to terminfo database
+tput [] (1) - initialize a terminal or query terminfo database
+tputs [] (3) - curses interfaces to terminfo database
+tputs [] (3) - direct curses interface to the terminfo capability database
+tr [] (1) - translate or delete characters
+trace [] (3) - curses debugging routines
+trace [] (n) - Monitor variable accesses, command usages and command executions
+tracepath [] (8) - traces path to a network host discovering MTU along this path
+tracepath6 [] (8) - traces path to a network host discovering MTU along this path
+traceroute [] (8) - print the route packets take to network host
+traceroute6 [] (8) - traces path to a network host
+trampoline [] (3) - closures as first-class C functions
+transfig [] (1) - creates a makefile for portable LaTeX figures
+transxx [] (1) - Create a pseudo translated PO file from a PO template file
+trap [] (1) - bash built-in commands, see bash(1)
+traptoemail [] (1) - snmptrapd handler script to convert snmp traps into emails
+tree [] (1) - list contents of directories in a tree-like format
+trek [] (6) - trekkie game
+triangle [] (6) - random mountains using iterative subdivision of triangles
+trident [] (4) - Trident video driver
+trn [] (1) - threaded read news program
+troff [] (1) - the troff processor of the groff text formatting system
+truchet [] (6) - draws curved or angular Truchet patterns
+true [] (1) - do nothing, successfully
+trunc [] (3) - round to integer, towards zero
+truncate [] (1) - shrink or extend the size of a file to the specified size
+truncate [] (2) - truncate a file to a specified length
+truncf [] (3) - round to integer, towards zero
+truncl [] (3) - round to integer, towards zero
+tryaffix [] (1) - Interactive spelling checking
+tsearch [] (3) - manage a binary tree
+tseng [] (4) - Tseng Labs video driver
+tset [] (1) - terminal initialization
+tsort [] (1) - perform topological sort
+ttk::button [] (n) - Widget that issues a command when pressed
+ttk::checkbutton [] (n) - On/off widget
+ttk::combobox [] (n) - text field with popdown selection list
+ttk::entry [] (n) - Editable text field widget
+ttk::frame [] (n) - Simple container widget
+ttk::image [] (n) - Define an element based on an image
+ttk::intro [] (n) - Introduction to the Tk theme engine
+ttk::label [] (n) - Display a text string and/or image
+ttk::labelframe [] (n) - Container widget with optional label
+ttk::menubutton [] (n) - Widget that pops down a menu when pressed
+ttk::notebook [] (n) - Multi-paned container widget
+ttk::panedwindow [] (n) - Multi-pane container window
+ttk::progressbar [] (n) - Provide progress feedback
+ttk::radiobutton [] (n) - Mutually exclusive option widget
+ttk::scale [] (n) - Create and manipulate a scale widget
+ttk::scrollbar [] (n) - Control the viewport of a scrollable widget
+ttk::separator [] (n) - Separator bar
+ttk::sizegrip [] (n) - Bottom-right corner resize widget
+ttk::style [] (n) - Manipulate style database
+ttk::treeview [] (n) - hierarchical multicolumn data display widget
+ttk::widget [] (n) - Standard options and commands supported by Tk themed widgets
+tty [] (1) - print the file name of the terminal connected to standard input
+tty [] (4) - controlling terminal
+tty ioctl [] (4) - ioctls for terminals and serial lines
+ttyS [] (4) - serial terminal lines
+ttyname [] (3) - return name of a terminal
+ttyname_r [] (3) - return name of a terminal
+ttyslot [] (3) - find the slot of the current user's terminal in some file
+ttytype [] (5) - terminal device to default terminal type mapping
+tune2fs [] (8) - adjust tunable filesystem parameters on ext2/ext3 filesystems
+tunelp [] (8) - set various parameters for the lp device
+tuxcall [] (2) - unimplemented system calls
+twalk [] (3) - manage a binary tree
+twang [] (6) - pluck pieces of the screen
+twm [] (1) - Tab Window Manager for the X Window System
+type [] (1) - bash built-in commands, see bash(1)
+typeahead [] (3) - curses input options
+typeset [] (1) - bash built-in commands, see bash(1)
+tzfile [] (5) - timezone information
+tzname [] (3) - initialize time conversion information
+tzselect [] (8) - select a timezone
+tzset [] (3) - initialize time conversion information
+ualarm [] (3) - schedule signal after given number of microseconds
+ucs2any [] (1) - generate BDF fonts containing subsets of ISO 10646-1 codepoints
+udev [] (7) - dynamic device management
+udevadm [] (8) - udev management tool
+udevd [] (8) - event managing daemon
+udp [] (7) - User Datagram Protocol for IPv4
+udplite [] (7) - Lightweight User Datagram Protocol
+uint16_t blocks; // Number of blocks in the font uint32_t glyphs; // Total number of glyphs in the font uint16_t bpp; // Bits per pixel for glyph data (valid // Values are 1 [] (3) - 15: unused yet, must be 0
+uint16_t version; // Canvas format version // bit 0: set to 1 if canvas is compatible // with version 1 of the format // bits 1 [] (3) - 15: unused yet, must be 0
+uint16_t version; // Font format version // bit 0: set to 1 if font is compatible // with version 1 of the format // bits 1 [] (3) - 15: unused yet, must be 0
+uint32_t frames; // Frame count uint16_t flags; // Feature flags // bits 0 [] (3) - 15: unused yet, must be 0
+ul [] (1) - do underlining
+ulckpwdf [] (3) - get shadow password file entry
+ulimit [] (1) - bash built-in commands, see bash(1)
+ulimit [] (2) - unimplemented system calls
+ulimit [] (3) - get and set user limits
+umask [] (1) - bash built-in commands, see bash(1)
+umask [] (2) - set file mode creation mask
+umount [] (2) - unmount file system
+umount [] (8) - unmount file systems
+umount.cifs [] (8) - for normal, non-root users, to unmount their own Common Internet File System (CIFS) mounts
+umount.nfs [] (8) - unmount a Network File System
+umount.nfs4 [] (8) - unmount a Network File System
+umount2 [] (2) - unmount file system
+unalias [] (1) - bash built-in commands, see bash(1)
+uname [] (1) - print system information
+uname [] (2) - get name and information about current kernel
+unbin [] (1) - Macintosh file format transformer
+unbuffer [] (1) - unbuffer output
+uncompress [] (1) - compress and expand data (version 4.1)
+unctrl [] (3) - miscellaneous curses utility routines
+unexpand [] (1) - convert spaces to tabs
+unget_wch [] (3) - get (or push back) a wide character from curses terminal keyboard
+ungetc [] (3) - input of characters and strings
+ungetch [] (3) - get (or push back) characters from curses terminal keyboard
+ungetmouse [] (3) - mouse interface through curses
+ungetwc [] (3) - push back a wide character onto a FILE stream
+unhex [] (1) - Macintosh file format transformer
+unicode_start [] (1) - put keyboard and console in unicode mode
+unicode_stop [] (1) - revert keyboard and console from unicode mode
+uniconv [] (1) - convert Netatalk volume encoding
+uniq [] (1) - report or omit repeated lines
+units [] (7) - decimal and binary prefixes
+unix [] (7) - Sockets for local interprocess communication
+unknown [] (n) - Handle attempts to use non-existent commands
+unlink [] (1) - call the unlink function to remove the specified file
+unlink [] (2) - delete a name and possibly the file it refers to
+unlinkat [] (2) - remove a directory entry relative to a directory file descriptor
+unload [] (n) - Unload machine code
+unlockpt [] (3) - unlock a pseudo-terminal master/slave pair
+unset [] (1) - bash built-in commands, see bash(1)
+unset [] (n) - Delete variables
+unshar [] (1) - unpack a shar file
+unshare [] (2) - disassociate parts of the process execution context
+unsingle [] (1) - Macintosh file format transformer
+unstr [] (8) - create a random access file for storing strings
+untouchwin [] (3) - curses refresh control routines
+unzip [] (1) - list, test and extract compressed files in a ZIP archive
+unzipsfx [] (1) - self-extracting stub for prepending to ZIP archives
+update [] (1) - mime-database - a program to build the Shared MIME-Info database cache
+update [] (n) - Process pending events and idle callbacks
+updatedb [] (1) - update the slocate database
+updwtmp [] (3) - append an entry to the wtmp file
+upgradepkg [] (8) - upgrade Slackware packages
+uplevel [] (n) - Execute a script in a different stack frame
+uptime [] (1) - Tell how long the system has been running
+upvar [] (n) - Create link to variable in a different stack frame
+urandom [] (4) - kernel random number source devices
+uri [] (7) - uniform resource identifier (URI), including a URL or URN
+url [] (7) - uniform resource identifier (URI), including a URL or URN
+urn [] (7) - uniform resource identifier (URI), including a URL or URN
+usb_id [] (8) - udev callout to read information from USB devices
+use_default_colors [] (3) - use terminal's default colors
+use_env [] (3) - miscellaneous curses utility routines
+use_extended_names [] (3) - miscellaneous curses extensions
+use_legacy_coding [] (3) - use terminal's default colors
+use_screen [] (3) - curses thread support
+use_window [] (3) - curses thread support
+uselib [] (2) - load shared library
+useradd [] (8) - Create a new user or update default new user information
+userdel [] (8) - Delete a user account and related files
+usermod [] (8) - Modify a user account
+users [] (1) - print the user names of users currently logged in to the current host
+usleep [] (1) - sleep some number of microseconds
+usleep [] (3) - suspend execution for microsecond intervals
+ustat [] (2) - get file system statistics
+utf8 [] (3) - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code
+utility_handlers [] (3) - Simplify request processing A group of handlers intended to simplify certain aspects of processing a request for a MIB object
+utime [] (2) - change file last access and modification times
+utimensat [] (2) - change file timestamps with nanosecond precision
+utimes [] (2) - change file last access and modification times
+utmp [] (5) - login records
+utmpname [] (3) - access utmp file entries
+uucico [] (8) - UUCP file transfer daemon
+uucp [] (1) - Unix to Unix copy
+uudecode [] (1) - encode a binary file, or decode its representation
+uudepipe [] (1) - uudecode a file
+uuencode [] (1) - encode a binary file, or decode its representation
+uuencode [] (5) - format of an encoded uuencode file
+uuenpipe [] (1) - uuencode a file
+uuid [] (3) - DCE compatible Universally Unique Identifier library
+uuid_clear [] (3) - reset value of UUID variable to the NULL value
+uuid_compare [] (3) - compare whether two UUIDs are the same
+uuid_copy [] (3) - copy a UUID value
+uuid_generate [] (3) - create a new unique UUID value
+uuid_generate_random [] (3) - create a new unique UUID value
+uuid_generate_time [] (3) - create a new unique UUID value
+uuid_is_null [] (3) - compare the value of the UUID to the NULL value
+uuid_parse [] (3) - convert an input UUID string into binary representation
+uuid_time [] (3) - extract the time at which the UUID was created
+uuid_unparse [] (3) - convert an UUID from binary representation to a string
+uuidgen [] (1) - command-line utility to create a new UUID value
+uustat [] (1) - UUCP status inquiry and control
+uux [] (1) - Remote command execution over UUCP
+uuxqt [] (8) - UUCP execution daemon
+uxterm [] (1) - X terminal emulator for Unicode (UTF-8) environments
+v4l [] (4) - video4linux driver
+va_arg [] (3) - variable argument lists
+va_copy [] (3) - variable argument lists
+va_end [] (3) - variable argument lists
+va_start [] (3) - variable argument lists
+vacall [] (3) - C functions called with variable arguments
+vacation [] (1) - E-mail auto-responder
+valloc [] (3) - Allocate aligned memory
+variable [] (n) - create and initialize a namespace variable
+variables [] (5) - Format of specifying variable names to SNMP tools
+vars [] (3) - Perl pragma to predeclare global variable names (obsolete)
+vasprintf [] (3) - print to allocated string
+vbetool [] (1) - run real-mode video BIOS code to alter hardware state
+vconfig [] (8) - VLAN (802.1q) configuration program
+vcs [] (4) - virtual console memory
+vcsa [] (4) - virtual console memory
+vcut [] (1) - cuts Ogg Vorbis files
+vdir [] (1) - list directory contents
+vdprintf [] (3) - print to a file descriptor
+verify [] (1) - Utility to verify certificates
+vermiculate [] (6) - to move in a worm-like manner
+verr [] (3) - formatted error messages
+verrx [] (3) - formatted error messages
+version [] (1) - print OpenSSL version information
+version [] (3) - Perl extension for Version Objects
+versionsort [] (3) - scan a directory for matching entries
+vesa [] (4) - Generic VESA video driver
+vfork [] (2) - create a child process and block parent
+vfprintf [] (3) - formatted output conversion
+vfs_audit [] (8) - record selected Samba VFS operations in the system log
+vfs_cacheprime [] (8) - prime the kernel file data cache
+vfs_cap [] (8) - CAP encode filenames
+vfs_catia [] (8) - translate illegal characters in Catia filenames
+vfs_commit [] (8) - flush dirty data at specified intervals
+vfs_default_quota [] (8) - store default quota records for Windows clients
+vfs_extd_audit [] (8) - record selected Samba VFS operations
+vfs_fake_perms [] (8) - enable read only Roaming Profiles
+vfs_fileid [] (8) - Generates file_id structs with unique device id values for cluster setups
+vfs_full_audit [] (8) - record Samba VFS operations in the system log
+vfs_gpfs [] (8) - gpfs specific samba extensions like acls and prealloc
+vfs_netatalk [] (8) - hide .AppleDouble files from CIFS clients
+vfs_notify_fam [] (8) - FAM support for file change notifications
+vfs_prealloc [] (8) - preallocate matching files to a predetermined size
+vfs_readahead [] (8) - pre-load the kernel buffer cache
+vfs_readonly [] (8) - make a Samba share read only for a specified time period
+vfs_recycle [] (8) - Samba VFS recycle bin
+vfs_shadow_copy [] (8) - Make a Samba share read only for a specified time period
+vfs_shadow_copy2 [] (8) - Expose snapshots to Windows clients as shadow copies
+vfs_smb_traffic_analyzer [] (8) - log Samba VFS read and write operations through a socket to a helper application
+vfs_streams_depot [] (8) - EXPERIMENTAL module to store alternate data streams in a central directory
+vfs_streams_xattr [] (8) - Store alternate data streams in posix xattrs
+vfs_xattr_tdb [] (8) - Save Extended Attributes (EAs) in a tdb file
+vfscanf [] (3) - input format conversion
+vfstest [] (1) - tool for testing samba VFS modules
+vfwprintf [] (3) - formatted wide - character output conversion
+vga_accel [] (3) - calls the graphics accelerator
+vga_addmode [] (3) - add a mode to svgalib modes list
+vga_addtiming [] (3) - add a timing line to svgalib user timing list
+vga_bitblt [] (3) - copy pixmap on screen using an accelerator
+vga_blitwait [] (3) - wait for any accelerator operation to finish
+vga_changetiming [] (3) - change the current timing parameters
+vga_claimvideomemory [] (3) - declare the amount of video memory used
+vga_clear [] (3) - clear the screen
+vga_copytoplanar16 [] (3) - copy linear pixmap into VGA 16 color mode video memory
+vga_copytoplanar256 [] (3) - copy linear pixmap into Mode X video memory
+vga_copytoplane [] (3) - copy linear pixmap to some planes of VGA 16 color mode video memory
+vga_disabledriverreport [] (3) - makes svgalib not emit any startup messages
+vga_drawline [] (3) - draw a line on the screen
+vga_drawpixel [] (3) - draw a pixel on the screen
+vga_drawscanline [] (3) - draw a horizontal line of pixels
+vga_drawscansegment [] (3) - draw a horizontal line of pixels
+vga_dumpregs [] (3) - dump the contents of the SVGA registers
+vga_ext_set [] (3) - set and query several extended features
+vga_fillblt [] (3) - file rectangular area in video memory with a single color
+vga_flip [] (3) - toggle between text and graphics mode
+vga_getcardinfo [] (3) - returns pointer to information about the video card
+vga_getch [] (3) - wait for a key
+vga_getcolors [] (3) - return the current screen resolution
+vga_getcurrentchipset [] (3) - returns the current SVGA chipset
+vga_getcurrentmode [] (3) - returns the current video mode
+vga_getcurrenttiming [] (3) - get the current timing parameters
+vga_getdefaultmode [] (3) - returns the default graphics mode number
+vga_getgraphmem [] (3) - returns the address of the VGA memory
+vga_getkey [] (3) - read a character from the keyboard without waiting
+vga_getmodeinfo [] (3) - returns pointer to mode information structure for a mode
+vga_getmodename [] (3) - return a name for the given video mode
+vga_getmodenumber [] (3) - return a number for the given video mode
+vga_getmonitortype [] (3) - returns the monitor type configured
+vga_getmousetype [] (3) - returns the mouse type configured
+vga_getpalette [] (3) - get a color in the color lookup table
+vga_getpalvec [] (3) - gets colors from the color lookup table
+vga_getpixel [] (3) - get a pixels value from the screen
+vga_getscansegment [] (3) - get a list of consecutive pixel values
+vga_gettextfont [] (3) - get/set the font used in text mode
+vga_gettextmoderegs [] (3) - get/set the vga state used in text mode
+vga_getxdim [] (3) - return the current screen resolution
+vga_getydim [] (3) - return the current screen resolution
+vga_guesstiming [] (3) - calculate a timing line for the given resolution
+vga_hasmode [] (3) - returns if a video mode is supported
+vga_hlinelistblt [] (3) - draw horizontal scan lines
+vga_imageblt [] (3) - copy a rectangular pixmap from system memory to video memory
+vga_init [] (3) - initialize svgalib library
+vga_initcursor [] (3) - initialize mouse cursor
+vga_lastmodenumber [] (3) - returns the last video mode number
+vga_lockvc [] (3) - disables virtual console switching for safety
+vga_norevokeprivs [] (3) - Keep root privileges if run as suid root
+vga_oktowrite [] (3) - indicates whether the program has direct access to the SVGA
+vga_puttextfont [] (3) - get/set the font used in text mode
+vga_reset [] (8) - reset video graphic board
+vga_runinbackground [] (3) - enable running of the program while there is no VGA access
+vga_runinbackground_version [] (3) - returns the version of the current background support
+vga_safety_fork [] (3) - start a parallel process to restore the console at a crash
+vga_screenoff [] (3) - turn generation of the video signal on or off
+vga_screenon [] (3) - turn generation of the video signal on or off
+vga_selectcursor [] (3) - select mouse cursor pattern
+vga_setchipset [] (3) - force chipset
+vga_setchipsetandfeatures [] (3) - force chipset and optional parameters
+vga_setcolor [] (3) - set the current color
+vga_setcursorimage [] (3) - set the pattern and colors of the mouse cursor
+vga_setcursorposition [] (3) - set the mouse cursor position
+vga_setdisplaystart [] (3) - set the display start address
+vga_setegacolor [] (3) - set the current color
+vga_setflipchar [] (3) - set the character causing a vga_flip()
+vga_setlinearaddressing [] (3) - switch to linear addressing mode
+vga_setlogicalwidth [] (3) - set the logical scanline width
+vga_setmode [] (3) - sets a video mode
+vga_setmodeX [] (3) - try to set Mode X-like memory organization
+vga_setmousesupport [] (3) - enable mouse support
+vga_setpage [] (3) - set the 64K SVGA page number
+vga_setpalette [] (3) - set a color in the color lookup table
+vga_setpalvec [] (3) - sets colors in the color lookup table
+vga_setreadpage [] (3) - set the 64K SVGA page number
+vga_setrgbcolor [] (3) - set the current color
+vga_settextmoderegs [] (3) - get/set the vga state used in text mode
+vga_setwritepage [] (3) - set the 64K SVGA page number
+vga_showcursor [] (3) - show / hide mouse cursor
+vga_unlockvc [] (3) - re-enables virtual console switching
+vga_waitevent [] (3) - wait for various I/O events
+vga_waitretrace [] (3) - wait for vertical retrace
+vga_white [] (3) - return the color white in the current screen resolution
+vgagl [] (7) - a fast framebuffer-level graphics library based ion svgalib
+vgatest [] (6) - makes basic tests on any svgalib graphics mode
+vgcfgbackup [] (8) - backup volume group descriptor area
+vgcfgrestore [] (8) - restore volume group descriptor area
+vgchange [] (8) - change attributes of a volume group
+vgck [] (8) - check volume group metadata
+vgconvert [] (8) - convert volume group metadata format
+vgcreate [] (8) - create a volume group
+vgdisplay [] (8) - display attributes of volume groups
+vgexport [] (8) - make volume groups unknown to the system
+vgextend [] (8) - add physical volumes to a volume group
+vgimport [] (8) - make exported volume groups known to the system
+vgmerge [] (8) - merge two volume groups
+vgmknodes [] (8) - recreate volume group directory and logical volume special files
+vgreduce [] (8) - reduce a volume group
+vgremove [] (8) - remove a volume group
+vgrename [] (8) - rename a volume group
+vgs [] (8) - report information about volume groups
+vgscan [] (8) - scan all disks for volume groups and rebuild caches
+vgsplit [] (8) - split a volume group into two
+vhangup [] (2) - virtually hangup the current tty
+vid_attr [] (3) - curses interfaces to terminfo database
+vid_puts [] (3) - curses interfaces to terminfo database
+vidattr [] (3) - curses interfaces to terminfo database
+vidputs [] (3) - curses interfaces to terminfo database
+vidwhacker [] (6) - grab images and apply random filters to them
+viewres [] (1) - graphical class browser for Xt
+vigr [] (8) - edit the password, group, shadow-password, or shadow-group file
+vim [] (1) - Vi IMproved, a programmers text editor
+vimdiff [] (1) - edit two, three or four versions of a file with Vim and show differences
+vimtutor [] (1) - the Vim tutor
+vipw [] (8) - edit the password, group, shadow-password, or shadow-group file
+visudo [] (8) - edit the sudoers file
+vline [] (3) - create curses borders, horizontal and vertical lines
+vline_set [] (3) - create curses borders or lines using complex characters and renditions
+vm86 [] (2) - enter virtual 8086 mode
+vm86old [] (2) - enter virtual 8086 mode
+vmmouse [] (4) - VMware Mouse input driver
+vmmouse_detect [] (1) - VMware mouse device autodetection tool
+vmsish [] (3) - Perl pragma to control VMS-specific language features
+vmsplice [] (2) - splice user pages into a pipe
+vmstat [] (8) - Report virtual memory statistics
+vmware [] (4) - VMware SVGA video driver
+void XpPutDocumentData [] (3) - Sends and incorporates data into the output
+void [] (4) - null input driver
+vol_id [] (8) - probe filesystem type and read label and uuid
+volname [] (1) - return volume name
+voodoo [] (4) - Voodoo video driver
+vorbiscomment [] (1) - List or edit comments in Ogg Vorbis files
+voronoi [] (6) - draws a randomly-colored Voronoi tessellation
+vpddecode [] (8) - VPD structure decoder
+vprintf [] (3) - formatted output conversion
+vscanf [] (3) - input format conversion
+vserver [] (2) - unimplemented system calls
+vsftpd [] (8) - Very Secure FTP Daemon
+vsftpd.conf [] (5) - config file for vsftpd
+vsnprintf [] (3) - formatted output conversion
+vsprintf [] (3) - formatted output conversion
+vsscanf [] (3) - input format conversion
+vswprintf [] (3) - formatted wide - character output conversion
+vsyslog [] (3) - send messages to the system logger
+vw_printw [] (3) - print formatted output in curses windows
+vw_scanw [] (3) - convert formatted input from a curses window
+vwait [] (n) - Process events until a variable is written
+vwarn [] (3) - formatted error messages
+vwarnx [] (3) - formatted error messages
+vwprintf [] (3) - formatted wide - character output conversion
+vwprintw [] (3) - print formatted output in curses windows
+vwscanw [] (3) - convert formatted input from a curses window
+w [] (1) - Show who is logged on and what they are doing
+wadd_wch [] (3) - add a complex character and rendition to a curses window, then advance the cursor
+wadd_wchnstr [] (3) - add an array of complex characters (and attributes) to a curses window
+wadd_wchstr [] (3) - add an array of complex characters (and attributes) to a curses window
+waddch [] (3) - add a character (with attributes) to a curses window, then advance the cursor
+waddchnstr [] (3) - add a string of characters (and attributes) to a curses window
+waddchstr [] (3) - add a string of characters (and attributes) to a curses window
+waddnstr [] (3) - add a string of characters to a curses window and advance cursor
+waddnwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+waddstr [] (3) - add a string of characters to a curses window and advance cursor
+waddwstr [] (3) - add a string of wide characters to a curses window and advance cursor
+wait [] (1) - bash built-in commands, see bash(1)
+wait [] (2) - wait for process to change state
+wait3 [] (2) - wait for process to change state, BSD style
+wait4 [] (2) - wait for process to change state, BSD style
+waitid [] (2) - wait for process to change state
+waitpid [] (2) - wait for process to change state
+wall [] (1) - write a message to users
+wander [] (6) - colorful random-walk
+wargames [] (6) - shall we play a game?
+warn [] (3) - formatted error messages
+warnings [] (3) - Perl pragma to control optional warnings
+warnings::register [] (3) - warnings import function
+warnquota [] (8) - send mail to users over quota
+warnx [] (3) - formatted error messages
+watch [] (1) - execute a program periodically, showing output fullscreen
+watcher [] (3) - Watch a specified variable and process it as an instance or scalar object
+watchgnupg [] (1) - Read and print logs from a socket
+wattr_get [] (3) - curses character and window attribute control routines
+wattr_off [] (3) - curses character and window attribute control routines
+wattr_on [] (3) - curses character and window attribute control routines
+wattr_set [] (3) - curses character and window attribute control routines
+wattroff [] (3) - curses character and window attribute control routines
+wattron [] (3) - curses character and window attribute control routines
+wattrset [] (3) - curses character and window attribute control routines
+wavelan [] (4) - AT&T GIS WaveLAN ISA device driver
+wbinfo [] (1) - Query information from winbind daemon
+wbkgd [] (3) - curses window background manipulation routines
+wbkgdset [] (3) - curses window background manipulation routines
+wbkgrnd [] (3) - curses window complex background manipulation routines
+wbkgrndset [] (3) - curses window complex background manipulation routines
+wbmptopbm [] (1) - convert a wireless bitmap (wbmp) file to a portable bitmap (pbm)
+wborder [] (3) - create curses borders, horizontal and vertical lines
+wborder_set [] (3) - create curses borders or lines using complex characters and renditions
+wc [] (1) - print newline, word, and byte counts for each file
+wchgat [] (3) - curses character and window attribute control routines
+wclear [] (3) - clear all or part of a curses window
+wclrtobot [] (3) - clear all or part of a curses window
+wclrtoeol [] (3) - clear all or part of a curses window
+wcolor_set [] (3) - curses character and window attribute control routines
+wcpcpy [] (3) - copy a wide-character string, returning a pointer to its end
+wcpncpy [] (3) - copy a fixed-size string of wide characters, returning a pointer to its end
+wcrtomb [] (3) - convert a wide character to a multibyte sequence
+wcscasecmp [] (3) - compare two wide-character strings, ignoring case
+wcscat [] (3) - concatenate two wide-character strings
+wcschr [] (3) - search a wide character in a wide-character string
+wcscmp [] (3) - compare two wide-character strings
+wcscpy [] (3) - copy a wide-character string
+wcscspn [] (3) - search a wide-character string for any of a set of wide characters
+wcsdup [] (3) - duplicate a wide-character string
+wcslen [] (3) - determine the length of a wide-character string
+wcsncasecmp [] (3) - compare two fixed-size wide-character strings, ignoring case
+wcsncat [] (3) - concatenate two wide-character strings
+wcsncmp [] (3) - compare two fixed-size wide-character strings
+wcsncpy [] (3) - copy a fixed-size string of wide characters
+wcsnlen [] (3) - determine the length of a fixed-size wide-character string
+wcsnrtombs [] (3) - convert a wide-character string to a multibyte string
+wcspbrk [] (3) - search a wide-character string for any of a set of wide characters
+wcsrchr [] (3) - search a wide character in a wide-character string
+wcsrtombs [] (3) - convert a wide-character string to a multibyte string
+wcsspn [] (3) - advance in a wide-character string, skipping any of a set of wide characters
+wcsstr [] (3) - locate a substring in a wide-character string
+wcstoimax [] (3) - convert wide-character string to integer
+wcstok [] (3) - split wide-character string into tokens
+wcstombs [] (3) - convert a wide-character string to a multibyte string
+wcstoumax [] (3) - convert wide-character string to integer
+wcswidth [] (3) - determine columns needed for a fixed-size wide-character string
+wctob [] (3) - try to represent a wide character as a single byte
+wctomb [] (3) - convert a wide character to a multibyte sequence
+wctrans [] (3) - wide-character translation mapping
+wctype [] (3) - wide-character classification
+wcursyncup [] (3) - create curses windows
+wcwidth [] (3) - determine columns needed for a wide character
+wdelch [] (3) - delete character under the cursor in a curses window
+wdeleteln [] (3) - delete and insert lines in a curses window
+wdwrite [] (1) - writes keys and values to the defaults database
+webcollage [] (6) - decorate the screen with random images from the web
+wecho_wchar [] (3) - add a complex character and rendition to a curses window, then advance the cursor
+wechochar [] (3) - add a character (with attributes) to a curses window, then advance the cursor
+wenclose [] (3) - mouse interface through curses
+werase [] (3) - clear all or part of a curses window
+wftopfa [] (1) - Convert a Wadalab base font to Postscript .PFA (or .PFB) format using ghostscript
+wget_wch [] (3) - get (or push back) a wide character from curses terminal keyboard
+wget_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+wgetbkgrnd [] (3) - curses window complex background manipulation routines
+wgetch [] (3) - get (or push back) characters from curses terminal keyboard
+wgetn_wstr [] (3) - get an array of wide characters from a curses terminal keyboard
+wgetnstr [] (3) - accept character strings from curses terminal keyboard
+wgetstr [] (3) - accept character strings from curses terminal keyboard
+whatis [] (1) - search the whatis database for complete words
+whereis [] (1) - locate the binary, source, and manual page files for a command
+which [] (1) - shows the full path of (shell) commands
+while [] (n) - Execute script repeatedly as long as a condition is met
+whirlwindwarp [] (6) - crazy moving stars
+whline [] (3) - create curses borders, horizontal and vertical lines
+whline_set [] (3) - create curses borders or lines using complex characters and renditions
+who [] (1) - show who is logged on
+whoami [] (1) - print effective userid
+whois [] (1) - client for the whois directory service
+win_wch [] (3) - extract a complex character and rendition from a window
+win_wchnstr [] (3) - get an array of complex characters and renditions from a curses window
+win_wchstr [] (3) - get an array of complex characters and renditions from a curses window
+winbindd [] (8) - Name Service Switch daemon for resolving names from NT servers
+winch [] (3) - get a character and attributes from a curses window
+winchnstr [] (3) - get a string of characters (and attributes) from a curses window
+winchstr [] (3) - get a string of characters (and attributes) from a curses window
+windmc [] (1) - generates Windows message resources
+winfo [] (n) - Return window-related information
+winicontoppm [] (1) - convert a Windows .ico file into 1 or more portable pixmap files
+winnstr [] (3) - get a string of characters from a curses window
+winnwstr [] (3) - get a string of wchar_t characters from a curses window
+wins_nwstr [] (3) - insert a wide-character string into a curses window
+wins_wch [] (3) - insert a complex character and rendition into a window
+wins_wstr [] (3) - insert a wide-character string into a curses window
+winsch [] (3) - insert a character before cursor in a curses window
+winsdelln [] (3) - delete and insert lines in a curses window
+winsertln [] (3) - delete and insert lines in a curses window
+winsnstr [] (3) - insert string before cursor in a curses window
+winsstr [] (3) - insert string before cursor in a curses window
+winstr [] (3) - get a string of characters from a curses window
+winwstr [] (3) - get a string of wchar_t characters from a curses window
+wireless [] (7) - Wireless Tools and Wireless Extensions
+wish [] (1) - Simple windowing shell
+wm [] (n) - Communicate with window manager
+wmaker [] (1) - X11 window manager with a NEXTSTEP look
+wmemchr [] (3) - search a wide character in a wide-character array
+wmemcmp [] (3) - compare two arrays of wide-characters
+wmemcpy [] (3) - copy an array of wide-characters
+wmemmove [] (3) - copy an array of wide-characters
+wmempcpy [] (3) - copy memory area
+wmemset [] (3) - fill an array of wide-characters with a constant wide character
+wmouse_trafo [] (3) - mouse interface through curses
+wmove [] (3) - move curses window cursor
+wmsetbg [] (1) - sets the background on the X11 display
+wnewmail [] (1) - programs to asynchronously notify of new mail
+wnoutrefresh [] (3) - refresh curses windows and lines
+word [] (1) - list-compress - word list compressor/decompressor for GNU Aspell
+wordexp [] (3) - perform word expansion like a posix-shell
+wordfree [] (3) - perform word expansion like a posix-shell
+workbone [] (1) - an interactive text-mode program for controlling and playing audio CD Roms under Linux
+worm [] (6) - Play the growing worm game
+wormhole [] (6) - animation of flying through a wormhole
+worms [] (6) - animate worms on a display terminal
+wpa_background [] (8) - Background information on Wi-Fi Protected Access and IEEE 802.11i
+wpa_cli [] (8) - WPA command line client
+wpa_gui [] (8) - WPA Graphical User Interface
+wpa_passphrase [] (8) - Generate a WPA PSK from an ASCII passphrase for a SSID
+wpa_priv [] (8) - wpa_supplicant privilege separation helper
+wpa_supplicant [] (8) - Wi-Fi Protected Access client and IEEE 802.1X supplicant
+wpa_supplicant.conf [] (5) - configuration file for wpa_supplicant
+wprintf [] (3) - formatted wide - character output conversion
+wprintw [] (3) - print formatted output in curses windows
+wrapdemo [] (6) - demonstrates surface wrapping of pixmaps
+wredrawln [] (3) - refresh curses windows and lines
+wrefresh [] (3) - refresh curses windows and lines
+wresize [] (3) - resize a curses window
+write [] (1) - send a message to another user
+write [] (2) - write to a file descriptor
+writed [] (8) - remote write server
+writemain [] (3) - write the C code for perlmain.c
+writev [] (2) - read or write data into multiple buffers
+wrjpgcom [] (1) - insert text comments into a JPEG file
+wscanw [] (3) - convert formatted input from a curses window
+wscrl [] (3) - scroll a curses window
+wsetscrreg [] (3) - curses output options
+wstandend [] (3) - curses character and window attribute control routines
+wstandout [] (3) - curses character and window attribute control routines
+wsyncdown [] (3) - create curses windows
+wsyncup [] (3) - create curses windows
+wtf [] (6) - translates acronyms for you
+wtimeout [] (3) - curses input options
+wtmp [] (5) - login records
+wtouchln [] (3) - curses refresh control routines
+wtpt [] (1) - Show media white of profiles, identifying black body locus
+wump [] (6) - hunt the wumpus in an underground cave
+wunctrl [] (3) - miscellaneous curses utility routines
+wvline [] (3) - create curses borders, horizontal and vertical lines
+wvline_set [] (3) - create curses borders or lines using complex characters and renditions
+wxcopy [] (1) - copy stdin or file into cutbuffer
+wxpaste [] (1) - output a cutbuffer to stdout
+x11perf [] (1) - X11 server performance test program
+x11perfcomp [] (1) - X11 server performance comparison program
+x25 [] (7) - ITU-T X.25 / ISO-8208 protocol interface
+x3270 [] (1) - - 1IBM host access tool
+x3270if [] (1) - command interface to x3270, c3270 and s3270
+x509 [] (1) - Certificate display and signing utility
+x509 [] (3) - X.509 certificate handling
+x509v3_config [] (5) - X509 V3 certificate extension configuration format
+xanalogtv [] (6) - Simulate reception on an old analog TV set
+xapm [] (1) - display Advanced Power Management (APM) BIOS information
+xargs [] (1) - build and execute command lines from standard input
+xauth [] (1) - X authority file utility
+xbacklight [] (1) - adjust backlight brightness using RandR extension
+xbattery [] (1) - display Advanced Power Management (APM) BIOS information
+xbiff [] (1) - mailbox flag for X
+xbmtopbm [] (1) - convert an X11 or X10 bitmap into a portable bitmap
+xboard [] (6) - X graphical user interface for chess
+xcalc [] (1) - scientific calculator for X
+xcam [] (1) - a graphical camera frontend for SANE
+xclipboard [] (1) - X clipboard client
+xclock [] (1) - analog / digital clock for X
+xcmap [] (1) - displays the default colormap on X11 displays
+xcmsdb [] (1) - Device Color Characterization utility for X Color Management System
+xcompmgr [] (1) - sample X compositing manager
+xconsole [] (1) - monitor system console messages with X
+xcuckoo [] (6) - cuckoo clock for X
+xcursorgen [] (1) - create an X cursor file from a collection of PNG images
+xcutsel [] (1) - interchange between cut buffer and selection
+xdbedizzy [] (1) - demo of DBE creating a double buffered spinning scene
+xdecrypt [] (3) - RFS password encryption
+xdfcopy [] (1) - Program to copy and format Xdf disks in Linux
+xdg [] (1) - desktop-icon - command line tool for (un)installing icons to the desktop
+xdg [] (1) - desktop-menu - command line tool for (un)installing desktop menu items
+xdg [] (1) - email - command line tool for sending mail using the user's preferred e-mail composer
+xdg [] (1) - icon-resource - command line tool for (un)installing icon resources
+xdg [] (1) - mime - command line tool for querying information about file type handling and adding descriptions for new file types
+xdg [] (1) - open - opens a file or URL in the user's preferred application
+xdg [] (1) - screensaver - command line tool for controlling the screensaver
+xditview [] (1) - display ditroff output
+xdm [] (1) - X Display Manager with support for XDMCP, host chooser
+xdpr [] (1) - dump an X window directly to a printer
+xdpyinfo [] (1) - display information utility for X
+xdr [] (3) - library routines for external data representation
+xdriinfo [] (1) - query configuration information of DRI drivers
+xedit [] (1) - simple text editor for X
+xencrypt [] (3) - RFS password encryption
+xev [] (1) - print contents of X events
+xeyes [] (1) - a follow the mouse X demo
+xfce4 [] (1) - session - Starts up the Xfce Desktop Environment
+xfce4 [] (1) - session-logout - Logs out from Xfce
+xfce4-session (1) - Starts up the Xfce Desktop Environment
+xfce4-session-logout (1) - Logs out from Xfce
+xfd [] (1) - display all the characters in an X font
+xfdesktop (1) - The Xfce 4 Desktop Environment's desktop manager
+xfdesktop [] (1) - The Xfce 4 Desktop Environment's desktop manager
+xferlog [] (5) - ProFTPD server logfile
+xfig [] (1) - Facility for Interactive Generation of figures under X11
+xfindproxy [] (1) - locate proxy services
+xflame [] (6) - draws animated flames
+xfontsel [] (1) - point and click selection of X11 font names
+xfractint [] (1) - fractal generation program
+xfs [] (1) - X font server
+xfs [] (5) - layout of the XFS filesystem
+xfs_admin [] (8) - change parameters of an XFS filesystem
+xfs_bmap [] (8) - print block mapping for an XFS file
+xfs_check [] (8) - check XFS filesystem consistency
+xfs_copy [] (8) - copy the contents of an XFS filesystem
+xfs_db [] (8) - debug an XFS filesystem
+xfs_estimate [] (8) - estimate the space that an XFS filesystem will take
+xfs_freeze [] (8) - suspend access to an XFS filesystem
+xfs_fsr [] (8) - filesystem reorganizer for XFS
+xfs_growfs [] (8) - expand an XFS filesystem
+xfs_info [] (8) - expand an XFS filesystem
+xfs_io [] (8) - debug the I/O path of an XFS filesystem
+xfs_logprint [] (8) - print the log of an XFS filesystem
+xfs_mdrestore [] (8) - restores an XFS metadump image to a filesystem image
+xfs_metadump [] (8) - copy XFS filesystem metadata to a file
+xfs_mkfile [] (8) - create an XFS file
+xfs_ncheck [] (8) - generate pathnames from i-numbers for XFS
+xfs_quota [] (8) - manage use of quota on XFS filesystems
+xfs_repair [] (8) - repair an XFS filesystem
+xfs_rtcp [] (8) - XFS realtime copy command
+xfsctl [] (3) - control XFS filesystems and individual files
+xfsdump [] (8) - XFS filesystem incremental dump utility
+xfsinfo [] (1) - X font server information utility
+xfsinvutil [] (8) - xfsdump inventory database checking and pruning utility
+xfsrestore [] (8) - XFS filesystem incremental restore utility
+xft [] (1) - config - report Xft version, compiler, linker, and/or installation directory information
+xfwp [] (1) - X firewall proxy
+xgamma [] (1) - Alter a monitor's gamma correction through the X server
+xgc [] (1) - X graphics demo
+xgettext [] (1) - extract gettext strings from source
+xhfs [] (1) - graphical interface for manipulating HFS volumes
+xhost [] (1) - server access control program for X
+ximtoppm [] (1) - convert an Xim file into a portable pixmap
+xine [] (1) - a free video player
+xine [] (1) - check - a checker for the xine video player
+xine [] (1) - config - script to get information about the installed version of libxine
+xine [] (1) - remote - a small tool to connect xine remote control server
+xine [] (5) - a free video player
+xinit [] (1) - X Window System initializer
+xinput [] (1) - utility to configure and test XInput devices
+xjack [] (6) - all work and no play makes jack a dull boy
+xkbcomp [] (1) - compile XKB keyboard description
+xkbevd [] (1) - XKB event daemon
+xkbprint [] (1) - print an XKB keyboard description
+xkibitz [] (1) - allow multiple people to interact in an xterm
+xkill [] (1) - kill a client by its X resource
+xlander [] (6) - A lunar landing simulation with a twist
+xload [] (1) - system load average display for X
+xlock [] (1) - Locks the local X display until a password is entered
+xlogo [] (1) - X Window System logo
+xlsatoms [] (1) - list interned atoms defined on server
+xlsclients [] (1) - list client applications running on a display
+xlsfonts [] (1) - server font list displayer for X
+xlyap [] (6) - display an array of Lyapunov exponents graphically
+xmag [] (1) - magnify parts of the screen
+xman [] (1) - Manual page display program for the X Window System
+xmatrix [] (6) - simulates the computer displays from the movie
+xmbind [] (1) - configures the virtual key bindings of LessTif applications
+xmessage [] (1) - display a message or query in a window (X-based /bin/echo)
+xmh [] (1) - send and read mail with an X interface to MH
+xminesweep [] (6) - A mine-sweeper game
+xmkmf [] (1) - create a Makefile from an Imakefile
+xml [] (1) - config - script to get information about the installed version of GNOME-XML
+xml2po [] (1) - program to create a PO-template file from a DocBook XML file and merge it back into a (translated) XML file
+xml2pot [] (1) - Creates a PO template file from a DocBook XML file
+xmlcatalog [] (1) - Command line tool to parse and manipulate XML or SGML catalog files
+xmlif [] (1) - conditional processing instructions for XML
+xmllint [] (1) - command line XML tool
+xmlto [] (1) - apply an XSL stylesheet to an XML document
+xmlwf [] (1) - Determines if an XML document is well-formed
+xmodmap [] (1) - utility for modifying keymaps and pointer button mappings in X
+xmore [] (1) - plain text display program for the X Window System
+xneko [] (6) - cat-and-mouse chase in an X window
+xon [] (1) - start an X program on a remote machine
+xorg.conf [] (5) - configuration File for Xorg X server
+xpaint [] (1) - Simple Paint program
+xpdf [] (1) - Portable Document Format (PDF) file viewer for X (version 3.02)
+xpdfrc [] (5) - configuration file for Xpdf tools (version 3.02)
+xplsprinters [] (1) - shows a list of Xprint printers and it's attributes
+xpmroot [] (1) - Sets the root window of the current X display to an Xpm pixmap
+xpmtoppm [] (1) - convert an X11 pixmap into a PPM image
+xpr [] (1) - print an X window dump
+xprehashprinterlist [] (1) - Recomputes the list of available printers
+xprop [] (1) - property displayer for X
+xqmstats [] (8) - Display XFS quota manager statistics from /proc
+xrandr [] (1) - primitive command line interface to RandR extension
+xrayswarm [] (6) - swarms with color trails
+xrdb [] (1) - X server resource database utility
+xrefresh [] (1) - refresh all or part of an X screen
+xroach [] (6) - cockroaches hide under your windows
+xsane [] (1) - scanner frontend for SANE
+xscanimage [] (1) - scan an image
+xscope [] (1) - X Window Protocol Viewer
+xscreensaver [] (1) - command - control a running xscreensaver process
+xscreensaver [] (1) - demo - interactively control the background xscreensaver daemon
+xscreensaver [] (1) - extensible screen saver framework, plus locking
+xscreensaver [] (1) - getimage - put some randomly-selected image on the root window
+xscreensaver [] (1) - getimage-file - put a randomly-selected image on the root window
+xscreensaver [] (1) - getimage-video - put a video frame on the root window
+xscreensaver [] (1) - text - prints some text to stdout, for use by screen savers
+xscreensaver [] (6) - gl-helper - figure out which X visual to use for GL programs
+xset [] (1) - user preference utility for X
+xsetmode [] (1) - set the mode for an X Input device
+xsetpointer [] (1) - set an X Input device as the main pointer
+xsetroot [] (1) - root window parameter setting utility for X
+xsldbg [] (1) - A command line tool to debug XSLT scripts
+xsltproc [] (1) - command line XSLT processor
+xsm [] (1) - X Session Manager
+xsnow [] (6) - create a snowy and Santa-y desktop
+xspirograph [] (6) - simulates the rotation of a disk inside a circular rim
+xstdcmap [] (1) - X standard colormap utility
+xsubpp [] (1) - compiler to convert Perl XS code into C code
+xterm [] (1) - terminal emulator for X
+xtotroff [] (1) - convert X font metrics into GNU troff font metrics
+xtrapchar [] (1) - XTrap sample clients
+xtrapin [] (1) - XTrap sample clients
+xtrapinfo [] (1) - XTrap sample clients
+xtrapout [] (1) - XTrap sample clients
+xtrapproto [] (1) - XTrap sample clients
+xtrapreset [] (1) - XTrap sample clients
+xtrapstats [] (1) - XTrap sample clients
+xv [] (1) - interactive image display for the X Window System
+xvidtune [] (1) - video mode tuner for Xorg
+xvinfo [] (1) - Print out X-Video extension adaptor information
+xvminitoppm [] (1) - convert a XV thumbnail picture to PPM
+xvpictoppm [] (1) - converts XV 'thumbnail' files to standard PPM format
+xwd [] (1) - dump an image of an X window
+xwdtopnm [] (1) - convert a X11 or X10 window dump file into a portable anymap
+xwininfo [] (1) - window information utility for X
+xwmconfig [] (1) - choose a default window manager for X
+xwud [] (1) - image displayer for X
+xxd [] (1) - make a hexdump or do the reverse
+xxgdb [] (1) - X window system interface to the gdb debugger
+y0 [] (3) - Bessel functions of the second kind
+y0f [] (3) - Bessel functions of the second kind
+y0l [] (3) - Bessel functions of the second kind
+y1 [] (3) - Bessel functions of the second kind
+y1f [] (3) - Bessel functions of the second kind
+y1l [] (3) - Bessel functions of the second kind
+yacc (1) - GNU Project parser generator
+ybmtopbm [] (1) - convert a Bennet Yee face file into a portable bitmap
+yes [] (1) - output a string repeatedly until killed
+yn [] (3) - Bessel functions of the second kind
+ynf [] (3) - Bessel functions of the second kind
+ynl [] (3) - Bessel functions of the second kind
+ypbind [] (8) - NIS binding process
+ypcat [] (1) - print values of all keys in a NIS database
+ypchfn [] (1) - change your password in the NIS database
+ypchsh [] (1) - change your password in the NIS database
+ypdomainname [] (1) - show or set the system's NIS/YP domain name
+ypdomainname [] (8) - set or display name of current NIS(YP) domain
+yphelper [] (8) - helper application for internal use
+ypinit [] (8) - NIS database install and build program
+ypmatch [] (1) - print the values of one or more keys from a NIS map
+yppasswd [] (1) - change your password in the NIS database
+yppoll [] (8) - return version and master server of a NIS map
+yppush [] (8) - force propagation of changed NIS databases
+ypserv [] (8) - NIS server
+ypserv.conf [] (5) - configuration file for ypserv and rpc.ypxfrd
+ypset [] (8) - bind ypbind to a particular NIS server
+yptest [] (8) - test NIS configuration
+ypwhich [] (1) - return name of NIS server or map master
+ypxfr [] (8) - transfer NIS database from remote server to local host
+ytalk [] (1) - A multi-user chat program
+yuvplittoppm [] (1) - convert a Y- and U- and a V-file into a portable pixmap
+yuvtoppm [] (1) - convert Abekas YUV bytes into a portable pixmap
+zcat [] (1) - compress and expand data (version 4.1)
+zcat [] (1) - compress or expand files
+zcmp [] (1) - compare compressed files
+zdiff [] (1) - compare compressed files
+zdump [] (8) - timezone dumper
+zeisstopnm [] (1) - convert a Zeiss confocal file into a portable anymap
+zenmap [] (1) - Graphical Nmap frontend and results viewer
+zero [] (4) - data sink
+zforce [] (1) - force a '.gz' extension on all gzip files
+zgrep [] (1) - search possibly compressed files for a regular expression
+zic [] (8) - timezone compiler
+zic2xpm [] (6) - Tool to convert ZIICS chess pieces into XBoard (XPM/XIM) pieces
+zip [] (1) - package and compress (archive) files
+zip_add, [zip_add] (3) - .Nm zip_replace add file to zip archive or replace file in zip archive
+zip_add, [zip_replace] (3) - .Nm zip_replace add file to zip archive or replace file in zip archive
+zip_add_dir [] (3) - add directory to zip archive
+zip_close [] (3) - close zip archive
+zip_delete [] (3) - delete file from zip archive
+zip_error_clear, [zip_error_clear] (3) - .Nm zip_file_error_clear clear error state for archive or file
+zip_error_clear, [zip_file_error_clear] (3) - .Nm zip_file_error_clear clear error state for archive or file
+zip_error_get, [zip_error_get] (3) - .Nm zip_file_error_get get error codes for archive or file
+zip_error_get, [zip_file_error_get] (3) - .Nm zip_file_error_get get error codes for archive or file
+zip_error_get_sys_type [] (3) - get type of system error code
+zip_error_to_str [] (3) - get string representation of zip error
+zip_errors [] (3) - list of all libzip error codes
+zip_fclose [] (3) - close file in zip archive
+zip_file_strerror, [zip_file_strerror] (3) - .Nm zip_strerror get string representation for a zip error
+zip_file_strerror, [zip_strerror] (3) - .Nm zip_strerror get string representation for a zip error
+zip_fopen, [zip_fopen] (3) - .Nm zip_fopen_index open file in zip archive for reading
+zip_fopen, [zip_fopen_index] (3) - .Nm zip_fopen_index open file in zip archive for reading
+zip_fread [] (3) - read from file
+zip_get_archive_comment [] (3) - get zip archive comment
+zip_get_archive_flag [] (3) - get status flags for zip
+zip_get_file_comment [] (3) - get comment for file in zip
+zip_get_name [] (3) - get name of file by index
+zip_get_num_files [] (3) - get number of files in archive
+zip_name_locate [] (3) - get index of file by name
+zip_open [] (3) - open zip archive
+zip_rename [] (3) - rename file in zip archive
+zip_set_archive_comment [] (3) - set zip archive comment
+zip_set_archive_flag [] (3) - set zip archive flag
+zip_set_file_comment [] (3) - set comment for file in zip
+zip_source_buffer [] (3) - create zip data source from buffer
+zip_source_file [] (3) - create data source from a file
+zip_source_filep [] (3) - create data source from FILE *
+zip_source_free [] (3) - free zip data source
+zip_source_function [] (3) - create data source from function
+zip_source_zip [] (3) - create data source from zip file
+zip_stat, [zip_stat] (3) - .Nm zip_stat_index get information about file
+zip_stat, [zip_stat_index] (3) - .Nm zip_stat_index get information about file
+zip_stat_init [] (3) - initialize zip_stat structure
+zip_unchange [] (3) - undo changes to file in zip archive
+zip_unchange_all [] (3) - undo all changes in a zip archive
+zip_unchange_archive [] (3) - undo global changes to zip archive
+zipcloak [] (1) - package and compress (archive) files
+zipcmp [] (1) - compare contents of zip archives
+zipgrep [] (1) - search files in a ZIP archive for lines matching a pattern
+zipinfo [] (1) - list detailed information about a ZIP archive
+zipmerge [] (1) - merge zip archives
+zipnote [] (1) - package and compress (archive) files
+zipsplit [] (1) - package and compress (archive) files
+ziptool [] (1) - Tool for IOMega JAZ and ZIP drives
+ziptorrent [] (1) - torrentzip zip archives
+zless [] (1) - file perusal filter for crt viewing of compressed text
+zlib [] (3) - compression/decompression library
+zmore [] (1) - file perusal filter for crt viewing of compressed text
+znew [] (1) - recompress .Z files to .gz files
+zonetab2pot.py [] (1) - Converts a timezone list to a PO file template
+zoo [] (1) - manipulate archives of files in compressed form
+zoom [] (6) - wander around magnified desktop
+zsh [] (1) - the Z shell
+zshall [] (1) - the Z shell meta-man page
+zshbuiltins [] (1) - zsh built-in commands
+zshcalsys [] (1) - zsh calendar system
+zshcompctl [] (1) - zsh programmable completion
+zshcompsys [] (1) - zsh completion system
+zshcompwid [] (1) - zsh completion widgets
+zshcontrib [] (1) - user contributions to zsh
+zshexpn [] (1) - zsh expansion and substitution
+zshmisc [] (1) - everything and then some
+zshmodules [] (1) - zsh loadable modules
+zshoptions [] (1) - zsh options
+zshparam [] (1) - zsh parameters
+zshroadmap [] (1) - informal introduction to the zsh manual
+zshtcpsys [] (1) - zsh tcp system
+zshzftpsys [] (1) - zftp function front-end
+zshzle [] (1) - zsh command line editor
diff --git a/source/ap/man/doinst.sh b/source/ap/man/doinst.sh
new file mode 100644
index 000000000..22fa61d14
--- /dev/null
+++ b/source/ap/man/doinst.sh
@@ -0,0 +1,14 @@
+#!/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/man.conf.new
+
diff --git a/source/ap/man/man-1.6f.nroff.mandoc.diff b/source/ap/man/man-1.6f.nroff.mandoc.diff
new file mode 100644
index 000000000..6b14b3e7e
--- /dev/null
+++ b/source/ap/man/man-1.6f.nroff.mandoc.diff
@@ -0,0 +1,11 @@
+--- ./src/man.conf.in.orig 2007-08-20 23:15:21.000000000 -0500
++++ ./src/man.conf.in 2009-08-08 20:53:33.000000000 -0500
+@@ -89,7 +89,7 @@
+ # causes problems, add the -c option to TROFF, NROFF, JNROFF.
+ #
+ TROFF @troff@
+-NROFF @nroff@
++NROFF /usr/bin/nroff -mandoc
+ JNROFF @jnroff@
+ EQN @eqn@
+ NEQN @neqn@
diff --git a/source/ap/man/man.SlackBuild b/source/ap/man/man.SlackBuild
new file mode 100755
index 000000000..6ee765c3f
--- /dev/null
+++ b/source/ap/man/man.SlackBuild
@@ -0,0 +1,90 @@
+#!/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=1.6f
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-man
+
+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 $PKG
+mkdir -p $TMP $PKG
+rm -rf man-$VERSION
+tar xvf $CWD/man-$VERSION.tar.bz2
+cd man-$VERSION
+
+# In man.conf, set NROFF to "/usr/bin/nroff -mandoc" rather
+# than "/usr/bin/nroff -Tlatin1". This works better with
+# modern console encodings. Thanks to rg3.
+zcat $CWD/man-1.6f.nroff.mandoc.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 \) \
+ -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 +lang all +traditional -confdir /usr/lib${LIBDIRSUFFIX}
+make
+make install PREFIX=$PKG
+mv $PKG/usr/lib${LIBDIRSUFFIX}/man.conf $PKG/usr/lib${LIBDIRSUFFIX}/man.conf.new
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+( cd $PKG/usr/man
+ find . -name "*.?" -exec gzip -9 {} \;
+ # hack to remove empty man directories:
+ ( find . -type d | xargs rmdir ) 2> /dev/null
+ ( find . -type d | xargs rmdir ) 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/man-$VERSION
+cp -a COPYING* INSTALL LSM README TODO $PKG/usr/doc/man-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz | sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#g" \
+ > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/man-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/man/slack-desc b/source/ap/man/slack-desc
new file mode 100644
index 000000000..284c863c6
--- /dev/null
+++ b/source/ap/man/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------------------------------------------------------|
+man: man (format and display the on-line manual pages)
+man:
+man: The man package is a collection of tools used for searching and
+man: reading the online system documentation. In fact, on most UNIX-like
+man: operating systems it is the primary means of finding out how programs
+man: on the system work. For example, 'man man' will display the
+man: documentation for man itself.
+man:
+man: Man requires the groff text processing package.
+man:
+man:
diff --git a/source/ap/mc/mc.SlackBuild b/source/ap/mc/mc.SlackBuild
new file mode 100755
index 000000000..8beae8b41
--- /dev/null
+++ b/source/ap/mc/mc.SlackBuild
@@ -0,0 +1,108 @@
+#!/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=20090714_git
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+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-mc
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+
+cd $TMP
+rm -rf mc-$VERSION
+tar xvf $CWD/mc-$VERSION.tar.xz || exit 1
+cd mc-$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 {} \;
+
+./autogen.sh
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --localstatedir=/var \
+ --docdir=/usr/doc/mc-$VERSION \
+ --enable-extcharset \
+ --enable-netcode \
+ --enable-background \
+ --enable-charset \
+ --with-gpm-mouse \
+ --with-ext2undel \
+ --with-x=yes \
+ --with-vfs \
+ --with-samba \
+ --with-configdir=/etc/samba \
+ --with-codepagedir=/etc/codepages \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make DESTDIR=$PKG install || 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/share/mc/bin
+cp -a $CWD/profile.d/mc-wrapper.* $PKG/usr/share/mc/bin
+chown root:root $PKG/usr/share/mc/bin/*
+chmod 755 $PKG/usr/share/mc/bin/*
+mkdir -p $PKG/etc/profile.d
+cp -a $CWD/profile.d/mc.* $PKG/etc/profile.d
+chown root:root $PKG/etc/profile.d/*
+chmod 755 $PKG/etc/profile.d/*
+
+( 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/mc-$VERSION
+cp -a \
+ AUTHORS doc/COPYING* doc/FAQ doc/HACKING doc/INSTALL doc/MAINTAINERS doc/NEWS doc/README* doc/TODO \
+ $PKG/usr/doc/mc-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/mc-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/mc/profile.d/mc-wrapper.csh b/source/ap/mc/profile.d/mc-wrapper.csh
new file mode 100755
index 000000000..7b4c383d9
--- /dev/null
+++ b/source/ap/mc/profile.d/mc-wrapper.csh
@@ -0,0 +1,20 @@
+set MC_USER="`id | sed 's/[^(]*(//;s/).*//'`"
+
+if ($?TMPDIR) then
+ setenv MC_PWD_FILE $TMPDIR/mc-$MC_USER/mc.pwd.$$
+else
+ setenv MC_PWD_FILE /tmp/mc-$MC_USER/mc.pwd.$$
+endif
+
+/usr/bin/mc -P "$MC_PWD_FILE" $*
+
+if (-r "$MC_PWD_FILE") then
+ setenv MC_PWD "`cat '$MC_PWD_FILE'`"
+ if ( -d "$MC_PWD" ) then
+ cd "$MC_PWD"
+ endif
+ unsetenv MC_PWD
+endif
+
+rm -f "$MC_PWD_FILE"
+unsetenv MC_PWD_FILE
diff --git a/source/ap/mc/profile.d/mc-wrapper.sh b/source/ap/mc/profile.d/mc-wrapper.sh
new file mode 100755
index 000000000..36db15747
--- /dev/null
+++ b/source/ap/mc/profile.d/mc-wrapper.sh
@@ -0,0 +1,14 @@
+MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
+MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
+/usr/bin/mc -P "$MC_PWD_FILE" "$@"
+
+if test -r "$MC_PWD_FILE"; then
+ MC_PWD="`cat "$MC_PWD_FILE"`"
+ if test -n "$MC_PWD" && test -d "$MC_PWD"; then
+ cd "$MC_PWD"
+ fi
+ unset MC_PWD
+fi
+
+rm -f "$MC_PWD_FILE"
+unset MC_PWD_FILE
diff --git a/source/ap/mc/profile.d/mc.csh b/source/ap/mc/profile.d/mc.csh
new file mode 100755
index 000000000..5a614bb22
--- /dev/null
+++ b/source/ap/mc/profile.d/mc.csh
@@ -0,0 +1 @@
+alias mc 'source /usr/share/mc/bin/mc-wrapper.csh'
diff --git a/source/ap/mc/profile.d/mc.sh b/source/ap/mc/profile.d/mc.sh
new file mode 100755
index 000000000..8198ab456
--- /dev/null
+++ b/source/ap/mc/profile.d/mc.sh
@@ -0,0 +1 @@
+alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
diff --git a/source/ap/mc/slack-desc b/source/ap/mc/slack-desc
new file mode 100644
index 000000000..be6ca439a
--- /dev/null
+++ b/source/ap/mc/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------------------------------------------------------|
+mc: mc (Midnight Commander file manager)
+mc:
+mc: The Midnight Commander is a Norton Commander clone, a program that
+mc: manipulates and manages files and directories. Useful, fast, and has
+mc: color displays on the Linux console. Mouse support is provided
+mc: through the gpm mouse server. This is a lightweight compilation of
+mc: mc for use on the text console or in an xterm.
+mc:
+mc: mc was written by Miguel de Icaza and Mauricio Plaza.
+mc:
+mc:
diff --git a/source/ap/most/most.SlackBuild b/source/ap/most/most.SlackBuild
new file mode 100755
index 000000000..8d4456a08
--- /dev/null
+++ b/source/ap/most/most.SlackBuild
@@ -0,0 +1,89 @@
+#!/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=5.0.0a
+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-most
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf most-$VERSION
+tar xvf $CWD/most-$VERSION.tar.bz2 || exit 1
+cd most-$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 \
+ --mandir=/usr/man \
+ --docdir=/usr/doc \
+ --with-slang=/usr \
+ --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
+
+# Was --mandir ignored?
+if [ -d $PKG/usr/share/man ]; then
+ mv $PKG/usr/share/man $PKG/usr
+fi
+
+gzip -9 $PKG/usr/man/man?/*
+
+mv $PKG/usr/share/doc $PKG/usr
+mv $PKG/usr/doc/most $PKG/usr/doc/most-$VERSION
+for file in $PKG/usr/doc/most-$VERSION/* ; do
+ if [ -r `basename $file` ]; then
+ cp -a `basename $file` $file
+ fi
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/most-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/most/slack-desc b/source/ap/most/slack-desc
new file mode 100644
index 000000000..1d5b44930
--- /dev/null
+++ b/source/ap/most/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------------------------------------------------------|
+most: most (another pager, like 'more' and 'less')
+most:
+most: most is a paging program that displays, one windowful at a time, the
+most: contents of a file on a terminal. Unlike other well-known paging
+most: programs, most supports multiple windows and can scroll left and
+most: right. Why settle for less?
+most:
+most: 'most' was written by John E. Davis.
+most:
+most:
+most:
diff --git a/source/ap/mpg321/mpg321.SlackBuild b/source/ap/mpg321/mpg321.SlackBuild
new file mode 100755
index 000000000..340c32703
--- /dev/null
+++ b/source/ap/mpg321/mpg321.SlackBuild
@@ -0,0 +1,77 @@
+#!/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
new file mode 100644
index 000000000..81b435b58
--- /dev/null
+++ b/source/ap/mpg321/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------------------------------------------------------|
+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/doinst.sh b/source/ap/mysql/doinst.sh
new file mode 100644
index 000000000..22f77474e
--- /dev/null
+++ b/source/ap/mysql/doinst.sh
@@ -0,0 +1,22 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.mysqld.new:
+if [ -e etc/rc.d/rc.mysqld ]; then
+ cp -a etc/rc.d/rc.mysqld etc/rc.d/rc.mysqld.new.incoming
+ cat etc/rc.d/rc.mysqld.new > etc/rc.d/rc.mysqld.new.incoming
+ mv etc/rc.d/rc.mysqld.new.incoming etc/rc.d/rc.mysqld.new
+fi
+
+config etc/rc.d/rc.mysqld.new
+
diff --git a/source/ap/mysql/mirror-url b/source/ap/mysql/mirror-url
new file mode 100644
index 000000000..37be0283c
--- /dev/null
+++ b/source/ap/mysql/mirror-url
@@ -0,0 +1 @@
+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
new file mode 100755
index 000000000..9b06d386b
--- /dev/null
+++ b/source/ap/mysql/mysql-embedded.build
@@ -0,0 +1,46 @@
+#!/bin/sh
+# Build and install MySQL on Slackware
+# by: David Cantrell <david@slackware.com>
+# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com>
+
+VERSION=5.0.84
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mysql
+
+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 mysql-$VERSION
+tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1
+cd mysql-$VERSION
+
+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 \
+ --without-berkeley-db --without-row-based-replication \
+ --without-readline --disable-shared --with-charset=utf8 \
+ --without-debug --with-pthread --without-openssl --without-query-cache \
+ --without-geometry --with-pic
+
+make -j6 || make || exit 1
+
+cp libmysqld/libmysqld.a /usr/lib${LIBDIRSUFFIX}/mysql/
+
diff --git a/source/ap/mysql/mysql.SlackBuild b/source/ap/mysql/mysql.SlackBuild
new file mode 100755
index 000000000..16ba3efa8
--- /dev/null
+++ b/source/ap/mysql/mysql.SlackBuild
@@ -0,0 +1,182 @@
+#!/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.
+
+# Build and install MySQL on Slackware
+# by: David Cantrell <david@slackware.com>
+# Currently maintained by: Patrick Volkerding <volkerdi@slackware.com>
+
+
+VERSION=5.0.84
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mysql
+
+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 mysql-$VERSION
+tar xvf $CWD/mysql-$VERSION.tar.?z* || exit 1
+cd mysql-$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 -felide-constructors -fno-exceptions -fno-rtti" \
+CXX=gcc \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-mysqld-user=mysql \
+ --with-unix-socket-path=/var/run/mysql/mysql.sock \
+ --localstatedir=/var/lib/mysql \
+ --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 \
+ --build=$ARCH-slackware-linux
+#
+# --without-readline
+
+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
+
+# Install support files
+mkdir -p $PKG/etc
+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* \
+ $PKG/usr/doc/mysql-$VERSION
+( cd Docs
+ 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
+find $PKG/usr/doc/mysql-$VERSION -type f -exec chmod 0644 {} \;
+
+# This is the directory where databases are stored
+mkdir -p $PKG/var/lib/mysql
+chown mysql.mysql $PKG/var/lib/mysql
+chmod 0750 $PKG/var/lib/mysql
+
+# This is where the socket is stored
+mkdir -p $PKG/var/run/mysql
+chown mysql.mysql $PKG/var/run/mysql
+chmod 0755 $PKG/var/run/mysql
+
+# Do not include the test suite:
+rm -rf $PKG/usr/mysql-test
+
+# Add init script:
+mkdir -p $PKG/etc/rc.d
+# This is intentionally chmod 644.
+zcat $CWD/rc.mysqld.gz > $PKG/etc/rc.d/rc.mysqld.new
+
+# Install script:
+mkdir -p $PKG/install
+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
+ ( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ rm -f libmysqlclient.so libmysqlclient.so.15
+ ln -sf mysql/libmysqlclient.so .
+ ln -sf mysql/libmysqlclient.so.15 .
+ )
+else
+ exit 1
+fi
+if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/mysql/libmysqlclient_r.so.15 ]; then
+ ( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ rm -f libmysqlclient_r.so libmysqlclient_r.so.15
+ ln -sf mysql/libmysqlclient_r.so .
+ ln -sf mysql/libmysqlclient_r.so.15 .
+ )
+else
+ exit 1
+fi
+
+# Packaging standards:
+rm -f $PKG/usr/info/dir
+
+# 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
+
+# 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/mysql/rc.mysqld b/source/ap/mysql/rc.mysqld
new file mode 100644
index 000000000..300e6eb2d
--- /dev/null
+++ b/source/ap/mysql/rc.mysqld
@@ -0,0 +1,86 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+# Copyright 2008 Patrick J. Volkerding, Sebeka, MN
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database. To install an initial
+# database, do this as root:
+#
+# mysql_install_db --user=mysql
+#
+# Note that the mysql user must exist in /etc/passwd, and the created files
+# will be owned by this dedicated user. This is important, or else mysql
+# (which runs as user "mysql") will not be able to write to the database
+# later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+#
+# To increase system security, consider using "mysql_secure_installation"
+# as well. For more information on this tool, please read:
+# man mysql_secure_installation
+
+# To allow outside connections to the database comment out the next line.
+# If you don't need incoming network connections, then leave the line
+# uncommented to improve system security.
+SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+ if [ -x /usr/bin/mysqld_safe ]; then
+ # If there is an old PID file (no mysqld running), clean it up:
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ if ! ps axc | grep mysqld 1> /dev/null 2> /dev/null ; then
+ echo "Cleaning up old /var/run/mysql/mysql.pid."
+ rm -f /var/run/mysql/mysql.pid
+ fi
+ fi
+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+ fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+ # If there is no PID file, ignore this request...
+ if [ -r /var/run/mysql/mysql.pid ]; then
+ killall mysqld
+ # Wait at least one minute for it to exit, as we don't know how big the DB is...
+ for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+ if [ ! -r /var/run/mysql/mysql.pid ]; then
+ break;
+ fi
+ sleep 1
+ done
+ if [ "$second" = "60" ]; then
+ echo "WARNING: Gave up waiting for mysqld to exit!"
+ sleep 15
+ fi
+ fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+ mysqld_stop
+ mysqld_start
+}
+
+case "$1" in
+'start')
+ mysqld_start
+ ;;
+'stop')
+ mysqld_stop
+ ;;
+'restart')
+ mysqld_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/source/ap/mysql/slack-desc b/source/ap/mysql/slack-desc
new file mode 100644
index 000000000..29e1b8be4
--- /dev/null
+++ b/source/ap/mysql/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------------------------------------------------------|
+mysql: mysql (SQL-based relational database server)
+mysql:
+mysql: MySQL is a fast, multi-threaded, multi-user, and robust SQL
+mysql: (Structured Query Language) database server. It comes with a nice API
+mysql: which makes it easy to integrate into other applications.
+mysql:
+mysql: The home page for MySQL is http://www.mysql.com/
+mysql:
+mysql:
+mysql:
+mysql:
diff --git a/source/ap/nano/nano.SlackBuild b/source/ap/nano/nano.SlackBuild
new file mode 100755
index 000000000..7a1440e01
--- /dev/null
+++ b/source/ap/nano/nano.SlackBuild
@@ -0,0 +1,117 @@
+#!/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=nano
+VERSION=${VERSION:-2.0.9}
+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-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION || 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 \
+ --sysconfdir=/etc \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --program-prefix= \
+ --program-suffix= \
+ --enable-color \
+ --enable-multibuffer \
+ --enable-nanorc \
+ --enable-all \
+ --enable-utf8 \
+ --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 \
+ ABOUT-NLS AUTHORS BUGS COPYING* INSTALL NEWS README* THANKS TODO UPGRADE \
+ doc/faq.html doc/nanorc.sample \
+ $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/nano/slack-desc b/source/ap/nano/slack-desc
new file mode 100644
index 000000000..8b9b54c8a
--- /dev/null
+++ b/source/ap/nano/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------------------------------------------------------|
+nano: nano (Nano's ANOther editor, an enhanced free Pico clone)
+nano:
+nano: nano is a small, free, and friendly editor from the GNU project. It
+nano: aims to copy Pico's look and feel while providing additional (or
+nano: disabled by default) features that are missing from Pico, such as
+nano: "search and replace" or "go to line and column number".
+nano:
+nano: Chris Allegretta is Nano's author.
+nano:
+nano:
+nano:
diff --git a/source/ap/normalize/normalize.SlackBuild b/source/ap/normalize/normalize.SlackBuild
new file mode 100755
index 000000000..0a40ec1e4
--- /dev/null
+++ b/source/ap/normalize/normalize.SlackBuild
@@ -0,0 +1,80 @@
+#!/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.7.7
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-normalize
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf normalize-$VERSION
+tar xvf $CWD/normalize-$VERSION.tar.bz2 || exit 1
+cd normalize-$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 \
+ --enable-xmms \
+ --with-mad \
+ --build=$ARCH-slackware-linux
+ #--without-audiofile \
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+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
+
+mkdir -p $PKG/usr/doc/normalize-$VERSION
+cp -a \
+ COPYING INSTALL NEWS README THANKS TODO \
+ $PKG/usr/doc/normalize-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/normalize-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/normalize/slack-desc b/source/ap/normalize/slack-desc
new file mode 100644
index 000000000..156c080ff
--- /dev/null
+++ b/source/ap/normalize/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------------------------------------------------------|
+normalize: normalize (adjusts volume levels of audio files)
+normalize:
+normalize: normalize is a tool for adjusting the volume of audio files to a
+normalize: standard level. This is useful for things like creating mix CDs
+normalize: from mp3 collections, where different recording levels on
+normalize: different albums can cause the volume to vary greatly from song
+normalize: to song. The package also contains an XMMS plugin.
+normalize:
+normalize: Chris Vaill is the author of normalize.
+normalize:
+normalize:
+
diff --git a/source/ap/ntfsprogs/ntfsprogs.SlackBuild b/source/ap/ntfsprogs/ntfsprogs.SlackBuild
new file mode 100755
index 000000000..e18fa97dc
--- /dev/null
+++ b/source/ap/ntfsprogs/ntfsprogs.SlackBuild
@@ -0,0 +1,121 @@
+#!/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=ntfsprogs
+VERSION=${VERSION:-2.0.0}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+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-${PKGNAM}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION || 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} \
+ --bindir=/bin \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --disable-gnome-vfs \
+ --disable-ntfsmount \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+mv $PKG/usr/lib${LIBDIRSUFFIX}/libntfs.so.* $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf ../../lib${LIBDIRSUFFIX}/libntfs* . )
+
+# 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* CREDITS INSTALL NEWS README TODO* doc \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/doc/Makefile*
+
+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/ntfsprogs/slack-desc b/source/ap/ntfsprogs/slack-desc
new file mode 100644
index 000000000..4ed38c92b
--- /dev/null
+++ b/source/ap/ntfsprogs/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------------------------------------------------------|
+ntfsprogs: ntfsprogs (utilities for working with NTFS volumes)
+ntfsprogs:
+ntfsprogs: The ntfsprogs includes utilities for doing all required tasks to NTFS
+ntfsprogs: partitions. In general, just run a utility without any command line
+ntfsprogs: options to display the version number and usage syntax. The following
+ntfsprogs: utilities are implemented (so far): ntfsfix, mkntfs, ntfslabel,
+ntfsprogs: ntfsundelete, ntfsresize, ntfsclone, ntfscluster, ntfsinfo, ntfsls,
+ntfsprogs: ntfscat, ntfscp, and ntfsmount.
+ntfsprogs:
+ntfsprogs: The Linux-NTFS home page is: http://www.linux-ntfs.org/
+ntfsprogs:
diff --git a/source/ap/pm-utils/README.SLACKWARE b/source/ap/pm-utils/README.SLACKWARE
new file mode 100644
index 000000000..071624395
--- /dev/null
+++ b/source/ap/pm-utils/README.SLACKWARE
@@ -0,0 +1,119 @@
+README.SLACKWARE
+20090414 - rworkman@slackware.com
+
+===============================================================================
+PLEASE READ THIS ENTIRE FILE BEFORE REPORTING PROBLEMS OR ASKING FOR HELP!
+===============================================================================
+
+One of these routines should tell you whether any of the operations
+are supported by your current kernel/userspace at all:
+
+ for i in hibernate suspend suspend-hybrid ; do
+ pm-is-supported --$i \
+ && echo "$i is supported" \
+ || echo "$i is not supported" ;
+ done
+
+ *OR*
+
+ cat /sys/power/state
+
+Assuming they are supported, running "pm-suspend" as root should do a suspend
+to ram, and "pm-hibernate" should suspend to disk. Note that you must have a
+swap partition (or file, but partition is easier) which is large enough
+(2x ram is good here) and the relevant initrd lines and such for this to work.
+If you're not familiar with all of that, don't test pm-hibernate.
+I don't have hardware which supports suspend-hybrid, so I have no idea if/how
+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
+ initrd = /boot/initrd.gz
+ append = "resume=/dev/hda2"
+ root = /dev/hda1
+ label = Slackware
+ read-only
+
+/etc/mkinitrd.conf should look something like this:
+ MODULE_LIST="jfs"
+ ROOTDEV="/dev/hda1"
+ ROOTFS="jfs"
+ RESUMEDEV="/dev/hda2"
+
+mkinitrd command invocation would be this:
+ mkinitrd -c -k 2.6.29.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
+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).
+
+==============================================================================
+
+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:
+ http://people.freedesktop.org/~hughsient/quirk/quirk-suspend-try.html
+
+If you are able to get your machine to suspend/resume correctly by passing
+additional quirks on the command line, then I would like to know about it so
+that upstream hal-info can get the correct information to use. Please email
+the make/model and other relevant information about your machine along with
+the full output of "lshal" and "lspci" attached, and what extra quirks you
+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
+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
+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
+also available; none of these will cause the suspend to fail:
+ $NA (not applicable), $NX (hook not executable), and $DX (hook disabled)
+
+One way to contribute to pm-utils indirectly is by writing and sending any
+needed hooks scripts to upstream projects; as an example, the hook that
+ships with wicd was contributed by me. Ideally, the pm-utils package should
+have a very minimum number of hooks shipped with it, as they should ship with
+the package to which the hook pertains; for example, the grub package would
+ship its own hook.
+
+==============================================================================
+
+KNOWN ISSUES
+
+**** 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.
+
+The /usr/lib/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
+file.
+
+==============================================================================
+
diff --git a/source/ap/pm-utils/pm-utils.SlackBuild b/source/ap/pm-utils/pm-utils.SlackBuild
new file mode 100755
index 000000000..26e60714f
--- /dev/null
+++ b/source/ap/pm-utils/pm-utils.SlackBuild
@@ -0,0 +1,105 @@
+#!/bin/sh
+
+# Slackware build script for pm-utils
+
+# Copyright 2008, 2009 Robby Workman, Northport, Alabama, USA
+# 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.
+
+PRGNAM=pm-utils
+VERSION=1.2.5
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || 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" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --docdir=/usr/doc/$PRGNAM-$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
+)
+
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README* TODO \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PRGNAM-$VERSION/README.SLACKWARE
+
+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/ap/pm-utils/pm-utils.url b/source/ap/pm-utils/pm-utils.url
new file mode 100644
index 000000000..976c938fb
--- /dev/null
+++ b/source/ap/pm-utils/pm-utils.url
@@ -0,0 +1 @@
+http://pm-utils.freedesktop.org
diff --git a/source/ap/pm-utils/slack-desc b/source/ap/pm-utils/slack-desc
new file mode 100644
index 000000000..8791c9304
--- /dev/null
+++ b/source/ap/pm-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-------------------------------------------------------|
+pm-utils: pm-utils (Power Management Utilities)
+pm-utils:
+pm-utils: The pm-utils package provides simple shell command line tools to
+pm-utils: suspend and hibernate computers that can be used to run vendor or
+pm-utils: distribution supplied scripts on suspend and resume.
+pm-utils:
+pm-utils: Homepage: http://pm-utils.freedesktop.org/
+pm-utils:
+pm-utils:
+pm-utils:
+pm-utils:
diff --git a/source/ap/radeontool/radeontool.SlackBuild b/source/ap/radeontool/radeontool.SlackBuild
new file mode 100755
index 000000000..3292a21c7
--- /dev/null
+++ b/source/ap/radeontool/radeontool.SlackBuild
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# Copyright 2008 Robby Workman, Northport, Alabama, USA
+# 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=1.5
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-radeontool
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf radeontool-$VERSION
+tar xvf $CWD/radeontool-$VERSION.tar.gz
+cd radeontool-$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 a bad include
+zcat $CWD/radeontool.c.diff.gz | patch -p1 || exit 1
+
+gcc -Wall $SLKCFLAGS -o radeontool radeontool.c
+strip --strip-unneeded radeontool
+mkdir -p $PKG/usr/sbin
+cp -a radeontool $PKG/usr/sbin
+
+mkdir -p $PKG/usr/doc/radeontool-$VERSION
+cp -a CHANGES $PKG/usr/doc/radeontool-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/radeontool-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/radeontool/radeontool.c.diff b/source/ap/radeontool/radeontool.c.diff
new file mode 100644
index 000000000..156863ed5
--- /dev/null
+++ b/source/ap/radeontool/radeontool.c.diff
@@ -0,0 +1,12 @@
+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
new file mode 100644
index 000000000..7c7c1c6c4
--- /dev/null
+++ b/source/ap/radeontool/radeontool.info
@@ -0,0 +1,8 @@
+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/radeontool/slack-desc b/source/ap/radeontool/slack-desc
new file mode 100644
index 000000000..9eea43477
--- /dev/null
+++ b/source/ap/radeontool/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--------------------------------------------------|
+radeontool: radeontool (small utility for ati radeon-based laptops)
+radeontool:
+radeontool: Radeontool is a small utility to control ATI Radeon-based
+radeontool: laptops' backlight and external output functions
+radeontool:
+radeontool: Homepage: http://fdd.com/software/radeon/
+radeontool:
+radeontool:
+radeontool:
+radeontool:
+radeontool:
diff --git a/source/ap/rexima/rexima.SlackBuild b/source/ap/rexima/rexima.SlackBuild
new file mode 100755
index 000000000..4ef9ec9e5
--- /dev/null
+++ b/source/ap/rexima/rexima.SlackBuild
@@ -0,0 +1,68 @@
+#!/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=1.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-rexima
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf rexima-$VERSION
+tar xvf $CWD/rexima-$VERSION.tar.gz || exit 1
+cd rexima-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make || exit 1
+
+strip rexima
+mkdir -p $PKG/usr/bin
+cat rexima > $PKG/usr/bin/rexima
+chmod 755 $PKG/usr/bin/rexima
+
+mkdir -p $PKG/usr/man/man1
+cat rexima.1 | gzip -9c > $PKG/usr/man/man1/rexima.1.gz
+
+mkdir -p $PKG/usr/doc/rexima-$VERSION
+cp -a \
+ COPYING README ChangeLog NEWS \
+ $PKG/usr/doc/rexima-$VERSION
+chmod 644 $PKG/usr/doc/rexima-$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/rexima-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/rexima/slack-desc b/source/ap/rexima/slack-desc
new file mode 100644
index 000000000..8a8adabcc
--- /dev/null
+++ b/source/ap/rexima/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------------------------------------------------------|
+rexima: rexima (console audio mixer)
+rexima:
+rexima: Rexima is a curses-based interactive audio mixer. It can also be used
+rexima: from the command-line. It's designed to be small, fast, and
+rexima: straightforward. It also offers a command line mode so you can script
+rexima: mixer settings.
+rexima:
+rexima: Rexima was written by Russell Marks.
+rexima:
+rexima:
+rexima:
diff --git a/source/ap/rpm/Packages b/source/ap/rpm/Packages
new file mode 100644
index 000000000..f78d20ebb
--- /dev/null
+++ b/source/ap/rpm/Packages
Binary files differ
diff --git a/source/ap/rpm/doinst.sh b/source/ap/rpm/doinst.sh
new file mode 100644
index 000000000..8b00622b7
--- /dev/null
+++ b/source/ap/rpm/doinst.sh
@@ -0,0 +1,5 @@
+if [ ! -r var/lib/rpm/Packages ]; then
+ ( cd var/lib/rpm/tmp ; cp -a * .. )
+fi
+( cd var/lib/rpm && rm -f tmp/* && rmdir tmp )
+# Symlinks:
diff --git a/source/ap/rpm/rpm.SlackBuild b/source/ap/rpm/rpm.SlackBuild
new file mode 100755
index 000000000..a16f0a3ea
--- /dev/null
+++ b/source/ap/rpm/rpm.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Build RPM (of all things) for Slackware.
+
+VERSION=${VERSION:-4.7.0}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+fi
+
+NSS_INC="/usr/include/seamonkey/nss"
+NSPR_INC="/usr/include/seamonkey/nspr"
+DB_INC="/usr/include/db44"
+NSS_LIBS="/usr/lib${LIBDIRSUFFIX}/seamonkey"
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=/tmp/package-rpm
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf rpm-$VERSION
+xz -dc $CWD/rpm-$VERSION.tar.xz | tar xvf - || exit 1
+cd rpm-$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 have to tell it where to find Seamonkey's NSS.
+# Also, --enable-sqlite3 needs "-ldl" in LDFLAGS
+# And --enable-broken-chown fits, as ours follows symlinks.
+CFLAGS="$SLKCFLAGS -I$NSS_INC -I$NSPR_INC -I$DB_INC" \
+LDFLAGS="-L${NSS_LIBS} -ldl" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --enable-python \
+ --with-external-db \
+ --enable-broken-chown \
+ --without-hackingdocs \
+ --without-selinux \
+ --without-lua \
+ --without-dmalloc \
+ --enable-sqlite3 \
+ --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
+
+# Here's a bug - /var/tmp should NOT have mode 0755
+rmdir $PKG/var/tmp || exit 1
+
+# Compress man pages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+# Initialize a dummy package database
+mkdir -p $PKG/var/lib/rpm/tmp
+zcat $CWD/Packages.gz > $PKG/var/lib/rpm/tmp/Packages
+
+# Install docs
+mkdir -p $PKG/usr/doc/rpm-$VERSION
+cp -a \
+ CHANGES COPYING CREDITS GROUPS INSTALL README TODO doc/manual \
+ $PKG/usr/doc/rpm-$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/rpm-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/rpm/slack-desc b/source/ap/rpm/slack-desc
new file mode 100644
index 000000000..e41765e1a
--- /dev/null
+++ b/source/ap/rpm/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-------------------------------------------------------|
+rpm: rpm (RPM package format tool)
+rpm:
+rpm: RPM is a tool from Red Hat Software used to install and remove
+rpm: packages in the .rpm format. When installing RPM packages on
+rpm: Slackware, you may need to use the --nodeps and --force options.
+rpm: Before installing any binary package, it's wise to examine it to
+rpm: see what it's going to do, and if it will overwrite any files. You
+rpm: can use rpm2tgz to convert .rpm packages to .tgz packages so you
+rpm: can look them over.
+rpm:
+rpm:
diff --git a/source/ap/rzip/rzip.SlackBuild b/source/ap/rzip/rzip.SlackBuild
new file mode 100755
index 000000000..adcc2556b
--- /dev/null
+++ b/source/ap/rzip/rzip.SlackBuild
@@ -0,0 +1,84 @@
+#!/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.1
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+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-rzip
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf rzip-$VERSION
+tar xvf $CWD/rzip-$VERSION.tar.gz || exit 1
+cd rzip-$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 \
+ --program-prefix="" \
+ --program-suffix="" \
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+
+mkdir -p $PKG/bin
+cp rzip $PKG/bin
+chmod 755 $PKG/bin/rzip
+
+mkdir -p $PKG/usr/man/man1
+cat rzip.1 | gzip -9c > $PKG/usr/man/man1/rzip.1.gz
+
+mkdir -p $PKG/usr/doc/rzip-$VERSION
+cp -a \
+ COPYING \
+ $PKG/usr/doc/rzip-$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/rzip-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/rzip/slack-desc b/source/ap/rzip/slack-desc
new file mode 100644
index 000000000..155b90583
--- /dev/null
+++ b/source/ap/rzip/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------------------------------------------------------|
+rzip: rzip (a large-file compression program)
+rzip:
+rzip: rzip is a file compression program designed to do particularly well
+rzip: on very large files containing long distance redundancy.
+rzip:
+rzip: rzip was written by Andrew Tridgell.
+rzip:
+rzip:
+rzip:
+rzip:
+rzip:
diff --git a/source/ap/sc/sc-7.16.lsm b/source/ap/sc/sc-7.16.lsm
new file mode 100644
index 000000000..e37be385e
--- /dev/null
+++ b/source/ap/sc/sc-7.16.lsm
@@ -0,0 +1,17 @@
+Begin4
+Title: sc Spreadsheet Calculator
+Version: 7.16
+Entered-date: 2002-9-19
+Description: sc is a free curses-based spreadsheet program that uses
+ key bindings similar to vi and less.
+Keywords: spreadsheet calculator console textmode curses ncurses
+Author: Too numerous to mention.
+Maintained-by: nrocinu@myrealbox.com (Chuck Martin)
+Primary-site: ibiblio.org /pub/Linux/apps/financial/spreadsheet
+Alternate-site:
+Original-site:
+Platforms: Pre-7.x versions presumably worked on any Unix or Unix
+ clone, as well as VMS and DOS. Hopefully, this is still
+ true, but it's only been tested on Linux.
+Copying-policy: Public domain
+End
diff --git a/source/ap/sc/sc-gcc34.diff b/source/ap/sc/sc-gcc34.diff
new file mode 100644
index 000000000..28ec88107
--- /dev/null
+++ b/source/ap/sc/sc-gcc34.diff
@@ -0,0 +1,10 @@
+--- vi.c.orig 2005-01-15 16:56:05.632773048 +0000
++++ vi.c 2005-01-15 16:56:14.788381184 +0000
+@@ -40,7 +40,6 @@
+
+ #define istext(a) (isalnum(a) || ((a) == '_'))
+
+-#define bool int
+ #define true 1
+ #define false 0
+
diff --git a/source/ap/sc/sc-malloc.diff b/source/ap/sc/sc-malloc.diff
new file mode 100644
index 000000000..2133ed42e
--- /dev/null
+++ b/source/ap/sc/sc-malloc.diff
@@ -0,0 +1,13 @@
+--- xmalloc.c.orig 2004-07-11 22:34:48.681076912 +0200
++++ xmalloc.c 2004-07-11 22:34:57.150789320 +0200
+@@ -6,8 +6,8 @@
+ #include <curses.h>
+ #include "sc.h"
+
+-extern char *malloc();
+-extern char *realloc();
++extern void *malloc(size_t size);
++extern void *realloc();
+ extern void free();
+ void fatal();
+
diff --git a/source/ap/sc/sc.SlackBuild b/source/ap/sc/sc.SlackBuild
new file mode 100755
index 000000000..8a8bba72c
--- /dev/null
+++ b/source/ap/sc/sc.SlackBuild
@@ -0,0 +1,86 @@
+#!/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=7.16
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sc
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_sc.tar.gz
+mv $PKG/usr/lib $PKG/usr/lib${LIBDIRSUFFIX}
+
+cd $TMP
+tar xvf $CWD/sc-$VERSION.tar.gz || exit 1
+cd sc-$VERSION || exit 1
+# Old software, modern compiler:
+zcat $CWD/sc-gcc34.diff.gz | patch -p0 --verbose || exit 1
+zcat $CWD/sc-malloc.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 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make || exit 1
+
+cat sc > $PKG/usr/bin/sc
+cat scqref > $PKG/usr/bin/scqref
+cat psc > $PKG/usr/bin/psc
+
+name=sc NAME=SC LIBDIR=/usr/lib${LIBDIRSUFFIX}/sc sh torev sc.doc > sc.1
+name=sc NAME=SC LIBDIR=/usr/lib${LIBDIRSUFFIX}/sc sh torev psc.doc > psc.1
+cat sc.1 | gzip -9c > $PKG/usr/man/man1/sc.1.gz
+cat psc.1 | gzip -9c > $PKG/usr/man/man1/psc.1.gz
+
+mkdir -p $PKG/usr/doc/sc-$VERSION
+cp -a CHANGES README TODO $PKG/usr/doc/sc-$VERSION
+chmod 644 $PKG/usr/doc/sc-$VERSION/*
+cat tutorial.sc > $PKG/usr/lib${LIBDIRSUFFIX}/sc/tutorial.sc
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/sc-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/sc/slack-desc b/source/ap/sc/slack-desc
new file mode 100644
index 000000000..c64ef2f66
--- /dev/null
+++ b/source/ap/sc/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------------------------------------------------------|
+sc: sc (spreadsheet calculator)
+sc:
+sc: This is a simple curses-based spreadsheet program.
+sc:
+sc:
+sc:
+sc:
+sc:
+sc:
+sc:
+sc:
diff --git a/source/ap/screen/screen.SlackBuild b/source/ap/screen/screen.SlackBuild
new file mode 100755
index 000000000..a9f05634c
--- /dev/null
+++ b/source/ap/screen/screen.SlackBuild
@@ -0,0 +1,117 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+VERSION=${VERSION:-4.0.3}
+ARCH=${ARCH:-x86_64}
+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-screen
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf screen-$VERSION
+tar xjvf $CWD/screen-$VERSION.tar.bz2
+
+cd screen-$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 \
+ --with-sys-screenrc=/etc/screenrc \
+ --with-pty-mode=0620 \
+ --with-pty-group=5 \
+ --enable-telnet \
+ --disable-socket-dir \
+ --enable-locale \
+ --enable-colors256 \
+ --enable-rxvt_osc \
+ $ARCH-slackware-linux
+
+# Substitutions:
+perl -pi -e 's|.*#undef HAVE_BRAILLE.*|#define HAVE_BRAILLE 1|' config.h
+perl -pi -e 's|/usr/local/etc/screenrc|/etc/screenrc|' etc/etcscreenrc doc/*
+perl -pi -e 's|/local/etc/screenrc|/etc/screenrc|' doc/*
+
+# Build screen:
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Prepare package:
+( 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
+)
+# Sorry, pal. Not around here.
+chmod 755 $PKG/usr/bin/screen-$VERSION
+mkdir -p $PKG/etc/skel
+cat etc/etcscreenrc > $PKG/etc/screenrc.new
+cat etc/screenrc > $PKG/etc/skel/.screenrc.new
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+gzip -9 $PKG/usr/man/man1/*
+mkdir -p $PKG/usr/doc/screen-$VERSION
+chmod 644 doc/FAQ
+cp -a COPYING ChangeLog INSTALL NEWS README TODO \
+ doc/FAQ doc/README.DOTSCREEN \
+ $PKG/usr/doc/screen-$VERSION
+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/screenrc.new
+config etc/skel/.screenrc.new
+# This is probably safer than leaving the hidden .new file... maybe?
+rm -f etc/skel/.screenrc.new
+EOF
+
+# Build package:
+cd $PKG
+makepkg -l y -c n $TMP/screen-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/screen/slack-desc b/source/ap/screen/slack-desc
new file mode 100644
index 000000000..cfe3136b6
--- /dev/null
+++ b/source/ap/screen/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------------------------------------------------------|
+screen: screen (screen manager with VT100/ANSI terminal emulation)
+screen:
+screen: Screen is a full-screen window manager that multiplexes a physical
+screen: terminal between several processes (typically interactive shells).
+screen: Each virtual terminal provides the functions of a DEC VT100 terminal
+screen: and several control functions from the ISO 6492 (ECMA 48, ANSI X3.64)
+screen: and ISO 2022 standards (e.g. insert/delete line and support for
+screen: multiple character sets). There is a scrollback history buffer for
+screen: each virtual terminal and a copy-and-paste mechanism that allows
+screen: moving text regions between windows.
+screen:
diff --git a/source/ap/seejpeg/seejpeg-1.10.diff b/source/ap/seejpeg/seejpeg-1.10.diff
new file mode 100644
index 000000000..61a8be788
--- /dev/null
+++ b/source/ap/seejpeg/seejpeg-1.10.diff
@@ -0,0 +1,63 @@
+diff -c -r seejpeg-1.10.orig/Makefile seejpeg-1.10/Makefile
+*** seejpeg-1.10.orig/Makefile Sat Nov 6 21:55:19 1999
+--- seejpeg-1.10/Makefile Sat Apr 29 22:51:54 2000
+***************
+*** 6,25 ****
+ # $Id: Makefile,v 1.8 1999/11/07 05:55:19 evan Exp $
+
+ # The installation directories.
+! BIN= /usr/local/bin
+! MAN= /usr/local/man/man1
+
+ # See the README for a description of these options.
+ #OPTIONS= -DNO_32K_CASCADE -DTESTMODE=G640x480x32K -DBUG_WORKAROUND -DONLY_1_8_MODES
+ OPTIONS= -DBUG_WORKAROUND
+
+ # This should be the location of the JPEG v6 header files.
+! JPEG_HEADERS= -I /usr/local/include
+! #JPEG_HEADERS= -I /usr/X11R6/include
+
+ # This should be the location of the JPEG v6 libraries.
+! JPEG_LIBS= -L /usr/local/lib
+! #JPEG_LIBS= -L /usr/X11R6/lib
+
+ # These may be changed, if desired.
+
+--- 6,25 ----
+ # $Id: Makefile,v 1.8 1999/11/07 05:55:19 evan Exp $
+
+ # The installation directories.
+! BIN= /usr/bin
+! MAN= /usr/man/man1
+
+ # See the README for a description of these options.
+ #OPTIONS= -DNO_32K_CASCADE -DTESTMODE=G640x480x32K -DBUG_WORKAROUND -DONLY_1_8_MODES
+ OPTIONS= -DBUG_WORKAROUND
+
+ # This should be the location of the JPEG v6 header files.
+! #JPEG_HEADERS= -I /usr/local/include
+! JPEG_HEADERS= -I /usr/X11R6/include
+
+ # This should be the location of the JPEG v6 libraries.
+! #JPEG_LIBS= -L /usr/local/lib
+! JPEG_LIBS= -L /usr/X11R6/lib
+
+ # These may be changed, if desired.
+
+***************
+*** 29,35 ****
+ # Editing of the rest of this Makefile shouldn't be necessary.
+
+ CFLAGS= $(JPEG_HEADERS) -I jpeglib $(CCOPTS) $(OPTIONS)
+! LIBS= -lvga $(JPEG_LIBS) -ljpeg -lm
+ LDOPTS= -s
+
+ SEEJPEG= seejpeg.o jpeg.o image.o display.o cmap.o \
+--- 29,35 ----
+ # Editing of the rest of this Makefile shouldn't be necessary.
+
+ CFLAGS= $(JPEG_HEADERS) -I jpeglib $(CCOPTS) $(OPTIONS)
+! LIBS= -lvga jpeglib/libjpeg.a -lm
+ LDOPTS= -s
+
+ SEEJPEG= seejpeg.o jpeg.o image.o display.o cmap.o \
diff --git a/source/ap/seejpeg/seejpeg-1.10.lsm b/source/ap/seejpeg/seejpeg-1.10.lsm
new file mode 100644
index 000000000..da3644b74
--- /dev/null
+++ b/source/ap/seejpeg/seejpeg-1.10.lsm
@@ -0,0 +1,21 @@
+Begin3
+Title: seejpeg - another JPEG (+GIF+PPM+BMP+TARGA) viewer
+Version: 1.10
+Entered-date: 08NOV99
+Description: A JPEG image viewer which uses svgalib to display images.
+ It works out the best video mode to use based on the video
+ card, image size and user options. This can be overridden.
+ It contains GIF, PPM, BMP and TARGA viewing support, and can
+ show images in a slideshow.
+ This version adds a reload command, and support for a
+ large number of new 4x3 and 16x9 video modes added in svgalib
+ 1.4.0.
+Keywords: graphics JPEG GIF PPM BMP TARGA picture image viewer svgalib
+ slideshow
+Author: evan@cs.mu.oz.au (Evan Harris)
+Primary-site: sunsite.unc.edu /pub/Linux/apps/graphics/viewers/svga
+ 46550 seejpeg-1.10.tgz
+Platforms: svgalib 1.3.0 or greater, best with 1.4.0 or greater
+ libjpeg v6
+Copying-policy: Freely redistributable.
+End
diff --git a/source/ap/seejpeg/seejpeg.SlackBuild b/source/ap/seejpeg/seejpeg.SlackBuild
new file mode 100755
index 000000000..ca745063d
--- /dev/null
+++ b/source/ap/seejpeg/seejpeg.SlackBuild
@@ -0,0 +1,72 @@
+#!/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=1.10
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-seejpeg
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_seejpeg.tar.gz
+
+cd $TMP
+tar xvf $CWD/seejpeg-$VERSION.tgz || exit 1
+cd seejpeg-$VERSION || exit 1
+zcat $CWD/seejpeg-$VERSION.diff.gz | patch -p1 --verbose || exit 1
+rm -rf jpeglib
+tar xvf $CWD/libjpeg-6a.tar.gz || 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 {} \;
+
+( cd libjpeg-6a ; ./configure ; make )
+ln -sf libjpeg-6a jpeglib
+
+make seejpeg
+strip seejpeg
+cat seejpeg > $PKG/usr/bin/seejpeg
+
+cat seejpeg.1 | gzip -9c > $PKG/usr/man/man1/seejpeg.1.gz
+
+mkdir -p $PKG/usr/doc/seejpeg-$VERSION
+cp -a CHANGELOG README $PKG/usr/doc/seejpeg-$VERSION
+chmod 644 $PKG/usr/doc/seejpeg-$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/seejpeg-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/seejpeg/slack-desc b/source/ap/seejpeg/slack-desc
new file mode 100644
index 000000000..b6c325ea3
--- /dev/null
+++ b/source/ap/seejpeg/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------------------------------------------------------|
+seejpeg: seejpeg (console JPEG viewer)
+seejpeg:
+seejpeg: Seejpeg is an image viewer which uses SVGAlib. In spite of the name,
+seejpeg: it understands the JPEG, GIF, PPM, BMP and TARGA formats. One nice
+seejpeg: feature of seejpeg is that it automatically decides on the best video
+seejpeg: mode to use based on the image being displayed and the video card
+seejpeg: being used.
+seejpeg:
+seejpeg: Evan Harris is the author of seejpeg.
+seejpeg:
+seejpeg:
diff --git a/source/ap/slackpkg/README b/source/ap/slackpkg/README
new file mode 100644
index 000000000..985b0ca80
--- /dev/null
+++ b/source/ap/slackpkg/README
@@ -0,0 +1,4 @@
+NOTE:
+
+"slackpkg" is a shell script, so there is no source package.
+
diff --git a/source/ap/sox/slack-desc b/source/ap/sox/slack-desc
new file mode 100644
index 000000000..8b36469ea
--- /dev/null
+++ b/source/ap/sox/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------------------------------------------------------|
+sox: sox (universal sound sample translator)
+sox:
+sox: Sox is a universal sound converter, player, and recorder. It can
+sox: play, record, and convert between several sound file formats such as
+sox: .au, .snd, .voc and .wav.
+sox:
+sox:
+sox:
+sox:
+sox:
+sox:
diff --git a/source/ap/sox/sox.SlackBuild b/source/ap/sox/sox.SlackBuild
new file mode 100755
index 000000000..aea5d7c16
--- /dev/null
+++ b/source/ap/sox/sox.SlackBuild
@@ -0,0 +1,98 @@
+#!/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=14.3.0
+ARCH=${ARCH:-x86_64}
+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"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sox
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf sox-$VERSION
+tar xvf $CWD/sox-$VERSION.tar.?z* || exit 1
+cd sox-$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 \
+ --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 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/sox-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README \
+ $PKG/usr/doc/sox-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/sox-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/sqlite/COPYRIGHT b/source/ap/sqlite/COPYRIGHT
new file mode 100644
index 000000000..a89b4e720
--- /dev/null
+++ b/source/ap/sqlite/COPYRIGHT
@@ -0,0 +1,68 @@
+ SQLite Logo
+ Small. Fast. Reliable.
+ Choose any three.
+
+ About Sitemap Documentation Download License News Developers Support
+
+SQLite Copyright
+
+ +------------------+
+ | SQLite is in the |
+ | Public Domain |
+ +------------------+
+
+ All of the deliverable code in SQLite has been dedicated to the public domain by the authors. All code authors, and
+ representatives of the companies they work for, have signed affidavits dedicating their contributions to the public domain
+ and originals of those signed affidavits are stored in a firesafe at the main offices of Hwaci. Anyone is free to copy,
+ modify, publish, use, compile, sell, or distribute the original SQLite code, either in source code form or as a compiled
+ binary, for any purpose, commercial or non-commercial, and by any means.
+
+ The previous paragraph applies to the deliverable code in SQLite - those parts of the SQLite library that you actually
+ bundle and ship with a larger application. Portions of the documentation and some code used as part of the build process
+ might fall under other licenses. The details here are unclear. We do not worry about the licensing of the documentation
+ and build code so much because none of these things are part of the core deliverable SQLite library.
+
+ All of the deliverable code in SQLite has been written from scratch. No code has been taken from other projects or from
+ the open internet. Every line of code can be traced back to its original author, and all of those authors have public
+ domain dedications on file. So the SQLite code base is clean and is uncontaminated with licensed code from other projects.
+
+Obtaining An Explicit License To Use SQLite
+
+ Even though SQLite is in the public domain and does not require a license, some users want to obtain a license anyway.
+ Some reasons for obtaining a license include:
+
+ * You are using SQLite in a jurisdiction that does not recognize the public domain.
+ * You are using SQLite in a jurisdiction that does not recognize the right of an author to dedicate their work to the
+ public domain.
+ * You want to hold a tangible legal document as evidence that you have the legal right to use and distribute SQLite.
+ * Your legal department tells you that you have to purchase a license.
+
+ If you feel like you really have to purchase a license for SQLite, Hwaci, the company that employs the architect and
+ principal developers of SQLite, will sell you one.
+
+Contributed Code
+
+ In order to keep SQLite completely free and unencumbered by copyright, all new contributors to the SQLite code base are
+ asked to dedicate their contributions to the public domain. If you want to send a patch or enhancement for possible
+ inclusion in the SQLite source tree, please accompany the patch with the following statement:
+
+ The author or authors of this code dedicate any and all copyright interest in this code to the public domain. We make
+ this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this
+ dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this code under
+ copyright law.
+
+ We are not able to accept patches or changes to SQLite that are not accompanied by a statement such as the above. In
+ addition, if you make changes or enhancements as an employee, then a simple statement such as the above is insufficient.
+ You must also send by surface mail a copyright release signed by a company officer. A signed original of the copyright
+ release should be mailed to:
+
+ Hwaci
+ 6200 Maple Cove Lane
+ Charlotte, NC 28269
+ USA
+
+ A template copyright release is available in PDF or HTML. You can use this release to make future changes.
+
+ ----------------------------------------------------------------------------------------------------------------------
+
+ This page last modified 2007/11/14 15:25:42 UTC
diff --git a/source/ap/sqlite/slack-desc b/source/ap/sqlite/slack-desc
new file mode 100644
index 000000000..8605ff192
--- /dev/null
+++ b/source/ap/sqlite/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-------------------------------------------------------|
+sqlite: SQLite (simple, self contained database engine)
+sqlite:
+sqlite: SQLite is a small C library that implements a self-contained,
+sqlite: embeddable, zero-configuration SQL database engine.
+sqlite:
+sqlite: The SQLite distribution comes with a standalone command-line access
+sqlite: program (sqlite) that can be used to administer an SQLite database
+sqlite: and which serves as an example of how to use the SQLite library.
+sqlite:
+sqlite: Homepage: http://www.sqlite.org/
+sqlite:
diff --git a/source/ap/sqlite/sqlite.SlackBuild b/source/ap/sqlite/sqlite.SlackBuild
new file mode 100755
index 000000000..ffc75b330
--- /dev/null
+++ b/source/ap/sqlite/sqlite.SlackBuild
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+# Slackware build script for sqlite
+
+# Copyright 2006 Martin Lefebvre <dadexter@gmail.com>
+# 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.
+
+PRGNAM=sqlite
+VERSION=3.6.14.2
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* || 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 {} \;
+
+configure() {
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --enable-threadsafe \
+ --enable-cross-thread-connections \
+ --enable-tempstore=yes \
+ --enable-load-extension \
+ --enable-static=no \
+ --build=$ARCH-slackware-linux
+ return $?
+}
+
+if ! configure ; then
+ # Try regenerating configure:
+ autoconf
+ configure || exit 1
+fi
+
+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
+
+# Add missed man page:
+install -D -m 0644 sqlite3.1 $PKG/usr/man/man1/sqlite3.1
+gzip -9 $PKG/usr/man/man1/sqlite3.1
+
+# Fix up the pkgconfig file
+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
+cp -a \
+ README* VERSION \
+ $PKG/usr/doc/$PRGNAM-$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
+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
+
diff --git a/source/ap/sudo/doinst.sh b/source/ap/sudo/doinst.sh
new file mode 100644
index 000000000..01e3d173e
--- /dev/null
+++ b/source/ap/sudo/doinst.sh
@@ -0,0 +1,14 @@
+#!/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/sudoers.new
+rm -f etc/sudoers.new
diff --git a/source/ap/sudo/slack-desc b/source/ap/sudo/slack-desc
new file mode 100644
index 000000000..66f1aa8c9
--- /dev/null
+++ b/source/ap/sudo/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------------------------------------------------------|
+sudo: sudo (give limited root privileges to certain users)
+sudo:
+sudo: 'sudo' is a command that allows users to execute some commands as
+sudo: root. The /etc/sudoers file (edited with 'visudo') specifies which
+sudo: users have access to sudo and which commands they can run. 'sudo'
+sudo: logs all its activities to /var/log/ so the system administrator
+sudo: can keep an eye on things.
+sudo:
+sudo:
+sudo:
+sudo:
diff --git a/source/ap/sudo/sudo.SlackBuild b/source/ap/sudo/sudo.SlackBuild
new file mode 100755
index 000000000..c170e868d
--- /dev/null
+++ b/source/ap/sudo/sudo.SlackBuild
@@ -0,0 +1,91 @@
+#!/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=1.6.8p12
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sudo
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf sudo-$VERSION
+tar xvf $CWD/sudo-$VERSION.tar.gz || exit 1
+cd sudo-$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 --sbindir=/usr/sbin --with-getpass --with-C2
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG/usr/bin
+ chmod 4711 sudo
+ ln -sf sudo sudoedit
+)
+chmod 755 $PKG/usr/sbin/visudo
+
+rm -f $PKG/usr/man/man8/sudoedit.8
+gzip -9 $PKG/usr/man/man?/*.?
+( cd $PKG/usr/man/man8 ; ln -sf sudo.8.gz sudoedit.8.gz )
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+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 \
+ $PKG/usr/doc/sudo-$VERSION
+chmod 644 $PKG/usr/doc/sudo-$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
+/sbin/makepkg -l y -c n $TMP/sudo-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/sysstat/slack-desc b/source/ap/sysstat/slack-desc
new file mode 100644
index 000000000..e36d25ff9
--- /dev/null
+++ b/source/ap/sysstat/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------------------------------------------------------|
+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:
+sysstat: The sysstat utilities were written by Sebastien Godard.
+sysstat:
+sysstat:
+sysstat:
+sysstat:
diff --git a/source/ap/sysstat/sysstat.SlackBuild b/source/ap/sysstat/sysstat.SlackBuild
new file mode 100755
index 000000000..399bb4bd4
--- /dev/null
+++ b/source/ap/sysstat/sysstat.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+PKGNAM=sysstat
+VERSION=${VERSION:-7.0.0}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2
+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 {} \;
+
+# 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
+
+# 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 [ -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
+
+# Fix the documentation directory to preserve timestamps:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+rm -f $PKG/usr/doc/${PKGNAM}-$VERSION/*
+cp -a \
+ COPYING CREDITS FAQ README TODO sysstat-7.0.0.lsm \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/sysstat/sysstat.etc.sysstat.diff b/source/ap/sysstat/sysstat.etc.sysstat.diff
new file mode 100644
index 000000000..f5cf15211
--- /dev/null
+++ b/source/ap/sysstat/sysstat.etc.sysstat.diff
@@ -0,0 +1,46 @@
+--- ./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
new file mode 100644
index 000000000..c7c526b42
--- /dev/null
+++ b/source/ap/sysstat/sysstat.prefix.usr.diff
@@ -0,0 +1,42 @@
+--- ./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
new file mode 100644
index 000000000..3b54f37e6
--- /dev/null
+++ b/source/ap/sysstat/sysstat.var.run.diff
@@ -0,0 +1,28 @@
+--- ./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/texinfo/dir b/source/ap/texinfo/dir
new file mode 100644
index 000000000..122b25fd4
--- /dev/null
+++ b/source/ap/texinfo/dir
@@ -0,0 +1,314 @@
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
+
+GNU packages
+* Diff: (diff). Comparing and merging files.
+
+Printing Tools
+* PreScript: (a2ps) PreScript. Input language for a2ps
+* a2ps: (a2ps). PostScript Generating Utility
+* card: (a2ps) card. Print Reference Cards
+* fixnt: (a2ps) fixnt. Fixing Microsoft NT PostScript Files
+* fixps: (a2ps) fixps. Fixing Some Ill Designed PostScript Files
+* ogonkify: (ogonkify). Ogonkify
+* pdiff: (a2ps) pdiff. Produce Pretty Comparison of Files
+* psmandup: (a2ps) psmandup. Printing Duplex on Simplex Printers
+* psset: (a2ps) psset. Inserting calls to setpagedevice
+
+Libraries
+* AA-lib: (aalib). An ASCII-art graphics library
+* History: (history). The GNU history library API
+* RLuserman: (rluserman). The GNU readline library User's Manual.
+* Readline: (readline). The GNU readline library API
+
+Emacs
+* Ada mode: (ada-mode). The GNU Emacs mode for editing Ada.
+* Autotype: (autotype). Convenient features for text that you enter frequently
+ in Emacs.
+* CC Mode: (ccmode). Emacs mode for editing C, C++, Objective-C,
+ Java, Pike, and IDL code.
+* CL: (cl). Partial Common Lisp support for Emacs Lisp.
+* Dired-X: (dired-x). Dired Extra Features.
+* EUDC: (eudc). A client for directory servers (LDAP, PH)
+* Ebrowse: (ebrowse). A C++ class browser for Emacs.
+* Ediff: (ediff). A visual interface for comparing and merging programs.
+* Emacs: (emacs). The extensible self-documenting text editor.
+* Emacs FAQ: (efaq). Frequently Asked Questions about Emacs.
+* Emacs MIME: (emacs-mime). The MIME de/composition library.
+* Eshell: (eshell). A command shell implemented in Emacs Lisp.
+* Forms: (forms). Emacs package for editing data bases
+ by filling in forms.
+* Gnus: (gnus). The newsreader Gnus.
+* IDLWAVE: (idlwave). Major mode and shell for IDL and WAVE/CL files.
+* MH-E: (mh-e). Emacs interface to the MH mail system.
+* Message: (message). Mail and news composition mode that goes with Gnus.
+* PCL-CVS: (pcl-cvs). Emacs front-end to CVS.
+* RefTeX: (reftex). Emacs support for LaTeX cross-references and citations.
+* SC: (sc). Supercite lets you cite parts of messages you're
+ replying to, in flexible ways.
+* Speedbar: (speedbar). File/Tag summarizing utility.
+* VIP: (vip). An older VI-emulation for Emacs.
+* VIPER: (viper). The newest Emacs VI-emulation mode.
+ (also, A VI Plan for Emacs Rescue
+ or the VI PERil.)
+* Widget: (widget). Documenting the "widget" package used by the
+ Emacs Custom facility.
+* WoMan: (woman). Browse UN*X Manual Pages `Wo (without) Man'.
+
+Miscellaneous
+* As: (as). The GNU assembler.
+* Bfd: (bfd). The Binary File Descriptor library.
+* Binutils: (binutils). The GNU binary utilities.
+* CVS: (cvs). Concurrent Versions System
+* Fdutils: (fdutils). Fdutils: Linux' floppy utilities
+* File utilities: (fileutils). GNU file utilities.
+* Finding Files: (find). Listing and operating on files
+ that match certain criteria.
+* Flex: (flex). A fast scanner generator.
+* Gpm: (gpm). A server wich hands mouse events to non-X programs.
+* Ld: (ld). The GNU linker.
+* Mtools: (mtools). Mtools: utilities to access DOS disks in Unix.
+* Shar utilities: (sharutils). GNU shar utilities.
+* Shell utilities: (sh-utils). GNU shell utilities.
+* Standards: (standards). GNU coding standards.
+* Text utilities: (textutils). GNU text utilities.
+* UUCP: (uucp). Transfer mail and news across phone lines.
+* addr2line: (binutils)addr2line. Convert addresses to file and line
+* ar: (binutils)ar. Create, modify, and extract from archives
+* basename: (sh-utils)basename invocation. Strip directory and suffix.
+* bison: (bison). GNU Project parser generator (yacc replacement).
+* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols
+* cat: (textutils)cat invocation. Concatenate and write files.
+* chgrp: (fileutils)chgrp invocation. Change file groups.
+* chmod: (fileutils)chmod invocation. Change file permissions.
+* chown: (fileutils)chown invocation. Change file owners/groups.
+* chroot: (sh-utils)chroot invocation. Specify the root directory.
+* cksum: (textutils)cksum invocation. Print POSIX CRC checksum.
+* comm: (textutils)comm invocation. Compare sorted files by line.
+* cp: (fileutils)cp invocation. Copy files.
+* cpio: (cpio). Making tape (or disk) archives.
+* csplit: (textutils)csplit invocation. Split by context.
+* cut: (textutils)cut invocation. Print selected parts of lines.
+* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt
+* date: (sh-utils)date invocation. Print/set system date and time.
+* dc: (dc). Arbritrary precision RPN "Desktop Calculator".
+* dd: (fileutils)dd invocation. Copy and convert a file.
+* df: (fileutils)df invocation. Report filesystem disk usage.
+* dir: (fileutils)dir invocation. List directories briefly.
+* dircolors: (fileutils)dircolors invocation. Color setup for ls.
+* dirname: (sh-utils)dirname invocation. Strip non-directory suffix.
+* dlltool: (binutils)dlltool. Create files needed to build and use DLLs
+* du: (fileutils)du invocation. Report on disk usage.
+* echo: (sh-utils)echo invocation. Print a line of text.
+* env: (sh-utils)env invocation. Modify the environment.
+* expand: (textutils)expand invocation. Convert tabs to spaces.
+* expr: (sh-utils)expr invocation. Evaluate expressions.
+* factor: (sh-utils)factor invocation. Print prime factors
+* false: (sh-utils)false invocation. Do nothing, unsuccessfully.
+* fmt: (textutils)fmt invocation. Reformat paragraph text.
+* fold: (textutils)fold invocation. Wrap long input lines.
+* gasp: (gasp). The GNU Assembler Preprocessor
+* gprof: (gprof). Profiling your program's execution
+* grep: (grep). print lines matching a pattern.
+* groups: (sh-utils)groups invocation. Print group names a user is in.
+* head: (textutils)head invocation. Output the first part of files.
+* hostname: (sh-utils)hostname invocation. Print or set system name.
+* id: (sh-utils)id invocation. Print real/effective uid/gid.
+* install: (fileutils)install invocation. Copy and change attributes.
+* ipc: (ipc). System V style inter process communication
+* join: (textutils)join invocation. Join lines on a common field.
+* ln: (fileutils)ln invocation. Make links between files.
+* logname: (sh-utils)logname invocation. Print current login name.
+* ls: (fileutils)ls invocation. List directory contents.
+* m4: (m4). A powerful macro processor.
+* mail-files: (sharutils)mail-files invocation. Send files to remote site.
+* mailshar: (sharutils)mailshar invocation. Make and send a shell archive.
+* md5sum: (textutils)md5sum invocation. Print or check message-digests.
+* mkdir: (fileutils)mkdir invocation. Create directories.
+* mkfifo: (fileutils)mkfifo invocation. Create FIFOs (named pipes).
+* mknod: (fileutils)mknod invocation. Create special files.
+* mv: (fileutils)mv invocation. Rename files.
+* mysql: (mysql). MySQL documentation.
+* nice: (sh-utils)nice invocation. Modify scheduling priority.
+* nl: (textutils)nl invocation. Number lines and write files.
+* nlmconv: (binutils)nlmconv. Converts object code into an NLM
+* nm: (binutils)nm. List symbols from object files
+* nohup: (sh-utils)nohup invocation. Immunize to hangups.
+* objcopy: (binutils)objcopy. Copy and translate object files
+* objdump: (binutils)objdump. Display information from object files
+* od: (textutils)od invocation. Dump files in octal, etc.
+* paste: (textutils)paste invocation. Merge lines of files.
+* pathchk: (sh-utils)pathchk invocation. Check file name portability.
+* pr: (textutils)pr invocation. Paginate or columnate files.
+* printenv: (sh-utils)printenv invocation. Print environment variables.
+* printf: (sh-utils)printf invocation. Format and print data.
+* ptx: (textutils)ptx invocation. Produce permuted indexes.
+* pwd: (sh-utils)pwd invocation. Print working directory.
+* ranlib: (binutils)ranlib. Generate index to archive contents
+* readelf: (binutils)readelf. Display the contents of ELF format files.
+* remsync: (sharutils)remsync invocation. Synchronize remote files.
+* rm: (fileutils)rm invocation. Remove files.
+* rmdir: (fileutils)rmdir invocation. Remove empty directories.
+* sed: (sed). Stream EDitor.
+* seq: (sh-utils)seq invocation. Print numeric sequences
+* shar: (sharutils)shar invocation. Make a shell archive.
+* shred: (fileutils)shred invocation. Remove files more securely.
+* size: (binutils)size. List section sizes and total size
+* sleep: (sh-utils)sleep invocation. Delay for a specified time.
+* sort: (textutils)sort invocation. Sort text files.
+* split: (textutils)split invocation. Split into fixed-size pieces.
+* strings: (binutils)strings. List printable strings from files
+* strip: (binutils)strip. Discard symbols
+* stty: (sh-utils)stty invocation. Print/change terminal settings.
+* su: (sh-utils)su invocation. Modify user and group id.
+* sum: (textutils)sum invocation. Print traditional checksum.
+* sync: (fileutils)sync invocation. Synchronize memory and disk.
+* tac: (textutils)tac invocation. Reverse files.
+* tail: (textutils)tail invocation. Output the last part of files.
+* tee: (sh-utils)tee invocation. Redirect to multiple files.
+* test: (sh-utils)test invocation. File/string tests.
+* touch: (fileutils)touch invocation. Change file timestamps.
+* tr: (textutils)tr invocation. Translate characters.
+* true: (sh-utils)true invocation. Do nothing, successfully.
+* tsort: (textutils)tsort invocation. Topological sort.
+* tty: (sh-utils)tty invocation. Print terminal name.
+* uname: (sh-utils)uname invocation. Print system information.
+* unexpand: (textutils)unexpand invocation. Convert spaces to tabs.
+* uniq: (textutils)uniq invocation. Uniquify files.
+* unshar: (sharutils)unshar invocation. Explode a shell archive.
+* users: (sh-utils)users invocation. Print current user names.
+* uudecode: (sharutils)uudecode invocation. Restore file from 7-bits.
+* uuencode: (sharutils)uuencode invocation. Force binary file to 7-bits.
+* vdir: (fileutils)vdir invocation. List directories verbosely.
+* wc: (textutils)wc invocation. Byte, word, and line counts.
+* who: (sh-utils)who invocation. Print who is logged in.
+* whoami: (sh-utils)whoami invocation. Print effective user id.
+* windres: (binutils)windres. Manipulate Windows resources
+* yes: (sh-utils)yes invocation. Print a string indefinitely.
+
+GNU admin
+* Autoconf: (autoconf). Create source code configuration scripts
+
+Individual utilities
+* aclocal: (automake)Invoking aclocal. Generating aclocal.m4.
+* autoconf: (autoconf)autoconf Invocation.
+ How to create configuration scripts
+* autoconf-invocation: (autoconf)autoconf Invocation.
+ How to create configuration
+ scripts
+* autoheader: (autoconf)autoheader Invocation. How to create configuration
+ templates
+* autom4te: (autoconf)autom4te Invocation. The Autoconf executables
+ backbone
+* automake: (automake)Invoking Automake. Generating Makefile.in.
+* autoreconf: (autoconf)autoreconf Invocation. Remaking multiple `configure'
+ scripts
+* autoscan: (autoconf)autoscan Invocation. Semi-automatic `configure.ac'
+ writing
+* autoupdate: (autoconf)autoupdate Invocation. Automatic update of
+ `configure.ac'
+* awk: (gawk)Invoking gawk. Text scanning and processing.
+* cmp: (diff)Invoking cmp. Compare 2 files byte by byte.
+* config.status: (autoconf)config.status Invocation.
+ Recreating configurations.
+* configure: (autoconf)configure Invocation. Configuring a package.
+* diff: (diff)Invoking diff. Compare 2 files line by line.
+* diff3: (diff)Invoking diff3. Compare 3 files line by line.
+* ifnames: (autoconf)ifnames Invocation. Listing conditionals in source.
+* libtoolize: (libtool)Invoking libtoolize. Adding libtool support.
+* patch: (diff)Invoking patch. Apply a patch to a file.
+* sdiff: (diff)Invoking sdiff. Merge 2 files side-by-side.
+* tar: (tar)tar invocation. Invoking GNU `tar'
+* testsuite: (autoconf)testsuite Invocation. Running an Autotest test suite.
+
+GNU programming tools
+* Libtool: (libtool). Generic shared library support script.
+This is libtool.info, produced by makeinfo version 4.11 from libtool.texi.
+* automake: (automake). Making Makefile.in's
+
+Software development
+* Autoconf: (autoconf). Create source code configuration scripts.
+* Automake: (automake). Making GNU standards-compliant Makefiles.
+
+Utilities
+* Bash: (bash). The GNU Bourne-Again SHell.
+* Enscript: (enscript). GNU Enscript
+* Gzip: (gzip). The gzip command for compressing files.
+* ZSH: (zsh). The Z Shell Manual.
+
+Programming
+* Cpp: (cpp). The GNU C preprocessor.
+* cvsclient: (cvsclient). The CVS client/server protocol.
+* g77: (g77). The GNU Fortran compiler.
+* gcc: (gcc). The GNU Compiler Collection.
+
+GNU Packages
+* Gawk: (gawk). A text scanning and processing language.
+* Gawkinet: (gawkinet). TCP/IP Internetworking With `gawk'.
+* Make: (make). Remake files automatically.
+* Tar: (tar). Making tape (or disk) archives.
+
+Programming & development tools.
+* Gdb: (gdb). The GNU debugger.
+* Gdb-Internals: (gdbint). The GNU debugger's internals.
+
+User Interface Toolkit
+* GDK: (gdk). The General Drawing Kit
+* GTK: (gtk). The GIMP Toolkit
+
+GNU Gettext Utilities
+* Gettext: (gettext). GNU gettext utilities.
+* gettextize: (gettext)gettextize Invocation. Prepare a package for gettext.
+* msgfmt: (gettext)msgfmt Invocation. Make MO files out of PO files.
+* msgmerge: (gettext)msgmerge Invocation. Update two PO files into one.
+* xgettext: (gettext)xgettext Invocation. Extract strings into a PO file.
+
+Library of useful routines for 'C' programing
+* GLIB: (glib). useful routines for 'C' programming
+
+GNU libraries
+* Libc: (libc). C library.
+* gmp: (gmp). GNU Multiple Precision Arithmetic Library.
+
+Indent Code Formatter
+* Indent: (indent). C code formatter.
+
+Texinfo documentation system
+* Info: (info). Documentation browsing system.
+* Standalone info program: (info-stnd). Standalone Info-reading program.
+* Texinfo: (texinfo). The GNU documentation format.
+* install-info: (texinfo)Invoking install-info. Update info/dir entries.
+* makeinfo: (texinfo)makeinfo Preferred. Translate Texinfo source.
+* texi2dvi: (texinfo)Format with texi2dvi. Print Texinfo documents.
+* texindex: (texinfo)Format with tex/texindex. Sort Texinfo index files.
+
+Development
+* libext2fs: (libext2fs.info). The EXT2FS library.
+
+C library code
+* Regex: (regex). Regular expression library.
+
+General Commands
+* Screen: (screen). Full-screen window manager.
+
+Net Utilities
+* Wget: (wget). The non-interactive network downloader.
+
+World Wide Web
+* Wget: (wget). The non-interactive network downloader.
+
+Games
+* xboard: (xboard). An X Window System graphical chessboard.
diff --git a/source/ap/texinfo/doinst.sh b/source/ap/texinfo/doinst.sh
new file mode 100644
index 000000000..ab42f74f4
--- /dev/null
+++ b/source/ap/texinfo/doinst.sh
@@ -0,0 +1,11 @@
+# If no dir file exists, we'll assume it's a fresh installation and create one
+# Otherwise, we'll throw out the new copy to preserve what's already installed
+if [ -e usr/info/dir ]; then
+ # If there is no topmost node, this dir file is broken, so replace it:
+ if ! grep -q "Node: Top" usr/info/dir ; then
+ mv usr/info/dir.new usr/info/dir
+ fi
+else
+ mv usr/info/dir.new usr/info/dir
+fi
+
diff --git a/source/ap/texinfo/slack-desc b/source/ap/texinfo/slack-desc
new file mode 100644
index 000000000..597f5520c
--- /dev/null
+++ b/source/ap/texinfo/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------------------------------------------------------|
+texinfo: texinfo (GNU software documentation system)
+texinfo:
+texinfo: 'Texinfo' is a documentation system that uses a single source file to
+texinfo: produce both on-line information and printed output. Using Texinfo,
+texinfo: you can create a printed document with the normal features of a book,
+texinfo: including chapters, sections, cross references, and indices. From the
+texinfo: same Texinfo source file, you can create a menu-driven, on-line Info
+texinfo: file with nodes, menus, cross references, and indices.
+texinfo:
+texinfo: This package is needed to read the documentation files in /usr/info.
+texinfo:
diff --git a/source/ap/texinfo/texinfo.SlackBuild b/source/ap/texinfo/texinfo.SlackBuild
new file mode 100755
index 000000000..8c505a55a
--- /dev/null
+++ b/source/ap/texinfo/texinfo.SlackBuild
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=${VERSION:-4.13}
+PKG_VERSION=${PKG_VERSION:-${VERSION}a}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-3}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -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-texinfo
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+tar xvf $CWD/texinfo-$PKG_VERSION.tar.?z* || exit 1
+cd texinfo-$VERSION
+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 \
+ --docdir=/usr/doc/texinfo-$PKG_VERSION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Be sure this is "fresh"
+zcat $CWD/dir.gz > $PKG/usr/info/dir
+mv $PKG/usr/info/dir $PKG/usr/info/dir.new
+
+gzip -9 $PKG/usr/info/*info*
+gzip -9 $PKG/usr/man/man?/*
+
+mkdir -p $PKG/usr/doc/texinfo-$PKG_VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL INTRODUCTION NEWS README* TODO \
+ $PKG/usr/doc/texinfo-$PKG_VERSION
+chmod 644 $PKG/usr/doc/texinfo-$PKG_VERSION/*
+chown -R root:root $PKG/usr/doc/texinfo-$PKG_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
+/sbin/makepkg -l y -c n $TMP/texinfo-$PKG_VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/texinfo-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/ap/vbetool/slack-desc b/source/ap/vbetool/slack-desc
new file mode 100644
index 000000000..c43966918
--- /dev/null
+++ b/source/ap/vbetool/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------------------------------------------------------|
+vbetool: vbetool (video bios execution tool)
+vbetool:
+vbetool: vbetool is a small application that executes code from the BIOS of
+vbetool: your video card.
+vbetool:
+vbetool: This is mostly useful for reinitialising the hardware, for instance
+vbetool: after ACPI suspend/resuming.
+vbetool:
+vbetool: Homepage: http://www.codon.org.uk/~mjg59/vbetool/
+vbetool:
+vbetool:
diff --git a/source/ap/vbetool/vbetool.SlackBuild b/source/ap/vbetool/vbetool.SlackBuild
new file mode 100755
index 000000000..fcd23c9fd
--- /dev/null
+++ b/source/ap/vbetool/vbetool.SlackBuild
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+# Copyright 2008 Robby Workman, Northport, Alabama, USA
+# 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=1.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-vbetool
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf vbetool-$VERSION
+tar xvf $CWD/vbetool-$VERSION.tar.gz
+cd vbetool-$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 {} \;
+
+autoreconf
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/vbetool-$VERSION \
+ --with-x86emu \
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/vbetool-$VERSION
+cp -a COPYING $PKG/usr/doc/vbetool-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/vbetool-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/vbetool/vbetool.info b/source/ap/vbetool/vbetool.info
new file mode 100644
index 000000000..0538212ea
--- /dev/null
+++ b/source/ap/vbetool/vbetool.info
@@ -0,0 +1,2 @@
+HOMEPAGE="http://www.codon.org.uk/~mjg59/vbetool/"
+DOWNLOAD="http://www.codon.org.uk/~mjg59/vbetool/download/vbetool-1.1.tar.gz"
diff --git a/source/ap/vim/doinst.sh b/source/ap/vim/doinst.sh
new file mode 100644
index 000000000..f1ccd5ca3
--- /dev/null
+++ b/source/ap/vim/doinst.sh
@@ -0,0 +1,5 @@
+
+# If there's no vi link, take over:
+if [ ! -r usr/bin/vi ]; then
+ ( cd usr/bin ; ln -sf vim vi )
+fi
diff --git a/source/ap/vim/gvim.desktop b/source/ap/vim/gvim.desktop
new file mode 100644
index 000000000..520c72e61
--- /dev/null
+++ b/source/ap/vim/gvim.desktop
@@ -0,0 +1,120 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Vi IMproved
+Name[af]=Vi Verbeterde
+Name[ar]=ÙÙŠ.أي المحسن
+Name[bn]=ভি-আই উনà§à¦¨à¦¤
+Name[br]=Vi gwellaet
+Name[ca]=Vi millorat
+Name[cy]=VIM (Vi wedi'i wella)
+Name[da]=Vi IMproved (Vi forbedret)
+Name[eo]=VIM
+Name[fa]=Vi پیشرÙت کرده VIM
+Name[hi]=वीआई इमà¥à¤ªà¥à¤°à¥‚वà¥à¤¡
+Name[hu]=VIM
+Name[is]=Vi endurbættur (vim)
+Name[it]=Vi iMproved
+Name[ko]=ë” ë‚˜ì€ Vi
+Name[mn]=СайжирÑан Vi
+Name[nso]=KAonafaditswe ka Vi
+Name[oc]=VI aMillorat
+Name[pl]=Poprawiony VI (vim)
+Name[pt_BR]=Vi melhorado
+Name[ru]=Улучшенный vi
+Name[rw]=Vi Ivuguruwe
+Name[sl]=Izboljšani vi (vim)
+Name[sv]=Förbättrad Vi
+Name[ta]=Vi மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ
+Name[tg]=Vi пешрафт кардаи VIM
+Name[th]=VI IMprove
+Name[uz]=Яхшиланган Vi
+Name[ven]=Vi Khwinifhadzhwa
+Name[vi]=Vi Cải tiến
+Name[wa]=VIM
+Name[zh_CN]=改进的 VI (VIM)
+Name[zh_TW]=VIM
+Name[zu]=I-Vi yenziwe ngcono
+GenericName=Text Editor
+GenericName[af]=Teks Redigeerder
+GenericName[ar]=محرر نصوص
+GenericName[az]=Mətn Editoru
+GenericName[be]=ТÑкÑтавы Ñ€Ñдактар
+GenericName[bg]=ТекÑтов редактор
+GenericName[bn]=টেকà§à¦¸à¦Ÿ সমà§à¦ªà¦¾à¦¦à¦•
+GenericName[br]=Aozer skrid
+GenericName[bs]=Tekst editor
+GenericName[ca]=Editor de text
+GenericName[cs]=Textový editor
+GenericName[cy]=Golygydd Testun
+GenericName[da]= Teksteditor
+GenericName[de]=Texteditor
+GenericName[el]=ΕπεξεÏγαστής κειμένου
+GenericName[eo]=Tekstredaktilo
+GenericName[es]=Editor de texto
+GenericName[et]=Tekstiredaktor
+GenericName[eu]=Testu editorea
+GenericName[fa]=ویرایشگر متن
+GenericName[fi]=Tekstieditori
+GenericName[fo]=Tekstritil
+GenericName[fr]=Éditeur de texte
+GenericName[fy]=Tekst Bewurker
+GenericName[ga]=Eagarthóir Téacs
+GenericName[gl]=Editor de Textos
+GenericName[he]=עורך טקסט
+GenericName[hi]=पाठ संपादक
+GenericName[hr]=UreÄ‘ivaÄ teksta
+GenericName[hsb]=Wobdźěłar tekstow
+GenericName[hu]=Szövegszerkesztő
+GenericName[is]=Textaritill
+GenericName[it]=Editor di testi
+GenericName[ja]=テキストエディタ
+GenericName[km]=កម្មវិធី​វាយ​អážáŸ’ážáž”áž‘
+GenericName[ko]=글월 편집기
+GenericName[lo]=ເຄື່ອງມືà»àºà»‰à»„ຂຂà»à»‰àº„ວາມ
+GenericName[lt]=Teksto rengyklÄ—
+GenericName[lv]=Teksta Redaktors
+GenericName[mk]=Уредувач на текÑÑ‚
+GenericName[mn]=ТекÑÑ‚ боловÑруулагч
+GenericName[ms]=Penyunting Teks
+GenericName[mt]=Editur tat-test
+GenericName[nb]=Skriveprogram
+GenericName[nds]=Texteditor
+GenericName[nl]=Teksteditor
+GenericName[nn]=Skriveprogram
+GenericName[nso]=Mofetosi wa Sengwalwana
+GenericName[pa]=ਪਾਠ ਸੰਪਾਦਕ
+GenericName[pl]=Edytor tekstu
+GenericName[pt]=Editor de Texto
+GenericName[pt_BR]=Editor de Texto
+GenericName[ro]=Editor de text
+GenericName[ru]=ТекÑтовый редактор
+GenericName[rw]=Muhinduzi Umwandiko
+GenericName[se]=Čállinprográmma
+GenericName[sk]=Textový editor
+GenericName[sl]=Urejevalnik besedil
+GenericName[sr]=Уређивач текÑта
+GenericName[sr@Latn]=UreÄ‘ivaÄ teksta
+GenericName[ss]=Sihleli sembhalo
+GenericName[sv]=Texteditor
+GenericName[ta]=உரை தொகà¯à®ªà¯à®ªà®¾à®³à®°à¯
+GenericName[tg]=Муҳаррири матн
+GenericName[th]=โปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขข้อความ
+GenericName[tr]=Metin Düzenleyici
+GenericName[tt]=Mäten Tözätkeçe
+GenericName[uk]=Редактор текÑтів
+GenericName[uz]=Матн таҳрирчи
+GenericName[ven]=Musengulusi wa Manwalwa
+GenericName[vi]=Trình soạn văn bản
+GenericName[wa]=Aspougneu di tecse
+GenericName[xh]=Umhleli Wombhalo
+GenericName[zh_CN]=文本编辑器
+GenericName[zh_TW]=文字編輯器
+GenericName[zu]=Umlungisi wombhalo
+MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
+Exec=gvim -f %f
+Icon=gvim.png
+Type=Application
+Terminal=false
+X-KDE-StartupNotify=true
+X-KDE-AuthorizeAction=shell_access
+Categories=TextEditor;
diff --git a/source/ap/vim/gvim.png b/source/ap/vim/gvim.png
new file mode 100644
index 000000000..2bdc8bd8c
--- /dev/null
+++ b/source/ap/vim/gvim.png
Binary files differ
diff --git a/source/ap/vim/patches/7.2.001 b/source/ap/vim/patches/7.2.001
new file mode 100644
index 000000000..3bcb7d090
--- /dev/null
+++ b/source/ap/vim/patches/7.2.001
@@ -0,0 +1,61 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.001
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.001
+Problem: Mac: pseudo-ttys don't work properly on Leopard, resulting in the
+ shell not to have a prompt, CTRL-C not working, etc.
+Solution: Don't use SVR4 compatible ptys, even though they are detected.
+ (Ben Schmidt)
+Files: src/pty.c
+
+
+*** ../vim-7.2.000/src/pty.c Wed Aug 6 19:04:29 2008
+--- src/pty.c Fri Aug 15 04:00:34 2008
+***************
+*** 270,278 ****
+ }
+ #endif
+
+! #if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux)
+
+! /* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work! */
+ #define PTY_DONE
+ int
+ OpenPTY(ttyn)
+--- 270,279 ----
+ }
+ #endif
+
+! #if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE) && !defined(hpux) && !defined(MACOS_X)
+
+! /* NOTE: Even though HPUX can have /dev/ptmx, the code below doesn't work!
+! * Same for Mac OS X Leopard. */
+ #define PTY_DONE
+ int
+ OpenPTY(ttyn)
+*** ../vim-7.2.000/src/version.c Sat Aug 9 19:37:37 2008
+--- src/version.c Sun Aug 17 22:56:25 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1,
+ /**/
+
+--
+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.002 b/source/ap/vim/patches/7.2.002
new file mode 100644
index 000000000..e1ee32cd5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.002
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.002
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.002
+Problem: Leaking memory when displaying menus.
+Solution: Free allocated memory. (Dominique Pelle)
+Files: src/menu.c
+
+
+*** ../vim-7.2.001/src/menu.c Wed Jun 25 00:19:17 2008
+--- src/menu.c Sat Aug 16 05:38:45 2008
+***************
+*** 1120,1125 ****
+--- 1120,1126 ----
+ parent = menu;
+ menu = menu->children;
+ }
++ vim_free(path_name);
+
+ /* Now we have found the matching menu, and we list the mappings */
+ /* Highlight title */
+*** ../vim-7.2.001/src/version.c Sun Aug 17 23:01:21 2008
+--- src/version.c Sun Aug 17 23:42:53 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 2,
+ /**/
+
+--
+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.003 b/source/ap/vim/patches/7.2.003
new file mode 100644
index 000000000..626d81e5a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.003
@@ -0,0 +1,107 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.003
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.003
+Problem: Typo in translated message. Message not translated.
+Solution: Correct spelling. Add _(). (Dominique Pelle)
+Files: src/spell.c, src/version.c
+
+
+*** ../vim-7.2.002/src/spell.c Tue Jun 24 22:21:31 2008
+--- src/spell.c Sun Aug 10 12:51:38 2008
+***************
+*** 77,83 ****
+
+ /*
+ * Do the opposite: based on a maximum end score and a known sound score,
+! * compute the the maximum word score that can be used.
+ */
+ #define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
+
+--- 77,83 ----
+
+ /*
+ * Do the opposite: based on a maximum end score and a known sound score,
+! * compute the maximum word score that can be used.
+ */
+ #define MAXSCORE(word_score, sound_score) ((4 * word_score - sound_score) / 3)
+
+***************
+*** 625,631 ****
+ /* TRUE if a word appears in the list of banned words. */
+ #define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
+
+! /* Number of suggestions kept when cleaning up. we need to keep more than
+ * what is displayed, because when rescore_suggestions() is called the score
+ * may change and wrong suggestions may be removed later. */
+ #define SUG_CLEAN_COUNT(su) ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
+--- 625,631 ----
+ /* TRUE if a word appears in the list of banned words. */
+ #define WAS_BANNED(su, word) (!HASHITEM_EMPTY(hash_find(&su->su_banned, word)))
+
+! /* Number of suggestions kept when cleaning up. We need to keep more than
+ * what is displayed, because when rescore_suggestions() is called the score
+ * may change and wrong suggestions may be removed later. */
+ #define SUG_CLEAN_COUNT(su) ((su)->su_maxcount < 130 ? 150 : (su)->su_maxcount + 20)
+***************
+*** 5980,5986 ****
+ else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
+ MSG(_("Too many compound flags"));
+ else
+! MSG(_("Too many posponed prefixes and/or compound flags"));
+ }
+
+ if (syllable != NULL)
+--- 5980,5986 ----
+ else if (spin->si_newprefID == 0 || spin->si_newprefID == 127)
+ MSG(_("Too many compound flags"));
+ else
+! MSG(_("Too many postponed prefixes and/or compound flags"));
+ }
+
+ if (syllable != NULL)
+*** ../vim-7.2.002/src/version.c Sun Aug 17 23:43:53 2008
+--- src/version.c Mon Aug 25 04:06:52 2008
+***************
+*** 790,796 ****
+ MSG_PUTS(_("\nRISC OS version"));
+ #endif
+ #ifdef VMS
+! MSG_PUTS("\nOpenVMS version");
+ # ifdef HAVE_PATHDEF
+ if (*compiled_arch != NUL)
+ {
+--- 792,798 ----
+ MSG_PUTS(_("\nRISC OS version"));
+ #endif
+ #ifdef VMS
+! MSG_PUTS(_("\nOpenVMS version"));
+ # ifdef HAVE_PATHDEF
+ if (*compiled_arch != NUL)
+ {
+*** ../vim-7.2.002/src/version.c Sun Aug 17 23:43:53 2008
+--- src/version.c Mon Aug 25 04:06:52 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 3,
+ /**/
+
+--
+I learned the customs and mannerisms of engineers by observing them, much the
+way Jane Goodall learned about the great apes, but without the hassle of
+grooming.
+ (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.004 b/source/ap/vim/patches/7.2.004
new file mode 100644
index 000000000..8e7ed3e9d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.004
@@ -0,0 +1,103 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.004
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.004
+Problem: Cscope help message is not translated.
+Solution: Put it in _(). (Dominique Pelle)
+Files: src/if_cscope.c, src/if_cscope.h
+
+
+*** ../vim-7.2.003/src/if_cscope.c Tue Jun 24 23:52:06 2008
+--- src/if_cscope.c Mon Aug 25 04:34:19 2008
+***************
+*** 74,80 ****
+ { "add", cs_add,
+ N_("Add a new database"), "add file|dir [pre-path] [flags]", 0 },
+ { "find", cs_find,
+! N_("Query for a pattern"), FIND_USAGE, 1 },
+ { "help", cs_help,
+ N_("Show this message"), "help", 0 },
+ { "kill", cs_kill,
+--- 74,80 ----
+ { "add", cs_add,
+ N_("Add a new database"), "add file|dir [pre-path] [flags]", 0 },
+ { "find", cs_find,
+! N_("Query for a pattern"), "find c|d|e|f|g|i|s|t name", 1 },
+ { "help", cs_help,
+ N_("Show this message"), "help", 0 },
+ { "kill", cs_kill,
+***************
+*** 1180,1186 ****
+ (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
+ cmdp->name, _(cmdp->help), cmdp->usage);
+ if (strcmp(cmdp->name, "find") == 0)
+! MSG_PUTS(FIND_HELP);
+ cmdp++;
+ }
+
+--- 1180,1195 ----
+ (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
+ cmdp->name, _(cmdp->help), cmdp->usage);
+ if (strcmp(cmdp->name, "find") == 0)
+! MSG_PUTS(_("\n"
+! " c: Find functions calling this function\n"
+! " d: Find functions called by this function\n"
+! " e: Find this egrep pattern\n"
+! " f: Find this file\n"
+! " g: Find this definition\n"
+! " i: Find files #including this file\n"
+! " s: Find this C symbol\n"
+! " t: Find assignments to\n"));
+!
+ cmdp++;
+ }
+
+*** ../vim-7.2.003/src/if_cscope.h Thu Sep 6 17:38:58 2007
+--- src/if_cscope.h Mon Aug 25 04:34:17 2008
+***************
+*** 42,58 ****
+ * f 7name Find this file
+ * i 8name Find files #including this file
+ */
+- #define FIND_USAGE "find c|d|e|f|g|i|s|t name"
+- #define FIND_HELP "\n\
+- c: Find functions calling this function\n\
+- d: Find functions called by this function\n\
+- e: Find this egrep pattern\n\
+- f: Find this file\n\
+- g: Find this definition\n\
+- i: Find files #including this file\n\
+- s: Find this C symbol\n\
+- t: Find assignments to\n"
+-
+
+ typedef struct {
+ char * name;
+--- 42,47 ----
+*** ../vim-7.2.003/src/version.c Mon Aug 25 04:12:38 2008
+--- src/version.c Mon Aug 25 04:29:53 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 4,
+ /**/
+
+--
+If someone questions your market projections, simply point out that your
+target market is "People who are nuts" and "People who will buy any damn
+thing". Nobody is going to tell you there aren't enough of those people
+to go around.
+ (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.005 b/source/ap/vim/patches/7.2.005
new file mode 100644
index 000000000..20cce85b3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.005
@@ -0,0 +1,149 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.005
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.005
+Problem: A few problems when profiling. Using flag pointer instead of flag
+ value. Allocating zero bytes. Not freeing used memory.
+Solution: Remove wrong '&' characters. Skip dumping when there is nothing
+ to dump. Free used memory. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.2.004/src/eval.c Fri Aug 8 12:36:31 2008
+--- src/eval.c Mon Aug 25 04:40:11 2008
+***************
+*** 3657,3664 ****
+ }
+
+ /*
+! * Return TRUE if typeval "tv" is locked: Either tha value is locked itself or
+! * it refers to a List or Dictionary that is locked.
+ */
+ static int
+ tv_islocked(tv)
+--- 3657,3664 ----
+ }
+
+ /*
+! * Return TRUE if typeval "tv" is locked: Either that value is locked itself
+! * or it refers to a List or Dictionary that is locked.
+ */
+ static int
+ tv_islocked(tv)
+***************
+*** 15838,15847 ****
+ if (res == FAIL)
+ res = ITEM_COMPARE_FAIL;
+ else
+- /* return value has wrong type */
+ res = get_tv_number_chk(&rettv, &item_compare_func_err);
+ if (item_compare_func_err)
+! res = ITEM_COMPARE_FAIL;
+ clear_tv(&rettv);
+ return res;
+ }
+--- 15838,15846 ----
+ if (res == FAIL)
+ res = ITEM_COMPARE_FAIL;
+ else
+ res = get_tv_number_chk(&rettv, &item_compare_func_err);
+ if (item_compare_func_err)
+! res = ITEM_COMPARE_FAIL; /* return value has wrong type */
+ clear_tv(&rettv);
+ return res;
+ }
+***************
+*** 20590,20595 ****
+--- 20589,20597 ----
+ int st_len = 0;
+
+ todo = (int)func_hashtab.ht_used;
++ if (todo == 0)
++ return; /* nothing to dump */
++
+ sorttab = (ufunc_T **)alloc((unsigned)(sizeof(ufunc_T) * todo));
+
+ for (hi = func_hashtab.ht_array; todo > 0; ++hi)
+***************
+*** 20638,20643 ****
+--- 20640,20647 ----
+ prof_self_cmp);
+ prof_sort_list(fd, sorttab, st_len, "SELF", TRUE);
+ }
++
++ vim_free(sorttab);
+ }
+
+ static void
+***************
+*** 21204,21210 ****
+ if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
+ func_do_profile(fp);
+ if (fp->uf_profiling
+! || (fc.caller != NULL && &fc.caller->func->uf_profiling))
+ {
+ ++fp->uf_tm_count;
+ profile_start(&call_start);
+--- 21208,21214 ----
+ if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
+ func_do_profile(fp);
+ if (fp->uf_profiling
+! || (fc.caller != NULL && fc.caller->func->uf_profiling))
+ {
+ ++fp->uf_tm_count;
+ profile_start(&call_start);
+***************
+*** 21235,21247 ****
+
+ #ifdef FEAT_PROFILE
+ if (do_profiling == PROF_YES && (fp->uf_profiling
+! || (fc.caller != NULL && &fc.caller->func->uf_profiling)))
+ {
+ profile_end(&call_start);
+ profile_sub_wait(&wait_start, &call_start);
+ profile_add(&fp->uf_tm_total, &call_start);
+ profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
+! if (fc.caller != NULL && &fc.caller->func->uf_profiling)
+ {
+ profile_add(&fc.caller->func->uf_tm_children, &call_start);
+ profile_add(&fc.caller->func->uf_tml_children, &call_start);
+--- 21239,21251 ----
+
+ #ifdef FEAT_PROFILE
+ if (do_profiling == PROF_YES && (fp->uf_profiling
+! || (fc.caller != NULL && fc.caller->func->uf_profiling)))
+ {
+ profile_end(&call_start);
+ profile_sub_wait(&wait_start, &call_start);
+ profile_add(&fp->uf_tm_total, &call_start);
+ profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
+! if (fc.caller != NULL && fc.caller->func->uf_profiling)
+ {
+ profile_add(&fc.caller->func->uf_tm_children, &call_start);
+ profile_add(&fc.caller->func->uf_tml_children, &call_start);
+*** ../vim-7.2.004/src/version.c Mon Aug 25 04:35:13 2008
+--- src/version.c Mon Aug 25 04:46:44 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 5,
+ /**/
+
+--
+The process for understanding customers primarily involves sitting around with
+other marketing people and talking about what you would to if you were dumb
+enough to be a customer.
+ (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.006 b/source/ap/vim/patches/7.2.006
new file mode 100644
index 000000000..f22eeae53
--- /dev/null
+++ b/source/ap/vim/patches/7.2.006
@@ -0,0 +1,50 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.006
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.006
+Problem: HTML files are not recognized by contents.
+Solution: Add a rule to the scripts file. (Nico Weber)
+Files: runtime/scripts.vim
+
+
+*** ../vim-7.2.005/runtime/scripts.vim Sat Aug 9 19:37:09 2008
+--- runtime/scripts.vim Sat Aug 16 04:05:34 2008
+***************
+*** 234,239 ****
+--- 234,243 ----
+ elseif s:line1 =~ '\<DTD\s\+XHTML\s'
+ set ft=xhtml
+
++ " HTML (e.g.: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN")
++ elseif s:line1 =~? '\<DOCTYPE\s\+html\>'
++ set ft=html
++
+ " PDF
+ elseif s:line1 =~ '^%PDF-'
+ set ft=pdf
+*** ../vim-7.2.005/src/version.c Mon Aug 25 04:48:21 2008
+--- src/version.c Mon Aug 25 05:02:34 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 6,
+ /**/
+
+--
+Never enter the boss's office unless it's absolutely necessary. Every boss
+saves one corner of the desk for useless assignments that are doled out like
+Halloween candy to each visitor.
+ (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.007 b/source/ap/vim/patches/7.2.007
new file mode 100644
index 000000000..104b26785
--- /dev/null
+++ b/source/ap/vim/patches/7.2.007
@@ -0,0 +1,493 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.007 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.007 (extra)
+Problem: Minor issues for VMS.
+Solution: Minor fixes for VMS. Add float support. (Zoltan Arpadffy)
+Files: runtime/doc/os_vms.txt, src/os_vms_conf.h, src/Make_vms.mms,
+ src/testdir/Make_vms.mms, src/testdir/test30.in,
+ src/testdir/test54.in
+
+
+*** ../vim-7.2.006/runtime/doc/os_vms.txt Sat Aug 9 19:36:50 2008
+--- runtime/doc/os_vms.txt Tue Aug 19 06:29:31 2008
+***************
+*** 1,4 ****
+! *os_vms.txt* For Vim version 7.2. Last change: 2006 Nov 18
+
+
+ VIM REFERENCE MANUAL
+--- 1,4 ----
+! *os_vms.txt* For Vim version 7.2. Last change: 2008 Aug 19
+
+
+ VIM REFERENCE MANUAL
+***************
+*** 312,318 ****
+
+ 8. Useful notes *vms-notes*
+
+! 8.1 backspace/delete
+ 8.2 Filters
+ 8.3 VMS file version numbers
+ 8.4 Directory conversion
+--- 312,318 ----
+
+ 8. Useful notes *vms-notes*
+
+! 8.1 Backspace/delete
+ 8.2 Filters
+ 8.3 VMS file version numbers
+ 8.4 Directory conversion
+***************
+*** 326,333 ****
+ 8.12 diff-mode
+ 8.13 Allow '$' in C keywords
+ 8.14 VIMTUTOR for beginners
+
+! 8.1 backspace/delete
+
+ There are backspace/delete key inconsistencies with VMS.
+ :fixdel doesn't do the trick, but the solution is: >
+--- 326,335 ----
+ 8.12 diff-mode
+ 8.13 Allow '$' in C keywords
+ 8.14 VIMTUTOR for beginners
++ 8.15 Slow start in console mode issue
++ 8.16 Common VIM directory - different architectures
+
+! 8.1 Backspace/delete
+
+ There are backspace/delete key inconsistencies with VMS.
+ :fixdel doesn't do the trick, but the solution is: >
+***************
+*** 663,674 ****
+
+ (Thomas.R.Wyant III, Vim 6.1)
+
+ ==============================================================================
+
+ 9. VMS related changes *vms-changes*
+
+! Version 7
+ - Improved low level char input (affects just console mode)
+
+ Version 6.4 (2005 Oct 15)
+ - GTKLIB and Vim build on IA64
+--- 665,794 ----
+
+ (Thomas.R.Wyant III, Vim 6.1)
+
++ 8.14 Slow start in console mode issue
++
++ As GUI/GTK Vim works equally well in console mode, many administartors
++ deploy those executables system wide.
++ Unfortunately, on a remote slow connections GUI/GTK executables behave rather
++ slow when user wants to run Vim just in the console mode - because of X environment detection timeout.
++
++ Luckily, there is a simple solution for that. Administrators need to deploy
++ both GUI/GTK build and just console build executables, like below: >
++
++ |- vim72
++ |----- doc
++ |----- syntax
++ vimrc (system rc files)
++ gvimrc
++ gvim.exe (the remaned GUI or GTK built vim.exe)
++ vim.exe (the console only executable)
++
++ Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
++
++ $ define/nolog VIM RF10:[UTIL.VIM72] ! where you VIM directory is
++ $ vi*m :== mcr VIM:VIM.EXE
++ $ gvi*m :== mcr VIM:GVIM.EXE
++ $ ! or you can try to spawn with
++ $ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40
++
++
++ Like this, users that do not have X environment and want to use Vim just in
++ console mode can avoid performance problems.
++
++ (Zoltan Arpadffy, Vim 7.2)
++
++ 8.15 Common VIM directory - different architectures
++
++ In a cluster that contains nodes with different architectures like below:
++
++ $show cluster
++ View of Cluster from system ID 11655 node: TOR 18-AUG-2008 11:58:31
++ +---------------------------------+
++ ¦ SYSTEMS ¦ MEMBERS ¦
++ +-----------------------+---------¦
++ ¦ NODE ¦ SOFTWARE ¦ STATUS ¦
++ +--------+--------------+---------¦
++ ¦ TOR ¦ VMS V7.3-2 ¦ MEMBER ¦
++ ¦ TITAN2 ¦ VMS V8.3 ¦ MEMBER ¦
++ ¦ ODIN ¦ VMS V7.3-2 ¦ MEMBER ¦
++ +---------------------------------+
++
++ It is convinient to have a common VIM directory but execute different
++ executables.
++ There are more solutions for this problem:
++
++ solution 1. all executables in the same directory with different names
++ This is easily done with the following script that can be added
++ to the login.com or sylogin.com: >
++
++ $ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
++ $ then
++ $ say "VAX platform"
++ $ vi*m:== mcr vim:VIM.EXE_VAX
++ $ endif
++ $ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
++ $ then
++ $ say "ALPHA platform"
++ $ vi*m :== mcr vim:VIM.EXE_AXP
++ $ endif
++ $ if f$getsyi("ARCH_NAME") .eqs. "IA64"
++ $ then
++ $ say "IA64 platform"
++ $ vi*m :== mcr vim:VIM.EXE_IA64
++ $ endif
++
++ solution 2. different directories: >
++
++ $ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
++ $ then
++ $ say "VAX platform"
++ $ define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables
++ $ endif
++ $ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
++ $ then
++ $ say "ALPHA platform"
++ $ define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables
++ $ endif
++ $ if f$getsyi("ARCH_NAME") .eqs. "IA64"
++ $ then
++ $ say "IA64 platform"
++ $ define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables
++ $ endif
++ $! VIMRUNTIME must be defined in order to find runtime files
++ $ define/nolog VIMRUNTIME RF10:[UTIL.VIM72]
++
++ A good examle for this approach is the [GNU]gnu_tools.com script from GNU_TOOLS.ZIP
++ package downloadable from http://www.polarhome.com/vim/
++
++ (Zoltan Arpadffy, Vim 7.2)
++
+ ==============================================================================
+
+ 9. VMS related changes *vms-changes*
+
+! Recent changes
+! - The following plugins are included into VMS runtime:
+! genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
+! bufexplorer 7.1.7, taglist 4.5
+! - minor changes in vimrc (just in VMS runtime)
+! - make_vms.mms - HUGE model is the default
+! - [TESTDIR]make_vms.mms include as many tests possible
+! - modify test30 and test54 for VMS
+! - enable FLOAT feature in VMS port
+! - os_vms.txt updated
+!
+! Version 7.2 (2008 Aug 9)
+! - VCF files write corrected
+! - CTAGS 5.7 included
+! - corrected make_vms.mms (on VAX gave syntax error)
+!
+! Version 7.1 (2007 Jun 15)
+! - create TAGS file from menu
+!
+! Version 7 (2006 May 8)
+ - Improved low level char input (affects just console mode)
++ - Fixed plugin bug
++ - CTAGS 5.6 included
+
+ Version 6.4 (2005 Oct 15)
+ - GTKLIB and Vim build on IA64
+***************
+*** 806,811 ****
+--- 926,932 ----
+
+ OpenVMS documentation and executables are maintained by:
+ Zoltan Arpadffy <arpadffy@polarhome.com>
++ OpenVMS Vim page: http://www.polarhome.com/vim/
+
+ This document uses parts and remarks from earlier authors and contributors
+ of OS_VMS.TXT:
+*** ../vim-7.2.006/src/os_vms_conf.h Thu May 10 19:26:17 2007
+--- src/os_vms_conf.h Sat Aug 16 05:09:17 2008
+***************
+*** 114,119 ****
+--- 114,121 ----
+ #define HAVE_PUTENV
+ #define HAVE_SETENV
+ #define HAVE_SETJMP_H
++ #define HAVE_MATH_H
++ #define HAVE_FLOAT_FUNCS
+
+ #undef HAVE_DIRENT_H
+ #undef HAVE_SYS_NDIR_H
+*** ../vim-7.2.006/src/Make_vms.mms Mon Oct 29 22:38:54 2007
+--- src/Make_vms.mms Sat Aug 16 05:17:41 2008
+***************
+*** 2,8 ****
+ # Makefile for Vim on OpenVMS
+ #
+ # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
+! # Last change: 2007 Oct 22
+ #
+ # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
+ # with MMS and MMK
+--- 2,8 ----
+ # Makefile for Vim on OpenVMS
+ #
+ # Maintainer: Zoltan Arpadffy <arpadffy@polarhome.com>
+! # Last change: 2008 Aug 16
+ #
+ # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
+ # with MMS and MMK
+***************
+*** 36,42 ****
+ # BIG - Many features enabled, as rich as possible. (default)
+ # HUGE - All possible featues enabled.
+ # Please select one of these alternatives above.
+! MODEL = BIG
+
+ # GUI or terminal mode executable.
+ # Comment out if you want just the character terminal mode only.
+--- 36,42 ----
+ # BIG - Many features enabled, as rich as possible. (default)
+ # HUGE - All possible featues enabled.
+ # Please select one of these alternatives above.
+! MODEL = HUGE
+
+ # GUI or terminal mode executable.
+ # Comment out if you want just the character terminal mode only.
+*** ../vim-7.2.006/src/testdir/Make_vms.mms Wed Jun 25 00:34:23 2008
+--- src/testdir/Make_vms.mms Tue Aug 19 06:28:07 2008
+***************
+*** 4,12 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2008 Jun 19
+ #
+! # This has been tested on VMS 6.2 to 7.2 on DEC Alpha and VAX.
+ # Edit the lines in the Configuration section below to select.
+ #
+ # Execute with:
+--- 4,12 ----
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2008 Aug 19
+ #
+! # 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.
+ #
+ # Execute with:
+***************
+*** 32,37 ****
+--- 32,46 ----
+ # and directory handling.
+ # WANT_UNIX = YES
+
++ # Comment out if you want to run Win32 specific tests as well, but please
++ # be aware, that on OpenVMS will fail, because of cat, rm, etc commands
++ # and directory handling.
++ # WANT_WIN = YES
++
++ # Comment out if you want to run spell checker tests.
++ # They fail because VMS does not support file names.
++ # WANT_SPELL = YES
++
+ # Comment out if you have gzip on your system
+ # HAVE_GZIP = YES
+
+***************
+*** 53,64 ****
+ test13.out test14.out test15.out test17.out \
+ test18.out test19.out test20.out test21.out test22.out \
+ test23.out test24.out test26.out \
+! test28.out test29.out test31.out test32.out \
+ test33.out test34.out test35.out test36.out test37.out \
+ test38.out test39.out test40.out test41.out test42.out \
+ test43.out test44.out test45.out test46.out \
+ 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
+
+ .IFDEF WANT_GUI
+--- 62,73 ----
+ test13.out test14.out test15.out test17.out \
+ test18.out test19.out test20.out test21.out test22.out \
+ test23.out test24.out test26.out \
+! test28.out test29.out test30.out test31.out test32.out \
+ test33.out test34.out test35.out test36.out test37.out \
+ test38.out test39.out test40.out test41.out test42.out \
+ test43.out test44.out test45.out test46.out \
+ 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
+
+ .IFDEF WANT_GUI
+***************
+*** 67,73 ****
+ .ENDIF
+
+ .IFDEF WANT_UNIX
+! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test30.out test49.out
+ .ENDIF
+
+ .IFDEF HAVE_GZIP
+--- 76,90 ----
+ .ENDIF
+
+ .IFDEF WANT_UNIX
+! SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out
+! .ENDIF
+!
+! .IFDEF WANT_WIN
+! SCRIPT_WIN = test50.out test52.out
+! .ENDIF
+!
+! .IFDEF WANT_SPELL
+! SCRIPT_SPELL = test58.out test59.out
+ .ENDIF
+
+ .IFDEF HAVE_GZIP
+***************
+*** 84,94 ****
+ -@ write sys$output " "$*" "
+ -@ write sys$output "-----------------------------------------------"
+ -@ create/term/wait mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim --noplugin -s dotest.in $*.in
+! -@ if "''F$SEARCH("test.out.*")'" .NES. "" then differences test.out $*.ok;
+ -@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename test.out $*.out
+ -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
+
+! all : clean nolog $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_GZIP) $(SCRIPT_GDIFF)
+ -@ write sys$output " "
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output " All done"
+--- 101,111 ----
+ -@ write sys$output " "$*" "
+ -@ write sys$output "-----------------------------------------------"
+ -@ create/term/wait mcr $(VIMPROG) $(GUI_OPTION) -u vms.vim --noplugin -s dotest.in $*.in
+! -@ if "''F$SEARCH("test.out.*")'" .NES. "" then differences /par test.out $*.ok;
+ -@ if "''F$SEARCH("test.out.*")'" .NES. "" then rename test.out $*.out
+ -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
+
+! all : clean nolog $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) $(SCRIPT_GDIFF)
+ -@ write sys$output " "
+ -@ write sys$output "-----------------------------------------------"
+ -@ write sys$output " All done"
+***************
+*** 113,118 ****
+--- 130,137 ----
+ -@ write sys$output "MAKE_VMS.MMS options:"
+ -@ write sys$output " WANT_GUI = ""$(WANT_GUI)"" "
+ -@ write sys$output " WANT_UNIX = ""$(WANT_UNIX)"" "
++ -@ write sys$output " WANT_WIN = ""$(WANT_WIN)"" "
++ -@ write sys$output " WANT_SPELL= ""$(WANT_SPELL)"" "
+ -@ write sys$output " HAVE_GZIP = ""$(HAVE_GZIP)"" "
+ -@ write sys$output " HAVE_GDIFF= ""$(HAVE_GDIFF)"" "
+ -@ write sys$output "Default vimrc file is VMS.VIM:
+***************
+*** 122,126 ****
+--- 141,153 ----
+ clean :
+ -@ if "''F$SEARCH("*.out")'" .NES. "" then delete/noconfirm/nolog *.out.*
+ -@ if "''F$SEARCH("test.log")'" .NES. "" then delete/noconfirm/nolog test.log.*
++ -@ if "''F$SEARCH("test.ok")'" .NES. "" then delete/noconfirm/nolog test.ok.*
+ -@ if "''F$SEARCH("Xdotest.*")'" .NES. "" then delete/noconfirm/nolog Xdotest.*.*
+ -@ if "''F$SEARCH("*.*_sw*")'" .NES. "" then delete/noconfirm/nolog *.*_sw*.*
++ -@ if "''F$SEARCH("*.failed")'" .NES. "" then delete/noconfirm/nolog *.failed.*
++ -@ if "''F$SEARCH("*.rej")'" .NES. "" then delete/noconfirm/nolog *.rej.*
++ -@ if "''F$SEARCH("tiny.vim")'" .NES. "" then delete/noconfirm/nolog tiny.vim.*
++ -@ if "''F$SEARCH("small.vim")'" .NES. "" then delete/noconfirm/nolog small.vim.*
++ -@ if "''F$SEARCH("mbyte.vim")'" .NES. "" then delete/noconfirm/nolog mbyte.vim.*
++ -@ if "''F$SEARCH("viminfo.*")'" .NES. "" then delete/noconfirm/nolog viminfo.*.*
++
+*** ../vim-7.2.006/src/testdir/test30.in Sun Jul 13 19:17:14 2008
+--- src/testdir/test30.in Sat Aug 16 04:59:37 2008
+***************
+*** 24,33 ****
+ :set nobin eol
+ :bwipe XXUnix XXDos XXMac
+ :" create mixed format files
+! :!cat XXUnix XXDos >XXUxDs
+! :!cat XXUnix XXMac >XXUxMac
+! :!cat XXDos XXMac >XXDosMac
+! :!cat XXUnix XXDos XXMac >XXUxDsMc
+ :"
+ :" try reading and writing with 'fileformats' empty
+ :set fileformat=unix
+--- 24,40 ----
+ :set nobin eol
+ :bwipe XXUnix XXDos XXMac
+ :" create mixed format files
+! :if has("vms")
+! : !copy XXUnix,XXDos XXUxDs.
+! : !copy XXUnix,XXMac XXUxMac.
+! : !copy XXDos,XXMac XXDosMac.
+! : !copy XXUnix,XXDos,XXMac XXUxDsMc.
+! :else
+! : !cat XXUnix XXDos >XXUxDs
+! : !cat XXUnix XXMac >XXUxMac
+! : !cat XXDos XXMac >XXDosMac
+! : !cat XXUnix XXDos XXMac >XXUxDsMc
+! :endif
+ :"
+ :" try reading and writing with 'fileformats' empty
+ :set fileformat=unix
+*** ../vim-7.2.006/src/testdir/test54.in Sun Jan 2 12:43:19 2005
+--- src/testdir/test54.in Tue Aug 19 06:26:55 2008
+***************
+*** 3,10 ****
+ STARTTEST
+ :so small.vim
+ :e xx
+! :!rm -f test.out
+! :au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
+ :e somefile " here, autocommand for xx shall write test.out
+ : " but autocommand shall not apply to buffer named <buffer>
+ :bwipe xx " here, autocommand shall be auto-deleted
+--- 3,15 ----
+ STARTTEST
+ :so small.vim
+ :e xx
+! :if has("vms")
+! : !del test.out.*
+! : au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
+! :else
+! : !rm -f test.out
+! : au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
+! :endif
+ :e somefile " here, autocommand for xx shall write test.out
+ : " but autocommand shall not apply to buffer named <buffer>
+ :bwipe xx " here, autocommand shall be auto-deleted
+*** ../vim-7.2.006/src/version.c Mon Aug 25 05:03:29 2008
+--- src/version.c Mon Sep 1 16:46:50 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 7,
+ /**/
+
+--
+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/patches/7.2.008 b/source/ap/vim/patches/7.2.008
new file mode 100644
index 000000000..d3fb58e5c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.008
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.008
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.008
+Problem: With a BufHidden autocommand that invokes ":bunload" the window
+ count for a buffer can be wrong. (Bob Hiestand)
+Solution: Don't call enter_buffer() when already in that buffer.
+Files: src/buffer.c
+
+
+*** ../vim-7.2.007/src/buffer.c Wed Aug 6 18:32:40 2008
+--- src/buffer.c Mon Sep 1 14:25:45 2008
+***************
+*** 1351,1361 ****
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+ # ifdef FEAT_EVAL
+! /* An autocommand may have deleted buf or aborted the script processing! */
+! if (buf_valid(buf) && !aborting())
+ # else
+! if (buf_valid(buf)) /* an autocommand may have deleted buf! */
+ # endif
+ #endif
+ enter_buffer(buf);
+--- 1351,1362 ----
+ }
+ }
+ #ifdef FEAT_AUTOCMD
++ /* An autocommand may have deleted "buf", already entered it (e.g., when
++ * it did ":bunload") or aborted the script processing! */
+ # ifdef FEAT_EVAL
+! if (buf_valid(buf) && buf != curbuf && !aborting())
+ # else
+! if (buf_valid(buf) && buf != curbuf)
+ # endif
+ #endif
+ enter_buffer(buf);
+*** ../vim-7.2.007/src/version.c Mon Sep 1 16:50:09 2008
+--- src/version.c Mon Sep 1 17:31:28 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 8,
+ /**/
+
+--
+If Pacman had affected us as kids we'd be running around in dark rooms,
+munching pills and listening to repetitive music.
+ -- Marcus Brigstocke
+
+ /// 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.009 b/source/ap/vim/patches/7.2.009
new file mode 100644
index 000000000..fa891dcfc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.009
@@ -0,0 +1,67 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.009
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.009
+Problem: Can't compile with Perl 5.10 on MS-Windows. (Cesar Romani)
+Solution: Add the Perl_sv_free2 function for dynamic loading. (Dan Sharp)
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.008/src/if_perl.xs Thu Jul 24 16:24:15 2008
+--- src/if_perl.xs Mon Sep 1 14:58:37 2008
+***************
+*** 136,141 ****
+--- 136,144 ----
+ # define Perl_newXS_flags dll_Perl_newXS_flags
+ #endif
+ # define Perl_sv_free dll_Perl_sv_free
++ # if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
++ # define Perl_sv_free2 dll_Perl_sv_free2
++ # endif
+ # define Perl_sv_isa dll_Perl_sv_isa
+ # define Perl_sv_magic dll_Perl_sv_magic
+ # define Perl_sv_setiv dll_Perl_sv_setiv
+***************
+*** 268,273 ****
+--- 271,277 ----
+ static void (*boot_DynaLoader)_((pTHX_ CV*));
+
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
++ static void (*Perl_sv_free2)(pTHX_ SV*);
+ static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
+ static void (*Perl_sys_term)(void);
+ static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
+***************
+*** 367,372 ****
+--- 371,377 ----
+ {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr},
+ {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
+ #else
++ {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
+ {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
+ {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
+ {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
+*** ../vim-7.2.008/src/version.c Mon Sep 1 17:32:40 2008
+--- src/version.c Mon Sep 1 17:55:24 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 9,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+11. Specify that your drive-through order is "to go".
+
+ /// 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.010 b/source/ap/vim/patches/7.2.010
new file mode 100644
index 000000000..47315881e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.010
@@ -0,0 +1,206 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.010
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.010
+Problem: When using "K" in Visual mode not all characters are properly
+ escaped. (Ben Schmidt)
+Solution: Use a function with the functionality of shellescape(). (Jan
+ Minar)
+Files: src/mbyte.c, src/misc2.c, src/normal.c
+
+
+*** ../vim-7.2.009/src/mbyte.c Wed Aug 6 18:45:36 2008
+--- src/mbyte.c Wed Sep 3 22:34:48 2008
+***************
+*** 2540,2546 ****
+ return (int)(p - q);
+ }
+
+- #if defined(FEAT_EVAL) || defined(PROTO)
+ /*
+ * Copy a character from "*fp" to "*tp" and advance the pointers.
+ */
+--- 2540,2545 ----
+***************
+*** 2555,2561 ****
+ *tp += l;
+ *fp += l;
+ }
+- #endif
+
+ /*
+ * Return the offset from "p" to the first byte of a character. When "p" is
+--- 2554,2559 ----
+*** ../vim-7.2.009/src/misc2.c Thu Jul 24 20:28:58 2008
+--- src/misc2.c Wed Sep 3 22:05:21 2008
+***************
+*** 1257,1263 ****
+ return escaped_string;
+ }
+
+- #if !defined(BACKSLASH_IN_FILENAME) || defined(FEAT_EVAL) || defined(PROTO)
+ /*
+ * Return TRUE when 'shell' has "csh" in the tail.
+ */
+--- 1257,1262 ----
+***************
+*** 1266,1274 ****
+ {
+ return (strstr((char *)gettail(p_sh), "csh") != NULL);
+ }
+- #endif
+
+- #if defined(FEAT_EVAL) || defined(PROTO)
+ /*
+ * Escape "string" for use as a shell argument with system().
+ * This uses single quotes, except when we know we need to use double qoutes
+--- 1265,1271 ----
+***************
+*** 1391,1397 ****
+
+ return escaped_string;
+ }
+- #endif
+
+ /*
+ * Like vim_strsave(), but make all characters uppercase.
+--- 1388,1393 ----
+*** ../vim-7.2.009/src/normal.c Thu Jul 31 22:03:54 2008
+--- src/normal.c Sat Sep 6 15:06:07 2008
+***************
+*** 5469,5474 ****
+--- 5469,5479 ----
+ STRCPY(buf, "he! ");
+ else
+ {
++ /* An external command will probably use an argument starting
++ * with "-" as an option. To avoid trouble we skip the "-". */
++ while (*ptr == '-')
++ ++ptr;
++
+ /* When a count is given, turn it into a range. Is this
+ * really what we want? */
+ isman = (STRCMP(kp, "man") == 0);
+***************
+*** 5511,5547 ****
+ /*
+ * Now grab the chars in the identifier
+ */
+! if (cmdchar == '*')
+! aux_ptr = (char_u *)(p_magic ? "/.*~[^$\\" : "/^$\\");
+! else if (cmdchar == '#')
+! aux_ptr = (char_u *)(p_magic ? "/?.*~[^$\\" : "/?^$\\");
+! else if (cmdchar == 'K' && !kp_help)
+! aux_ptr = (char_u *)" \t\\\"|!";
+! else
+! /* Don't escape spaces and Tabs in a tag with a backslash */
+! aux_ptr = (char_u *)"\\|\"";
+!
+! p = buf + STRLEN(buf);
+! while (n-- > 0)
+! {
+! /* put a backslash before \ and some others */
+! if (vim_strchr(aux_ptr, *ptr) != NULL)
+! *p++ = '\\';
+! #ifdef FEAT_MBYTE
+! /* When current byte is a part of multibyte character, copy all bytes
+! * of that character. */
+! if (has_mbyte)
+ {
+! int i;
+! int len = (*mb_ptr2len)(ptr) - 1;
+!
+! for (i = 0; i < len && n >= 1; ++i, --n)
+! *p++ = *ptr++;
+ }
+ #endif
+! *p++ = *ptr++;
+ }
+- *p = NUL;
+
+ /*
+ * Execute the command.
+--- 5516,5572 ----
+ /*
+ * Now grab the chars in the identifier
+ */
+! if (cmdchar == 'K' && !kp_help)
+! {
+! /* Escape the argument properly for a shell command */
+! p = vim_strsave_shellescape(ptr, TRUE);
+! if (p == NULL)
+ {
+! vim_free(buf);
+! return;
+ }
++ buf = (char_u *)vim_realloc(buf, STRLEN(buf) + STRLEN(p) + 1);
++ if (buf == NULL)
++ {
++ vim_free(buf);
++ vim_free(p);
++ return;
++ }
++ STRCAT(buf, p);
++ vim_free(p);
++ }
++ else
++ {
++ if (cmdchar == '*')
++ 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);
++ while (n-- > 0)
++ {
++ /* put a backslash before \ and some others */
++ if (vim_strchr(aux_ptr, *ptr) != NULL)
++ *p++ = '\\';
++ #ifdef FEAT_MBYTE
++ /* When current byte is a part of multibyte character, copy all
++ * bytes of that character. */
++ if (has_mbyte)
++ {
++ int i;
++ int len = (*mb_ptr2len)(ptr) - 1;
++
++ for (i = 0; i < len && n >= 1; ++i, --n)
++ *p++ = *ptr++;
++ }
+ #endif
+! *p++ = *ptr++;
+! }
+! *p = NUL;
+ }
+
+ /*
+ * Execute the command.
+*** ../vim-7.2.009/src/version.c Mon Sep 1 17:56:05 2008
+--- src/version.c Sat Sep 6 16:26:42 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 10,
+ /**/
+
+--
+Q. What happens to programmers when they die?
+A: MS-Windows programmers are reinstalled. C++ programmers become undefined,
+ anyone who refers to them will die as well. Java programmers reincarnate
+ after being garbage collected.
+
+ /// 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.011 b/source/ap/vim/patches/7.2.011
new file mode 100644
index 000000000..928f8d638
--- /dev/null
+++ b/source/ap/vim/patches/7.2.011
@@ -0,0 +1,105 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.011
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.011
+Problem: Get an error when inserting a float value from the expression
+ register.
+Solution: Convert the Float to a String automatically in the same place
+ where a List would be converted to a String.
+Files: src/eval.c
+
+
+*** ../vim-7.2.010/src/eval.c Mon Aug 25 04:48:21 2008
+--- src/eval.c Sun Sep 7 13:50:38 2008
+***************
+*** 1256,1278 ****
+
+ /*
+ * Top level evaluation function, returning a string.
+ * Return pointer to allocated memory, or NULL for failure.
+ */
+ char_u *
+! eval_to_string(arg, nextcmd, dolist)
+ char_u *arg;
+ char_u **nextcmd;
+! int dolist; /* turn List into sequence of lines */
+ {
+ typval_T tv;
+ char_u *retval;
+ garray_T ga;
+
+ if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
+ retval = NULL;
+ else
+ {
+! if (dolist && tv.v_type == VAR_LIST)
+ {
+ ga_init2(&ga, (int)sizeof(char), 80);
+ if (tv.vval.v_list != NULL)
+--- 1256,1281 ----
+
+ /*
+ * Top level evaluation function, returning a string.
++ * When "convert" is TRUE convert a List into a sequence of lines and convert
++ * a Float to a String.
+ * Return pointer to allocated memory, or NULL for failure.
+ */
+ char_u *
+! eval_to_string(arg, nextcmd, convert)
+ char_u *arg;
+ char_u **nextcmd;
+! int convert;
+ {
+ typval_T tv;
+ char_u *retval;
+ garray_T ga;
++ char_u numbuf[NUMBUFLEN];
+
+ if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
+ retval = NULL;
+ else
+ {
+! if (convert && tv.v_type == VAR_LIST)
+ {
+ ga_init2(&ga, (int)sizeof(char), 80);
+ if (tv.vval.v_list != NULL)
+***************
+*** 1280,1285 ****
+--- 1283,1295 ----
+ ga_append(&ga, NUL);
+ retval = (char_u *)ga.ga_data;
+ }
++ #ifdef FEAT_FLOAT
++ else if (convert && tv.v_type == VAR_FLOAT)
++ {
++ vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float);
++ retval = vim_strsave(numbuf);
++ }
++ #endif
+ else
+ retval = vim_strsave(get_tv_string(&tv));
+ clear_tv(&tv);
+*** ../vim-7.2.010/src/version.c Sat Sep 6 16:44:06 2008
+--- src/version.c Sun Sep 7 13:52:00 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 11,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+34. You laugh at people with 14400 baud modems.
+
+ /// 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.012 b/source/ap/vim/patches/7.2.012
new file mode 100644
index 000000000..fa3ed2473
--- /dev/null
+++ b/source/ap/vim/patches/7.2.012
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.012
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.012
+Problem: Compiler warnings when building with startup timing.
+Solution: Add type casts.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.011/src/ex_cmds2.c Sun Jul 13 19:36:09 2008
+--- src/ex_cmds2.c Tue Sep 2 11:14:41 2008
+***************
+*** 3145,3152 ****
+ verbose_leave();
+ }
+ #ifdef STARTUPTIME
+! vim_snprintf(IObuff, IOSIZE, "sourcing %s", fname);
+! time_msg(IObuff, &tv_start);
+ time_pop(&tv_rel);
+ #endif
+
+--- 3145,3152 ----
+ verbose_leave();
+ }
+ #ifdef STARTUPTIME
+! vim_snprintf((char *)IObuff, IOSIZE, "sourcing %s", fname);
+! time_msg((char *)IObuff, &tv_start);
+ time_pop(&tv_rel);
+ #endif
+
+*** ../vim-7.2.011/src/version.c Sun Sep 7 13:54:31 2008
+--- src/version.c Sun Sep 7 15:49:00 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 12,
+ /**/
+
+--
+He who laughs last, thinks slowest.
+
+ /// 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.013 b/source/ap/vim/patches/7.2.013
new file mode 100644
index 000000000..2645f0a7d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.013
@@ -0,0 +1,135 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.013
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.013
+Problem: While waiting for the X selection Vim consumes a lot of CPU time
+ and hangs until a response is received.
+Solution: Sleep a bit when the selection event hasn't been received yet.
+ Time out after a couple of seconds to avoid a hang when the
+ selection owner isn't responding.
+Files: src/ui.c
+
+
+*** ../vim-7.2.012/src/ui.c Mon Jul 14 21:47:49 2008
+--- src/ui.c Sun Sep 7 16:54:35 2008
+***************
+*** 2110,2115 ****
+--- 2110,2117 ----
+ int i;
+ int nbytes = 0;
+ char_u *buffer;
++ time_t start_time;
++ int timed_out = FALSE;
+
+ for (i =
+ #ifdef FEAT_MBYTE
+***************
+*** 2129,2134 ****
+--- 2131,2137 ----
+ case 3: type = text_atom; break;
+ default: type = XA_STRING;
+ }
++ success = FALSE;
+ XtGetSelectionValue(myShell, cbd->sel_atom, type,
+ clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+
+***************
+*** 2141,2167 ****
+ * characters, then they will appear before the one that requested the
+ * paste! Don't worry, we will catch up with any other events later.
+ */
+ for (;;)
+ {
+ if (XCheckTypedEvent(dpy, SelectionNotify, &event))
+ break;
+ if (XCheckTypedEvent(dpy, SelectionRequest, &event))
+ /* We may get a SelectionRequest here and if we don't handle
+ * it we hang. KDE klipper does this, for example. */
+ XtDispatchEvent(&event);
+
+ /* Do we need this? Probably not. */
+ XSync(dpy, False);
+
+! /* Bernhard Walle solved a slow paste response in an X terminal by
+! * adding: usleep(10000); here. */
+ }
+
+- /* this is where clip_x11_request_selection_cb() is actually called */
+- XtDispatchEvent(&event);
+-
+ if (success)
+ return;
+ }
+
+ /* Final fallback position - use the X CUT_BUFFER0 store */
+--- 2144,2189 ----
+ * characters, then they will appear before the one that requested the
+ * paste! Don't worry, we will catch up with any other events later.
+ */
++ start_time = time(NULL);
+ for (;;)
+ {
+ if (XCheckTypedEvent(dpy, SelectionNotify, &event))
++ {
++ /* this is where clip_x11_request_selection_cb() is actually
++ * called */
++ XtDispatchEvent(&event);
+ break;
++ }
+ if (XCheckTypedEvent(dpy, SelectionRequest, &event))
+ /* We may get a SelectionRequest here and if we don't handle
+ * it we hang. KDE klipper does this, for example. */
+ XtDispatchEvent(&event);
+
++ /* Time out after 2 to 3 seconds to avoid that we hang when the
++ * other process doesn't respond. Note that the SelectionNotify
++ * event may still come later when the selection owner comes back
++ * to life and the text gets inserted unexpectedly (by xterm).
++ * Don't know how to avoid that :-(. */
++ if (time(NULL) > start_time + 2)
++ {
++ timed_out = TRUE;
++ break;
++ }
++
+ /* Do we need this? Probably not. */
+ XSync(dpy, False);
+
+! /* Wait for 1 msec to avoid that we eat up all CPU time. */
+! ui_delay(1L, TRUE);
+ }
+
+ if (success)
+ return;
++
++ /* don't do a retry with another type after timing out, otherwise we
++ * hang for 15 seconds. */
++ if (timed_out)
++ break;
+ }
+
+ /* Final fallback position - use the X CUT_BUFFER0 store */
+*** ../vim-7.2.012/src/version.c Sun Sep 7 15:49:45 2008
+--- src/version.c Sun Sep 7 21:45:55 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 13,
+ /**/
+
+--
+The users that I support would double-click on a landmine to find out
+what happens. -- A system administrator
+
+ /// 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.014 b/source/ap/vim/patches/7.2.014
new file mode 100644
index 000000000..a03794868
--- /dev/null
+++ b/source/ap/vim/patches/7.2.014
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.014
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.014
+Problem: synstack() doesn't work in an emptly line.
+Solution: Accept column zero as a valid position.
+Files: src/eval.c
+
+
+*** ../vim-7.2.013/src/eval.c Sun Sep 7 13:54:31 2008
+--- src/eval.c Sun Sep 7 13:50:38 2008
+***************
+*** 16667,16673 ****
+ col = get_tv_number(&argvars[1]) - 1; /* -1 on type error */
+
+ if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
+! && col >= 0 && col < (long)STRLEN(ml_get(lnum))
+ && rettv_list_alloc(rettv) != FAIL)
+ {
+ (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
+--- 16667,16673 ----
+ col = get_tv_number(&argvars[1]) - 1; /* -1 on type error */
+
+ if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count
+! && col >= 0 && (col == 0 || col < (long)STRLEN(ml_get(lnum)))
+ && rettv_list_alloc(rettv) != FAIL)
+ {
+ (void)syn_get_id(curwin, lnum, (colnr_T)col, FALSE, NULL, TRUE);
+*** ../vim-7.2.013/src/version.c Sun Sep 7 21:47:51 2008
+--- src/version.c Wed Sep 10 15:36:52 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 14,
+ /**/
+
+--
+Everybody lies, but it doesn't matter since nobody listens.
+ -- Lieberman's Law
+
+ /// 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.015 b/source/ap/vim/patches/7.2.015
new file mode 100644
index 000000000..e03ac1564
--- /dev/null
+++ b/source/ap/vim/patches/7.2.015
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.015
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.015
+Problem: "make all test install" doesn't stop when the test fails. (Daniel
+ Shahaf)
+Solution: When test.log contains failures exit with non-zero status.
+Files: src/testdir/Makefile
+
+
+*** ../vim-7.2.014/src/testdir/Makefile Wed Jun 25 00:22:53 2008
+--- src/testdir/Makefile Sun Sep 7 21:31:49 2008
+***************
+*** 26,40 ****
+
+ .SUFFIXES: .in .out
+
+! nongui: nolog $(SCRIPTS)
+! @echo
+! @cat test.log
+! @echo ALL DONE
+
+! gui: nolog $(SCRIPTS) $(SCRIPTS_GUI)
+ @echo
+! @cat test.log
+! @echo ALL DONE
+
+ $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+
+--- 26,42 ----
+
+ .SUFFIXES: .in .out
+
+! nongui: nolog $(SCRIPTS) report
+!
+! gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report
+
+! report:
+ @echo
+! @echo 'Test results:'
+! @/bin/sh -c "if test -f test.log; \
+! then cat test.log; echo TEST FAILURE; exit 1; \
+! else echo ALL DONE; \
+! fi"
+
+ $(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
+
+***************
+*** 71,74 ****
+ test60.out: test60.vim
+
+ nolog:
+! -echo Test results: >test.log
+--- 73,76 ----
+ test60.out: test60.vim
+
+ nolog:
+! -rm -f test.log
+*** ../vim-7.2.014/src/version.c Wed Sep 10 15:38:13 2008
+--- src/version.c Wed Sep 10 18:23:38 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 15,
+ /**/
+
+--
+Light travels faster than sound. This is why some people
+appear bright until you hear them speak
+
+ /// 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.016 b/source/ap/vim/patches/7.2.016
new file mode 100644
index 000000000..03d5207f2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.016
@@ -0,0 +1,166 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.016
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.016
+Problem: The pattern being completed may be in freed memory when the
+ command line is being reallocated. (Dominique Pelle)
+Solution: Keep a pointer to the expand_T in the command line structure.
+ Don't use <S-Tab> as CTRL-P when there are no results. Clear the
+ completion when using a command line from the history.
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.015/src/ex_getln.c Fri Aug 8 12:58:59 2008
+--- src/ex_getln.c Wed Sep 10 22:43:41 2008
+***************
+*** 31,36 ****
+--- 31,38 ----
+ int cmdattr; /* attributes for prompt */
+ int overstrike; /* Typing mode on the command line. Shared by
+ getcmdline() and put_on_cmdline(). */
++ expand_T *xpc; /* struct being used for expansion, xp_pattern
++ may point into cmdbuff */
+ int xp_context; /* type of expansion */
+ # ifdef FEAT_EVAL
+ char_u *xp_arg; /* user-defined expansion arg */
+***************
+*** 38,44 ****
+ # endif
+ };
+
+! static struct cmdline_info ccline; /* current cmdline_info */
+
+ static int cmd_showtail; /* Only show path tail in lists ? */
+
+--- 40,50 ----
+ # endif
+ };
+
+! /* The current cmdline_info. It is initialized in getcmdline() and after that
+! * used by other functions. When invoking getcmdline() recursively it needs
+! * to be saved with save_cmdline() and restored with restore_cmdline().
+! * TODO: make it local to getcmdline() and pass it around. */
+! static struct cmdline_info ccline;
+
+ static int cmd_showtail; /* Only show path tail in lists ? */
+
+***************
+*** 238,243 ****
+--- 244,250 ----
+ }
+
+ ExpandInit(&xpc);
++ ccline.xpc = &xpc;
+
+ #ifdef FEAT_RIGHTLEFT
+ if (curwin->w_p_rl && *curwin->w_p_rlc == 's'
+***************
+*** 408,416 ****
+ #endif
+
+ /*
+! * <S-Tab> works like CTRL-P (unless 'wc' is <S-Tab>).
+ */
+! if (c != p_wc && c == K_S_TAB && xpc.xp_numfiles != -1)
+ c = Ctrl_P;
+
+ #ifdef FEAT_WILDMENU
+--- 415,424 ----
+ #endif
+
+ /*
+! * When there are matching completions to select <S-Tab> works like
+! * CTRL-P (unless 'wc' is <S-Tab>).
+ */
+! if (c != p_wc && c == K_S_TAB && xpc.xp_numfiles > 0)
+ c = Ctrl_P;
+
+ #ifdef FEAT_WILDMENU
+***************
+*** 1513,1518 ****
+--- 1521,1527 ----
+ int old_firstc;
+
+ vim_free(ccline.cmdbuff);
++ xpc.xp_context = EXPAND_NOTHING;
+ if (hiscnt == hislen)
+ p = lookfor; /* back to the old one */
+ else
+***************
+*** 1839,1844 ****
+--- 1848,1854 ----
+ #endif
+
+ ExpandCleanup(&xpc);
++ ccline.xpc = NULL;
+
+ #ifdef FEAT_SEARCH_EXTRA
+ if (did_incsearch)
+***************
+*** 2508,2513 ****
+--- 2518,2537 ----
+ }
+ mch_memmove(ccline.cmdbuff, p, (size_t)ccline.cmdlen + 1);
+ vim_free(p);
++
++ if (ccline.xpc != NULL
++ && ccline.xpc->xp_pattern != NULL
++ && ccline.xpc->xp_context != EXPAND_NOTHING
++ && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
++ {
++ int i = ccline.xpc->xp_pattern - p;
++
++ /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
++ * to point into the newly allocated memory. */
++ if (i >= 0 && i <= ccline.cmdlen)
++ ccline.xpc->xp_pattern = ccline.cmdbuff + i;
++ }
++
+ return OK;
+ }
+
+***************
+*** 2875,2880 ****
+--- 2899,2905 ----
+ prev_ccline = ccline;
+ ccline.cmdbuff = NULL;
+ ccline.cmdprompt = NULL;
++ ccline.xpc = NULL;
+ }
+
+ /*
+***************
+*** 3582,3587 ****
+--- 3607,3613 ----
+ ExpandInit(xp)
+ expand_T *xp;
+ {
++ xp->xp_pattern = NULL;
+ xp->xp_backslash = XP_BS_NONE;
+ #ifndef BACKSLASH_IN_FILENAME
+ xp->xp_shell = FALSE;
+*** ../vim-7.2.015/src/version.c Wed Sep 10 18:25:18 2008
+--- src/version.c Sun Sep 14 14:38:47 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 16,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+53. To find out what time it is, you send yourself an e-mail and check the
+ "Date:" field.
+
+ /// 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.017 b/source/ap/vim/patches/7.2.017
new file mode 100644
index 000000000..99979a152
--- /dev/null
+++ b/source/ap/vim/patches/7.2.017
@@ -0,0 +1,162 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.017
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.017
+Problem: strlen() used on text that may not end in a NUL. (Dominique Pelle)
+ Pasting a very big selection doesn't work.
+Solution: Use the length passed to the XtSelectionCallbackProc() function.
+ After getting the SelectionNotify event continue dispatching
+ events until the callback is actually called. Also dispatch the
+ PropertyNotify event.
+Files: src/ui.c
+
+
+*** ../vim-7.2.016/src/ui.c Sun Sep 7 21:47:51 2008
+--- src/ui.c Sun Sep 14 15:52:19 2008
+***************
+*** 2020,2026 ****
+
+ if (value == NULL || *length == 0)
+ {
+! clip_free_selection(cbd); /* ??? [what's the query?] */
+ *(int *)success = FALSE;
+ return;
+ }
+--- 2020,2026 ----
+
+ if (value == NULL || *length == 0)
+ {
+! clip_free_selection(cbd); /* nothing received, clear register */
+ *(int *)success = FALSE;
+ return;
+ }
+***************
+*** 2076,2082 ****
+ text_prop.value = (unsigned char *)value;
+ text_prop.encoding = *type;
+ text_prop.format = *format;
+! text_prop.nitems = STRLEN(value);
+ status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
+ &text_list, &n_text);
+ if (status != Success || n_text < 1)
+--- 2076,2082 ----
+ text_prop.value = (unsigned char *)value;
+ text_prop.encoding = *type;
+ text_prop.format = *format;
+! text_prop.nitems = len;
+ status = XmbTextPropertyToTextList(X_DISPLAY, &text_prop,
+ &text_list, &n_text);
+ if (status != Success || n_text < 1)
+***************
+*** 2131,2137 ****
+ case 3: type = text_atom; break;
+ default: type = XA_STRING;
+ }
+! success = FALSE;
+ XtGetSelectionValue(myShell, cbd->sel_atom, type,
+ clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+
+--- 2131,2137 ----
+ case 3: type = text_atom; break;
+ default: type = XA_STRING;
+ }
+! success = MAYBE;
+ XtGetSelectionValue(myShell, cbd->sel_atom, type,
+ clip_x11_request_selection_cb, (XtPointer)&success, CurrentTime);
+
+***************
+*** 2145,2169 ****
+ * paste! Don't worry, we will catch up with any other events later.
+ */
+ start_time = time(NULL);
+! for (;;)
+ {
+! if (XCheckTypedEvent(dpy, SelectionNotify, &event))
+ {
+! /* this is where clip_x11_request_selection_cb() is actually
+! * called */
+ XtDispatchEvent(&event);
+! break;
+ }
+- if (XCheckTypedEvent(dpy, SelectionRequest, &event))
+- /* We may get a SelectionRequest here and if we don't handle
+- * it we hang. KDE klipper does this, for example. */
+- XtDispatchEvent(&event);
+
+ /* Time out after 2 to 3 seconds to avoid that we hang when the
+ * other process doesn't respond. Note that the SelectionNotify
+ * event may still come later when the selection owner comes back
+! * to life and the text gets inserted unexpectedly (by xterm).
+! * Don't know how to avoid that :-(. */
+ if (time(NULL) > start_time + 2)
+ {
+ timed_out = TRUE;
+--- 2145,2171 ----
+ * paste! Don't worry, we will catch up with any other events later.
+ */
+ start_time = time(NULL);
+! while (success == MAYBE)
+ {
+! if (XCheckTypedEvent(dpy, SelectionNotify, &event)
+! || XCheckTypedEvent(dpy, SelectionRequest, &event)
+! || XCheckTypedEvent(dpy, PropertyNotify, &event))
+ {
+! /* This is where clip_x11_request_selection_cb() should be
+! * called. It may actually happen a bit later, so we loop
+! * until "success" changes.
+! * We may get a SelectionRequest here and if we don't handle
+! * it we hang. KDE klipper does this, for example.
+! * We need to handle a PropertyNotify for large selections. */
+ XtDispatchEvent(&event);
+! continue;
+ }
+
+ /* Time out after 2 to 3 seconds to avoid that we hang when the
+ * other process doesn't respond. Note that the SelectionNotify
+ * event may still come later when the selection owner comes back
+! * to life and the text gets inserted unexpectedly. Don't know
+! * why that happens or how to avoid that :-(. */
+ if (time(NULL) > start_time + 2)
+ {
+ timed_out = TRUE;
+***************
+*** 2177,2183 ****
+ ui_delay(1L, TRUE);
+ }
+
+! if (success)
+ return;
+
+ /* don't do a retry with another type after timing out, otherwise we
+--- 2179,2185 ----
+ ui_delay(1L, TRUE);
+ }
+
+! if (success == TRUE)
+ return;
+
+ /* don't do a retry with another type after timing out, otherwise we
+*** ../vim-7.2.016/src/version.c Sun Sep 14 14:41:44 2008
+--- src/version.c Sun Sep 14 15:55:34 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 17,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+54. You start tilting your head sideways to smile. :-)
+
+ /// 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.018 b/source/ap/vim/patches/7.2.018
new file mode 100644
index 000000000..b195f09dc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.018
@@ -0,0 +1,45 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.018
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.018
+Problem: Memory leak when substitute is aborted.
+Solution: Free the buffer allocated for the new text. (Dominique Pelle)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.017/src/ex_cmds.c Wed Aug 6 15:03:07 2008
+--- src/ex_cmds.c Sun Sep 14 13:45:03 2008
+***************
+*** 5059,5064 ****
+--- 5059,5065 ----
+
+ if (did_sub)
+ ++sub_nlines;
++ vim_free(new_start); /* for when substitute was cancelled */
+ vim_free(sub_firstline); /* free the copy of the original line */
+ sub_firstline = NULL;
+ }
+*** ../vim-7.2.017/src/version.c Sun Sep 14 15:57:54 2008
+--- src/version.c Sun Sep 14 21:38:25 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 18,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+55. You ask your doctor to implant a gig in your brain.
+
+ /// 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.019 b/source/ap/vim/patches/7.2.019
new file mode 100644
index 000000000..4404bca4f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.019
@@ -0,0 +1,65 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.019
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.019
+Problem: Completion of ":noautocmd" doesn't work and exists(":noautocmd")
+ returns zero. (Ben Fritz)
+Solution: Add "noautocmd" to the list of modifiers and commands.
+Files: src/ex_cmds.h, src/ex_docmd.c
+
+
+*** ../vim-7.2.018/src/ex_cmds.h Wed Jun 25 00:44:40 2008
+--- src/ex_cmds.h Sat Sep 13 18:37:25 2008
+***************
+*** 635,640 ****
+--- 635,642 ----
+ RANGE|NOTADR|ZEROR|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_noremap, "noremap", ex_map,
+ BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
++ EX(CMD_noautocmd, "noautocmd", ex_wrongmodifier,
++ NEEDARG|EXTRA|NOTRLCOM),
+ EX(CMD_nohlsearch, "nohlsearch", ex_nohlsearch,
+ TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_noreabbrev, "noreabbrev", ex_abbreviate,
+*** ../vim-7.2.018/src/ex_docmd.c Sat Jul 26 16:04:39 2008
+--- src/ex_docmd.c Mon Sep 15 20:04:53 2008
+***************
+*** 2978,2983 ****
+--- 2979,2985 ----
+ {"keepmarks", 3, FALSE},
+ {"leftabove", 5, FALSE},
+ {"lockmarks", 3, FALSE},
++ {"noautocmd", 3, FALSE},
+ {"rightbelow", 6, FALSE},
+ {"sandbox", 3, FALSE},
+ {"silent", 3, FALSE},
+*** ../vim-7.2.018/src/version.c Sun Sep 14 21:40:26 2008
+--- src/version.c Thu Sep 18 12:39:56 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 19,
+ /**/
+
+--
+Proof techniques #2: Proof by Oddity.
+ SAMPLE: To prove that horses have an infinite number of legs.
+(1) Horses have an even number of legs.
+(2) They have two legs in back and fore legs in front.
+(3) This makes a total of six legs, which certainly is an odd number of
+ legs for a horse.
+(4) But the only number that is both odd and even is infinity.
+(5) Therefore, horses must have an infinite number of legs.
+
+ /// 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.020 b/source/ap/vim/patches/7.2.020
new file mode 100644
index 000000000..fb290407f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.020
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.020
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.020
+Problem: Starting the GUI when the executable starts with 'k', but the KDE
+ version no longer exists.
+Solution: Don't have "kvim" start the GUI.
+Files: src/main.c
+
+
+*** ../vim-7.2.019/src/main.c Thu Jul 24 19:34:23 2008
+--- src/main.c Sun Sep 14 13:26:10 2008
+***************
+*** 1457,1463 ****
+ ++initstr;
+ }
+
+! if (TOLOWER_ASC(initstr[0]) == 'g' || initstr[0] == 'k')
+ {
+ main_start_gui();
+ #ifdef FEAT_GUI
+--- 1458,1465 ----
+ ++initstr;
+ }
+
+! /* "gvim" starts the GUI. Also accept "Gvim" for MS-Windows. */
+! if (TOLOWER_ASC(initstr[0]) == 'g')
+ {
+ main_start_gui();
+ #ifdef FEAT_GUI
+*** ../vim-7.2.019/src/version.c Thu Sep 18 12:43:21 2008
+--- src/version.c Thu Sep 18 20:54:10 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 20,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+90. Instead of calling you to dinner, your spouse sends 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.021 b/source/ap/vim/patches/7.2.021
new file mode 100644
index 000000000..fee0bd85c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.021
@@ -0,0 +1,147 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.021
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.021
+Problem: When executing autocommands getting the full file name may be
+ slow. (David Kotchan)
+Solution: Postpone calling FullName_save() until autocmd_fname is used.
+Files: src/ex_docmd.c, src/fileio.c, src/globals.h
+
+
+*** ../vim-7.2.020/src/ex_docmd.c Thu Sep 18 12:43:21 2008
+--- src/ex_docmd.c Mon Sep 15 20:04:53 2008
+***************
+*** 9542,9547 ****
+--- 9569,9583 ----
+ #ifdef FEAT_AUTOCMD
+ case SPEC_AFILE: /* file name for autocommand */
+ result = autocmd_fname;
++ if (result != NULL && !autocmd_fname_full)
++ {
++ /* Still need to turn the fname into a full path. It is
++ * postponed to avoid a delay when <afile> is not used. */
++ autocmd_fname_full = TRUE;
++ result = FullName_save(autocmd_fname, FALSE);
++ vim_free(autocmd_fname);
++ autocmd_fname = result;
++ }
+ if (result == NULL)
+ {
+ *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"<afile>\"");
+*** ../vim-7.2.020/src/fileio.c Wed Aug 6 18:43:07 2008
+--- src/fileio.c Tue Sep 16 21:24:26 2008
+***************
+*** 8523,8528 ****
+--- 8523,8529 ----
+ char_u *save_sourcing_name;
+ linenr_T save_sourcing_lnum;
+ char_u *save_autocmd_fname;
++ int save_autocmd_fname_full;
+ int save_autocmd_bufnr;
+ char_u *save_autocmd_match;
+ int save_autocmd_busy;
+***************
+*** 8601,8606 ****
+--- 8602,8608 ----
+ * Save the autocmd_* variables and info about the current buffer.
+ */
+ save_autocmd_fname = autocmd_fname;
++ save_autocmd_fname_full = autocmd_fname_full;
+ save_autocmd_bufnr = autocmd_bufnr;
+ save_autocmd_match = autocmd_match;
+ save_autocmd_busy = autocmd_busy;
+***************
+*** 8618,8631 ****
+ if (fname != NULL && *fname != NUL)
+ autocmd_fname = fname;
+ else if (buf != NULL)
+! autocmd_fname = buf->b_fname;
+ else
+ autocmd_fname = NULL;
+ }
+ else
+ autocmd_fname = fname_io;
+ if (autocmd_fname != NULL)
+! autocmd_fname = FullName_save(autocmd_fname, FALSE);
+
+ /*
+ * Set the buffer number to be used for <abuf>.
+--- 8620,8634 ----
+ if (fname != NULL && *fname != NUL)
+ autocmd_fname = fname;
+ else if (buf != NULL)
+! autocmd_fname = buf->b_ffname;
+ else
+ autocmd_fname = NULL;
+ }
+ else
+ autocmd_fname = fname_io;
+ if (autocmd_fname != NULL)
+! autocmd_fname = vim_strsave(autocmd_fname);
+! autocmd_fname_full = FALSE; /* call FullName_save() later */
+
+ /*
+ * Set the buffer number to be used for <abuf>.
+***************
+*** 8810,8815 ****
+--- 8813,8819 ----
+ sourcing_lnum = save_sourcing_lnum;
+ vim_free(autocmd_fname);
+ autocmd_fname = save_autocmd_fname;
++ autocmd_fname_full = save_autocmd_fname_full;
+ autocmd_bufnr = save_autocmd_bufnr;
+ autocmd_match = save_autocmd_match;
+ #ifdef FEAT_EVAL
+***************
+*** 8918,8924 ****
+ {
+ apc->curpat = NULL;
+
+! /* only use a pattern when it has not been removed, has commands and
+ * the group matches. For buffer-local autocommands only check the
+ * buffer number. */
+ if (ap->pat != NULL && ap->cmds != NULL
+--- 8922,8928 ----
+ {
+ apc->curpat = NULL;
+
+! /* Only use a pattern when it has not been removed, has commands and
+ * the group matches. For buffer-local autocommands only check the
+ * buffer number. */
+ if (ap->pat != NULL && ap->cmds != NULL
+*** ../vim-7.2.020/src/globals.h Sat Jul 26 16:04:49 2008
+--- src/globals.h Mon Sep 15 19:59:28 2008
+***************
+*** 1022,1027 ****
+--- 1022,1028 ----
+ #endif
+ #ifdef FEAT_AUTOCMD
+ EXTERN char_u *autocmd_fname INIT(= NULL); /* fname for <afile> on cmdline */
++ EXTERN int autocmd_fname_full; /* autocmd_fname is full path */
+ EXTERN int autocmd_bufnr INIT(= 0); /* fnum for <abuf> on cmdline */
+ EXTERN char_u *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
+ EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
+*** ../vim-7.2.020/src/version.c Thu Sep 18 20:55:19 2008
+--- src/version.c Thu Sep 18 21:24:30 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 21,
+ /**/
+
+--
+From "know your smileys":
+ :----} You lie like Pinocchio
+
+ /// 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.022 b/source/ap/vim/patches/7.2.022
new file mode 100644
index 000000000..392773523
--- /dev/null
+++ b/source/ap/vim/patches/7.2.022
@@ -0,0 +1,140 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.022 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.022 (extra)
+Problem: Testing is not possible when compiling with MingW.
+Solution: Add a MingW specific test Makefile. (Bill McCarthy)
+Files: Filelist, src/testdir/Make_ming.mak
+
+
+*** ../vim-7.2.021/Filelist Sun Jul 13 19:33:31 2008
+--- Filelist Sun Sep 14 21:47:01 2008
+***************
+*** 285,290 ****
+--- 285,291 ----
+ src/proto/os_win32.pro \
+ src/proto/os_mswin.pro \
+ src/testdir/Make_dos.mak \
++ src/testdir/Make_ming.mak \
+ src/testdir/dos.vim \
+ src/uninstal.c \
+ src/vim.def \
+*** ../vim-7.2.021/src/testdir/Make_ming.mak Sat Sep 20 16:25:06 2008
+--- src/testdir/Make_ming.mak Sat Sep 20 16:25:58 2008
+***************
+*** 0 ****
+--- 1,91 ----
++ # Makefile to run tests for Vim, on Dos-like machines
++ # with sh.exe or zsh.exe in the path or not.
++ #
++ # Author: Bill McCarthy
++ #
++ # Note that test54 has been removed until it is fixed.
++ #
++ # Requires a set of Unix tools: echo, diff, etc.
++
++ ifneq (sh.exe, $(SHELL))
++ DEL = rm -f
++ MV = mv
++ CP = cp
++ DIRSLASH = /
++ else
++ DEL = del
++ MV = rename
++ CP = copy
++ DIRSLASH = \\
++ endif
++
++ VIMPROG = ..$(DIRSLASH)vim
++
++ # Omitted:
++ # test2 "\\tmp" doesn't work.
++ # test10 'errorformat' is different
++ # test12 can't unlink a swap file
++ # test25 uses symbolic link
++ # test27 can't edit file with "*" in file name
++ # test31 16 bit version runs out of memory...
++
++ SCRIPTS16 = test1.out test19.out test20.out test22.out \
++ test23.out test24.out test28.out test29.out \
++ test35.out test36.out test43.out \
++ test44.out test45.out test46.out test47.out \
++ test48.out test51.out test53.out \
++ test55.out test56.out test57.out test58.out test59.out \
++ test60.out test61.out test62.out test63.out test64.out
++
++ # Had to remove test54 which doesn't work yet.
++ # test54.out
++
++ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
++ test8.out test9.out test11.out test13.out test14.out \
++ 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
++
++ SCRIPTS32 = test50.out
++
++ SCRIPTS_GUI = test16.out
++
++ .SUFFIXES: .in .out
++
++ vimall: fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI) $(SCRIPTS32)
++ echo ALL DONE
++
++ nongui: fixff $(SCRIPTS16) $(SCRIPTS)
++ echo ALL DONE
++
++ small:
++ echo ALL DONE
++
++ gui: fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS_GUI)
++ echo ALL DONE
++
++ win32: fixff $(SCRIPTS16) $(SCRIPTS) $(SCRIPTS32)
++ echo ALL DONE
++
++ fixff:
++ -$(VIMPROG) -u dos.vim --noplugin "+argdo set ff=dos|upd" +q *.in *.ok
++
++ clean:
++ -$(DEL) *.out
++ -$(DEL) test.ok
++ -$(DEL) small.vim
++ -$(DEL) tiny.vim
++ -$(DEL) mbyte.vim
++ -$(DEL) X*
++ -$(DEL) viminfo
++
++ .in.out:
++ $(CP) $*.ok test.ok
++ $(VIMPROG) -u dos.vim -U NONE --noplugin -s dotest.in $*.in
++ diff test.out $*.ok
++ -$(DEL) $*.out
++ $(MV) test.out $*.out
++ -$(DEL) X*
++ -$(DEL) test.ok
++ -$(DEL) viminfo
+*** ../vim-7.2.021/src/version.c Thu Sep 18 21:29:07 2008
+--- src/version.c Sat Sep 20 16:25:16 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 22,
+ /**/
+
+--
+Where do you want to crash 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.023 b/source/ap/vim/patches/7.2.023
new file mode 100644
index 000000000..0f6ad1e12
--- /dev/null
+++ b/source/ap/vim/patches/7.2.023
@@ -0,0 +1,65 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.023
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.023
+Problem: 'cursorcolumn' is in the wrong place in a closed fold when the
+ display is shifted left. (Gary Johnson)
+Solution: Subtract w_skipcol or w_leftcol when needed.
+Files: src/screen.c
+
+
+*** ../vim-7.2.022/src/screen.c Thu Jul 24 20:29:09 2008
+--- src/screen.c Fri Sep 26 21:23:06 2008
+***************
+*** 2439,2447 ****
+
+ #ifdef FEAT_SYN_HL
+ /* Show 'cursorcolumn' in the fold line. */
+! if (wp->w_p_cuc && (int)wp->w_virtcol + txtcol < W_WIDTH(wp))
+! ScreenAttrs[off + wp->w_virtcol + txtcol] = hl_combine_attr(
+! ScreenAttrs[off + wp->w_virtcol + txtcol], hl_attr(HLF_CUC));
+ #endif
+
+ SCREEN_LINE(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
+--- 2439,2455 ----
+
+ #ifdef FEAT_SYN_HL
+ /* Show 'cursorcolumn' in the fold line. */
+! if (wp->w_p_cuc)
+! {
+! txtcol += wp->w_virtcol;
+! if (wp->w_p_wrap)
+! txtcol -= wp->w_skipcol;
+! else
+! txtcol -= wp->w_leftcol;
+! if (txtcol >= 0 && txtcol < W_WIDTH(wp))
+! ScreenAttrs[off + txtcol] = hl_combine_attr(
+! ScreenAttrs[off + txtcol], hl_attr(HLF_CUC));
+! }
+ #endif
+
+ SCREEN_LINE(row + W_WINROW(wp), W_WINCOL(wp), (int)W_WIDTH(wp),
+*** ../vim-7.2.022/src/version.c Sat Sep 20 16:26:10 2008
+--- src/version.c Wed Oct 1 21:07:31 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 23,
+ /**/
+
+--
+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.024 b/source/ap/vim/patches/7.2.024
new file mode 100644
index 000000000..033b0a26b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.024
@@ -0,0 +1,50 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.024
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.024
+Problem: It's possible to set 'history' to a negative value and that causes
+ an out-of-memory error.
+Solution: Check that 'history' has a positive value. (Doug Kearns)
+Files: src/option.c
+
+
+*** ../vim-7.2.023/src/option.c Thu Jul 24 18:45:15 2008
+--- src/option.c Fri Sep 26 22:20:20 2008
+***************
+*** 7974,7979 ****
+--- 7974,7984 ----
+ else /* curwin->w_p_scr > curwin->w_height */
+ curwin->w_p_scr = curwin->w_height;
+ }
++ if (p_hi < 0)
++ {
++ errmsg = e_positive;
++ p_hi = 0;
++ }
+ if (p_report < 0)
+ {
+ errmsg = e_positive;
+*** ../vim-7.2.023/src/version.c Wed Oct 1 21:09:02 2008
+--- src/version.c Thu Oct 2 22:47:22 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 24,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+127. You bring your laptop and cellular phone to church.
+
+ /// 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.025 b/source/ap/vim/patches/7.2.025
new file mode 100644
index 000000000..dab2cc867
--- /dev/null
+++ b/source/ap/vim/patches/7.2.025
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.025
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.025
+Problem: When a CursorHold event invokes system() it is retriggered over
+ and over again.
+Solution: Don't reset did_cursorhold when getting K_IGNORE.
+Files: src/normal.c
+
+
+*** ../vim-7.2.024/src/normal.c Sat Sep 6 16:44:06 2008
+--- src/normal.c Sat Sep 27 13:03:34 2008
+***************
+*** 1132,1138 ****
+ out_flush();
+ #endif
+ #ifdef FEAT_AUTOCMD
+! did_cursorhold = FALSE;
+ #endif
+
+ State = NORMAL;
+--- 1132,1139 ----
+ out_flush();
+ #endif
+ #ifdef FEAT_AUTOCMD
+! if (ca.cmdchar != K_IGNORE)
+! did_cursorhold = FALSE;
+ #endif
+
+ State = NORMAL;
+*** ../vim-7.2.024/src/version.c Thu Oct 2 22:48:01 2008
+--- src/version.c Thu Oct 2 22:54:41 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 25,
+ /**/
+
+--
+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.026 b/source/ap/vim/patches/7.2.026
new file mode 100644
index 000000000..ec8b1c7b1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.026
@@ -0,0 +1,105 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.026
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.026 (after 7.2.010)
+Problem: "K" doesn't use the length of the identifier but uses the rest of
+ the line.
+Solution: Copy the desired number of characters first.
+Files: src/normal.c
+
+
+*** ../vim-7.2.025/src/normal.c Thu Oct 2 22:55:17 2008
+--- src/normal.c Sat Nov 1 13:41:03 2008
+***************
+*** 183,188 ****
+--- 183,190 ----
+ static void nv_cursorhold __ARGS((cmdarg_T *cap));
+ #endif
+
++ static char *e_noident = N_("E349: No identifier under cursor");
++
+ /*
+ * Function to be called for a Normal or Visual mode command.
+ * The argument is a cmdarg_T.
+***************
+*** 3510,3516 ****
+ if (find_type & FIND_STRING)
+ EMSG(_("E348: No string under cursor"));
+ else
+! EMSG(_("E349: No identifier under cursor"));
+ return 0;
+ }
+ ptr += col;
+--- 3512,3518 ----
+ if (find_type & FIND_STRING)
+ EMSG(_("E348: No string under cursor"));
+ else
+! EMSG(_(e_noident));
+ return 0;
+ }
+ ptr += col;
+***************
+*** 5472,5479 ****
+ {
+ /* An external command will probably use an argument starting
+ * with "-" as an option. To avoid trouble we skip the "-". */
+! while (*ptr == '-')
+ ++ptr;
+
+ /* When a count is given, turn it into a range. Is this
+ * really what we want? */
+--- 5474,5490 ----
+ {
+ /* An external command will probably use an argument starting
+ * with "-" as an option. To avoid trouble we skip the "-". */
+! while (*ptr == '-' && n > 0)
+! {
+ ++ptr;
++ --n;
++ }
++ if (n == 0)
++ {
++ EMSG(_(e_noident)); /* found dashes only */
++ vim_free(buf);
++ return;
++ }
+
+ /* When a count is given, turn it into a range. Is this
+ * really what we want? */
+***************
+*** 5520,5526 ****
+--- 5531,5539 ----
+ if (cmdchar == 'K' && !kp_help)
+ {
+ /* Escape the argument properly for a shell command */
++ ptr = vim_strnsave(ptr, n);
+ p = vim_strsave_shellescape(ptr, TRUE);
++ vim_free(ptr);
+ if (p == NULL)
+ {
+ vim_free(buf);
+*** ../vim-7.2.025/src/version.c Thu Oct 2 22:55:17 2008
+--- src/version.c Sat Nov 1 13:50:53 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 26,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+161. You get up before the sun rises to check your e-mail, and you
+ find yourself in the very same chair long after the sun has set.
+
+ /// 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.027 b/source/ap/vim/patches/7.2.027
new file mode 100644
index 000000000..59d708d28
--- /dev/null
+++ b/source/ap/vim/patches/7.2.027
@@ -0,0 +1,98 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.027
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.027
+Problem: Can use cscope commands in the sandbox.
+Solution: Disallow them, they might not be safe.
+Files: src/ex_cmds.h
+
+
+*** ../vim-7.2.026/src/ex_cmds.h Thu Sep 18 12:43:21 2008
+--- src/ex_cmds.h Thu Sep 18 22:18:14 2008
+***************
+*** 278,284 ****
+ EX(CMD_crewind, "crewind", ex_cc,
+ RANGE|NOTADR|COUNT|TRLBAR|BANG),
+ EX(CMD_cscope, "cscope", do_cscope,
+! EXTRA|NOTRLCOM|SBOXOK|XFILE),
+ EX(CMD_cstag, "cstag", do_cstag,
+ BANG|TRLBAR|WORD1),
+ EX(CMD_cunmap, "cunmap", ex_unmap,
+--- 278,284 ----
+ EX(CMD_crewind, "crewind", ex_cc,
+ RANGE|NOTADR|COUNT|TRLBAR|BANG),
+ EX(CMD_cscope, "cscope", do_cscope,
+! EXTRA|NOTRLCOM|XFILE),
+ EX(CMD_cstag, "cstag", do_cstag,
+ BANG|TRLBAR|WORD1),
+ EX(CMD_cunmap, "cunmap", ex_unmap,
+***************
+*** 506,512 ****
+ EX(CMD_lclose, "lclose", ex_cclose,
+ RANGE|NOTADR|COUNT|TRLBAR),
+ EX(CMD_lcscope, "lcscope", do_cscope,
+! EXTRA|NOTRLCOM|SBOXOK|XFILE),
+ EX(CMD_left, "left", ex_align,
+ TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
+ EX(CMD_leftabove, "leftabove", ex_wrongmodifier,
+--- 506,512 ----
+ EX(CMD_lclose, "lclose", ex_cclose,
+ RANGE|NOTADR|COUNT|TRLBAR),
+ EX(CMD_lcscope, "lcscope", do_cscope,
+! EXTRA|NOTRLCOM|XFILE),
+ EX(CMD_left, "left", ex_align,
+ TRLBAR|RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
+ EX(CMD_leftabove, "leftabove", ex_wrongmodifier,
+***************
+*** 653,658 ****
+--- 653,660 ----
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_open, "open", ex_open,
+ RANGE|EXTRA),
++ EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
++ BANG|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_omap, "omap", ex_map,
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_omapclear, "omapclear", ex_mapclear,
+***************
+*** 804,810 ****
+ EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding,
+ WORD1|TRLBAR|CMDWIN),
+ EX(CMD_scscope, "scscope", do_scscope,
+! EXTRA|NOTRLCOM|SBOXOK),
+ EX(CMD_set, "set", ex_set,
+ TRLBAR|EXTRA|CMDWIN|SBOXOK),
+ EX(CMD_setfiletype, "setfiletype", ex_setfiletype,
+--- 806,812 ----
+ EX(CMD_scriptencoding, "scriptencoding", ex_scriptencoding,
+ WORD1|TRLBAR|CMDWIN),
+ EX(CMD_scscope, "scscope", do_scscope,
+! EXTRA|NOTRLCOM),
+ EX(CMD_set, "set", ex_set,
+ TRLBAR|EXTRA|CMDWIN|SBOXOK),
+ EX(CMD_setfiletype, "setfiletype", ex_setfiletype,
+*** ../vim-7.2.026/src/version.c Sat Nov 1 13:51:57 2008
+--- src/version.c Thu Nov 6 10:21:21 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 27,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+179. You wonder why your household garbage can doesn't have an
+ "empty recycle bin" button.
+
+ /// 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.028 b/source/ap/vim/patches/7.2.028
new file mode 100644
index 000000000..4f148e96a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.028
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.028
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.028
+Problem: Confusing error message for missing ().
+Solution: Change "braces" to "parentheses". (Gary Johnson)
+Files: src/eval.c
+
+
+*** ../vim-7.2.027/src/eval.c Wed Sep 10 15:38:13 2008
+--- src/eval.c Tue Sep 30 21:43:38 2008
+***************
+*** 3287,3293 ****
+
+ if (*startarg != '(')
+ {
+! EMSG2(_("E107: Missing braces: %s"), eap->arg);
+ goto end;
+ }
+
+--- 3293,3299 ----
+
+ if (*startarg != '(')
+ {
+! EMSG2(_("E107: Missing parentheses: %s"), eap->arg);
+ goto end;
+ }
+
+*** ../vim-7.2.027/src/version.c Thu Nov 6 10:23:03 2008
+--- src/version.c Thu Nov 6 11:02:51 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 28,
+ /**/
+
+--
+Wizards had always known that the act of observation changed the thing that
+was observed, and sometimes forgot that it also changed the observer too.
+ Terry Pratchett - Interesting times
+
+ /// 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.029 b/source/ap/vim/patches/7.2.029
new file mode 100644
index 000000000..56e847a76
--- /dev/null
+++ b/source/ap/vim/patches/7.2.029
@@ -0,0 +1,44 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.029
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.029
+Problem: No completion for ":doautoall".
+Solution: Complete ":doautoall" like ":doautocmd". (Doug Kearns)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.028/src/ex_docmd.c Thu Sep 18 21:29:07 2008
+--- src/ex_docmd.c Mon Nov 3 21:21:17 2008
+***************
+*** 3609,3614 ****
+--- 3610,3616 ----
+ return set_context_in_autocmd(xp, arg, FALSE);
+
+ case CMD_doautocmd:
++ case CMD_doautoall:
+ return set_context_in_autocmd(xp, arg, TRUE);
+ #endif
+ case CMD_set:
+*** ../vim-7.2.028/src/version.c Thu Nov 6 11:04:50 2008
+--- src/version.c Thu Nov 6 17:14:58 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 29,
+ /**/
+
+--
+Press any key to continue, press any other key to quit.
+
+ /// 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.030 b/source/ap/vim/patches/7.2.030
new file mode 100644
index 000000000..310207ed3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.030
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.030
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.030 (after 7.2.027)
+Problem: Can't compile.
+Solution: Remove prematurely added ex_oldfiles.
+Files: src/ex_cmds.h
+
+
+*** ../vim-7.2.029/src/ex_cmds.h Thu Nov 6 10:23:03 2008
+--- src/ex_cmds.h Thu Nov 6 20:45:07 2008
+***************
+*** 653,660 ****
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_open, "open", ex_open,
+ RANGE|EXTRA),
+- EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
+- BANG|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_omap, "omap", ex_map,
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_omapclear, "omapclear", ex_mapclear,
+--- 653,658 ----
+*** ../vim-7.2.029/src/version.c Thu Nov 6 17:16:06 2008
+--- src/version.c Thu Nov 6 20:46:11 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 30,
+ /**/
+
+--
+% cat /usr/include/sys/errno.h
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+[...]
+#define EMACS 666 /* Too many macros */
+%
+
+ /// 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.031 b/source/ap/vim/patches/7.2.031
new file mode 100644
index 000000000..4b2bca700
--- /dev/null
+++ b/source/ap/vim/patches/7.2.031
@@ -0,0 +1,1281 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.031
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.031
+Problem: Information in the viminfo file about previously edited files is
+ not available to the user. There is no way to get a complete list
+ of files edited in previous Vim sessions.
+Solution: Add v:oldfiles and fill it with the list of old file names when
+ first reading the viminfo file. Add the ":oldfiles" command,
+ ":browse oldfiles" and the "#<123" special file name. Increase
+ the default value for 'viminfo' from '20 to '100.
+Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt,
+ runtime/doc/starting.txt, runtime/doc/usr_21.txt, src/eval.c,
+ src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/feature.h,
+ src/fileio.c, src/main.c, src/mark.c, src/misc1.c,
+ src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/mark.pro,
+ src/option.c, src/structs.h, src/vim.h
+
+
+*** ../vim-7.2.030/runtime/doc/cmdline.txt Sat Aug 9 19:36:46 2008
+--- runtime/doc/cmdline.txt Thu Sep 18 22:55:27 2008
+***************
+*** 1,4 ****
+! *cmdline.txt* For Vim version 7.2. Last change: 2008 Jul 29
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *cmdline.txt* For Vim version 7.2. Last change: 2008 Sep 18
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 157,162 ****
+--- 157,167 ----
+ (doesn't work at the expression prompt; some
+ things such as changing the buffer or current
+ window are not allowed to avoid side effects)
++ When the result is a |List| the items are used
++ as lines. They can have line breaks inside
++ too.
++ When the result is a Float it's automatically
++ converted to a String.
+ See |registers| about registers. {not in Vi}
+ Implementation detail: When using the |expression| register
+ and invoking setcmdpos(), this sets the position before
+***************
+*** 730,748 ****
+ In Ex commands, at places where a file name can be used, the following
+ characters have a special meaning. These can also be used in the expression
+ function expand() |expand()|.
+! % is replaced with the current file name *:_%*
+! # is replaced with the alternate file name *:_#*
+ #n (where n is a number) is replaced with the file name of
+! buffer n. "#0" is the same as "#"
+! ## is replaced with all names in the argument list *:_##*
+ concatenated, separated by spaces. Each space in a name
+ is preceded with a backslash.
+! Note that these give the file name as it was typed. If an absolute path is
+! needed (when using the file name from a different directory), you need to add
+! ":p". See |filename-modifiers|.
+ Note that backslashes are inserted before spaces, so that the command will
+ correctly interpret the file name. But this doesn't happen for shell
+! commands. For those you probably have to use quotes: >
+ :!ls "%"
+ :r !spell "%"
+
+--- 735,763 ----
+ In Ex commands, at places where a file name can be used, the following
+ characters have a special meaning. These can also be used in the expression
+ function expand() |expand()|.
+! % Is replaced with the current file name. *:_%* *c_%*
+! # Is replaced with the alternate file name. *:_#* *c_#*
+ #n (where n is a number) is replaced with the file name of
+! buffer n. "#0" is the same as "#".
+! ## Is replaced with all names in the argument list *:_##* *c_##*
+ concatenated, separated by spaces. Each space in a name
+ is preceded with a backslash.
+! #<n (where n is a number > 0) is replaced with old *:_#<* *c_#<*
+! file name n. See |:oldfiles| or |v:oldfiles| to get the
+! number. *E809*
+! {only when compiled with the +eval and +viminfo features}
+!
+! Note that these, except "#<n", give the file name as it was typed. If an
+! absolute path is needed (when using the file name from a different directory),
+! you need to add ":p". See |filename-modifiers|.
+!
+! The "#<n" item returns an absolute path, but it will start with "~/" for files
+! below your home directory.
+!
+ Note that backslashes are inserted before spaces, so that the command will
+ correctly interpret the file name. But this doesn't happen for shell
+! commands. For those you probably have to use quotes (this fails for files
+! that contain a quote and wildcards): >
+ :!ls "%"
+ :r !spell "%"
+
+*** ../vim-7.2.030/runtime/doc/eval.txt Sat Aug 9 19:36:47 2008
+--- runtime/doc/eval.txt Sun Nov 2 14:25:38 2008
+***************
+*** 1,4 ****
+! *eval.txt* For Vim version 7.2. Last change: 2008 Aug 09
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *eval.txt* For Vim version 7.2. Last change: 2008 Nov 02
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 1484,1489 ****
+--- 1484,1500 ----
+ This is the screen column number, like with |virtcol()|. The
+ value is zero when there was no mouse button click.
+
++ *v:oldfiles* *oldfiles-variable*
++ v:oldfiles List of file names that is loaded from the |viminfo| file on
++ startup. These are the files that Vim remembers marks for.
++ The length of the List is limited by the ' argument of the
++ 'viminfo' option (default is 100).
++ Also see |:oldfiles| and |c_#<|.
++ The List can be modified, but this has no effect on what is
++ stored in the |viminfo| file later. If you use values other
++ than String this will cause trouble.
++ {only when compiled with the +viminfo feature}
++
+ *v:operator* *operator-variable*
+ v:operator The last operator given in Normal mode. This is a single
+ character except for commands starting with <g> or <z>,
+*** ../vim-7.2.030/runtime/doc/starting.txt Sat Aug 9 19:36:52 2008
+--- runtime/doc/starting.txt Sun Nov 9 12:12:19 2008
+***************
+*** 1,4 ****
+! *starting.txt* For Vim version 7.2. Last change: 2008 Jun 21
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *starting.txt* For Vim version 7.2. Last change: 2008 Nov 09
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 1337,1344 ****
+ *viminfo-read*
+ When Vim is started and the 'viminfo' option is non-empty, the contents of
+ the viminfo file are read and the info can be used in the appropriate places.
+! The marks are not read in at startup (but file marks are). See
+! |initialization| for how to set the 'viminfo' option upon startup.
+
+ *viminfo-write*
+ When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo
+--- 1335,1343 ----
+ *viminfo-read*
+ When Vim is started and the 'viminfo' option is non-empty, the contents of
+ the viminfo file are read and the info can be used in the appropriate places.
+! The |v:oldfiles| variable is filled. The marks are not read in at startup
+! (but file marks are). See |initialization| for how to set the 'viminfo'
+! option upon startup.
+
+ *viminfo-write*
+ When Vim exits and 'viminfo' is non-empty, the info is stored in the viminfo
+***************
+*** 1372,1377 ****
+--- 1371,1378 ----
+ that start with any string given with the "r" flag in 'viminfo'. This can be
+ used to avoid saving marks for files on removable media (for MS-DOS you would
+ use "ra:,rb:", for Amiga "rdf0:,rdf1:,rdf2:").
++ The |v:oldfiles| variable is filled with the file names that the viminfo file
++ has marks for.
+
+ *viminfo-file-marks*
+ Uppercase marks ('A to 'Z) are stored when writing the viminfo file. The
+***************
+*** 1463,1470 ****
+ *:rv* *:rviminfo* *E195*
+ :rv[iminfo][!] [file] Read from viminfo file [file] (default: see above).
+ If [!] is given, then any information that is
+! already set (registers, marks, etc.) will be
+! overwritten. {not in Vi}
+
+ *:wv* *:wviminfo* *E137* *E138* *E574*
+ :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above).
+--- 1464,1471 ----
+ *:rv* *:rviminfo* *E195*
+ :rv[iminfo][!] [file] Read from viminfo file [file] (default: see above).
+ If [!] is given, then any information that is
+! already set (registers, marks, |v:oldfiles|, etc.)
+! will be overwritten {not in Vi}
+
+ *:wv* *:wviminfo* *E137* *E138* *E574*
+ :wv[iminfo][!] [file] Write to viminfo file [file] (default: see above).
+***************
+*** 1479,1482 ****
+--- 1480,1499 ----
+ the .viminfo file.
+ {not in Vi}
+
++ *:ol* *:oldfiles*
++ :ol[dfiles] List the files that have marks stored in the viminfo
++ file. This list is read on startup and only changes
++ afterwards with ":rviminfo!". Also see |v:oldfiles|.
++ The number can be used with |c_#<|.
++ {not in Vi, only when compiled with the +eval feature}
++
++ :bro[wse] ol[dfiles][!]
++ List file names as with |:oldfiles|, and then prompt
++ for a number. When the number is valid that file from
++ the list is edited.
++ If you get the |press-enter| prompt you can press "q"
++ and still get the prompt to enter a file number.
++ Use ! to abondon a modified buffer. |abandon|
++ {not when compiled with tiny or small features}
++
+ vim:tw=78:ts=8:ft=help:norl:
+*** ../vim-7.2.030/runtime/doc/usr_21.txt Sat Aug 9 19:36:53 2008
+--- runtime/doc/usr_21.txt Sun Nov 9 12:14:10 2008
+***************
+*** 1,4 ****
+! *usr_21.txt* For Vim version 7.2. Last change: 2007 May 01
+
+ VIM USER MANUAL - by Bram Moolenaar
+
+--- 1,4 ----
+! *usr_21.txt* For Vim version 7.2. Last change: 2008 Nov 09
+
+ VIM USER MANUAL - by Bram Moolenaar
+
+***************
+*** 153,159 ****
+ to be lost. Each item can be remembered only once.
+
+
+! GETTING BACK TO WHERE YOU WERE
+
+ You are halfway editing a file and it's time to leave for holidays. You exit
+ Vim and go enjoy yourselves, forgetting all about your work. After a couple
+--- 153,159 ----
+ to be lost. Each item can be remembered only once.
+
+
+! GETTING BACK TO WHERE YOU STOPPED VIM
+
+ You are halfway editing a file and it's time to leave for holidays. You exit
+ Vim and go enjoy yourselves, forgetting all about your work. After a couple
+***************
+*** 168,173 ****
+--- 168,215 ----
+ The |:marks| command is useful to find out where '0 to '9 will take you.
+
+
++ GETTING BACK TO SOME FILE
++
++ If you want to go back to a file that you edited recently, but not when
++ exiting Vim, there is a slightly more complicated way. You can see a list of
++ files by typing the command: >
++
++ :oldfiles
++ < 1: ~/.viminfo ~
++ 2: ~/text/resume.txt ~
++ 3: /tmp/draft ~
++
++ Now you would like to edit the second file, which is in the list preceded by
++ "2:". You type: >
++
++ :e #<2
++
++ Instead of ":e" you can use any command that has a file name argument, the
++ "#<2" item works in the same place as "%" (current file name) and "#"
++ (alternate file name). So you can also split the window to edit the third
++ file: >
++
++ :split #<3
++
++ That #<123 thing is a bit complicated when you just want to edit a file.
++ Fortunately there is a simpler way: >
++
++ :browse oldfiles
++ < 1: ~/.viminfo ~
++ 2: ~/text/resume.txt ~
++ 3: /tmp/draft ~
++ -- More --
++
++ You get the same list of files as with |:oldfiles|. If you want to edit
++ "resume.txt" first press "q" to stop the listing. You will get a prompt:
++
++ Type number and <Enter> (empty cancels): ~
++
++ Type "2" and press <Enter> to edit the second file.
++
++ More info at |:oldfiles|, |v:oldfiles| and |c_#<|.
++
++
+ MOVE INFO FROM ONE VIM TO ANOTHER
+
+ You can use the ":wviminfo" and ":rviminfo" commands to save and restore the
+*** ../vim-7.2.030/src/eval.c Thu Nov 6 11:04:50 2008
+--- src/eval.c Sun Nov 9 11:59:39 2008
+***************
+*** 348,353 ****
+--- 348,354 ----
+ {VV_NAME("mouse_col", VAR_NUMBER), 0},
+ {VV_NAME("operator", VAR_STRING), VV_RO},
+ {VV_NAME("searchforward", VAR_NUMBER), 0},
++ {VV_NAME("oldfiles", VAR_LIST), 0},
+ };
+
+ /* shorthand */
+***************
+*** 355,360 ****
+--- 356,362 ----
+ #define vv_nr vv_di.di_tv.vval.v_number
+ #define vv_float vv_di.di_tv.vval.v_float
+ #define vv_str vv_di.di_tv.vval.v_string
++ #define vv_list vv_di.di_tv.vval.v_list
+ #define vv_tv vv_di.di_tv
+
+ /*
+***************
+*** 426,432 ****
+ 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_string __ARGS((list_T *l, char_u *str, int len));
+ 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));
+--- 428,433 ----
+***************
+*** 845,852 ****
+ p = &vimvars[i];
+ if (p->vv_di.di_tv.v_type == VAR_STRING)
+ {
+! vim_free(p->vv_di.di_tv.vval.v_string);
+! p->vv_di.di_tv.vval.v_string = NULL;
+ }
+ }
+ hash_clear(&vimvarht);
+--- 846,858 ----
+ p = &vimvars[i];
+ if (p->vv_di.di_tv.v_type == VAR_STRING)
+ {
+! vim_free(p->vv_string);
+! p->vv_string = NULL;
+! }
+! else if (p->vv_di.di_tv.v_type == VAR_LIST)
+! {
+! list_unref(p->vv_list);
+! p->vv_list = NULL;
+ }
+ }
+ hash_clear(&vimvarht);
+***************
+*** 6057,6062 ****
+--- 6063,6087 ----
+ }
+
+ /*
++ * Get list item "l[idx - 1]" as a string. Returns NULL for failure.
++ */
++ char_u *
++ list_find_str(l, idx)
++ list_T *l;
++ long idx;
++ {
++ listitem_T *li;
++
++ li = list_find(l, idx - 1);
++ if (li == NULL)
++ {
++ EMSGN(_(e_listidx), idx);
++ return NULL;
++ }
++ return get_tv_string(&li->li_tv);
++ }
++
++ /*
+ * Locate "item" list "l" and return its index.
+ * Returns -1 when "item" is not in the list.
+ */
+***************
+*** 6147,6153 ****
+ * When "len" >= 0 use "str[len]".
+ * Returns FAIL when out of memory.
+ */
+! static int
+ list_append_string(l, str, len)
+ list_T *l;
+ char_u *str;
+--- 6172,6178 ----
+ * When "len" >= 0 use "str[len]".
+ * Returns FAIL when out of memory.
+ */
+! int
+ list_append_string(l, str, len)
+ list_T *l;
+ char_u *str;
+***************
+*** 6507,6512 ****
+--- 6532,6540 ----
+ set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID);
+ }
+
++ /* v: vars */
++ set_ref_in_ht(&vimvarht, copyID);
++
+ /*
+ * 2. Go through the list of dicts and free items without the copyID.
+ */
+***************
+*** 6597,6603 ****
+ {
+ case VAR_DICT:
+ dd = tv->vval.v_dict;
+! if (dd->dv_copyID != copyID)
+ {
+ /* Didn't see this dict yet. */
+ dd->dv_copyID = copyID;
+--- 6625,6631 ----
+ {
+ case VAR_DICT:
+ dd = tv->vval.v_dict;
+! if (dd != NULL && dd->dv_copyID != copyID)
+ {
+ /* Didn't see this dict yet. */
+ dd->dv_copyID = copyID;
+***************
+*** 6607,6613 ****
+
+ case VAR_LIST:
+ ll = tv->vval.v_list;
+! if (ll->lv_copyID != copyID)
+ {
+ /* Didn't see this list yet. */
+ ll->lv_copyID = copyID;
+--- 6635,6641 ----
+
+ case VAR_LIST:
+ ll = tv->vval.v_list;
+! if (ll != NULL && ll->lv_copyID != copyID)
+ {
+ /* Didn't see this list yet. */
+ ll->lv_copyID = copyID;
+***************
+*** 18106,18111 ****
+--- 18134,18150 ----
+ }
+
+ /*
++ * Get List v: variable value. Caller must take care of reference count when
++ * needed.
++ */
++ list_T *
++ get_vim_var_list(idx)
++ int idx;
++ {
++ return vimvars[idx].vv_list;
++ }
++
++ /*
+ * Set v:count, v:count1 and v:prevcount.
+ */
+ void
+***************
+*** 18141,18146 ****
+--- 18180,18199 ----
+ }
+
+ /*
++ * Set List v: variable to "val".
++ */
++ void
++ set_vim_var_list(idx, val)
++ int idx;
++ list_T *val;
++ {
++ list_unref(vimvars[idx].vv_list);
++ vimvars[idx].vv_list = val;
++ if (val != NULL)
++ ++val->lv_refcount;
++ }
++
++ /*
+ * Set v:register if needed.
+ */
+ void
+***************
+*** 21900,21905 ****
+--- 21953,22014 ----
+ }
+ }
+
++ /*
++ * List v:oldfiles in a nice way.
++ */
++ /*ARGSUSED*/
++ void
++ ex_oldfiles(eap)
++ exarg_T *eap;
++ {
++ list_T *l = vimvars[VV_OLDFILES].vv_list;
++ listitem_T *li;
++ int nr = 0;
++
++ if (l == NULL)
++ msg((char_u *)_("No old files"));
++ else
++ {
++ msg_start();
++ msg_scroll = TRUE;
++ for (li = l->lv_first; li != NULL && !got_int; li = li->li_next)
++ {
++ msg_outnum((long)++nr);
++ MSG_PUTS(": ");
++ msg_outtrans(get_tv_string(&li->li_tv));
++ msg_putchar('\n');
++ out_flush(); /* output one line at a time */
++ ui_breakcheck();
++ }
++ /* Assume "got_int" was set to truncate the listing. */
++ got_int = FALSE;
++
++ #ifdef FEAT_BROWSE_CMD
++ if (cmdmod.browse)
++ {
++ quit_more = FALSE;
++ nr = prompt_for_number(FALSE);
++ msg_starthere();
++ if (nr > 0)
++ {
++ char_u *p = list_find_str(get_vim_var_list(VV_OLDFILES),
++ (long)nr);
++
++ if (p != NULL)
++ {
++ p = expand_env_save(p);
++ eap->arg = p;
++ eap->cmdidx = CMD_edit;
++ cmdmod.browse = FALSE;
++ do_exedit(eap, NULL);
++ vim_free(p);
++ }
++ }
++ }
++ #endif
++ }
++ }
++
+ #endif /* FEAT_EVAL */
+
+
+*** ../vim-7.2.030/src/ex_cmds.c Sun Sep 14 21:40:26 2008
+--- src/ex_cmds.c Sun Sep 14 13:45:03 2008
+***************
+*** 24,30 ****
+ static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out));
+ #ifdef FEAT_VIMINFO
+ static char_u *viminfo_filename __ARGS((char_u *));
+! static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int want_info, int want_marks, int force_read));
+ static int viminfo_encoding __ARGS((vir_T *virp));
+ static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
+ #endif
+--- 24,30 ----
+ static void do_filter __ARGS((linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out));
+ #ifdef FEAT_VIMINFO
+ static char_u *viminfo_filename __ARGS((char_u *));
+! static void do_viminfo __ARGS((FILE *fp_in, FILE *fp_out, int flags));
+ static int viminfo_encoding __ARGS((vir_T *virp));
+ static int read_viminfo_up_to_marks __ARGS((vir_T *virp, int forceit, int writing));
+ #endif
+***************
+*** 1676,1689 ****
+
+ /*
+ * read_viminfo() -- Read the viminfo file. Registers etc. which are already
+! * set are not over-written unless force is TRUE. -- webb
+ */
+ int
+! read_viminfo(file, want_info, want_marks, forceit)
+! char_u *file;
+! int want_info;
+! int want_marks;
+! int forceit;
+ {
+ FILE *fp;
+ char_u *fname;
+--- 1676,1687 ----
+
+ /*
+ * read_viminfo() -- Read the viminfo file. Registers etc. which are already
+! * set are not over-written unless "flags" includes VIF_FORCEIT. -- webb
+ */
+ int
+! read_viminfo(file, flags)
+! char_u *file; /* file name or NULL to use default name */
+! int flags; /* VIF_WANT_INFO et al. */
+ {
+ FILE *fp;
+ char_u *fname;
+***************
+*** 1691,1697 ****
+ if (no_viminfo())
+ return FAIL;
+
+! fname = viminfo_filename(file); /* may set to default if NULL */
+ if (fname == NULL)
+ return FAIL;
+ fp = mch_fopen((char *)fname, READBIN);
+--- 1689,1695 ----
+ if (no_viminfo())
+ return FAIL;
+
+! fname = viminfo_filename(file); /* get file name in allocated buffer */
+ if (fname == NULL)
+ return FAIL;
+ fp = mch_fopen((char *)fname, READBIN);
+***************
+*** 1701,1708 ****
+ verbose_enter();
+ smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"),
+ fname,
+! want_info ? _(" info") : "",
+! want_marks ? _(" marks") : "",
+ fp == NULL ? _(" FAILED") : "");
+ verbose_leave();
+ }
+--- 1699,1707 ----
+ verbose_enter();
+ smsg((char_u *)_("Reading viminfo file \"%s\"%s%s%s"),
+ fname,
+! (flags & VIF_WANT_INFO) ? _(" info") : "",
+! (flags & VIF_WANT_MARKS) ? _(" marks") : "",
+! (flags & VIF_GET_OLDFILES) ? _(" oldfiles") : "",
+ fp == NULL ? _(" FAILED") : "");
+ verbose_leave();
+ }
+***************
+*** 1712,1721 ****
+ return FAIL;
+
+ viminfo_errcnt = 0;
+! do_viminfo(fp, NULL, want_info, want_marks, forceit);
+
+ fclose(fp);
+-
+ return OK;
+ }
+
+--- 1711,1719 ----
+ return FAIL;
+
+ viminfo_errcnt = 0;
+! do_viminfo(fp, NULL, flags);
+
+ fclose(fp);
+ return OK;
+ }
+
+***************
+*** 1968,1974 ****
+ }
+
+ viminfo_errcnt = 0;
+! do_viminfo(fp_in, fp_out, !forceit, !forceit, FALSE);
+
+ fclose(fp_out); /* errors are ignored !? */
+ if (fp_in != NULL)
+--- 1966,1972 ----
+ }
+
+ viminfo_errcnt = 0;
+! do_viminfo(fp_in, fp_out, forceit ? 0 : (VIF_WANT_INFO | VIF_WANT_MARKS));
+
+ fclose(fp_out); /* errors are ignored !? */
+ if (fp_in != NULL)
+***************
+*** 2041,2052 ****
+ * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo().
+ */
+ static void
+! do_viminfo(fp_in, fp_out, want_info, want_marks, force_read)
+ FILE *fp_in;
+ FILE *fp_out;
+! int want_info;
+! int want_marks;
+! int force_read;
+ {
+ int count = 0;
+ int eof = FALSE;
+--- 2039,2048 ----
+ * do_viminfo() -- Should only be called from read_viminfo() & write_viminfo().
+ */
+ static void
+! do_viminfo(fp_in, fp_out, flags)
+ FILE *fp_in;
+ FILE *fp_out;
+! int flags;
+ {
+ int count = 0;
+ int eof = FALSE;
+***************
+*** 2061,2068 ****
+
+ if (fp_in != NULL)
+ {
+! if (want_info)
+! eof = read_viminfo_up_to_marks(&vir, force_read, fp_out != NULL);
+ else
+ /* Skip info, find start of marks */
+ while (!(eof = viminfo_readline(&vir))
+--- 2057,2065 ----
+
+ if (fp_in != NULL)
+ {
+! if (flags & VIF_WANT_INFO)
+! eof = read_viminfo_up_to_marks(&vir,
+! flags & VIF_FORCEIT, fp_out != NULL);
+ else
+ /* Skip info, find start of marks */
+ while (!(eof = viminfo_readline(&vir))
+***************
+*** 2092,2099 ****
+ write_viminfo_bufferlist(fp_out);
+ count = write_viminfo_marks(fp_out);
+ }
+! if (fp_in != NULL && want_marks)
+! copy_viminfo_marks(&vir, fp_out, count, eof);
+
+ vim_free(vir.vir_line);
+ #ifdef FEAT_MBYTE
+--- 2089,2097 ----
+ write_viminfo_bufferlist(fp_out);
+ count = write_viminfo_marks(fp_out);
+ }
+! if (fp_in != NULL
+! && (flags & (VIF_WANT_MARKS | VIF_GET_OLDFILES | VIF_FORCEIT)))
+! copy_viminfo_marks(&vir, fp_out, count, eof, flags);
+
+ vim_free(vir.vir_line);
+ #ifdef FEAT_MBYTE
+*** ../vim-7.2.030/src/ex_cmds.h Thu Nov 6 20:47:00 2008
+--- src/ex_cmds.h Thu Sep 18 22:18:14 2008
+***************
+*** 653,658 ****
+--- 653,660 ----
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_open, "open", ex_open,
+ RANGE|EXTRA),
++ EX(CMD_oldfiles, "oldfiles", ex_oldfiles,
++ BANG|TRLBAR|SBOXOK|CMDWIN),
+ EX(CMD_omap, "omap", ex_map,
+ EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_omapclear, "omapclear", ex_mapclear,
+*** ../vim-7.2.030/src/ex_docmd.c Thu Nov 6 17:16:06 2008
+--- src/ex_docmd.c Mon Nov 3 21:21:17 2008
+***************
+*** 364,369 ****
+--- 364,370 ----
+ # define ex_function ex_ni
+ # define ex_delfunction ex_ni
+ # define ex_return ex_ni
++ # define ex_oldfiles ex_ni
+ #endif
+ static char_u *arg_all __ARGS((void));
+ #ifdef FEAT_SESSION
+***************
+*** 1770,1776 ****
+ }
+ if (checkforcmd(&ea.cmd, "browse", 3))
+ {
+! #ifdef FEAT_BROWSE
+ cmdmod.browse = TRUE;
+ #endif
+ continue;
+--- 1771,1777 ----
+ }
+ if (checkforcmd(&ea.cmd, "browse", 3))
+ {
+! #ifdef FEAT_BROWSE_CMD
+ cmdmod.browse = TRUE;
+ #endif
+ continue;
+***************
+*** 9508,9531 ****
+ break;
+ }
+ s = src + 1;
+ i = (int)getdigits(&s);
+ *usedlen = (int)(s - src); /* length of what we expand */
+
+! buf = buflist_findnr(i);
+! if (buf == NULL)
+ {
+! *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'");
+ return NULL;
+ }
+! if (lnump != NULL)
+! *lnump = ECMD_LAST;
+! if (buf->b_fname == NULL)
+ {
+! result = (char_u *)"";
+! valid = 0; /* Must have ":p:h" to be valid */
+ }
+- else
+- result = buf->b_fname;
+ break;
+
+ #ifdef FEAT_SEARCHPATH
+--- 9509,9558 ----
+ break;
+ }
+ s = src + 1;
++ if (*s == '<') /* "#<99" uses v:oldfiles */
++ ++s;
+ i = (int)getdigits(&s);
+ *usedlen = (int)(s - src); /* length of what we expand */
+
+! if (src[1] == '<')
+ {
+! if (*usedlen < 2)
+! {
+! /* Should we give an error message for #<text? */
+! *usedlen = 1;
+! return NULL;
+! }
+! #ifdef FEAT_EVAL
+! result = list_find_str(get_vim_var_list(VV_OLDFILES),
+! (long)i);
+! if (result == NULL)
+! {
+! *errormsg = (char_u *)"";
+! return NULL;
+! }
+! #else
+! *errormsg = (char_u *)_("E809: #< is not available without the +eval feature");
+ return NULL;
++ #endif
+ }
+! else
+ {
+! buf = buflist_findnr(i);
+! if (buf == NULL)
+! {
+! *errormsg = (char_u *)_("E194: No alternate file name to substitute for '#'");
+! return NULL;
+! }
+! if (lnump != NULL)
+! *lnump = ECMD_LAST;
+! if (buf->b_fname == NULL)
+! {
+! result = (char_u *)"";
+! valid = 0; /* Must have ":p:h" to be valid */
+! }
+! else
+! result = buf->b_fname;
+ }
+ break;
+
+ #ifdef FEAT_SEARCHPATH
+***************
+*** 10700,10706 ****
+ p_viminfo = (char_u *)"'100";
+ if (eap->cmdidx == CMD_rviminfo)
+ {
+! if (read_viminfo(eap->arg, TRUE, TRUE, eap->forceit) == FAIL)
+ EMSG(_("E195: Cannot open viminfo file for reading"));
+ }
+ else
+--- 10727,10734 ----
+ p_viminfo = (char_u *)"'100";
+ if (eap->cmdidx == CMD_rviminfo)
+ {
+! if (read_viminfo(eap->arg, VIF_WANT_INFO | VIF_WANT_MARKS
+! | (eap->forceit ? VIF_FORCEIT : 0)) == FAIL)
+ EMSG(_("E195: Cannot open viminfo file for reading"));
+ }
+ else
+*** ../vim-7.2.030/src/feature.h Wed Aug 6 18:45:07 2008
+--- src/feature.h Fri Sep 19 19:14:22 2008
+***************
+*** 767,775 ****
+
+ /*
+ * +browse ":browse" command.
+ */
+! #if defined(FEAT_NORMAL) && (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC))
+! # define FEAT_BROWSE
+ #endif
+
+ /*
+--- 767,779 ----
+
+ /*
+ * +browse ":browse" command.
++ * or just the ":browse" command modifier
+ */
+! #if defined(FEAT_NORMAL)
+! # define FEAT_BROWSE_CMD
+! # if defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_PHOTON) || defined(FEAT_GUI_MAC)
+! # define FEAT_BROWSE
+! # endif
+ #endif
+
+ /*
+*** ../vim-7.2.030/src/fileio.c Thu Sep 18 21:29:07 2008
+--- src/fileio.c Mon Nov 3 21:21:47 2008
+***************
+*** 2711,2717 ****
+ {
+ if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
+ && curbuf->b_ffname != NULL)
+! read_viminfo(NULL, FALSE, TRUE, FALSE);
+
+ /* Always set b_marks_read; needed when 'viminfo' is changed to include
+ * the ' parameter after opening a buffer. */
+--- 2711,2717 ----
+ {
+ if (!curbuf->b_marks_read && get_viminfo_parameter('\'') > 0
+ && curbuf->b_ffname != NULL)
+! read_viminfo(NULL, VIF_WANT_MARKS);
+
+ /* Always set b_marks_read; needed when 'viminfo' is changed to include
+ * the ' parameter after opening a buffer. */
+***************
+*** 9108,9114 ****
+ set_context_in_autocmd(xp, arg, doautocmd)
+ expand_T *xp;
+ char_u *arg;
+! int doautocmd; /* TRUE for :doautocmd, FALSE for :autocmd */
+ {
+ char_u *p;
+ int group;
+--- 9109,9115 ----
+ set_context_in_autocmd(xp, arg, doautocmd)
+ expand_T *xp;
+ char_u *arg;
+! int doautocmd; /* TRUE for :doauto*, FALSE for :autocmd */
+ {
+ char_u *p;
+ int group;
+*** ../vim-7.2.030/src/main.c Thu Sep 18 20:55:19 2008
+--- src/main.c Sun Sep 14 13:26:10 2008
+***************
+*** 645,655 ****
+
+ #ifdef FEAT_VIMINFO
+ /*
+! * Read in registers, history etc, but not marks, from the viminfo file
+ */
+ if (*p_viminfo != NUL)
+ {
+! read_viminfo(NULL, TRUE, FALSE, FALSE);
+ TIME_MSG("reading viminfo");
+ }
+ #endif
+--- 645,656 ----
+
+ #ifdef FEAT_VIMINFO
+ /*
+! * Read in registers, history etc, but not marks, from the viminfo file.
+! * This is where v:oldfiles gets filled.
+ */
+ if (*p_viminfo != NUL)
+ {
+! read_viminfo(NULL, VIF_WANT_INFO | VIF_GET_OLDFILES);
+ TIME_MSG("reading viminfo");
+ }
+ #endif
+*** ../vim-7.2.030/src/mark.c Sat Aug 9 19:37:29 2008
+--- src/mark.c Sun Sep 14 13:46:19 2008
+***************
+*** 1627,1641 ****
+
+ /*
+ * Handle marks in the viminfo file:
+! * fp_out == NULL read marks for current buffer only
+! * fp_out != NULL copy marks for buffers not in buffer list
+ */
+ void
+! copy_viminfo_marks(virp, fp_out, count, eof)
+ vir_T *virp;
+ FILE *fp_out;
+ int count;
+ int eof;
+ {
+ char_u *line = virp->vir_line;
+ buf_T *buf;
+--- 1627,1643 ----
+
+ /*
+ * Handle marks in the viminfo file:
+! * fp_out != NULL: copy marks for buffers not in buffer list
+! * fp_out == NULL && (flags & VIF_WANT_MARKS): read marks for curbuf only
+! * fp_out == NULL && (flags & VIF_GET_OLDFILES | VIF_FORCEIT): fill v:oldfiles
+ */
+ void
+! copy_viminfo_marks(virp, fp_out, count, eof, flags)
+ vir_T *virp;
+ FILE *fp_out;
+ int count;
+ int eof;
++ int flags;
+ {
+ char_u *line = virp->vir_line;
+ buf_T *buf;
+***************
+*** 1647,1656 ****
+--- 1649,1671 ----
+ char_u *p;
+ char_u *name_buf;
+ pos_T pos;
++ #ifdef FEAT_EVAL
++ list_T *list = NULL;
++ #endif
+
+ if ((name_buf = alloc(LSIZE)) == NULL)
+ return;
+ *name_buf = NUL;
++
++ #ifdef FEAT_EVAL
++ if (fp_out == NULL && (flags & (VIF_GET_OLDFILES | VIF_FORCEIT)))
++ {
++ list = list_alloc();
++ if (list != NULL)
++ set_vim_var_list(VV_OLDFILES, list);
++ }
++ #endif
++
+ num_marked_files = get_viminfo_parameter('\'');
+ while (!eof && (count < num_marked_files || fp_out == NULL))
+ {
+***************
+*** 1681,1686 ****
+--- 1696,1706 ----
+ p++;
+ *p = NUL;
+
++ #ifdef FEAT_EVAL
++ if (list != NULL)
++ list_append_string(list, str, -1);
++ #endif
++
+ /*
+ * If fp_out == NULL, load marks for current buffer.
+ * If fp_out != NULL, copy marks for buffers not in buflist.
+***************
+*** 1688,1694 ****
+ load_marks = copy_marks_out = FALSE;
+ if (fp_out == NULL)
+ {
+! if (curbuf->b_ffname != NULL)
+ {
+ if (*name_buf == NUL) /* only need to do this once */
+ home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE);
+--- 1708,1714 ----
+ load_marks = copy_marks_out = FALSE;
+ if (fp_out == NULL)
+ {
+! if ((flags & VIF_WANT_MARKS) && curbuf->b_ffname != NULL)
+ {
+ if (*name_buf == NUL) /* only need to do this once */
+ home_replace(NULL, curbuf->b_ffname, name_buf, LSIZE, TRUE);
+*** ../vim-7.2.030/src/misc1.c Wed Jun 25 00:24:52 2008
+--- src/misc1.c Sun Nov 9 11:47:00 2008
+***************
+*** 3245,3253 ****
+
+ /* When using ":silent" assume that <CR> was entered. */
+ if (mouse_used != NULL)
+! MSG_PUTS(_("Type number or click with mouse (<Enter> cancels): "));
+ else
+! MSG_PUTS(_("Choice number (<Enter> cancels): "));
+
+ /* Set the state such that text can be selected/copied/pasted and we still
+ * get mouse events. */
+--- 3245,3253 ----
+
+ /* When using ":silent" assume that <CR> was entered. */
+ if (mouse_used != NULL)
+! MSG_PUTS(_("Type number and <Enter> or click with mouse (empty cancels): "));
+ else
+! MSG_PUTS(_("Type number and <Enter> (empty cancels): "));
+
+ /* Set the state such that text can be selected/copied/pasted and we still
+ * get mouse events. */
+*** ../vim-7.2.030/src/proto/eval.pro Sun Jan 6 20:06:30 2008
+--- src/proto/eval.pro Sun Nov 9 12:05:56 2008
+***************
+*** 17,23 ****
+ int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
+ char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
+ int skip_expr __ARGS((char_u **pp));
+! char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
+ char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
+ int eval_to_number __ARGS((char_u *expr));
+ list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+--- 17,23 ----
+ int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
+ char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
+ int skip_expr __ARGS((char_u **pp));
+! char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int convert));
+ char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
+ int eval_to_number __ARGS((char_u *expr));
+ list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
+***************
+*** 46,52 ****
+--- 46,54 ----
+ void list_unref __ARGS((list_T *l));
+ 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_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));
+ int dict_add_nr_str __ARGS((dict_T *d, char *key, long nr, char_u *str));
+***************
+*** 58,65 ****
+--- 60,69 ----
+ void set_vim_var_nr __ARGS((int idx, long val));
+ 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_vcount __ARGS((long count, long count1));
+ void set_vim_var_string __ARGS((int idx, char_u *val, int len));
++ void set_vim_var_list __ARGS((int idx, list_T *val));
+ void set_reg_var __ARGS((int c));
+ char_u *v_exception __ARGS((char_u *oldval));
+ char_u *v_throwpoint __ARGS((char_u *oldval));
+***************
+*** 94,99 ****
+--- 98,104 ----
+ void write_viminfo_varlist __ARGS((FILE *fp));
+ int store_session_globals __ARGS((FILE *fd));
+ void last_set_msg __ARGS((scid_T scriptID));
++ void ex_oldfiles __ARGS((exarg_T *eap));
+ int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen));
+ char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags));
+ /* vim: set ft=c : */
+*** ../vim-7.2.030/src/proto/ex_cmds.pro Sat May 5 20:13:58 2007
+--- src/proto/ex_cmds.pro Sat Sep 13 17:27:21 2008
+***************
+*** 11,17 ****
+ char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+ void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+ int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+! int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
+ void write_viminfo __ARGS((char_u *file, int forceit));
+ int viminfo_readline __ARGS((vir_T *virp));
+ char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
+--- 11,17 ----
+ char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+ void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+ int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+! int read_viminfo __ARGS((char_u *file, int flags));
+ void write_viminfo __ARGS((char_u *file, int forceit));
+ int viminfo_readline __ARGS((vir_T *virp));
+ char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
+*** ../vim-7.2.030/src/proto/mark.pro Sat May 5 19:29:37 2007
+--- src/proto/mark.pro Sat Sep 13 18:06:20 2008
+***************
+*** 26,30 ****
+ void write_viminfo_filemarks __ARGS((FILE *fp));
+ int removable __ARGS((char_u *name));
+ int write_viminfo_marks __ARGS((FILE *fp_out));
+! void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof));
+ /* vim: set ft=c : */
+--- 26,30 ----
+ void write_viminfo_filemarks __ARGS((FILE *fp));
+ int removable __ARGS((char_u *name));
+ int write_viminfo_marks __ARGS((FILE *fp_out));
+! void copy_viminfo_marks __ARGS((vir_T *virp, FILE *fp_out, int count, int eof, int flags));
+ /* vim: set ft=c : */
+*** ../vim-7.2.030/src/option.c Thu Oct 2 22:48:01 2008
+--- src/option.c Fri Sep 26 22:20:20 2008
+***************
+*** 2593,2605 ****
+ #ifdef FEAT_VIMINFO
+ (char_u *)&p_viminfo, PV_NONE,
+ #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+! {(char_u *)"", (char_u *)"'20,<50,s10,h,rA:,rB:"}
+ #else
+ # ifdef AMIGA
+ {(char_u *)"",
+! (char_u *)"'20,<50,s10,h,rdf0:,rdf1:,rdf2:"}
+ # else
+! {(char_u *)"", (char_u *)"'20,<50,s10,h"}
+ # endif
+ #endif
+ #else
+--- 2593,2605 ----
+ #ifdef FEAT_VIMINFO
+ (char_u *)&p_viminfo, PV_NONE,
+ #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+! {(char_u *)"", (char_u *)"'100,<50,s10,h,rA:,rB:"}
+ #else
+ # ifdef AMIGA
+ {(char_u *)"",
+! (char_u *)"'100,<50,s10,h,rdf0:,rdf1:,rdf2:"}
+ # else
+! {(char_u *)"", (char_u *)"'100,<50,s10,h"}
+ # endif
+ #endif
+ #else
+*** ../vim-7.2.030/src/structs.h Thu Jul 31 22:04:27 2008
+--- src/structs.h Fri Sep 19 19:15:18 2008
+***************
+*** 459,465 ****
+ typedef struct
+ {
+ int hide; /* TRUE when ":hide" was used */
+! # ifdef FEAT_BROWSE
+ int browse; /* TRUE to invoke file dialog */
+ # endif
+ # ifdef FEAT_WINDOWS
+--- 459,465 ----
+ typedef struct
+ {
+ int hide; /* TRUE when ":hide" was used */
+! # ifdef FEAT_BROWSE_CMD
+ int browse; /* TRUE to invoke file dialog */
+ # endif
+ # ifdef FEAT_WINDOWS
+*** ../vim-7.2.030/src/vim.h Sat Aug 9 19:37:40 2008
+--- src/vim.h Sat Sep 13 17:41:24 2008
+***************
+*** 1728,1734 ****
+ #define VV_MOUSE_COL 51
+ #define VV_OP 52
+ #define VV_SEARCHFORWARD 53
+! #define VV_LEN 54 /* number of v: vars */
+
+ #ifdef FEAT_CLIPBOARD
+
+--- 1728,1735 ----
+ #define VV_MOUSE_COL 51
+ #define VV_OP 52
+ #define VV_SEARCHFORWARD 53
+! #define VV_OLDFILES 54
+! #define VV_LEN 55 /* number of v: vars */
+
+ #ifdef FEAT_CLIPBOARD
+
+***************
+*** 2054,2057 ****
+--- 2055,2064 ----
+ #define DOSO_VIMRC 1 /* loading vimrc file */
+ #define DOSO_GVIMRC 2 /* loading gvimrc file */
+
++ /* flags for read_viminfo() and children */
++ #define VIF_WANT_INFO 1 /* load non-mark info */
++ #define VIF_WANT_MARKS 2 /* load file marks */
++ #define VIF_FORCEIT 4 /* overwrite info already read */
++ #define VIF_GET_OLDFILES 8 /* load v:oldfiles */
++
+ #endif /* VIM__H */
+*** ../vim-7.2.030/src/version.c Thu Nov 6 20:47:00 2008
+--- src/version.c Sun Nov 9 13:39:19 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 31,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+217. Your sex life has drastically improved...so what if it's only cyber-sex!
+
+ /// 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.032 b/source/ap/vim/patches/7.2.032
new file mode 100644
index 000000000..f4a0d9bea
--- /dev/null
+++ b/source/ap/vim/patches/7.2.032
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.032
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.032 (after 7.2.031)
+Problem: Can't build with EXITFREE defined. (Dominique Pelle)
+Solution: Change vv_string to vv_str.
+Files: src/eval.c
+
+
+*** ../vim-7.2.031/src/eval.c Sun Nov 9 13:43:25 2008
+--- src/eval.c Sun Nov 9 17:16:06 2008
+***************
+*** 846,853 ****
+ p = &vimvars[i];
+ if (p->vv_di.di_tv.v_type == VAR_STRING)
+ {
+! vim_free(p->vv_string);
+! p->vv_string = NULL;
+ }
+ else if (p->vv_di.di_tv.v_type == VAR_LIST)
+ {
+--- 846,853 ----
+ p = &vimvars[i];
+ if (p->vv_di.di_tv.v_type == VAR_STRING)
+ {
+! vim_free(p->vv_str);
+! p->vv_str = NULL;
+ }
+ else if (p->vv_di.di_tv.v_type == VAR_LIST)
+ {
+*** ../vim-7.2.031/src/version.c Sun Nov 9 13:43:25 2008
+--- src/version.c Sun Nov 9 17:21:00 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 32,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+218. Your spouse hands you a gift wrapped magnet with your PC's name
+ on it and you accuse him or her of genocide.
+
+ /// 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.033 b/source/ap/vim/patches/7.2.033
new file mode 100644
index 000000000..d96a94b72
--- /dev/null
+++ b/source/ap/vim/patches/7.2.033
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.033
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.033
+Problem: When detecting a little endian BOM "ucs-2le" is used, but the text
+ might be "utf-16le".
+Solution: Default to "utf-16le", it also works for "ucs-2le". (Jia Yanwei)
+Files: src/fileio.c, src/testdir/test42.ok
+
+
+*** ../vim-7.2.032/src/fileio.c Sun Nov 9 13:43:25 2008
+--- src/fileio.c Mon Nov 3 21:21:47 2008
+***************
+*** 5550,5558 ****
+ name = "ucs-4le"; /* FF FE 00 00 */
+ len = 4;
+ }
+! else if (flags == FIO_ALL || flags == (FIO_UCS2 | FIO_ENDIAN_L))
+ name = "ucs-2le"; /* FF FE */
+! else if (flags == (FIO_UTF16 | FIO_ENDIAN_L))
+ name = "utf-16le"; /* FF FE */
+ }
+ else if (p[0] == 0xfe && p[1] == 0xff
+--- 5550,5559 ----
+ name = "ucs-4le"; /* FF FE 00 00 */
+ len = 4;
+ }
+! else if (flags == (FIO_UCS2 | FIO_ENDIAN_L))
+ name = "ucs-2le"; /* FF FE */
+! else if (flags == FIO_ALL || flags == (FIO_UTF16 | FIO_ENDIAN_L))
+! /* utf-16le is preferred, it also works for ucs-2le text */
+ name = "utf-16le"; /* FF FE */
+ }
+ else if (p[0] == 0xfe && p[1] == 0xff
+*** ../vim-7.2.032/src/testdir/test42.ok Sat Mar 1 13:49:21 2008
+--- src/testdir/test42.ok Sat Nov 1 17:09:29 2008
+***************
+*** 20,26 ****
+ ucs-2
+
+
+! fileencoding=ucs-2le
+ bomb
+ ucs-2le
+
+--- 20,26 ----
+ ucs-2
+
+
+! fileencoding=utf-16le
+ bomb
+ ucs-2le
+
+*** ../vim-7.2.032/src/version.c Sun Nov 9 17:21:10 2008
+--- src/version.c Tue Nov 11 21:54:14 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 33,
+ /**/
+
+--
+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.034 b/source/ap/vim/patches/7.2.034
new file mode 100644
index 000000000..957fb35d9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.034
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.034
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.034
+Problem: Memory leak in spell info when deleting buffer.
+Solution: Free the memory. (Dominique Pelle)
+Files: src/buffer.c
+
+
+*** ../vim-7.2.033/src/buffer.c Mon Sep 1 17:32:40 2008
+--- src/buffer.c Wed Nov 12 11:21:49 2008
+***************
+*** 647,652 ****
+--- 647,655 ----
+ vim_free(buf->b_start_fenc);
+ buf->b_start_fenc = NULL;
+ #endif
++ #ifdef FEAT_SPELL
++ ga_clear(&buf->b_langp);
++ #endif
+ }
+
+ /*
+***************
+*** 1237,1243 ****
+ * "buf" if one exists */
+ if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
+ return OK;
+! /* If 'switchbuf' contians "usetab": jump to first window in any tab
+ * page containing "buf" if one exists */
+ if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
+ return OK;
+--- 1240,1246 ----
+ * "buf" if one exists */
+ if ((swb_flags & SWB_USEOPEN) && buf_jump_open_win(buf))
+ return OK;
+! /* If 'switchbuf' contains "usetab": jump to first window in any tab
+ * page containing "buf" if one exists */
+ if ((swb_flags & SWB_USETAB) && buf_jump_open_tab(buf))
+ return OK;
+***************
+*** 3964,3970 ****
+ width = vim_strsize(out);
+ if (maxwidth > 0 && width > maxwidth)
+ {
+! /* Result is too long, must trunctate somewhere. */
+ l = 0;
+ if (itemcnt == 0)
+ s = out;
+--- 3967,3973 ----
+ width = vim_strsize(out);
+ if (maxwidth > 0 && width > maxwidth)
+ {
+! /* Result is too long, must truncate somewhere. */
+ l = 0;
+ if (itemcnt == 0)
+ s = out;
+*** ../vim-7.2.033/src/version.c Tue Nov 11 21:55:29 2008
+--- src/version.c Wed Nov 12 12:51:21 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 34,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+236. You start saving URL's in your digital 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.035 b/source/ap/vim/patches/7.2.035
new file mode 100644
index 000000000..e8c73915a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.035
@@ -0,0 +1,128 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.035
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.035
+Problem: Mismatches between alloc/malloc, free/vim_free,
+ realloc/vim_realloc.
+Solution: Use the right function. (Dominique Pelle)
+Files: src/gui_x11.c, src/mbyte.c, src/misc2.c, src/os_unix.c
+
+
+*** ../vim-7.2.034/src/gui_x11.c Fri Jun 20 11:59:25 2008
+--- src/gui_x11.c Wed Nov 12 11:47:03 2008
+***************
+*** 2450,2456 ****
+ *colorPtr = colortable[closest];
+ }
+
+! free(colortable);
+ return OK;
+ }
+
+--- 2450,2456 ----
+ *colorPtr = colortable[closest];
+ }
+
+! vim_free(colortable);
+ return OK;
+ }
+
+*** ../vim-7.2.034/src/mbyte.c Sat Sep 6 16:44:06 2008
+--- src/mbyte.c Wed Nov 12 11:24:14 2008
+***************
+*** 5384,5390 ****
+ draw_feedback = (char *)alloc(draw_data->chg_first
+ + text->length);
+ else
+! draw_feedback = realloc(draw_feedback,
+ draw_data->chg_first + text->length);
+ if (draw_feedback != NULL)
+ {
+--- 5384,5390 ----
+ draw_feedback = (char *)alloc(draw_data->chg_first
+ + text->length);
+ else
+! draw_feedback = vim_realloc(draw_feedback,
+ draw_data->chg_first + text->length);
+ if (draw_feedback != NULL)
+ {
+*** ../vim-7.2.034/src/misc2.c Sat Sep 6 16:44:06 2008
+--- src/misc2.c Wed Nov 12 11:42:51 2008
+***************
+*** 873,879 ****
+ /* 3. check for available memory: call mch_avail_mem() */
+ if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing)
+ {
+! vim_free((char *)p); /* System is low... no go! */
+ p = NULL;
+ }
+ else
+--- 873,879 ----
+ /* 3. check for available memory: call mch_avail_mem() */
+ if (mch_avail_mem(TRUE) < KEEP_ROOM && !releasing)
+ {
+! free((char *)p); /* System is low... no go! */
+ p = NULL;
+ }
+ else
+*** ../vim-7.2.034/src/os_unix.c Wed Aug 6 18:45:01 2008
+--- src/os_unix.c Wed Nov 12 11:55:33 2008
+***************
+*** 2905,2911 ****
+ * Ignore any errors.
+ */
+ #if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
+! signal_stack = malloc(SIGSTKSZ);
+ init_signal_stack();
+ #endif
+ }
+--- 2905,2911 ----
+ * Ignore any errors.
+ */
+ #if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
+! signal_stack = (char *)alloc(SIGSTKSZ);
+ init_signal_stack();
+ #endif
+ }
+***************
+*** 6814,6820 ****
+ if (xsmp_icefd != -1)
+ {
+ SmcCloseConnection(xsmp.smcconn, 0, NULL);
+! vim_free(xsmp.clientid);
+ xsmp.clientid = NULL;
+ xsmp_icefd = -1;
+ }
+--- 6815,6822 ----
+ if (xsmp_icefd != -1)
+ {
+ SmcCloseConnection(xsmp.smcconn, 0, NULL);
+! if (xsmp.clientid != NULL)
+! free(xsmp.clientid);
+ xsmp.clientid = NULL;
+ xsmp_icefd = -1;
+ }
+*** ../vim-7.2.034/src/version.c Wed Nov 12 12:51:38 2008
+--- src/version.c Wed Nov 12 13:05:40 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 35,
+ /**/
+
+--
+You can tune a file system, but you can't tuna fish
+ -- man tunefs
+
+ /// 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.036 b/source/ap/vim/patches/7.2.036
new file mode 100644
index 000000000..4db2a26f3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.036
@@ -0,0 +1,276 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.036 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.036 (extra)
+Problem: Mismatches between alloc/malloc, free/vim_free,
+ realloc/vim_realloc.
+Solution: Use the right function. (Dominique Pelle)
+Files: src/gui_riscos.c, src/gui_w48.c, src/mbyte.c, src/os_vms.c,
+ src/os_w32exe.c, src/os_win16.c
+
+
+*** ../vim-7.2.035/src/gui_riscos.c Thu May 10 19:33:26 2007
+--- src/gui_riscos.c Wed Nov 12 11:47:54 2008
+***************
+*** 695,701 ****
+ gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
+ int width; /* In OS units */
+ int height;
+! int min_width; /* Smallest permissable window size (ignored) */
+ int min_height;
+ int base_width; /* Space for scroll bars, etc */
+ int base_height;
+--- 695,701 ----
+ gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
+ int width; /* In OS units */
+ int height;
+! int min_width; /* Smallest permissible window size (ignored) */
+ int min_height;
+ int base_width; /* Space for scroll bars, etc */
+ int base_height;
+***************
+*** 863,869 ****
+ if (strncmp(file, "ZapFont\015", 8) == 0)
+ return file; /* Loaded OK! */
+
+! free(file);
+ return NULL; /* Not a valid font file */
+ }
+
+--- 863,869 ----
+ if (strncmp(file, "ZapFont\015", 8) == 0)
+ return file; /* Loaded OK! */
+
+! vim_free(file);
+ return NULL; /* Not a valid font file */
+ }
+
+*** ../vim-7.2.035/src/gui_w48.c Thu Jul 24 20:50:23 2008
+--- src/gui_w48.c Wed Nov 12 11:37:41 2008
+***************
+*** 3335,3341 ****
+
+ /*
+ * Convert the string s to the proper format for a filter string by replacing
+! * the \t and \n delimeters with \0.
+ * Returns the converted string in allocated memory.
+ *
+ * Keep in sync with convert_filterW() above!
+--- 3335,3341 ----
+
+ /*
+ * Convert the string s to the proper format for a filter string by replacing
+! * the \t and \n delimiters with \0.
+ * Returns the converted string in allocated memory.
+ *
+ * Keep in sync with convert_filterW() above!
+***************
+*** 3674,3680 ****
+ * Use "prog" as the name of the program and "cmdline" as the arguments.
+ * Copy the arguments to allocated memory.
+ * Return the number of arguments (including program name).
+! * Return pointers to the arguments in "argvp".
+ * Return pointer to buffer in "tofree".
+ * Returns zero when out of memory.
+ */
+--- 3674,3681 ----
+ * Use "prog" as the name of the program and "cmdline" as the arguments.
+ * Copy the arguments to allocated memory.
+ * Return the number of arguments (including program name).
+! * Return pointers to the arguments in "argvp". Memory is allocated with
+! * malloc(), use free() instead of vim_free().
+ * Return pointer to buffer in "tofree".
+ * Returns zero when out of memory.
+ */
+***************
+*** 3692,3697 ****
+--- 3693,3700 ----
+ char **argv = NULL;
+ int round;
+
++ *tofree = NULL;
++
+ #ifdef FEAT_MBYTE
+ /* Try using the Unicode version first, it takes care of conversion when
+ * 'encoding' is changed. */
+***************
+*** 3802,3816 ****
+ argv = (char **)malloc((argc + 1) * sizeof(char *));
+ if (argv == NULL )
+ {
+! vim_free(newcmdline);
+ return 0; /* malloc error */
+ }
+ pnew = newcmdline;
+ }
+ }
+
+ done:
+-
+ argv[argc] = NULL; /* NULL-terminated list */
+ *argvp = argv;
+ return argc;
+--- 3805,3819 ----
+ argv = (char **)malloc((argc + 1) * sizeof(char *));
+ if (argv == NULL )
+ {
+! free(newcmdline);
+ return 0; /* malloc error */
+ }
+ pnew = newcmdline;
++ *tofree = newcmdline;
+ }
+ }
+
+ done:
+ argv[argc] = NULL; /* NULL-terminated list */
+ *argvp = argv;
+ return argc;
+*** ../vim-7.2.035/src/os_vms.c Wed Aug 6 18:38:52 2008
+--- src/os_vms.c Wed Nov 12 11:42:12 2008
+***************
+*** 228,234 ****
+ else if ((sbuf = getenv((char *)lognam)))
+ {
+ lengte = strlen(sbuf) + 1;
+! cp = (char_u *)malloc((size_t)lengte);
+ if (cp)
+ strcpy((char *)cp, sbuf);
+ return cp;
+--- 228,234 ----
+ else if ((sbuf = getenv((char *)lognam)))
+ {
+ lengte = strlen(sbuf) + 1;
+! cp = (char_u *)alloc((size_t)lengte);
+ if (cp)
+ strcpy((char *)cp, sbuf);
+ return cp;
+***************
+*** 381,387 ****
+ if (--vms_match_free == 0) {
+ /* add more space to store matches */
+ vms_match_alloced += EXPL_ALLOC_INC;
+! vms_fmatch = (char_u **)realloc(vms_fmatch,
+ sizeof(char **) * vms_match_alloced);
+ if (!vms_fmatch)
+ return 0;
+--- 381,387 ----
+ if (--vms_match_free == 0) {
+ /* add more space to store matches */
+ vms_match_alloced += EXPL_ALLOC_INC;
+! vms_fmatch = (char_u **)vim_realloc(vms_fmatch,
+ sizeof(char **) * vms_match_alloced);
+ if (!vms_fmatch)
+ return 0;
+***************
+*** 460,466 ****
+ if (--files_free < 1)
+ {
+ files_alloced += EXPL_ALLOC_INC;
+! *file = (char_u **)realloc(*file,
+ sizeof(char_u **) * files_alloced);
+ if (*file == NULL)
+ {
+--- 460,466 ----
+ if (--files_free < 1)
+ {
+ files_alloced += EXPL_ALLOC_INC;
+! *file = (char_u **)vim_realloc(*file,
+ sizeof(char_u **) * files_alloced);
+ if (*file == NULL)
+ {
+***************
+*** 614,627 ****
+ {
+ buflen = len + 128;
+ if (buf)
+! buf = (char *)realloc(buf, buflen);
+ else
+! buf = (char *)calloc(buflen, sizeof(char));
+ }
+
+ #ifdef DEBUG
+ char *tmpbuf = NULL;
+! tmpbuf = (char *)calloc(buflen, sizeof(char));
+ strcpy(tmpbuf, instring);
+ #endif
+
+--- 614,627 ----
+ {
+ buflen = len + 128;
+ if (buf)
+! buf = (char *)vim_realloc(buf, buflen);
+ else
+! buf = (char *)alloc(buflen * sizeof(char));
+ }
+
+ #ifdef DEBUG
+ char *tmpbuf = NULL;
+! tmpbuf = (char *)alloc(buflen * sizeof(char));
+ strcpy(tmpbuf, instring);
+ #endif
+
+*** ../vim-7.2.035/src/os_w32exe.c Fri Jul 1 00:06:20 2005
+--- src/os_w32exe.c Wed Nov 12 11:45:43 2008
+***************
+*** 129,135 ****
+ errout:
+ #endif
+ free(argv);
+! free(tofree);
+ #ifdef FEAT_MBYTE
+ free_cmd_argsW();
+ #endif
+--- 129,136 ----
+ errout:
+ #endif
+ free(argv);
+! if (tofree != NULL)
+! free(tofree);
+ #ifdef FEAT_MBYTE
+ free_cmd_argsW();
+ #endif
+*** ../vim-7.2.035/src/os_win16.c Wed Jun 25 00:49:34 2008
+--- src/os_win16.c Wed Nov 12 11:45:53 2008
+***************
+*** 121,127 ****
+ pmain(argc, argv);
+
+ free(argv);
+! free(tofree);
+
+ return 0;
+ }
+--- 121,128 ----
+ pmain(argc, argv);
+
+ free(argv);
+! if (tofree != NULL)
+! free(tofree);
+
+ return 0;
+ }
+*** ../vim-7.2.035/src/version.c Wed Nov 12 13:07:48 2008
+--- src/version.c Wed Nov 12 13:28:51 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 36,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+239. You think "surfing" is something you do on dry land.
+
+ /// 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.037 b/source/ap/vim/patches/7.2.037
new file mode 100644
index 000000000..20a439836
--- /dev/null
+++ b/source/ap/vim/patches/7.2.037
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.037
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.037
+Problem: Double free with GTK 1 and compiled with EXITFREE.
+Solution: Don't close display. (Dominique Pelle)
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.036/src/os_unix.c Wed Nov 12 13:07:48 2008
+--- src/os_unix.c Wed Nov 12 11:55:33 2008
+***************
+*** 2936,2942 ****
+ }
+ # endif
+ # endif
+! # ifdef FEAT_X11
+ if (x11_display != NULL
+ # ifdef FEAT_XCLIPBOARD
+ && x11_display != xterm_dpy
+--- 2936,2943 ----
+ }
+ # endif
+ # endif
+! /* Don't close the display for GTK 1, it is done in exit(). */
+! # if defined(FEAT_X11) && (!defined(FEAT_GUI_GTK) || defined(HAVE_GTK2))
+ if (x11_display != NULL
+ # ifdef FEAT_XCLIPBOARD
+ && x11_display != xterm_dpy
+*** ../vim-7.2.036/src/version.c Wed Nov 12 13:35:31 2008
+--- src/version.c Wed Nov 12 14:08:56 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 37,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+240. You think Webster's Dictionary is a directory of WEB sites.
+
+ /// 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.038 b/source/ap/vim/patches/7.2.038
new file mode 100644
index 000000000..449821e81
--- /dev/null
+++ b/source/ap/vim/patches/7.2.038
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.038
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.038
+Problem: Overlapping arguments to memcpy().
+Solution: Use mch_memmove(). (Dominique Pelle)
+Files: src/if_xcmdsrv.c
+
+
+*** ../vim-7.2.037/src/if_xcmdsrv.c Wed Aug 6 18:38:13 2008
+--- src/if_xcmdsrv.c Wed Nov 12 12:09:01 2008
+***************
+*** 736,742 ****
+ + serverReply.ga_len;
+ e.id = w;
+ ga_init2(&e.strings, 1, 100);
+! memcpy(p, &e, sizeof(e));
+ serverReply.ga_len++;
+ }
+ }
+--- 736,742 ----
+ + serverReply.ga_len;
+ e.id = w;
+ ga_init2(&e.strings, 1, 100);
+! mch_memmove(p, &e, sizeof(e));
+ serverReply.ga_len++;
+ }
+ }
+***************
+*** 1018,1024 ****
+ p++;
+ count = numItems - (p - regProp);
+ if (count > 0)
+! memcpy(entry, p, count);
+ XChangeProperty(dpy, RootWindow(dpy, 0), registryProperty, XA_STRING,
+ 8, PropModeReplace, regProp,
+ (int)(numItems - (p - entry)));
+--- 1018,1024 ----
+ p++;
+ count = numItems - (p - regProp);
+ if (count > 0)
+! mch_memmove(entry, p, count);
+ XChangeProperty(dpy, RootWindow(dpy, 0), registryProperty, XA_STRING,
+ 8, PropModeReplace, regProp,
+ (int)(numItems - (p - entry)));
+***************
+*** 1072,1078 ****
+ p++;
+ lastHalf = numItems - (p - regProp);
+ if (lastHalf > 0)
+! memcpy(entry, p, lastHalf);
+ numItems = (entry - regProp) + lastHalf;
+ p = entry;
+ continue;
+--- 1072,1078 ----
+ p++;
+ lastHalf = numItems - (p - regProp);
+ if (lastHalf > 0)
+! mch_memmove(entry, p, lastHalf);
+ numItems = (entry - regProp) + lastHalf;
+ p = entry;
+ continue;
+*** ../vim-7.2.037/src/version.c Wed Nov 12 14:09:38 2008
+--- src/version.c Wed Nov 12 14:51:00 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 38,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+241. You try to look for Net Search even when you're in File Manager.
+
+ /// 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.039 b/source/ap/vim/patches/7.2.039
new file mode 100644
index 000000000..f9cb18eb4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.039
@@ -0,0 +1,46 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.039
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.039
+Problem: Accessing freed memory on exit when EXITFREE is defined.
+Solution: Call hash_init() on the v: hash table.
+Files: src/eval.c
+
+
+*** ../vim-7.2.038/src/eval.c Sun Nov 9 17:21:10 2008
+--- src/eval.c Wed Nov 12 12:15:14 2008
+***************
+*** 856,861 ****
+--- 856,862 ----
+ }
+ }
+ hash_clear(&vimvarht);
++ hash_init(&vimvarht); /* garbage_collect() will access it */
+ hash_clear(&compat_hashtab);
+
+ /* script-local variables */
+*** ../vim-7.2.038/src/version.c Wed Nov 12 14:52:11 2008
+--- src/version.c Wed Nov 12 15:09:39 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 39,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+242. You turn down a better-paying job because it doesn't come with
+ a free e-mail account.
+
+ /// 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.040 b/source/ap/vim/patches/7.2.040
new file mode 100644
index 000000000..76ea73af3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.040
@@ -0,0 +1,64 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.040
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.040
+Problem: When using ":e ++ff=dos fname" and the file contains a NL without
+ a CR before it and 'ffs' contains "unix" then the fileformat
+ becomes unix.
+Solution: Ignore 'ffs' when using the ++ff argument. (Ben Schmidt)
+ Also remove unreachable code.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.039/src/fileio.c Tue Nov 11 21:55:29 2008
+--- src/fileio.c Wed Nov 12 13:19:42 2008
+***************
+*** 932,938 ****
+--- 932,941 ----
+ else
+ {
+ if (eap != NULL && eap->force_ff != 0)
++ {
+ fileformat = get_fileformat_force(curbuf, eap);
++ try_unix = try_dos = try_mac = FALSE;
++ }
+ else if (curbuf->b_p_bin)
+ fileformat = EOL_UNIX; /* binary: use Unix format */
+ else if (*p_ffs == NUL)
+***************
+*** 2341,2351 ****
+ STRCAT(IObuff, _("[CR missing]"));
+ c = TRUE;
+ }
+- if (ff_error == EOL_MAC)
+- {
+- STRCAT(IObuff, _("[NL found]"));
+- c = TRUE;
+- }
+ if (split)
+ {
+ STRCAT(IObuff, _("[long lines split]"));
+--- 2344,2349 ----
+*** ../vim-7.2.039/src/version.c Wed Nov 12 15:28:37 2008
+--- src/version.c Wed Nov 12 16:03:44 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 40,
+ /**/
+
+--
+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.041 b/source/ap/vim/patches/7.2.041
new file mode 100644
index 000000000..b562206ce
--- /dev/null
+++ b/source/ap/vim/patches/7.2.041
@@ -0,0 +1,729 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.041
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.041
+Problem: In diff mode, when using two tabs, each with two diffed buffers,
+ editing a buffer of the other tab messes up the diff. (Matt
+ Mzyzik)
+Solution: Only copy options from a window where the buffer was edited that
+ doesn't have 'diff' set or is for the current tab page.
+ Also fix that window options for a buffer are stored with the
+ wrong window.
+Files: src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
+ src/ex_getln.c, src/if_sniff.c, src/main.c, src/netbeans.c,
+ src/normal.c, src/popupmnu.c, src/proto/buffer.pro,
+ src/proto/ex_cmds.pro src/quickfix.c, src/window.c
+
+
+*** ../vim-7.2.040/src/buffer.c Wed Nov 12 12:51:38 2008
+--- src/buffer.c Wed Nov 12 17:45:01 2008
+***************
+*** 33,39 ****
+ static char_u *fname_match __ARGS((regprog_T *prog, char_u *name));
+ #endif
+ static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
+! static wininfo_T *find_wininfo __ARGS((buf_T *buf));
+ #ifdef UNIX
+ static buf_T *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
+ static int otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
+--- 33,39 ----
+ static char_u *fname_match __ARGS((regprog_T *prog, char_u *name));
+ #endif
+ static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
+! static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer));
+ #ifdef UNIX
+ static buf_T *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
+ static int otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
+***************
+*** 1093,1099 ****
+ #endif
+ setpcmark();
+ retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
+! forceit ? ECMD_FORCEIT : 0);
+
+ /*
+ * do_ecmd() may create a new buffer, then we have to delete
+--- 1093,1099 ----
+ #endif
+ setpcmark();
+ retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
+! forceit ? ECMD_FORCEIT : 0, curwin);
+
+ /*
+ * do_ecmd() may create a new buffer, then we have to delete
+***************
+*** 1316,1322 ****
+ setpcmark();
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
+! buflist_altfpos(); /* remember curpos */
+
+ #ifdef FEAT_VISUAL
+ /* Don't restart Select mode after switching to another buffer. */
+--- 1316,1322 ----
+ setpcmark();
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
+! buflist_altfpos(curwin); /* remember curpos */
+
+ #ifdef FEAT_VISUAL
+ /* Don't restart Select mode after switching to another buffer. */
+***************
+*** 2404,2425 ****
+ return;
+ }
+
+ /*
+ * Find info for the current window in buffer "buf".
+ * If not found, return the info for the most recently used window.
+ * Returns NULL when there isn't any info.
+ */
+ static wininfo_T *
+! find_wininfo(buf)
+ buf_T *buf;
+ {
+ wininfo_T *wip;
+
+ for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+! if (wip->wi_win == curwin)
+ break;
+! if (wip == NULL) /* if no fpos for curwin, use the first in the list */
+! wip = buf->b_wininfo;
+ return wip;
+ }
+
+--- 2404,2473 ----
+ return;
+ }
+
++ #ifdef FEAT_DIFF
++ static int wininfo_other_tab_diff __ARGS((wininfo_T *wip));
++
++ /*
++ * Return TRUE when "wip" has 'diff' set and the diff is only for another tab
++ * page. That's because a diff is local to a tab page.
++ */
++ static int
++ wininfo_other_tab_diff(wip)
++ wininfo_T *wip;
++ {
++ win_T *wp;
++
++ if (wip->wi_opt.wo_diff)
++ {
++ for (wp = firstwin; wp != NULL; wp = wp->w_next)
++ /* return FALSE when it's a window in the current tab page, thus
++ * the buffer was in diff mode here */
++ if (wip->wi_win == wp)
++ return FALSE;
++ return TRUE;
++ }
++ return FALSE;
++ }
++ #endif
++
+ /*
+ * Find info for the current window in buffer "buf".
+ * If not found, return the info for the most recently used window.
++ * When "skip_diff_buffer" is TRUE avoid windows with 'diff' set that is in
++ * another tab page.
+ * Returns NULL when there isn't any info.
+ */
++ /*ARGSUSED*/
+ static wininfo_T *
+! find_wininfo(buf, skip_diff_buffer)
+ buf_T *buf;
++ int skip_diff_buffer;
+ {
+ wininfo_T *wip;
+
+ for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+! if (wip->wi_win == curwin
+! #ifdef FEAT_DIFF
+! && (!skip_diff_buffer || !wininfo_other_tab_diff(wip))
+! #endif
+! )
+ break;
+!
+! /* If no wininfo for curwin, use the first in the list (that doesn't have
+! * 'diff' set and is in another tab page). */
+! if (wip == NULL)
+! {
+! #ifdef FEAT_DIFF
+! if (skip_diff_buffer)
+! {
+! for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+! if (!wininfo_other_tab_diff(wip))
+! break;
+! }
+! else
+! #endif
+! wip = buf->b_wininfo;
+! }
+ return wip;
+ }
+
+***************
+*** 2440,2446 ****
+ clearFolding(curwin);
+ #endif
+
+! wip = find_wininfo(buf);
+ if (wip != NULL && wip->wi_optset)
+ {
+ copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
+--- 2488,2494 ----
+ clearFolding(curwin);
+ #endif
+
+! wip = find_wininfo(buf, TRUE);
+ if (wip != NULL && wip->wi_optset)
+ {
+ copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
+***************
+*** 2472,2478 ****
+ wininfo_T *wip;
+ static pos_T no_position = {1, 0};
+
+! wip = find_wininfo(buf);
+ if (wip != NULL)
+ return &(wip->wi_fpos);
+ else
+--- 2520,2526 ----
+ wininfo_T *wip;
+ static pos_T no_position = {1, 0};
+
+! wip = find_wininfo(buf, FALSE);
+ if (wip != NULL)
+ return &(wip->wi_fpos);
+ else
+***************
+*** 2793,2806 ****
+ #endif
+
+ /*
+! * Set alternate cursor position for current window.
+ * Also save the local window option values.
+ */
+ void
+! buflist_altfpos()
+ {
+! buflist_setfpos(curbuf, curwin, curwin->w_cursor.lnum,
+! curwin->w_cursor.col, TRUE);
+ }
+
+ /*
+--- 2841,2854 ----
+ #endif
+
+ /*
+! * Set alternate cursor position for the current buffer and window "win".
+ * Also save the local window option values.
+ */
+ void
+! buflist_altfpos(win)
+! win_T *win;
+ {
+! buflist_setfpos(curbuf, win, win->w_cursor.lnum, win->w_cursor.col, TRUE);
+ }
+
+ /*
+***************
+*** 4492,4498 ****
+ ECMD_ONE,
+ ((P_HID(curwin->w_buffer)
+ || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+! + ECMD_OLDBUF);
+ #ifdef FEAT_AUTOCMD
+ if (use_firstwin)
+ ++autocmd_no_leave;
+--- 4540,4546 ----
+ ECMD_ONE,
+ ((P_HID(curwin->w_buffer)
+ || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+! + ECMD_OLDBUF, curwin);
+ #ifdef FEAT_AUTOCMD
+ if (use_firstwin)
+ ++autocmd_no_leave;
+*** ../vim-7.2.040/src/ex_cmds.c Sun Nov 9 13:43:25 2008
+--- src/ex_cmds.c Wed Nov 12 22:41:41 2008
+***************
+*** 3052,3058 ****
+ retval = 0; /* it's in the same file */
+ }
+ else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
+! (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0)) == OK)
+ retval = -1; /* opened another file */
+ else
+ retval = 1; /* error encountered */
+--- 3052,3059 ----
+ retval = 0; /* it's in the same file */
+ }
+ else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
+! (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0),
+! curwin) == OK)
+ retval = -1; /* opened another file */
+ else
+ retval = 1; /* error encountered */
+***************
+*** 3085,3101 ****
+ * ECMD_OLDBUF: use existing buffer if it exists
+ * ECMD_FORCEIT: ! used for Ex command
+ * ECMD_ADDBUF: don't edit, just add to buffer list
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! do_ecmd(fnum, ffname, sfname, eap, newlnum, flags)
+ int fnum;
+ char_u *ffname;
+ char_u *sfname;
+ exarg_T *eap; /* can be NULL! */
+ linenr_T newlnum;
+ int flags;
+ {
+ int other_file; /* TRUE if editing another file */
+ int oldbuf; /* TRUE if using existing buffer */
+--- 3086,3106 ----
+ * ECMD_OLDBUF: use existing buffer if it exists
+ * ECMD_FORCEIT: ! used for Ex command
+ * ECMD_ADDBUF: don't edit, just add to buffer list
++ * oldwin: Should be "curwin" when editing a new buffer in the current
++ * window, NULL when splitting the window first. When not NULL info
++ * of the previous buffer for "oldwin" is stored.
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
+ int fnum;
+ char_u *ffname;
+ char_u *sfname;
+ exarg_T *eap; /* can be NULL! */
+ linenr_T newlnum;
+ int flags;
++ win_T *oldwin;
+ {
+ int other_file; /* TRUE if editing another file */
+ int oldbuf; /* TRUE if using existing buffer */
+***************
+*** 3267,3273 ****
+ {
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum;
+! buflist_altfpos();
+ }
+
+ if (fnum)
+--- 3272,3279 ----
+ {
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum;
+! if (oldwin != NULL)
+! buflist_altfpos(oldwin);
+ }
+
+ if (fnum)
+***************
+*** 3371,3377 ****
+
+ /* close the link to the current buffer */
+ u_sync(FALSE);
+! close_buffer(curwin, curbuf,
+ (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
+--- 3377,3383 ----
+
+ /* close the link to the current buffer */
+ u_sync(FALSE);
+! close_buffer(oldwin, curbuf,
+ (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
+***************
+*** 5609,5615 ****
+ */
+ alt_fnum = curbuf->b_fnum;
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
+! ECMD_HIDE + ECMD_SET_HELP);
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = alt_fnum;
+ empty_fnum = curbuf->b_fnum;
+--- 5615,5627 ----
+ */
+ alt_fnum = curbuf->b_fnum;
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
+! ECMD_HIDE + ECMD_SET_HELP,
+! #ifdef FEAT_WINDOWS
+! NULL /* buffer is still open, don't store info */
+! #else
+! curwin
+! #endif
+! );
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = alt_fnum;
+ empty_fnum = curbuf->b_fnum;
+*** ../vim-7.2.040/src/ex_cmds2.c Sun Sep 7 15:49:45 2008
+--- src/ex_cmds2.c Wed Nov 12 17:46:41 2008
+***************
+*** 2132,2139 ****
+ * argument index. */
+ if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
+ eap, ECMD_LAST,
+! (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0) +
+! (eap->forceit ? ECMD_FORCEIT : 0)) == FAIL)
+ curwin->w_arg_idx = old_arg_idx;
+ /* like Vi: set the mark where the cursor is in the file. */
+ else if (eap->cmdidx != CMD_argdo)
+--- 2132,2139 ----
+ * argument index. */
+ if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
+ eap, ECMD_LAST,
+! (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0)
+! + (eap->forceit ? ECMD_FORCEIT : 0), curwin) == FAIL)
+ curwin->w_arg_idx = old_arg_idx;
+ /* like Vi: set the mark where the cursor is in the file. */
+ else if (eap->cmdidx != CMD_argdo)
+*** ../vim-7.2.040/src/ex_docmd.c Sun Nov 9 13:43:25 2008
+--- src/ex_docmd.c Wed Nov 12 18:04:22 2008
+***************
+*** 7488,7494 ****
+ /* ":new" or ":tabnew" without argument: edit an new empty buffer */
+ setpcmark();
+ (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
+! ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0));
+ }
+ else if ((eap->cmdidx != CMD_split
+ #ifdef FEAT_VERTSPLIT
+--- 7488,7495 ----
+ /* ":new" or ":tabnew" without argument: edit an new empty buffer */
+ setpcmark();
+ (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
+! ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0),
+! old_curwin == NULL ? curwin : NULL);
+ }
+ else if ((eap->cmdidx != CMD_split
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 7525,7531 ****
+ #ifdef FEAT_LISTCMDS
+ + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
+ #endif
+! ) == FAIL)
+ {
+ /* Editing the file failed. If the window was split, close it. */
+ #ifdef FEAT_WINDOWS
+--- 7526,7532 ----
+ #ifdef FEAT_LISTCMDS
+ + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
+ #endif
+! , old_curwin == NULL ? curwin : NULL) == FAIL)
+ {
+ /* Editing the file failed. If the window was split, close it. */
+ #ifdef FEAT_WINDOWS
+*** ../vim-7.2.040/src/ex_getln.c Sun Sep 14 14:41:44 2008
+--- src/ex_getln.c Wed Nov 12 18:06:25 2008
+***************
+*** 6051,6057 ****
+ cmdwin_type = '-';
+
+ /* Create the command-line buffer empty. */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
+ (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+--- 6051,6057 ----
+ cmdwin_type = '-';
+
+ /* Create the command-line buffer empty. */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+ (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+*** ../vim-7.2.040/src/if_sniff.c Sat Aug 9 19:41:16 2008
+--- src/if_sniff.c Wed Nov 12 17:48:46 2008
+***************
+*** 1114,1120 ****
+ char *fname;
+ {
+ ++no_wait_return;
+! do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF);
+ curbuf->b_sniff = TRUE;
+ --no_wait_return; /* [ex_docmd.c] */
+ }
+--- 1114,1121 ----
+ char *fname;
+ {
+ ++no_wait_return;
+! do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF,
+! curwin);
+ curbuf->b_sniff = TRUE;
+ --no_wait_return; /* [ex_docmd.c] */
+ }
+*** ../vim-7.2.040/src/main.c Sun Nov 9 13:43:25 2008
+--- src/main.c Wed Nov 12 17:49:06 2008
+***************
+*** 2588,2594 ****
+ # endif
+ (void)do_ecmd(0, arg_idx < GARGCOUNT
+ ? alist_name(&GARGLIST[arg_idx]) : NULL,
+! NULL, NULL, ECMD_LASTL, ECMD_HIDE);
+ # ifdef HAS_SWAP_EXISTS_ACTION
+ if (swap_exists_did_quit)
+ {
+--- 2588,2594 ----
+ # endif
+ (void)do_ecmd(0, arg_idx < GARGCOUNT
+ ? alist_name(&GARGLIST[arg_idx]) : NULL,
+! NULL, NULL, ECMD_LASTL, ECMD_HIDE, curwin);
+ # ifdef HAS_SWAP_EXISTS_ACTION
+ if (swap_exists_did_quit)
+ {
+*** ../vim-7.2.040/src/netbeans.c Sun Jul 13 19:18:03 2008
+--- src/netbeans.c Wed Nov 12 17:49:40 2008
+***************
+*** 1795,1801 ****
+ buf->displayname = NULL;
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+! do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+--- 1795,1801 ----
+ buf->displayname = NULL;
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+! do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF, curwin);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+***************
+*** 1960,1966 ****
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+ do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+--- 1960,1966 ----
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+ do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF, curwin);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+***************
+*** 1979,1985 ****
+ vim_free(buf->displayname);
+ buf->displayname = nb_unquote(args, NULL);
+ do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+ doupdate = 1;
+--- 1979,1985 ----
+ vim_free(buf->displayname);
+ buf->displayname = nb_unquote(args, NULL);
+ do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF, curwin);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+ doupdate = 1;
+*** ../vim-7.2.040/src/normal.c Sat Nov 1 13:51:57 2008
+--- src/normal.c Wed Nov 12 17:49:50 2008
+***************
+*** 6050,6056 ****
+ autowrite(curbuf, FALSE);
+ setpcmark();
+ (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
+! P_HID(curbuf) ? ECMD_HIDE : 0);
+ if (cap->nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+--- 6050,6056 ----
+ autowrite(curbuf, FALSE);
+ setpcmark();
+ (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
+! P_HID(curbuf) ? ECMD_HIDE : 0, curwin);
+ if (cap->nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+*** ../vim-7.2.040/src/popupmnu.c Sun Jul 13 19:33:51 2008
+--- src/popupmnu.c Wed Nov 12 18:08:07 2008
+***************
+*** 573,579 ****
+ {
+ /* Don't want to sync undo in the current buffer. */
+ ++no_u_sync;
+! res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0);
+ --no_u_sync;
+ if (res == OK)
+ {
+--- 573,579 ----
+ {
+ /* Don't want to sync undo in the current buffer. */
+ ++no_u_sync;
+! res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0, NULL);
+ --no_u_sync;
+ if (res == OK)
+ {
+*** ../vim-7.2.040/src/proto/buffer.pro Sun May 6 13:57:53 2007
+--- src/proto/buffer.pro Wed Nov 12 17:43:39 2008
+***************
+*** 33,39 ****
+ char_u *getaltfname __ARGS((int errmsg));
+ int buflist_add __ARGS((char_u *fname, int flags));
+ void buflist_slash_adjust __ARGS((void));
+! void buflist_altfpos __ARGS((void));
+ int otherfile __ARGS((char_u *ffname));
+ void buf_setino __ARGS((buf_T *buf));
+ void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+--- 33,39 ----
+ char_u *getaltfname __ARGS((int errmsg));
+ int buflist_add __ARGS((char_u *fname, int flags));
+ void buflist_slash_adjust __ARGS((void));
+! void buflist_altfpos __ARGS((win_T *win));
+ int otherfile __ARGS((char_u *ffname));
+ void buf_setino __ARGS((buf_T *buf));
+ void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+*** ../vim-7.2.040/src/proto/ex_cmds.pro Sun Nov 9 13:43:25 2008
+--- src/proto/ex_cmds.pro Wed Nov 12 17:44:27 2008
+***************
+*** 27,33 ****
+ void do_wqall __ARGS((exarg_T *eap));
+ int not_writing __ARGS((void));
+ int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+! int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
+ void ex_append __ARGS((exarg_T *eap));
+ void ex_change __ARGS((exarg_T *eap));
+ void ex_z __ARGS((exarg_T *eap));
+--- 27,33 ----
+ void do_wqall __ARGS((exarg_T *eap));
+ int not_writing __ARGS((void));
+ int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+! int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags, win_T *oldwin));
+ void ex_append __ARGS((exarg_T *eap));
+ void ex_change __ARGS((exarg_T *eap));
+ void ex_z __ARGS((exarg_T *eap));
+*** ../vim-7.2.040/src/quickfix.c Thu Jul 24 18:44:59 2008
+--- src/quickfix.c Wed Nov 12 18:12:00 2008
+***************
+*** 1420,1425 ****
+--- 1420,1426 ----
+ win_T *win;
+ win_T *altwin;
+ #endif
++ win_T *oldwin = curwin;
+ int print_message = TRUE;
+ int len;
+ #ifdef FEAT_FOLDING
+***************
+*** 1744,1750 ****
+ }
+ else
+ ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
+! ECMD_HIDE + ECMD_SET_HELP);
+ }
+ else
+ ok = buflist_getfile(qf_ptr->qf_fnum,
+--- 1745,1752 ----
+ }
+ else
+ ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
+! ECMD_HIDE + ECMD_SET_HELP,
+! oldwin == curwin ? curwin : NULL);
+ }
+ else
+ ok = buflist_getfile(qf_ptr->qf_fnum,
+***************
+*** 2267,2272 ****
+--- 2269,2275 ----
+ win_T *win;
+ tabpage_T *prevtab = curtab;
+ buf_T *qf_buf;
++ win_T *oldwin = curwin;
+
+ if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
+ {
+***************
+*** 2326,2339 ****
+ win->w_llist->qf_refcount++;
+ }
+
+ if (qf_buf != NULL)
+ /* Use the existing quickfix buffer */
+ (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF);
+ else
+ {
+ /* Create a new quickfix buffer */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
+ /* switch off 'swapfile' */
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+--- 2329,2344 ----
+ win->w_llist->qf_refcount++;
+ }
+
++ if (oldwin != curwin)
++ oldwin = NULL; /* don't store info when in another window */
+ if (qf_buf != NULL)
+ /* Use the existing quickfix buffer */
+ (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF, oldwin);
+ else
+ {
+ /* Create a new quickfix buffer */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin);
+ /* switch off 'swapfile' */
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+*** ../vim-7.2.040/src/window.c Wed Aug 6 18:32:11 2008
+--- src/window.c Wed Nov 12 18:12:37 2008
+***************
+*** 531,537 ****
+ # ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ # endif
+! (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL, ECMD_HIDE);
+ if (nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+--- 531,538 ----
+ # ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ # endif
+! (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
+! ECMD_HIDE, NULL);
+ if (nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+*** ../vim-7.2.040/src/version.c Wed Nov 12 16:04:43 2008
+--- src/version.c Wed Nov 12 16:54:35 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 41,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+260. Co-workers have to E-mail you about the fire alarm to get
+ you out of the building.
+
+ /// 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.042 b/source/ap/vim/patches/7.2.042
new file mode 100644
index 000000000..cd2b56899
--- /dev/null
+++ b/source/ap/vim/patches/7.2.042
@@ -0,0 +1,166 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.042
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.042
+Problem: When using winrestview() in a BufWinEnter autocommand the window
+ is scrolled anyway. (Matt Zyzik)
+Solution: Don't recompute topline when above 'scrolloff' from the bottom.
+ Don't always put the cursor halfway when entering a buffer. Add
+ "w_topline_was_set".
+Files: src/buffer.c, src/move.c, src/structs.h
+
+
+*** ../vim-7.2.041/src/buffer.c Sat Nov 15 14:10:23 2008
+--- src/buffer.c Sat Nov 15 14:58:52 2008
+***************
+*** 1401,1406 ****
+--- 1401,1409 ----
+ curwin->w_cursor.coladd = 0;
+ #endif
+ curwin->w_set_curswant = TRUE;
++ #ifdef FEAT_AUTOCMD
++ curwin->w_topline_was_set = FALSE;
++ #endif
+
+ /* Make sure the buffer is loaded. */
+ if (curbuf->b_ml.ml_mfp == NULL) /* need to load the file */
+***************
+*** 1440,1446 ****
+ maketitle();
+ #endif
+ #ifdef FEAT_AUTOCMD
+! if (curwin->w_topline == 1) /* when autocmds didn't change it */
+ #endif
+ scroll_cursor_halfway(FALSE); /* redisplay at correct position */
+
+--- 1443,1450 ----
+ maketitle();
+ #endif
+ #ifdef FEAT_AUTOCMD
+! /* when autocmds didn't change it */
+! if (curwin->w_topline == 1 && !curwin->w_topline_was_set)
+ #endif
+ scroll_cursor_halfway(FALSE); /* redisplay at correct position */
+
+*** ../vim-7.2.041/src/move.c Sun Jul 13 19:25:23 2008
+--- src/move.c Sat Nov 15 14:56:47 2008
+***************
+*** 280,297 ****
+
+ if (curwin->w_botline <= curbuf->b_ml.ml_line_count)
+ {
+! if (curwin->w_cursor.lnum < curwin->w_botline
+! && ((long)curwin->w_cursor.lnum
+ >= (long)curwin->w_botline - p_so
+ #ifdef FEAT_FOLDING
+ || hasAnyFolding(curwin)
+ #endif
+ ))
+! {
+ lineoff_T loff;
+
+! /* Cursor is above botline, check if there are 'scrolloff'
+! * window lines below the cursor. If not, need to scroll. */
+ n = curwin->w_empty_rows;
+ loff.lnum = curwin->w_cursor.lnum;
+ #ifdef FEAT_FOLDING
+--- 280,299 ----
+
+ if (curwin->w_botline <= curbuf->b_ml.ml_line_count)
+ {
+! if (curwin->w_cursor.lnum < curwin->w_botline)
+! {
+! if (((long)curwin->w_cursor.lnum
+ >= (long)curwin->w_botline - p_so
+ #ifdef FEAT_FOLDING
+ || hasAnyFolding(curwin)
+ #endif
+ ))
+! {
+ lineoff_T loff;
+
+! /* Cursor is (a few lines) above botline, check if there are
+! * 'scrolloff' window lines below the cursor. If not, need to
+! * scroll. */
+ n = curwin->w_empty_rows;
+ loff.lnum = curwin->w_cursor.lnum;
+ #ifdef FEAT_FOLDING
+***************
+*** 317,322 ****
+--- 319,328 ----
+ if (n >= p_so)
+ /* sufficient context, no need to scroll */
+ check_botline = FALSE;
++ }
++ else
++ /* sufficient context, no need to scroll */
++ check_botline = FALSE;
+ }
+ if (check_botline)
+ {
+***************
+*** 509,514 ****
+--- 515,523 ----
+ /* Approximate the value of w_botline */
+ wp->w_botline += lnum - wp->w_topline;
+ wp->w_topline = lnum;
++ #ifdef FEAT_AUTOCMD
++ wp->w_topline_was_set = TRUE;
++ #endif
+ #ifdef FEAT_DIFF
+ wp->w_topfill = 0;
+ #endif
+*** ../vim-7.2.041/src/structs.h Sun Nov 9 13:43:25 2008
+--- src/structs.h Sat Nov 15 14:56:42 2008
+***************
+*** 1784,1793 ****
+ #endif
+
+ /*
+! * The next three specify the offsets for displaying the buffer:
+ */
+ linenr_T w_topline; /* buffer line number of the line at the
+ top of the window */
+ #ifdef FEAT_DIFF
+ int w_topfill; /* number of filler lines above w_topline */
+ int w_old_topfill; /* w_topfill at last redraw */
+--- 1784,1798 ----
+ #endif
+
+ /*
+! * "w_topline", "w_leftcol" and "w_skipcol" specify the offsets for
+! * displaying the buffer.
+ */
+ linenr_T w_topline; /* buffer line number of the line at the
+ top of the window */
++ #ifdef FEAT_AUTOCMD
++ char w_topline_was_set; /* flag set to TRUE when topline is set,
++ e.g. by winrestview() */
++ #endif
+ #ifdef FEAT_DIFF
+ int w_topfill; /* number of filler lines above w_topline */
+ int w_old_topfill; /* w_topfill at last redraw */
+*** ../vim-7.2.041/src/version.c Sat Nov 15 14:10:23 2008
+--- src/version.c Sat Nov 15 16:01:29 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 42,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+261. You find diskettes in your pockets when doing laundry.
+
+ /// 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.043 b/source/ap/vim/patches/7.2.043
new file mode 100644
index 000000000..5c5225471
--- /dev/null
+++ b/source/ap/vim/patches/7.2.043
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.043
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.043
+Problem: VMS: Too many characters are escaped in filename and shell
+ commands.
+Solution: Escape fewer characters. (Zoltan Arpadffy)
+Files: src/vim.h
+
+
+*** ../vim-7.2.042/src/vim.h Sun Nov 9 13:43:25 2008
+--- src/vim.h Fri Nov 14 21:41:17 2008
+***************
+*** 341,348 ****
+ #ifdef BACKSLASH_IN_FILENAME
+ # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`%#'\"|!<")
+ #else
+! # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
+! # define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
+ #endif
+
+ #define NUMBUFLEN 30 /* length of a buffer to store a number in ASCII */
+--- 341,354 ----
+ #ifdef BACKSLASH_IN_FILENAME
+ # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`%#'\"|!<")
+ #else
+! # ifdef VMS
+! /* VMS allows a lot of characters in the file name */
+! # define PATH_ESC_CHARS ((char_u *)" \t\n*?{`\\%#'\"|!")
+! # define SHELL_ESC_CHARS ((char_u *)" \t\n*?{`\\%#'|!()&")
+! # else
+! # define PATH_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<")
+! # define SHELL_ESC_CHARS ((char_u *)" \t\n*?[{`$\\%#'\"|!<>();&")
+! # endif
+ #endif
+
+ #define NUMBUFLEN 30 /* length of a buffer to store a number in ASCII */
+***************
+*** 370,376 ****
+ * Define __w64 as an empty token for everything but MSVC 7.x or later.
+ */
+ # if !defined(_MSC_VER) || (_MSC_VER < 1300)
+! # define __w64
+ # endif
+ typedef unsigned long __w64 long_u;
+ typedef long __w64 long_i;
+--- 376,382 ----
+ * Define __w64 as an empty token for everything but MSVC 7.x or later.
+ */
+ # if !defined(_MSC_VER) || (_MSC_VER < 1300)
+! # define __w64
+ # endif
+ typedef unsigned long __w64 long_u;
+ typedef long __w64 long_i;
+*** ../vim-7.2.042/src/version.c Sat Nov 15 16:05:30 2008
+--- src/version.c Thu Nov 20 10:23:51 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 43,
+ /**/
+
+--
+In his lifetime van Gogh painted 486 oil paintings. Oddly enough, 8975
+of them are to be found in the United States.
+
+ /// 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.044 b/source/ap/vim/patches/7.2.044
new file mode 100644
index 000000000..4cfe651e2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.044
@@ -0,0 +1,161 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.044
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.044
+Problem: Crash because of STRCPY() being over protective of the destination
+ size. (Dominique Pelle)
+Solution: Add -D_FORTIFY_SOURCE=1 to CFLAGS. Use an intermediate variable
+ for the pointer to avoid a warning.
+Files: src/auto/configure, src/configure.in, src/eval.c
+
+
+*** ../vim-7.2.043/src/auto/configure Thu Jul 24 17:20:50 2008
+--- src/auto/configure Sun Nov 16 17:08:44 2008
+***************
+*** 16819,16839 ****
+ LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ fi
+
+- { $as_echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
+- $as_echo_n "checking for GCC 3 or later... " >&6; }
+ DEPEND_CFLAGS_FILTER=
+ if test "$GCC" = yes; then
+ gccmajor=`echo "$gccversion" | sed -e 's/^\([1-9]\)\..*$/\1/g'`
+ if test "$gccmajor" -gt "2"; then
+ DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
+! fi
+! fi
+! if test "$DEPEND_CFLAGS_FILTER" = ""; then
+! { $as_echo "$as_me:$LINENO: result: no" >&5
+ $as_echo "no" >&6; }
+! else
+! { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
+ fi
+
+
+--- 16819,16847 ----
+ LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
+ fi
+
+ DEPEND_CFLAGS_FILTER=
+ if test "$GCC" = yes; then
++ { $as_echo "$as_me:$LINENO: checking for GCC 3 or later" >&5
++ $as_echo_n "checking for GCC 3 or later... " >&6; }
+ gccmajor=`echo "$gccversion" | sed -e 's/^\([1-9]\)\..*$/\1/g'`
+ if test "$gccmajor" -gt "2"; then
+ DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
+! { $as_echo "$as_me:$LINENO: result: yes" >&5
+! $as_echo "yes" >&6; }
+! else
+! { $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="$CFLAGS -D_FORTIFY_SOURCE=1"
+! { $as_echo "$as_me:$LINENO: result: yes" >&5
+ $as_echo "yes" >&6; }
++ else
++ { $as_echo "$as_me:$LINENO: result: no" >&5
++ $as_echo "no" >&6; }
++ fi
+ fi
+
+
+*** ../vim-7.2.043/src/configure.in Thu Jul 24 17:20:31 2008
+--- src/configure.in Sun Nov 16 17:08:40 2008
+***************
+*** 3152,3169 ****
+ dnl But only when making dependencies, cproto and lint don't take "-isystem".
+ dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
+ dnl the number before the version number.
+- AC_MSG_CHECKING(for GCC 3 or later)
+ DEPEND_CFLAGS_FILTER=
+ if test "$GCC" = yes; then
+ gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
+ if test "$gccmajor" -gt "2"; then
+ DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
+ fi
+- fi
+- if test "$DEPEND_CFLAGS_FILTER" = ""; then
+- AC_MSG_RESULT(no)
+- else
+- AC_MSG_RESULT(yes)
+ fi
+ AC_SUBST(DEPEND_CFLAGS_FILTER)
+
+--- 3152,3176 ----
+ dnl But only when making dependencies, cproto and lint don't take "-isystem".
+ dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
+ dnl the number before the version number.
+ DEPEND_CFLAGS_FILTER=
+ if test "$GCC" = yes; then
++ AC_MSG_CHECKING(for GCC 3 or later)
+ gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
+ if test "$gccmajor" -gt "2"; then
+ DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
++ AC_MSG_RESULT(yes)
++ else
++ AC_MSG_RESULT(no)
++ 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="$CFLAGS -D_FORTIFY_SOURCE=1"
++ AC_MSG_RESULT(yes)
++ else
++ AC_MSG_RESULT(no)
+ fi
+ fi
+ AC_SUBST(DEPEND_CFLAGS_FILTER)
+
+*** ../vim-7.2.043/src/eval.c Wed Nov 12 15:28:37 2008
+--- src/eval.c Sun Nov 16 20:46:28 2008
+***************
+*** 21150,21157 ****
+ init_var_dict(&fc.l_avars, &fc.l_avars_var);
+ add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
+ (varnumber_T)(argcount - fp->uf_args.ga_len));
+ v = &fc.fixvar[fixvar_idx++].var;
+! STRCPY(v->di_key, "000");
+ v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
+ hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
+ v->di_tv.v_type = VAR_LIST;
+--- 21150,21160 ----
+ init_var_dict(&fc.l_avars, &fc.l_avars_var);
+ add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
+ (varnumber_T)(argcount - fp->uf_args.ga_len));
++ /* Use "name" to avoid a warning from some compiler that checks the
++ * destination size. */
+ v = &fc.fixvar[fixvar_idx++].var;
+! name = v->di_key;
+! STRCPY(name, "000");
+ v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
+ hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
+ v->di_tv.v_type = VAR_LIST;
+*** ../vim-7.2.043/src/version.c Thu Nov 20 10:26:19 2008
+--- src/version.c Thu Nov 20 10:34:31 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 44,
+ /**/
+
+--
+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.045 b/source/ap/vim/patches/7.2.045
new file mode 100644
index 000000000..cf37908d2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.045
@@ -0,0 +1,67 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.045
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.045
+Problem: The Python interface has an empty entry in sys.path.
+Solution: Filter out the empty entry. (idea from James Vega)
+Files: src/if_python.c
+
+
+*** ../vim-7.2.044/src/if_python.c Thu Jul 24 16:24:48 2008
+--- src/if_python.c Thu Nov 20 11:03:53 2008
+***************
+*** 531,536 ****
+--- 531,542 ----
+ if (PythonMod_Init())
+ goto fail;
+
++ /* Remove the element from sys.path that was added because of our
++ * argv[0] value in PythonMod_Init(). Previously we used an empty
++ * string, but dependinding on the OS we then get an empty entry or
++ * the current directory in sys.path. */
++ PyRun_SimpleString("import sys; sys.path = filter(lambda x: x != '/must>not&exist', sys.path)");
++
+ /* the first python thread is vim's, release the lock */
+ Python_SaveThread();
+
+***************
+*** 2345,2351 ****
+ {
+ PyObject *mod;
+ PyObject *dict;
+! static char *(argv[2]) = {"", NULL};
+
+ /* Fixups... */
+ BufferType.ob_type = &PyType_Type;
+--- 2351,2358 ----
+ {
+ PyObject *mod;
+ PyObject *dict;
+! /* The special value is removed from sys.path in Python_Init(). */
+! static char *(argv[2]) = {"/must>not&exist/foo", NULL};
+
+ /* Fixups... */
+ BufferType.ob_type = &PyType_Type;
+*** ../vim-7.2.044/src/version.c Thu Nov 20 10:36:04 2008
+--- src/version.c Thu Nov 20 10:58:11 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 45,
+ /**/
+
+--
+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.046 b/source/ap/vim/patches/7.2.046
new file mode 100644
index 000000000..335f814d5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.046
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.046
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.046
+Problem: Wrong check for filling buffer with encoding. (Danek Duvall)
+Solution: Remove pointers. (Dominique Pelle)
+Files: src/mbyte.c
+
+
+*** ../vim-7.2.045/src/mbyte.c Wed Nov 12 13:07:48 2008
+--- src/mbyte.c Wed Nov 19 21:44:50 2008
+***************
+*** 3131,3137 ****
+ else
+ s = p + 1;
+ }
+! for (i = 0; s[i] != NUL && s + i < buf + sizeof(buf) - 1; ++i)
+ {
+ if (s[i] == '_' || s[i] == '-')
+ buf[i] = '-';
+--- 3131,3137 ----
+ else
+ s = p + 1;
+ }
+! for (i = 0; s[i] != NUL && i < sizeof(buf) - 1; ++i)
+ {
+ if (s[i] == '_' || s[i] == '-')
+ buf[i] = '-';
+*** ../vim-7.2.045/src/version.c Thu Nov 20 11:04:01 2008
+--- src/version.c Thu Nov 20 11:54:23 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 46,
+ /**/
+
+--
+ He was not in the least bit scared to be mashed into a pulp
+ Or to have his eyes gouged out and his elbows broken;
+ To have his kneecaps split and his body burned away
+ And his limbs all hacked and mangled, brave Sir Robin.
+ "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.047 b/source/ap/vim/patches/7.2.047
new file mode 100644
index 000000000..5826d2a98
--- /dev/null
+++ b/source/ap/vim/patches/7.2.047
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.047
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.047
+Problem: Starting Vim with the -nb argument while it's not supported causes
+ the other side to hang.
+Solution: When -nb is used while it's not supported exit Vim. (Xavier de
+ Gaye)
+Files: src/main.c, src/vim.h
+
+
+*** ../vim-7.2.046/src/main.c Sat Nov 15 14:10:23 2008
+--- src/main.c Thu Nov 20 14:09:27 2008
+***************
+*** 1510,1516 ****
+ early_arg_scan(parmp)
+ mparm_T *parmp;
+ {
+! #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER)
+ int argc = parmp->argc;
+ char **argv = parmp->argv;
+ int i;
+--- 1510,1517 ----
+ early_arg_scan(parmp)
+ mparm_T *parmp;
+ {
+! #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
+! || !defined(FEAT_NETBEANS_INTG)
+ int argc = parmp->argc;
+ char **argv = parmp->argv;
+ int i;
+***************
+*** 1582,1587 ****
+--- 1583,1596 ----
+ else if (STRICMP(argv[i], "--echo-wid") == 0)
+ echo_wid_arg = TRUE;
+ # endif
++ # ifndef FEAT_NETBEANS_INTG
++ else if (strncmp(argv[i], "-nb", (size_t)3) == 0)
++ {
++ mch_errmsg(_("'-nb' cannot be used: not enabled at compile time\n"));
++ mch_exit(2);
++ }
++ # endif
++
+ }
+ #endif
+ }
+*** ../vim-7.2.046/src/vim.h Thu Nov 20 10:26:19 2008
+--- src/vim.h Thu Nov 20 12:06:14 2008
+***************
+*** 1986,1991 ****
+--- 1986,1994 ----
+ # endif
+ #endif
+
++ #ifndef FEAT_NETBEANS_INTG
++ # undef NBDEBUG
++ #endif
+ #ifdef NBDEBUG /* Netbeans debugging. */
+ # include "nbdebug.h"
+ #else
+*** ../vim-7.2.046/src/version.c Thu Nov 20 11:55:53 2008
+--- src/version.c Thu Nov 20 14:07:57 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 47,
+ /**/
+
+--
+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.048 b/source/ap/vim/patches/7.2.048
new file mode 100644
index 000000000..3975308b5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.048
@@ -0,0 +1,160 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.048
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.048
+Problem: v:prevcount is changed too often. Counts are not multiplied when
+ setting v:count.
+Solution: Set v:prevcount properly. Multiply counts. (idea by Ben Schmidt)
+Files: src/eval.c, src/normal.c, src/proto/eval.pro
+
+
+*** ../vim-7.2.047/src/eval.c Thu Nov 20 10:36:04 2008
+--- src/eval.c Thu Nov 20 15:53:47 2008
+***************
+*** 18146,18159 ****
+ }
+
+ /*
+! * Set v:count, v:count1 and v:prevcount.
+ */
+ void
+! set_vcount(count, count1)
+ long count;
+ long count1;
+ {
+! vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
+ vimvars[VV_COUNT].vv_nr = count;
+ vimvars[VV_COUNT1].vv_nr = count1;
+ }
+--- 18146,18162 ----
+ }
+
+ /*
+! * Set v:count to "count" and v:count1 to "count1".
+! * When "set_prevcount" is TRUE first set v:prevcount from v:count.
+ */
+ void
+! set_vcount(count, count1, set_prevcount)
+ long count;
+ long count1;
++ int set_prevcount;
+ {
+! if (set_prevcount)
+! vimvars[VV_PREVCOUNT].vv_nr = vimvars[VV_COUNT].vv_nr;
+ vimvars[VV_COUNT].vv_nr = count;
+ vimvars[VV_COUNT1].vv_nr = count1;
+ }
+*** ../vim-7.2.047/src/normal.c Sat Nov 15 14:10:23 2008
+--- src/normal.c Thu Nov 20 16:04:44 2008
+***************
+*** 580,585 ****
+--- 580,588 ----
+ static int old_mapped_len = 0;
+ #endif
+ int idx;
++ #ifdef FEAT_EVAL
++ int set_prevcount = FALSE;
++ #endif
+
+ vim_memset(&ca, 0, sizeof(ca)); /* also resets ca.retval */
+ ca.oap = oap;
+***************
+*** 615,621 ****
+--- 618,629 ----
+ /* When not finishing an operator and no register name typed, reset the
+ * count. */
+ if (!finish_op && !oap->regname)
++ {
+ ca.opcount = 0;
++ #ifdef FEAT_EVAL
++ set_prevcount = TRUE;
++ #endif
++ }
+
+ #ifdef FEAT_AUTOCMD
+ /* Restore counts from before receiving K_CURSORHOLD. This means after
+***************
+*** 719,725 ****
+ * command, so that v:count can be used in an expression mapping
+ * right after the count. */
+ if (toplevel && stuff_empty())
+! set_vcount(ca.count0, ca.count0 == 0 ? 1 : ca.count0);
+ #endif
+ if (ctrl_w)
+ {
+--- 727,741 ----
+ * command, so that v:count can be used in an expression mapping
+ * right after the count. */
+ if (toplevel && stuff_empty())
+! {
+! long count = ca.count0;
+!
+! /* multiply with ca.opcount the same way as below */
+! if (ca.opcount != 0)
+! count = ca.opcount * (count == 0 ? 1 : count);
+! set_vcount(count, count == 0 ? 1 : count, set_prevcount);
+! set_prevcount = FALSE; /* only set v:prevcount once */
+! }
+ #endif
+ if (ctrl_w)
+ {
+***************
+*** 806,812 ****
+ * Only set v:count when called from main() and not a stuffed command.
+ */
+ if (toplevel && stuff_empty())
+! set_vcount(ca.count0, ca.count1);
+ #endif
+
+ /*
+--- 822,828 ----
+ * Only set v:count when called from main() and not a stuffed command.
+ */
+ if (toplevel && stuff_empty())
+! set_vcount(ca.count0, ca.count1, set_prevcount);
+ #endif
+
+ /*
+*** ../vim-7.2.047/src/proto/eval.pro Sun Nov 9 13:43:25 2008
+--- src/proto/eval.pro Thu Nov 20 15:53:54 2008
+***************
+*** 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_vcount __ARGS((long count, long count1));
+ void set_vim_var_string __ARGS((int idx, char_u *val, int len));
+ void set_vim_var_list __ARGS((int idx, list_T *val));
+ void set_reg_var __ARGS((int c));
+--- 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_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));
+ void set_reg_var __ARGS((int c));
+*** ../vim-7.2.047/src/version.c Thu Nov 20 14:11:47 2008
+--- src/version.c Thu Nov 20 16:08:19 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 48,
+ /**/
+
+--
+Microsoft's definition of a boolean: TRUE, FALSE, MAYBE
+"Embrace and extend"...?
+
+ /// 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.049 b/source/ap/vim/patches/7.2.049
new file mode 100644
index 000000000..0f6efa87f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.049
@@ -0,0 +1,1193 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.049 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.049 (extra)
+Problem: Win32: the clipboard doesn't support UTF-16.
+Solution: Change UCS-2 support to UTF-16 support. (Jia Yanwei)
+Files: src/gui_w32.c, src/gui_w48.c, src/mbyte.c, src/misc1.c,
+ src/os_mswin.c, src/os_win32.c, src/proto/os_mswin.pro
+
+
+*** ../vim-7.2.048/src/gui_w32.c Tue Jun 24 23:46:14 2008
+--- src/gui_w32.c Thu Nov 20 16:47:10 2008
+***************
+*** 992,998 ****
+ SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH,
+ 0, 500);
+
+! tt_text = enc_to_ucs2(str, NULL);
+ lpdi->lpszText = tt_text;
+ /* can't show tooltip if failed */
+ }
+--- 992,998 ----
+ SendMessage(lpdi->hdr.hwndFrom, TTM_SETMAXTIPWIDTH,
+ 0, 500);
+
+! tt_text = enc_to_utf16(str, NULL);
+ lpdi->lpszText = tt_text;
+ /* can't show tooltip if failed */
+ }
+***************
+*** 1935,1941 ****
+ if (buf == NULL)
+ return NULL;
+
+! convbuf = ucs2_to_enc(buf, lenp);
+ pImmReleaseContext(hwnd, hIMC);
+ vim_free(buf);
+ return convbuf;
+--- 1935,1941 ----
+ if (buf == NULL)
+ return NULL;
+
+! convbuf = utf16_to_enc(buf, lenp);
+ pImmReleaseContext(hwnd, hIMC);
+ vim_free(buf);
+ return convbuf;
+***************
+*** 2566,2572 ****
+ {
+ /* 'encoding' differs from active codepage: convert menu name
+ * and use wide function */
+! wn = enc_to_ucs2(menu->name, NULL);
+ if (wn != NULL)
+ {
+ MENUITEMINFOW infow;
+--- 2566,2572 ----
+ {
+ /* 'encoding' differs from active codepage: convert menu name
+ * and use wide function */
+! wn = enc_to_utf16(menu->name, NULL);
+ if (wn != NULL)
+ {
+ MENUITEMINFOW infow;
+***************
+*** 2728,2734 ****
+ {
+ /* 'encoding' differs from active codepage: convert menu item name
+ * and use wide function */
+! wn = enc_to_ucs2(menu->name, NULL);
+ if (wn != NULL)
+ {
+ n = InsertMenuW(parent->submenu_id, (UINT)idx,
+--- 2728,2734 ----
+ {
+ /* 'encoding' differs from active codepage: convert menu item name
+ * and use wide function */
+! wn = enc_to_utf16(menu->name, NULL);
+ if (wn != NULL)
+ {
+ n = InsertMenuW(parent->submenu_id, (UINT)idx,
+***************
+*** 3570,3576 ****
+ if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
+ {
+ /* Not a codepage, use our own conversion function. */
+! wn = enc_to_ucs2(lpAnsiIn, NULL);
+ if (wn != NULL)
+ {
+ wcscpy(lpWCStr, wn);
+--- 3570,3576 ----
+ if (enc_codepage == 0 && (int)GetACP() != enc_codepage)
+ {
+ /* Not a codepage, use our own conversion function. */
+! wn = enc_to_utf16(lpAnsiIn, NULL);
+ if (wn != NULL)
+ {
+ wcscpy(lpWCStr, wn);
+*** ../vim-7.2.048/src/gui_w48.c Wed Nov 12 13:35:31 2008
+--- src/gui_w48.c Thu Nov 20 16:42:32 2008
+***************
+*** 547,553 ****
+ else
+ {
+ len = 1;
+! ws = ucs2_to_enc(wstring, &len);
+ if (ws == NULL)
+ len = 0;
+ else
+--- 547,553 ----
+ else
+ {
+ len = 1;
+! ws = utf16_to_enc(wstring, &len);
+ if (ws == NULL)
+ len = 0;
+ else
+***************
+*** 2128,2134 ****
+ {
+ /* 'encoding' differs from active codepage: convert text and use wide
+ * function */
+! wstr = enc_to_ucs2(str, &wlen);
+ if (wstr != NULL)
+ {
+ n = GetTextExtentPointW(hdc, wstr, wlen, &size);
+--- 2128,2134 ----
+ {
+ /* 'encoding' differs from active codepage: convert text and use wide
+ * function */
+! wstr = enc_to_utf16(str, &wlen);
+ if (wstr != NULL)
+ {
+ n = GetTextExtentPointW(hdc, wstr, wlen, &size);
+***************
+*** 2252,2258 ****
+ {
+ /* 'encoding' differs from active codepage: convert menu name
+ * and use wide function */
+! wn = enc_to_ucs2(item_text, NULL);
+ if (wn != NULL)
+ {
+ MENUITEMINFOW infow;
+--- 2252,2258 ----
+ {
+ /* 'encoding' differs from active codepage: convert menu name
+ * and use wide function */
+! wn = enc_to_utf16(item_text, NULL);
+ if (wn != NULL)
+ {
+ MENUITEMINFOW infow;
+***************
+*** 2422,2428 ****
+ if (use_unicode)
+ {
+ /* Need to go through Unicode. */
+! wstr = enc_to_ucs2(NameBuff, NULL);
+ if (wstr != NULL)
+ {
+ TCITEMW tiw;
+--- 2422,2428 ----
+ if (use_unicode)
+ {
+ /* Need to go through Unicode. */
+! wstr = enc_to_utf16(NameBuff, NULL);
+ if (wstr != NULL)
+ {
+ TCITEMW tiw;
+***************
+*** 2521,2528 ****
+ WCHAR *wbuf;
+ int n;
+
+! /* Convert the title from 'encoding' to ucs2. */
+! wbuf = (WCHAR *)enc_to_ucs2((char_u *)title, NULL);
+ if (wbuf != NULL)
+ {
+ n = SetWindowTextW(hwnd, wbuf);
+--- 2521,2528 ----
+ WCHAR *wbuf;
+ int n;
+
+! /* Convert the title from 'encoding' to UTF-16. */
+! wbuf = (WCHAR *)enc_to_utf16((char_u *)title, NULL);
+ if (wbuf != NULL)
+ {
+ n = SetWindowTextW(hwnd, wbuf);
+***************
+*** 3222,3228 ****
+ char_u *initdir,
+ char_u *filter)
+ {
+! /* We always use the wide function. This means enc_to_ucs2() must work,
+ * otherwise it fails miserably! */
+ OPENFILENAMEW fileStruct;
+ WCHAR fileBuf[MAXPATHL];
+--- 3222,3228 ----
+ char_u *initdir,
+ char_u *filter)
+ {
+! /* We always use the wide function. This means enc_to_utf16() must work,
+ * otherwise it fails miserably! */
+ OPENFILENAMEW fileStruct;
+ WCHAR fileBuf[MAXPATHL];
+***************
+*** 3238,3244 ****
+ fileBuf[0] = NUL;
+ else
+ {
+! wp = enc_to_ucs2(dflt, NULL);
+ if (wp == NULL)
+ fileBuf[0] = NUL;
+ else
+--- 3238,3244 ----
+ fileBuf[0] = NUL;
+ else
+ {
+! wp = enc_to_utf16(dflt, NULL);
+ if (wp == NULL)
+ fileBuf[0] = NUL;
+ else
+***************
+*** 3263,3273 ****
+ #endif
+
+ if (title != NULL)
+! titlep = enc_to_ucs2(title, NULL);
+ fileStruct.lpstrTitle = titlep;
+
+ if (ext != NULL)
+! extp = enc_to_ucs2(ext, NULL);
+ fileStruct.lpstrDefExt = extp;
+
+ fileStruct.lpstrFile = fileBuf;
+--- 3263,3273 ----
+ #endif
+
+ if (title != NULL)
+! titlep = enc_to_utf16(title, NULL);
+ fileStruct.lpstrTitle = titlep;
+
+ if (ext != NULL)
+! extp = enc_to_utf16(ext, NULL);
+ fileStruct.lpstrDefExt = extp;
+
+ fileStruct.lpstrFile = fileBuf;
+***************
+*** 3278,3284 ****
+ if (initdir != NULL && *initdir != NUL)
+ {
+ /* Must have backslashes here, no matter what 'shellslash' says */
+! initdirp = enc_to_ucs2(initdir, NULL);
+ if (initdirp != NULL)
+ {
+ for (wp = initdirp; *wp != NUL; ++wp)
+--- 3278,3284 ----
+ if (initdir != NULL && *initdir != NUL)
+ {
+ /* Must have backslashes here, no matter what 'shellslash' says */
+! initdirp = enc_to_utf16(initdir, NULL);
+ if (initdirp != NULL)
+ {
+ for (wp = initdirp; *wp != NUL; ++wp)
+***************
+*** 3318,3324 ****
+ vim_free(extp);
+
+ /* Convert from UCS2 to 'encoding'. */
+! p = ucs2_to_enc(fileBuf, NULL);
+ if (p != NULL)
+ /* when out of memory we get garbage for non-ASCII chars */
+ STRCPY(fileBuf, p);
+--- 3318,3324 ----
+ vim_free(extp);
+
+ /* Convert from UCS2 to 'encoding'. */
+! p = utf16_to_enc(fileBuf, NULL);
+ if (p != NULL)
+ /* when out of memory we get garbage for non-ASCII chars */
+ STRCPY(fileBuf, p);
+***************
+*** 3518,3524 ****
+ {
+ #ifdef FEAT_MBYTE
+ if (DragQueryFileW(hDrop, i, wszFile, BUFPATHLEN) > 0)
+! fnames[i] = ucs2_to_enc(wszFile, NULL);
+ else
+ #endif
+ {
+--- 3518,3524 ----
+ {
+ #ifdef FEAT_MBYTE
+ if (DragQueryFileW(hDrop, i, wszFile, BUFPATHLEN) > 0)
+! fnames[i] = utf16_to_enc(wszFile, NULL);
+ else
+ #endif
+ {
+*** ../vim-7.2.048/src/mbyte.c Thu Nov 20 11:55:53 2008
+--- src/mbyte.c Thu Nov 20 16:47:41 2008
+***************
+*** 6101,6107 ****
+
+ /* 1. codepage/UTF-8 -> ucs-2. */
+ if (vcp->vc_cpfrom == 0)
+! tmp_len = utf8_to_ucs2(ptr, len, NULL, NULL);
+ else
+ tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, 0,
+ ptr, len, 0, 0);
+--- 6101,6107 ----
+
+ /* 1. codepage/UTF-8 -> ucs-2. */
+ if (vcp->vc_cpfrom == 0)
+! tmp_len = utf8_to_utf16(ptr, len, NULL, NULL);
+ else
+ tmp_len = MultiByteToWideChar(vcp->vc_cpfrom, 0,
+ ptr, len, 0, 0);
+***************
+*** 6109,6121 ****
+ if (tmp == NULL)
+ break;
+ if (vcp->vc_cpfrom == 0)
+! utf8_to_ucs2(ptr, len, tmp, unconvlenp);
+ else
+ MultiByteToWideChar(vcp->vc_cpfrom, 0, ptr, len, tmp, tmp_len);
+
+ /* 2. ucs-2 -> codepage/UTF-8. */
+ if (vcp->vc_cpto == 0)
+! retlen = ucs2_to_utf8(tmp, tmp_len, NULL);
+ else
+ retlen = WideCharToMultiByte(vcp->vc_cpto, 0,
+ tmp, tmp_len, 0, 0, 0, 0);
+--- 6109,6121 ----
+ if (tmp == NULL)
+ break;
+ if (vcp->vc_cpfrom == 0)
+! utf8_to_utf16(ptr, len, tmp, unconvlenp);
+ else
+ MultiByteToWideChar(vcp->vc_cpfrom, 0, ptr, len, tmp, tmp_len);
+
+ /* 2. ucs-2 -> codepage/UTF-8. */
+ if (vcp->vc_cpto == 0)
+! retlen = utf16_to_utf8(tmp, tmp_len, NULL);
+ else
+ retlen = WideCharToMultiByte(vcp->vc_cpto, 0,
+ tmp, tmp_len, 0, 0, 0, 0);
+***************
+*** 6123,6129 ****
+ if (retval != NULL)
+ {
+ if (vcp->vc_cpto == 0)
+! ucs2_to_utf8(tmp, tmp_len, retval);
+ else
+ WideCharToMultiByte(vcp->vc_cpto, 0,
+ tmp, tmp_len, retval, retlen, 0, 0);
+--- 6123,6129 ----
+ if (retval != NULL)
+ {
+ if (vcp->vc_cpto == 0)
+! utf16_to_utf8(tmp, tmp_len, retval);
+ else
+ WideCharToMultiByte(vcp->vc_cpto, 0,
+ tmp, tmp_len, retval, retlen, 0, 0);
+*** ../vim-7.2.048/src/misc1.c Sun Nov 9 13:43:25 2008
+--- src/misc1.c Thu Nov 20 16:42:59 2008
+***************
+*** 8728,8734 ****
+ /* The active codepage differs from 'encoding'. Attempt using the
+ * wide function. If it fails because it is not implemented fall back
+ * to the non-wide version (for Windows 98) */
+! wn = enc_to_ucs2(buf, NULL);
+ if (wn != NULL)
+ {
+ hFind = FindFirstFileW(wn, &wfb);
+--- 8728,8734 ----
+ /* The active codepage differs from 'encoding'. Attempt using the
+ * wide function. If it fails because it is not implemented fall back
+ * to the non-wide version (for Windows 98) */
+! wn = enc_to_utf16(buf, NULL);
+ if (wn != NULL)
+ {
+ hFind = FindFirstFileW(wn, &wfb);
+***************
+*** 8756,8762 ****
+ #ifdef WIN3264
+ # ifdef FEAT_MBYTE
+ if (wn != NULL)
+! p = ucs2_to_enc(wfb.cFileName, NULL); /* p is allocated here */
+ else
+ # endif
+ p = (char_u *)fb.cFileName;
+--- 8756,8762 ----
+ #ifdef WIN3264
+ # ifdef FEAT_MBYTE
+ if (wn != NULL)
+! p = utf16_to_enc(wfb.cFileName, NULL); /* p is allocated here */
+ else
+ # endif
+ p = (char_u *)fb.cFileName;
+***************
+*** 8830,8836 ****
+ if (wn != NULL)
+ {
+ vim_free(wn);
+! wn = enc_to_ucs2(buf, NULL);
+ if (wn != NULL)
+ hFind = FindFirstFileW(wn, &wfb);
+ }
+--- 8830,8836 ----
+ if (wn != NULL)
+ {
+ vim_free(wn);
+! wn = enc_to_utf16(buf, NULL);
+ if (wn != NULL)
+ hFind = FindFirstFileW(wn, &wfb);
+ }
+*** ../vim-7.2.048/src/os_mswin.c Sat Aug 9 19:37:30 2008
+--- src/os_mswin.c Thu Nov 20 17:05:10 2008
+***************
+*** 309,315 ****
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+ /* Convert the title from 'encoding' to the active codepage. */
+! WCHAR *wp = enc_to_ucs2(title, NULL);
+ int n;
+
+ if (wp != NULL)
+--- 309,315 ----
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+ /* Convert the title from 'encoding' to the active codepage. */
+! WCHAR *wp = enc_to_utf16(title, NULL);
+ int n;
+
+ if (wp != NULL)
+***************
+*** 406,415 ****
+ * - invoke _wfullpath()
+ * - convert the result from UCS2 to 'encoding'.
+ */
+! wname = enc_to_ucs2(fname, NULL);
+ if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH - 1) != NULL)
+ {
+! cname = ucs2_to_enc((short_u *)wbuf, NULL);
+ if (cname != NULL)
+ {
+ vim_strncpy(buf, cname, len - 1);
+--- 406,415 ----
+ * - invoke _wfullpath()
+ * - convert the result from UCS2 to 'encoding'.
+ */
+! wname = enc_to_utf16(fname, NULL);
+ if (wname != NULL && _wfullpath(wbuf, wname, MAX_PATH - 1) != NULL)
+ {
+! cname = utf16_to_enc((short_u *)wbuf, NULL);
+ if (cname != NULL)
+ {
+ vim_strncpy(buf, cname, len - 1);
+***************
+*** 507,513 ****
+ # endif
+ )
+ {
+! WCHAR *wp = enc_to_ucs2(buf, NULL);
+ int n;
+
+ if (wp != NULL)
+--- 507,513 ----
+ # endif
+ )
+ {
+! WCHAR *wp = enc_to_utf16(buf, NULL);
+ int n;
+
+ if (wp != NULL)
+***************
+*** 668,674 ****
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_ucs2(path, NULL);
+ int n;
+
+ if (p != NULL)
+--- 668,674 ----
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_utf16(path, NULL);
+ int n;
+
+ if (p != NULL)
+***************
+*** 891,909 ****
+
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+! * Convert an UTF-8 string to UCS-2.
+ * "instr[inlen]" is the input. "inlen" is in bytes.
+! * When "outstr" is NULL only return the number of UCS-2 words produced.
+ * Otherwise "outstr" must be a buffer of sufficient size.
+! * Returns the number of UCS-2 words produced.
+ */
+ int
+! utf8_to_ucs2(char_u *instr, int inlen, short_u *outstr, int *unconvlenp)
+ {
+ int outlen = 0;
+ char_u *p = instr;
+ int todo = inlen;
+ int l;
+
+ while (todo > 0)
+ {
+--- 891,910 ----
+
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+! * Convert an UTF-8 string to UTF-16.
+ * "instr[inlen]" is the input. "inlen" is in bytes.
+! * When "outstr" is NULL only return the number of UTF-16 words produced.
+ * Otherwise "outstr" must be a buffer of sufficient size.
+! * Returns the number of UTF-16 words produced.
+ */
+ int
+! utf8_to_utf16(char_u *instr, int inlen, short_u *outstr, int *unconvlenp)
+ {
+ int outlen = 0;
+ char_u *p = instr;
+ int todo = inlen;
+ int l;
++ int ch;
+
+ while (todo > 0)
+ {
+***************
+*** 917,924 ****
+ break;
+ }
+
+! if (outstr != NULL)
+! *outstr++ = utf_ptr2char(p);
+ ++outlen;
+ p += l;
+ todo -= l;
+--- 918,936 ----
+ break;
+ }
+
+! ch = utf_ptr2char(p);
+! if (ch >= 0x10000)
+! {
+! /* non-BMP character, encoding with surrogate pairs */
+! ++outlen;
+! if (outstr != NULL)
+! {
+! *outstr++ = (0xD800 - (0x10000 >> 10)) + (ch >> 10);
+! *outstr++ = 0xDC00 | (ch & 0x3FF);
+! }
+! }
+! else if (outstr != NULL)
+! *outstr++ = ch;
+ ++outlen;
+ p += l;
+ todo -= l;
+***************
+*** 928,956 ****
+ }
+
+ /*
+! * Convert an UCS-2 string to UTF-8.
+! * The input is "instr[inlen]" with "inlen" in number of ucs-2 words.
+ * When "outstr" is NULL only return the required number of bytes.
+ * Otherwise "outstr" must be a buffer of sufficient size.
+ * Return the number of bytes produced.
+ */
+ int
+! ucs2_to_utf8(short_u *instr, int inlen, char_u *outstr)
+ {
+ int outlen = 0;
+ int todo = inlen;
+ short_u *p = instr;
+ int l;
+
+ while (todo > 0)
+ {
+ if (outstr != NULL)
+ {
+! l = utf_char2bytes(*p, outstr);
+ outstr += l;
+ }
+ else
+! l = utf_char2len(*p);
+ ++p;
+ outlen += l;
+ --todo;
+--- 940,981 ----
+ }
+
+ /*
+! * Convert an UTF-16 string to UTF-8.
+! * The input is "instr[inlen]" with "inlen" in number of UTF-16 words.
+ * When "outstr" is NULL only return the required number of bytes.
+ * Otherwise "outstr" must be a buffer of sufficient size.
+ * Return the number of bytes produced.
+ */
+ int
+! utf16_to_utf8(short_u *instr, int inlen, char_u *outstr)
+ {
+ int outlen = 0;
+ int todo = inlen;
+ short_u *p = instr;
+ int l;
++ int ch, ch2;
+
+ while (todo > 0)
+ {
++ ch = *p;
++ if (ch >= 0xD800 && ch <= 0xDBFF && todo > 1)
++ {
++ /* surrogate pairs handling */
++ ch2 = p[1];
++ if (ch2 >= 0xDC00 && ch2 <= 0xDFFF)
++ {
++ ch = ((ch - 0xD800) << 10) + (ch2 & 0x3FF) + 0x10000;
++ ++p;
++ --todo;
++ }
++ }
+ if (outstr != NULL)
+ {
+! l = utf_char2bytes(ch, outstr);
+ outstr += l;
+ }
+ else
+! l = utf_char2len(ch);
+ ++p;
+ outlen += l;
+ --todo;
+***************
+*** 1079,1092 ****
+ */
+
+ /*
+! * Convert "str" from 'encoding' to UCS-2.
+ * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen().
+ * Output is returned as an allocated string. "*lenp" is set to the length of
+ * the result. A trailing NUL is always added.
+ * Returns NULL when out of memory.
+ */
+ short_u *
+! enc_to_ucs2(char_u *str, int *lenp)
+ {
+ vimconv_T conv;
+ WCHAR *ret;
+--- 1104,1117 ----
+ */
+
+ /*
+! * Convert "str" from 'encoding' to UTF-16.
+ * Input in "str" with length "*lenp". When "lenp" is NULL, use strlen().
+ * Output is returned as an allocated string. "*lenp" is set to the length of
+ * the result. A trailing NUL is always added.
+ * Returns NULL when out of memory.
+ */
+ short_u *
+! enc_to_utf16(char_u *str, int *lenp)
+ {
+ vimconv_T conv;
+ WCHAR *ret;
+***************
+*** 1102,1108 ****
+
+ if (enc_codepage > 0)
+ {
+! /* We can do any CP### -> UCS-2 in one pass, and we can do it
+ * without iconv() (convert_* may need iconv). */
+ MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
+ }
+--- 1127,1133 ----
+
+ if (enc_codepage > 0)
+ {
+! /* We can do any CP### -> UTF-16 in one pass, and we can do it
+ * without iconv() (convert_* may need iconv). */
+ MultiByteToWideChar_alloc(enc_codepage, 0, str, *lenp, &ret, &length);
+ }
+***************
+*** 1123,1133 ****
+ }
+ convert_setup(&conv, NULL, NULL);
+
+! length = utf8_to_ucs2(str, *lenp, NULL, NULL);
+ ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
+ if (ret != NULL)
+ {
+! utf8_to_ucs2(str, *lenp, (short_u *)ret, NULL);
+ ret[length] = 0;
+ }
+
+--- 1148,1158 ----
+ }
+ convert_setup(&conv, NULL, NULL);
+
+! length = utf8_to_utf16(str, *lenp, NULL, NULL);
+ ret = (WCHAR *)alloc((unsigned)((length + 1) * sizeof(WCHAR)));
+ if (ret != NULL)
+ {
+! utf8_to_utf16(str, *lenp, (short_u *)ret, NULL);
+ ret[length] = 0;
+ }
+
+***************
+*** 1139,1145 ****
+ }
+
+ /*
+! * Convert an UCS-2 string to 'encoding'.
+ * Input in "str" with length (counted in wide characters) "*lenp". When
+ * "lenp" is NULL, use wcslen().
+ * Output is returned as an allocated string. If "*lenp" is not NULL it is
+--- 1164,1170 ----
+ }
+
+ /*
+! * Convert an UTF-16 string to 'encoding'.
+ * Input in "str" with length (counted in wide characters) "*lenp". When
+ * "lenp" is NULL, use wcslen().
+ * Output is returned as an allocated string. If "*lenp" is not NULL it is
+***************
+*** 1147,1153 ****
+ * Returns NULL when out of memory.
+ */
+ char_u *
+! ucs2_to_enc(short_u *str, int *lenp)
+ {
+ vimconv_T conv;
+ char_u *utf8_str = NULL, *enc_str = NULL;
+--- 1172,1178 ----
+ * Returns NULL when out of memory.
+ */
+ char_u *
+! utf16_to_enc(short_u *str, int *lenp)
+ {
+ vimconv_T conv;
+ char_u *utf8_str = NULL, *enc_str = NULL;
+***************
+*** 1161,1167 ****
+
+ if (enc_codepage > 0)
+ {
+! /* We can do any UCS-2 -> CP### in one pass. */
+ int length;
+
+ WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
+--- 1186,1192 ----
+
+ if (enc_codepage > 0)
+ {
+! /* We can do any UTF-16 -> CP### in one pass. */
+ int length;
+
+ WideCharToMultiByte_alloc(enc_codepage, 0, str, *lenp,
+***************
+*** 1171,1180 ****
+ }
+
+ /* Avoid allocating zero bytes, it generates an error message. */
+! utf8_str = alloc(ucs2_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
+ if (utf8_str != NULL)
+ {
+! *lenp = ucs2_to_utf8(str, *lenp, utf8_str);
+
+ /* We might be called before we have p_enc set up. */
+ conv.vc_type = CONV_NONE;
+--- 1196,1205 ----
+ }
+
+ /* Avoid allocating zero bytes, it generates an error message. */
+! utf8_str = alloc(utf16_to_utf8(str, *lenp == 0 ? 1 : *lenp, NULL));
+ if (utf8_str != NULL)
+ {
+! *lenp = utf16_to_utf8(str, *lenp, utf8_str);
+
+ /* We might be called before we have p_enc set up. */
+ conv.vc_type = CONV_NONE;
+***************
+*** 1308,1314 ****
+ if (hMemWstr[str_size] == NUL)
+ break;
+ }
+! to_free = str = ucs2_to_enc((short_u *)hMemWstr, &str_size);
+ GlobalUnlock(hMemW);
+ }
+ }
+--- 1333,1339 ----
+ if (hMemWstr[str_size] == NUL)
+ break;
+ }
+! to_free = str = utf16_to_enc((short_u *)hMemWstr, &str_size);
+ GlobalUnlock(hMemW);
+ }
+ }
+***************
+*** 1340,1346 ****
+
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ /* The text is in the active codepage. Convert to 'encoding',
+! * going through UCS-2. */
+ acp_to_enc(str, str_size, &to_free, &maxlen);
+ if (to_free != NULL)
+ {
+--- 1365,1371 ----
+
+ # if defined(FEAT_MBYTE) && defined(WIN3264)
+ /* The text is in the active codepage. Convert to 'encoding',
+! * going through UTF-16. */
+ acp_to_enc(str, str_size, &to_free, &maxlen);
+ if (to_free != NULL)
+ {
+***************
+*** 1404,1410 ****
+ if (widestr != NULL)
+ {
+ ++*outlen; /* Include the 0 after the string */
+! *out = ucs2_to_enc((short_u *)widestr, outlen);
+ vim_free(widestr);
+ }
+ }
+--- 1429,1435 ----
+ if (widestr != NULL)
+ {
+ ++*outlen; /* Include the 0 after the string */
+! *out = utf16_to_enc((short_u *)widestr, outlen);
+ vim_free(widestr);
+ }
+ }
+***************
+*** 1466,1474 ****
+ WCHAR *out;
+ int len = metadata.txtlen;
+
+! /* Convert the text to UCS-2. This is put on the clipboard as
+ * CF_UNICODETEXT. */
+! out = (WCHAR *)enc_to_ucs2(str, &len);
+ if (out != NULL)
+ {
+ WCHAR *lpszMemW;
+--- 1491,1499 ----
+ WCHAR *out;
+ int len = metadata.txtlen;
+
+! /* Convert the text to UTF-16. This is put on the clipboard as
+ * CF_UNICODETEXT. */
+! out = (WCHAR *)enc_to_utf16(str, &len);
+ if (out != NULL)
+ {
+ WCHAR *lpszMemW;
+***************
+*** 1488,1494 ****
+ WideCharToMultiByte(GetACP(), 0, out, len,
+ str, metadata.txtlen, 0, 0);
+
+! /* Allocate memory for the UCS-2 text, add one NUL word to
+ * terminate the string. */
+ hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
+ (len + 1) * sizeof(WCHAR));
+--- 1513,1519 ----
+ WideCharToMultiByte(GetACP(), 0, out, len,
+ str, metadata.txtlen, 0, 0);
+
+! /* Allocate memory for the UTF-16 text, add one NUL word to
+ * terminate the string. */
+ hMemW = (LPSTR)GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE,
+ (len + 1) * sizeof(WCHAR));
+*** ../vim-7.2.048/src/os_win32.c Thu Jul 24 20:50:30 2008
+--- src/os_win32.c Thu Nov 20 16:44:33 2008
+***************
+*** 1587,1593 ****
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_ucs2(name, NULL);
+ WCHAR fnamew[_MAX_PATH];
+ WCHAR *dumw;
+ long n;
+--- 1587,1593 ----
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_utf16(name, NULL);
+ WCHAR fnamew[_MAX_PATH];
+ WCHAR *dumw;
+ long n;
+***************
+*** 2440,2446 ****
+
+ if (GetCurrentDirectoryW(_MAX_PATH, wbuf) != 0)
+ {
+! char_u *p = ucs2_to_enc(wbuf, NULL);
+
+ if (p != NULL)
+ {
+--- 2440,2446 ----
+
+ if (GetCurrentDirectoryW(_MAX_PATH, wbuf) != 0)
+ {
+! char_u *p = utf16_to_enc(wbuf, NULL);
+
+ if (p != NULL)
+ {
+***************
+*** 2466,2472 ****
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_ucs2(name, NULL);
+ long n;
+
+ if (p != NULL)
+--- 2466,2472 ----
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_utf16(name, NULL);
+ long n;
+
+ if (p != NULL)
+***************
+*** 2495,2501 ****
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_ucs2(name, NULL);
+ long n;
+
+ if (p != NULL)
+--- 2495,2501 ----
+ #ifdef FEAT_MBYTE
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! WCHAR *p = enc_to_utf16(name, NULL);
+ long n;
+
+ if (p != NULL)
+***************
+*** 2522,2528 ****
+ WCHAR *p = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! p = enc_to_ucs2(name, NULL);
+ #endif
+
+ #ifdef FEAT_MBYTE
+--- 2522,2528 ----
+ WCHAR *p = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! p = enc_to_utf16(name, NULL);
+ #endif
+
+ #ifdef FEAT_MBYTE
+***************
+*** 2590,2596 ****
+ WCHAR *wn = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! wn = enc_to_ucs2(fname, NULL);
+ if (wn != NULL)
+ {
+ hFile = CreateFileW(wn, /* file name */
+--- 2590,2596 ----
+ WCHAR *wn = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! wn = enc_to_utf16(fname, NULL);
+ if (wn != NULL)
+ {
+ hFile = CreateFileW(wn, /* file name */
+***************
+*** 4239,4245 ****
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! wn = enc_to_ucs2(name, NULL);
+ if (wn != NULL)
+ {
+ SetFileAttributesW(wn, FILE_ATTRIBUTE_NORMAL);
+--- 4239,4245 ----
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! wn = enc_to_utf16(name, NULL);
+ if (wn != NULL)
+ {
+ SetFileAttributesW(wn, FILE_ATTRIBUTE_NORMAL);
+***************
+*** 4382,4389 ****
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! wold = enc_to_ucs2((char_u *)pszOldFile, NULL);
+! wnew = enc_to_ucs2((char_u *)pszNewFile, NULL);
+ if (wold != NULL && wnew != NULL)
+ retval = mch_wrename(wold, wnew);
+ vim_free(wold);
+--- 4382,4389 ----
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! wold = enc_to_utf16((char_u *)pszOldFile, NULL);
+! wnew = enc_to_utf16((char_u *)pszNewFile, NULL);
+ if (wold != NULL && wnew != NULL)
+ retval = mch_wrename(wold, wnew);
+ vim_free(wold);
+***************
+*** 4492,4498 ****
+ WCHAR *wn = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! wn = enc_to_ucs2(n, NULL);
+ #endif
+
+ if (mch_isdir(n))
+--- 4492,4498 ----
+ WCHAR *wn = NULL;
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! wn = enc_to_utf16(n, NULL);
+ #endif
+
+ if (mch_isdir(n))
+***************
+*** 4618,4624 ****
+
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+! * Version of open() that may use ucs2 file name.
+ */
+ int
+ mch_open(char *name, int flags, int mode)
+--- 4618,4624 ----
+
+ #if defined(FEAT_MBYTE) || defined(PROTO)
+ /*
+! * Version of open() that may use UTF-16 file name.
+ */
+ int
+ mch_open(char *name, int flags, int mode)
+***************
+*** 4630,4636 ****
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! wn = enc_to_ucs2(name, NULL);
+ if (wn != NULL)
+ {
+ f = _wopen(wn, flags, mode);
+--- 4630,4636 ----
+
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+! wn = enc_to_utf16(name, NULL);
+ if (wn != NULL)
+ {
+ f = _wopen(wn, flags, mode);
+***************
+*** 4648,4654 ****
+ }
+
+ /*
+! * Version of fopen() that may use ucs2 file name.
+ */
+ FILE *
+ mch_fopen(char *name, char *mode)
+--- 4648,4654 ----
+ }
+
+ /*
+! * Version of fopen() that may use UTF-16 file name.
+ */
+ FILE *
+ mch_fopen(char *name, char *mode)
+***************
+*** 4675,4682 ****
+ else if (newMode == 'b')
+ _set_fmode(_O_BINARY);
+ # endif
+! wn = enc_to_ucs2(name, NULL);
+! wm = enc_to_ucs2(mode, NULL);
+ if (wn != NULL && wm != NULL)
+ f = _wfopen(wn, wm);
+ vim_free(wn);
+--- 4675,4682 ----
+ else if (newMode == 'b')
+ _set_fmode(_O_BINARY);
+ # endif
+! wn = enc_to_utf16(name, NULL);
+! wm = enc_to_utf16(mode, NULL);
+ if (wn != NULL && wm != NULL)
+ f = _wfopen(wn, wm);
+ vim_free(wn);
+***************
+*** 4776,4783 ****
+ int len;
+
+ /* Convert the file names to wide characters. */
+! fromw = enc_to_ucs2(from, NULL);
+! tow = enc_to_ucs2(to, NULL);
+ if (fromw != NULL && tow != NULL)
+ {
+ /* Open the file for reading. */
+--- 4776,4783 ----
+ int len;
+
+ /* Convert the file names to wide characters. */
+! fromw = enc_to_utf16(from, NULL);
+! tow = enc_to_utf16(to, NULL);
+ if (fromw != NULL && tow != NULL)
+ {
+ /* Open the file for reading. */
+***************
+*** 5122,5128 ****
+ for (i = 0; i < used_file_count; ++i)
+ {
+ idx = used_file_indexes[i];
+! str = ucs2_to_enc(ArglistW[idx], NULL);
+ if (str != NULL)
+ {
+ #ifdef FEAT_DIFF
+--- 5122,5128 ----
+ for (i = 0; i < used_file_count; ++i)
+ {
+ idx = used_file_indexes[i];
+! str = utf16_to_enc(ArglistW[idx], NULL);
+ if (str != NULL)
+ {
+ #ifdef FEAT_DIFF
+*** ../vim-7.2.048/src/proto/os_mswin.pro Sat May 5 19:07:50 2007
+--- src/proto/os_mswin.pro Thu Nov 20 16:41:00 2008
+***************
+*** 22,35 ****
+ int can_end_termcap_mode __ARGS((int give_msg));
+ int mch_screenmode __ARGS((char_u *arg));
+ int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
+! int utf8_to_ucs2 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
+! int ucs2_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
+ void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
+ void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
+ int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+ void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+! short_u *enc_to_ucs2 __ARGS((char_u *str, int *lenp));
+! char_u *ucs2_to_enc __ARGS((short_u *str, int *lenp));
+ void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+ void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
+ void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+--- 22,35 ----
+ int can_end_termcap_mode __ARGS((int give_msg));
+ int mch_screenmode __ARGS((char_u *arg));
+ int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
+! int utf8_to_utf16 __ARGS((char_u *instr, int inlen, short_u *outstr, int *unconvlenp));
+! int utf16_to_utf8 __ARGS((short_u *instr, int inlen, char_u *outstr));
+ void MultiByteToWideChar_alloc __ARGS((UINT cp, DWORD flags, LPCSTR in, int inlen, LPWSTR *out, int *outlen));
+ void WideCharToMultiByte_alloc __ARGS((UINT cp, DWORD flags, LPCWSTR in, int inlen, LPSTR *out, int *outlen, LPCSTR def, LPBOOL useddef));
+ int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+ void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+! short_u *enc_to_utf16 __ARGS((char_u *str, int *lenp));
+! char_u *utf16_to_enc __ARGS((short_u *str, int *lenp));
+ void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+ void acp_to_enc __ARGS((char_u *str, int str_size, char_u **out, int *outlen));
+ void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+*** ../vim-7.2.048/src/version.c Thu Nov 20 16:11:03 2008
+--- src/version.c Thu Nov 20 17:08:07 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 49,
+ /**/
+
+--
+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.050 b/source/ap/vim/patches/7.2.050
new file mode 100644
index 000000000..416d32b1e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.050
@@ -0,0 +1,316 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.050
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.050
+Problem: Warnings for not checking return value of fwrite(). (Chip Campbell)
+Solution: Use the return value.
+Files: src/spell.c
+
+
+*** ../vim-7.2.049/src/spell.c Mon Aug 25 04:12:38 2008
+--- src/spell.c Thu Nov 20 17:28:01 2008
+***************
+*** 7926,7931 ****
+--- 7926,7933 ----
+ char_u *p;
+ int rr;
+ int retval = OK;
++ int fwv = 1; /* collect return value of fwrite() to avoid
++ warnings from picky compiler */
+
+ fd = mch_fopen((char *)fname, "w");
+ if (fd == NULL)
+***************
+*** 7936,7946 ****
+
+ /* <HEADER>: <fileID> <versionnr> */
+ /* <fileID> */
+! if (fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd) != 1)
+! {
+! EMSG(_(e_write));
+! retval = FAIL;
+! }
+ putc(VIMSPELLVERSION, fd); /* <versionnr> */
+
+ /*
+--- 7938,7944 ----
+
+ /* <HEADER>: <fileID> <versionnr> */
+ /* <fileID> */
+! fwv &= fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd);
+ putc(VIMSPELLVERSION, fd); /* <versionnr> */
+
+ /*
+***************
+*** 7955,7961 ****
+
+ i = (int)STRLEN(spin->si_info);
+ put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
+! fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
+ }
+
+ /* SN_REGION: <regionname> ...
+--- 7953,7959 ----
+
+ i = (int)STRLEN(spin->si_info);
+ put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
+! fwv &= fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
+ }
+
+ /* SN_REGION: <regionname> ...
+***************
+*** 7966,7972 ****
+ putc(SNF_REQUIRED, fd); /* <sectionflags> */
+ l = spin->si_region_count * 2;
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+! fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
+ /* <regionname> ... */
+ regionmask = (1 << spin->si_region_count) - 1;
+ }
+--- 7964,7970 ----
+ putc(SNF_REQUIRED, fd); /* <sectionflags> */
+ l = spin->si_region_count * 2;
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+! fwv &= fwrite(spin->si_region_name, (size_t)l, (size_t)1, fd);
+ /* <regionname> ... */
+ regionmask = (1 << spin->si_region_count) - 1;
+ }
+***************
+*** 8016,8022 ****
+ }
+
+ put_bytes(fd, (long_u)l, 2); /* <folcharslen> */
+! fwrite(folchars, (size_t)l, (size_t)1, fd); /* <folchars> */
+ }
+
+ /* SN_MIDWORD: <midword> */
+--- 8014,8020 ----
+ }
+
+ put_bytes(fd, (long_u)l, 2); /* <folcharslen> */
+! fwv &= fwrite(folchars, (size_t)l, (size_t)1, fd); /* <folchars> */
+ }
+
+ /* SN_MIDWORD: <midword> */
+***************
+*** 8027,8033 ****
+
+ i = (int)STRLEN(spin->si_midword);
+ put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
+! fwrite(spin->si_midword, (size_t)i, (size_t)1, fd); /* <midword> */
+ }
+
+ /* SN_PREFCOND: <prefcondcnt> <prefcond> ... */
+--- 8025,8032 ----
+
+ i = (int)STRLEN(spin->si_midword);
+ put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
+! fwv &= fwrite(spin->si_midword, (size_t)i, (size_t)1, fd);
+! /* <midword> */
+ }
+
+ /* SN_PREFCOND: <prefcondcnt> <prefcond> ... */
+***************
+*** 8113,8119 ****
+ p = rr == 1 ? ftp->ft_from : ftp->ft_to;
+ l = (int)STRLEN(p);
+ putc(l, fd);
+! fwrite(p, l, (size_t)1, fd);
+ }
+ }
+
+--- 8112,8118 ----
+ p = rr == 1 ? ftp->ft_from : ftp->ft_to;
+ l = (int)STRLEN(p);
+ putc(l, fd);
+! fwv &= fwrite(p, l, (size_t)1, fd);
+ }
+ }
+
+***************
+*** 8131,8141 ****
+ /* <sectionlen> */
+
+ put_bytes(fd, (long_u)l, 2); /* <sofofromlen> */
+! fwrite(spin->si_sofofr, l, (size_t)1, fd); /* <sofofrom> */
+
+ l = (int)STRLEN(spin->si_sofoto);
+ put_bytes(fd, (long_u)l, 2); /* <sofotolen> */
+! fwrite(spin->si_sofoto, l, (size_t)1, fd); /* <sofoto> */
+ }
+
+ /* SN_WORDS: <word> ...
+--- 8130,8140 ----
+ /* <sectionlen> */
+
+ put_bytes(fd, (long_u)l, 2); /* <sofofromlen> */
+! fwv &= fwrite(spin->si_sofofr, l, (size_t)1, fd); /* <sofofrom> */
+
+ l = (int)STRLEN(spin->si_sofoto);
+ put_bytes(fd, (long_u)l, 2); /* <sofotolen> */
+! fwv &= fwrite(spin->si_sofoto, l, (size_t)1, fd); /* <sofoto> */
+ }
+
+ /* SN_WORDS: <word> ...
+***************
+*** 8160,8166 ****
+ l = (int)STRLEN(hi->hi_key) + 1;
+ len += l;
+ if (round == 2) /* <word> */
+! fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
+ --todo;
+ }
+ if (round == 1)
+--- 8159,8165 ----
+ l = (int)STRLEN(hi->hi_key) + 1;
+ len += l;
+ if (round == 2) /* <word> */
+! fwv &= fwrite(hi->hi_key, (size_t)l, (size_t)1, fd);
+ --todo;
+ }
+ if (round == 1)
+***************
+*** 8176,8182 ****
+ putc(0, fd); /* <sectionflags> */
+ l = spin->si_map.ga_len;
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+! fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
+ /* <mapstr> */
+ }
+
+--- 8175,8181 ----
+ putc(0, fd); /* <sectionflags> */
+ l = spin->si_map.ga_len;
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+! fwv &= fwrite(spin->si_map.ga_data, (size_t)l, (size_t)1, fd);
+ /* <mapstr> */
+ }
+
+***************
+*** 8232,8241 ****
+ {
+ p = ((char_u **)(spin->si_comppat.ga_data))[i];
+ putc((int)STRLEN(p), fd); /* <comppatlen> */
+! fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);/* <comppattext> */
+ }
+ /* <compflags> */
+! fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
+ (size_t)1, fd);
+ }
+
+--- 8231,8241 ----
+ {
+ p = ((char_u **)(spin->si_comppat.ga_data))[i];
+ putc((int)STRLEN(p), fd); /* <comppatlen> */
+! fwv &= fwrite(p, (size_t)STRLEN(p), (size_t)1, fd);
+! /* <comppattext> */
+ }
+ /* <compflags> */
+! fwv &= fwrite(spin->si_compflags, (size_t)STRLEN(spin->si_compflags),
+ (size_t)1, fd);
+ }
+
+***************
+*** 8259,8265 ****
+
+ l = (int)STRLEN(spin->si_syllable);
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+! fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd); /* <syllable> */
+ }
+
+ /* end of <SECTIONS> */
+--- 8259,8266 ----
+
+ l = (int)STRLEN(spin->si_syllable);
+ put_bytes(fd, (long_u)l, 4); /* <sectionlen> */
+! fwv &= fwrite(spin->si_syllable, (size_t)l, (size_t)1, fd);
+! /* <syllable> */
+ }
+
+ /* end of <SECTIONS> */
+***************
+*** 8295,8307 ****
+ (void)put_node(fd, tree, 0, regionmask, round == 3);
+ }
+
+! /* Write another byte to check for errors. */
+ if (putc(0, fd) == EOF)
+ retval = FAIL;
+
+ if (fclose(fd) == EOF)
+ retval = FAIL;
+
+ return retval;
+ }
+
+--- 8296,8313 ----
+ (void)put_node(fd, tree, 0, regionmask, round == 3);
+ }
+
+! /* Write another byte to check for errors (file system full). */
+ if (putc(0, fd) == EOF)
+ retval = FAIL;
+
+ if (fclose(fd) == EOF)
+ retval = FAIL;
+
++ if (fwv != 1)
++ retval = FAIL;
++ if (retval == FAIL)
++ EMSG(_(e_write));
++
+ return retval;
+ }
+
+***************
+*** 9890,9895 ****
+--- 9896,9902 ----
+ char_u *p;
+ int len;
+ int totlen;
++ int x = 1; /* collect return value of fwrite() */
+
+ if (fd != NULL)
+ put_bytes(fd, (long_u)gap->ga_len, 2); /* <prefcondcnt> */
+***************
+*** 9906,9912 ****
+ if (fd != NULL)
+ {
+ fputc(len, fd);
+! fwrite(p, (size_t)len, (size_t)1, fd);
+ }
+ totlen += len;
+ }
+--- 9913,9919 ----
+ if (fd != NULL)
+ {
+ fputc(len, fd);
+! x &= fwrite(p, (size_t)len, (size_t)1, fd);
+ }
+ totlen += len;
+ }
+*** ../vim-7.2.049/src/version.c Thu Nov 20 17:09:09 2008
+--- src/version.c Fri Nov 28 10:06:13 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 50,
+ /**/
+
+--
+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.051 b/source/ap/vim/patches/7.2.051
new file mode 100644
index 000000000..7c36dfe93
--- /dev/null
+++ b/source/ap/vim/patches/7.2.051
@@ -0,0 +1,411 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.051
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.051
+Problem: Can't avoid 'wildignore' and 'suffixes' for glob() and globpath().
+Solution: Add an extra argument to these functions. (Ingo Karkat)
+Files: src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro,
+ runtime/doc/eval.txt, runtime/doc/options.txt
+
+
+*** ../vim-7.2.050/src/eval.c Thu Nov 20 16:11:03 2008
+--- src/eval.c Thu Nov 27 22:15:40 2008
+***************
+*** 7564,7571 ****
+ {"getwinposx", 0, 0, f_getwinposx},
+ {"getwinposy", 0, 0, f_getwinposy},
+ {"getwinvar", 2, 2, f_getwinvar},
+! {"glob", 1, 1, f_glob},
+! {"globpath", 2, 2, f_globpath},
+ {"has", 1, 1, f_has},
+ {"has_key", 2, 2, f_has_key},
+ {"haslocaldir", 0, 0, f_haslocaldir},
+--- 7564,7571 ----
+ {"getwinposx", 0, 0, f_getwinposx},
+ {"getwinposy", 0, 0, f_getwinposy},
+ {"getwinvar", 2, 2, f_getwinvar},
+! {"glob", 1, 2, f_glob},
+! {"globpath", 2, 3, f_globpath},
+ {"has", 1, 1, f_has},
+ {"has_key", 2, 2, f_has_key},
+ {"haslocaldir", 0, 0, f_haslocaldir},
+***************
+*** 9557,9563 ****
+ else
+ {
+ /* When the optional second argument is non-zero, don't remove matches
+! * for 'suffixes' and 'wildignore' */
+ if (argvars[1].v_type != VAR_UNKNOWN
+ && get_tv_number_chk(&argvars[1], &error))
+ flags |= WILD_KEEP_ALL;
+--- 9557,9563 ----
+ else
+ {
+ /* When the optional second argument is non-zero, don't remove matches
+! * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+ if (argvars[1].v_type != VAR_UNKNOWN
+ && get_tv_number_chk(&argvars[1], &error))
+ flags |= WILD_KEEP_ALL;
+***************
+*** 11323,11335 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+ expand_T xpc;
+
+! ExpandInit(&xpc);
+! xpc.xp_context = EXPAND_FILES;
+! rettv->v_type = VAR_STRING;
+! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+! NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
+ }
+
+ /*
+--- 11323,11347 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
++ int flags = WILD_SILENT|WILD_USE_NL;
+ expand_T xpc;
++ int error = FALSE;
+
+! /* When the optional second argument is non-zero, don't remove matches
+! * for 'wildignore' and don't put matches for 'suffixes' at the end. */
+! if (argvars[1].v_type != VAR_UNKNOWN
+! && get_tv_number_chk(&argvars[1], &error))
+! flags |= WILD_KEEP_ALL;
+! rettv->v_type = VAR_STRING;
+! if (!error)
+! {
+! ExpandInit(&xpc);
+! xpc.xp_context = EXPAND_FILES;
+! rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
+! NULL, flags, WILD_ALL);
+! }
+! else
+! rettv->vval.v_string = NULL;
+ }
+
+ /*
+***************
+*** 11340,11353 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u buf1[NUMBUFLEN];
+ char_u *file = get_tv_string_buf_chk(&argvars[1], buf1);
+
+ rettv->v_type = VAR_STRING;
+! if (file == NULL)
+ rettv->vval.v_string = NULL;
+ else
+! rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file);
+ }
+
+ /*
+--- 11352,11373 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
++ int flags = 0;
+ char_u buf1[NUMBUFLEN];
+ char_u *file = get_tv_string_buf_chk(&argvars[1], buf1);
++ int error = FALSE;
+
++ /* When the optional second argument is non-zero, don't remove matches
++ * for 'wildignore' and don't put matches for 'suffixes' at the end. */
++ if (argvars[2].v_type != VAR_UNKNOWN
++ && get_tv_number_chk(&argvars[2], &error))
++ flags |= WILD_KEEP_ALL;
+ rettv->v_type = VAR_STRING;
+! if (file == NULL || error)
+ rettv->vval.v_string = NULL;
+ else
+! rettv->vval.v_string = globpath(get_tv_string(&argvars[0]), file,
+! flags);
+ }
+
+ /*
+*** ../vim-7.2.050/src/ex_getln.c Sat Nov 15 14:10:23 2008
+--- src/ex_getln.c Thu Nov 20 18:37:20 2008
+***************
+*** 2524,2530 ****
+ && ccline.xpc->xp_context != EXPAND_NOTHING
+ && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
+ {
+! int i = ccline.xpc->xp_pattern - p;
+
+ /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
+ * to point into the newly allocated memory. */
+--- 2524,2530 ----
+ && ccline.xpc->xp_context != EXPAND_NOTHING
+ && ccline.xpc->xp_context != EXPAND_UNSUCCESSFUL)
+ {
+! int i = (int)(ccline.xpc->xp_pattern - p);
+
+ /* If xp_pattern points inside the old cmdbuff it needs to be adjusted
+ * to point into the newly allocated memory. */
+***************
+*** 4897,4903 ****
+ if (s == NULL)
+ return FAIL;
+ sprintf((char *)s, "%s/%s*.vim", dirname, pat);
+! all = globpath(p_rtp, s);
+ vim_free(s);
+ if (all == NULL)
+ return FAIL;
+--- 4897,4903 ----
+ if (s == NULL)
+ return FAIL;
+ sprintf((char *)s, "%s/%s*.vim", dirname, pat);
+! all = globpath(p_rtp, s, 0);
+ vim_free(s);
+ if (all == NULL)
+ return FAIL;
+***************
+*** 4938,4946 ****
+ * newlines. Returns NULL for an error or no matches.
+ */
+ char_u *
+! globpath(path, file)
+ char_u *path;
+ char_u *file;
+ {
+ expand_T xpc;
+ char_u *buf;
+--- 4938,4947 ----
+ * newlines. Returns NULL for an error or no matches.
+ */
+ char_u *
+! globpath(path, file, expand_options)
+ char_u *path;
+ char_u *file;
++ int expand_options;
+ {
+ expand_T xpc;
+ char_u *buf;
+***************
+*** 4969,4978 ****
+ {
+ add_pathsep(buf);
+ STRCAT(buf, file);
+! if (ExpandFromContext(&xpc, buf, &num_p, &p, WILD_SILENT) != FAIL
+! && num_p > 0)
+ {
+! ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT);
+ for (len = 0, i = 0; i < num_p; ++i)
+ len += (int)STRLEN(p[i]) + 1;
+
+--- 4970,4979 ----
+ {
+ add_pathsep(buf);
+ STRCAT(buf, file);
+! if (ExpandFromContext(&xpc, buf, &num_p, &p,
+! WILD_SILENT|expand_options) != FAIL && num_p > 0)
+ {
+! ExpandEscape(&xpc, buf, num_p, p, WILD_SILENT|expand_options);
+ for (len = 0, i = 0; i < num_p; ++i)
+ len += (int)STRLEN(p[i]) + 1;
+
+*** ../vim-7.2.050/src/proto/ex_getln.pro Wed May 28 16:49:01 2008
+--- src/proto/ex_getln.pro Thu Nov 20 18:27:57 2008
+***************
+*** 31,37 ****
+ void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+ int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+ int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+! char_u *globpath __ARGS((char_u *path, char_u *file));
+ void init_history __ARGS((void));
+ int get_histtype __ARGS((char_u *name));
+ void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
+--- 31,37 ----
+ void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+ int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+ int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+! char_u *globpath __ARGS((char_u *path, char_u *file, int expand_options));
+ void init_history __ARGS((void));
+ int get_histtype __ARGS((char_u *name));
+ void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
+*** ../vim-7.2.050/runtime/doc/eval.txt Sun Nov 9 13:43:25 2008
+--- runtime/doc/eval.txt Thu Nov 27 22:17:13 2008
+***************
+*** 1,4 ****
+! *eval.txt* For Vim version 7.2. Last change: 2008 Nov 02
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *eval.txt* For Vim version 7.2. Last change: 2008 Nov 27
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 1706,1712 ****
+ exists( {expr}) Number TRUE if {expr} exists
+ extend({expr1}, {expr2} [, {expr3}])
+ List/Dict insert items of {expr2} into {expr1}
+! expand( {expr}) String expand special keywords in {expr}
+ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
+ filereadable( {file}) Number TRUE if {file} is a readable file
+ filewritable( {file}) Number TRUE if {file} is a writable file
+--- 1709,1715 ----
+ exists( {expr}) Number TRUE if {expr} exists
+ extend({expr1}, {expr2} [, {expr3}])
+ List/Dict insert items of {expr2} into {expr1}
+! expand( {expr} [, {flag}]) String expand special keywords in {expr}
+ feedkeys( {string} [, {mode}]) Number add key sequence to typeahead buffer
+ filereadable( {file}) Number TRUE if {file} is a readable file
+ filewritable( {file}) Number TRUE if {file} is a writable file
+***************
+*** 1758,1765 ****
+ getwinposx() Number X coord in pixels of GUI Vim window
+ getwinposy() Number Y coord in pixels of GUI Vim window
+ getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
+! glob( {expr}) String expand file wildcards in {expr}
+! globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path}
+ has( {feature}) Number TRUE if feature {feature} supported
+ has_key( {dict}, {key}) Number TRUE if {dict} has entry {key}
+ haslocaldir() Number TRUE if current window executed |:lcd|
+--- 1761,1769 ----
+ getwinposx() Number X coord in pixels of GUI Vim window
+ getwinposy() Number Y coord in pixels of GUI Vim window
+ getwinvar( {nr}, {varname}) any variable {varname} in window {nr}
+! glob( {expr} [, {flag}]) String expand file wildcards in {expr}
+! globpath( {path}, {expr} [, {flag}])
+! String do glob({expr}) for all dirs in {path}
+ has( {feature}) Number TRUE if feature {feature} supported
+ has_key( {dict}, {key}) Number TRUE if {dict} has entry {key}
+ haslocaldir() Number TRUE if current window executed |:lcd|
+***************
+*** 3286,3299 ****
+ :let list_is_on = getwinvar(2, '&list')
+ :echo "myvar = " . getwinvar(1, 'myvar')
+ <
+! *glob()*
+! glob({expr}) Expand the file wildcards in {expr}. See |wildcards| for the
+ use of special characters.
+ The result is a String.
+ When there are several matches, they are separated by <NL>
+ characters.
+! The 'wildignore' option applies: Names matching one of the
+! patterns in 'wildignore' will be skipped.
+ If the expansion fails, the result is an empty string.
+ A name for a non-existing file is not included.
+
+--- 3290,3305 ----
+ :let list_is_on = getwinvar(2, '&list')
+ :echo "myvar = " . getwinvar(1, 'myvar')
+ <
+! glob({expr} [, {flag}]) *glob()*
+! Expand the file wildcards in {expr}. See |wildcards| for the
+ use of special characters.
+ The result is a String.
+ When there are several matches, they are separated by <NL>
+ characters.
+! Unless the optional {flag} argument is given and is non-zero,
+! the 'suffixes' and 'wildignore' options apply: Names matching
+! one of the patterns in 'wildignore' will be skipped and
+! 'suffixes' affect the ordering of matches.
+ If the expansion fails, the result is an empty string.
+ A name for a non-existing file is not included.
+
+***************
+*** 3307,3326 ****
+ See |expand()| for expanding special Vim variables. See
+ |system()| for getting the raw output of an external command.
+
+! globpath({path}, {expr}) *globpath()*
+ Perform glob() on all directories in {path} and concatenate
+ the results. Example: >
+ :echo globpath(&rtp, "syntax/c.vim")
+ < {path} is a comma-separated list of directory names. Each
+ directory name is prepended to {expr} and expanded like with
+! glob(). A path separator is inserted when needed.
+ To add a comma inside a directory name escape it with a
+ backslash. Note that on MS-Windows a directory may have a
+ trailing backslash, remove it if you put a comma after it.
+ If the expansion fails for one of the directories, there is no
+ error message.
+! The 'wildignore' option applies: Names matching one of the
+! patterns in 'wildignore' will be skipped.
+
+ The "**" item can be used to search in a directory tree.
+ For example, to find all "README.txt" files in the directories
+--- 3313,3334 ----
+ See |expand()| for expanding special Vim variables. See
+ |system()| for getting the raw output of an external command.
+
+! globpath({path}, {expr} [, {flag}]) *globpath()*
+ Perform glob() on all directories in {path} and concatenate
+ the results. Example: >
+ :echo globpath(&rtp, "syntax/c.vim")
+ < {path} is a comma-separated list of directory names. Each
+ directory name is prepended to {expr} and expanded like with
+! |glob()|. A path separator is inserted when needed.
+ To add a comma inside a directory name escape it with a
+ backslash. Note that on MS-Windows a directory may have a
+ trailing backslash, remove it if you put a comma after it.
+ If the expansion fails for one of the directories, there is no
+ error message.
+! Unless the optional {flag} argument is given and is non-zero,
+! the 'suffixes' and 'wildignore' options apply: Names matching
+! one of the patterns in 'wildignore' will be skipped and
+! 'suffixes' affect the ordering of matches.
+
+ The "**" item can be used to search in a directory tree.
+ For example, to find all "README.txt" files in the directories
+*** ../vim-7.2.050/runtime/doc/options.txt Sat Aug 9 19:36:49 2008
+--- runtime/doc/options.txt Tue Nov 25 23:43:55 2008
+***************
+*** 1,4 ****
+! *options.txt* For Vim version 7.2. Last change: 2008 Aug 06
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *options.txt* For Vim version 7.2. Last change: 2008 Nov 25
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 7472,7478 ****
+ {not available when compiled without the |+wildignore|
+ feature}
+ A list of file patterns. A file that matches with one of these
+! patterns is ignored when completing file or directory names.
+ The pattern is used like with |:autocmd|, see |autocmd-patterns|.
+ Also see 'suffixes'.
+ Example: >
+--- 7481,7489 ----
+ {not available when compiled without the |+wildignore|
+ feature}
+ A list of file patterns. A file that matches with one of these
+! patterns is ignored when completing file or directory names, and
+! influences the result of |expand()|, |glob()| and |globpath()| unless
+! a flag is passed to disable this.
+ The pattern is used like with |:autocmd|, see |autocmd-patterns|.
+ Also see 'suffixes'.
+ Example: >
+*** ../vim-7.2.050/src/version.c Fri Nov 28 10:08:05 2008
+--- src/version.c Fri Nov 28 10:55:44 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 51,
+ /**/
+
+--
+Not too long ago, unzipping in public was illegal...
+
+ /// 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.052 b/source/ap/vim/patches/7.2.052
new file mode 100644
index 000000000..eb331f348
--- /dev/null
+++ b/source/ap/vim/patches/7.2.052
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.052
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.052
+Problem: synIDattr() doesn't support "sp" for special color.
+Solution: Recognize "sp" and "sp#". (Matt Wozniski)
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.2.051/runtime/doc/eval.txt Fri Nov 28 10:59:57 2008
+--- runtime/doc/eval.txt Thu Nov 27 22:17:13 2008
+***************
+*** 5348,5357 ****
+ "fg" foreground color (GUI: color name used to set
+ the color, cterm: color number as a string,
+ term: empty string)
+! "bg" background color (like "fg")
+ "fg#" like "fg", but for the GUI and the GUI is
+ running the name in "#RRGGBB" form
+ "bg#" like "fg#" for "bg"
+ "bold" "1" if bold
+ "italic" "1" if italic
+ "reverse" "1" if reverse
+--- 5359,5370 ----
+ "fg" foreground color (GUI: color name used to set
+ the color, cterm: color number as a string,
+ term: empty string)
+! "bg" background color (as with "fg")
+! "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
+ "bg#" like "fg#" for "bg"
++ "sp#" like "fg#" for "sp"
+ "bold" "1" if bold
+ "italic" "1" if italic
+ "reverse" "1" if reverse
+*** ../vim-7.2.051/src/eval.c Fri Nov 28 10:59:57 2008
+--- src/eval.c Thu Nov 27 22:15:40 2008
+***************
+*** 16648,16655 ****
+ p = highlight_has_attr(id, HL_INVERSE, modec);
+ break;
+
+! case 's': /* standout */
+! p = highlight_has_attr(id, HL_STANDOUT, modec);
+ break;
+
+ case 'u':
+--- 16648,16658 ----
+ p = highlight_has_attr(id, HL_INVERSE, modec);
+ break;
+
+! case 's':
+! if (TOLOWER_ASC(what[1]) == 'p') /* sp[#] */
+! p = highlight_color(id, what, modec);
+! else /* standout */
+! p = highlight_has_attr(id, HL_STANDOUT, modec);
+ break;
+
+ case 'u':
+*** ../vim-7.2.051/src/version.c Fri Nov 28 10:59:57 2008
+--- src/version.c Fri Nov 28 11:13:45 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 52,
+ /**/
+
+--
+Not too long ago, a keyboard was something to make music with...
+
+ /// 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.053 b/source/ap/vim/patches/7.2.053
new file mode 100644
index 000000000..410d1666e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.053
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.053
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.053
+Problem: Crash when using WorkShop command ":ws foo". (Dominique Pelle)
+Solution: Avoid using a NULL pointer.
+Files: src/workshop.c
+
+
+*** ../vim-7.2.052/src/workshop.c Tue Jun 24 23:34:50 2008
+--- src/workshop.c Thu Nov 27 22:31:27 2008
+***************
+*** 1121,1128 ****
+ ? (char *)curbuf->b_sfname : "<None>");
+ #endif
+
+! strcpy(ffname, (char *) curbuf->b_ffname);
+! *filename = ffname; /* copy so nobody can change b_ffname */
+ *curLine = curwin->w_cursor.lnum;
+ *curCol = curwin->w_cursor.col;
+
+--- 1121,1132 ----
+ ? (char *)curbuf->b_sfname : "<None>");
+ #endif
+
+! if (curbuf->b_ffname == NULL)
+! ffname[0] = NUL;
+! else
+! /* copy so nobody can change b_ffname */
+! strcpy(ffname, (char *) curbuf->b_ffname);
+! *filename = ffname;
+ *curLine = curwin->w_cursor.lnum;
+ *curCol = curwin->w_cursor.col;
+
+*** ../vim-7.2.052/src/version.c Fri Nov 28 11:15:10 2008
+--- src/version.c Fri Nov 28 11:44:23 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 53,
+ /**/
+
+--
+What the word 'politics' means: 'Poli' in Latin meaning 'many' and 'tics'
+meaning 'bloodsucking creatures'.
+
+ /// 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.054 b/source/ap/vim/patches/7.2.054
new file mode 100644
index 000000000..98ce9e8f9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.054
@@ -0,0 +1,68 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.054
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.054
+Problem: Compilation warnings for format in getchar.c.
+Solution: Use fputs() instead of fprintf(). (Dominique Pelle)
+Files: src/getchar.c
+
+
+*** ../vim-7.2.053/src/getchar.c Tue Jul 22 18:58:23 2008
+--- src/getchar.c Thu Nov 27 22:38:24 2008
+***************
+*** 4702,4708 ****
+ return FAIL;
+ if (mp->m_noremap != REMAP_YES && fprintf(fd, "nore") < 0)
+ return FAIL;
+! if (fprintf(fd, cmd) < 0)
+ return FAIL;
+ if (buf != NULL && fputs(" <buffer>", fd) < 0)
+ return FAIL;
+--- 4702,4708 ----
+ return FAIL;
+ if (mp->m_noremap != REMAP_YES && fprintf(fd, "nore") < 0)
+ return FAIL;
+! if (fputs(cmd, fd) < 0)
+ return FAIL;
+ if (buf != NULL && fputs(" <buffer>", fd) < 0)
+ return FAIL;
+***************
+*** 4801,4807 ****
+ }
+ if (IS_SPECIAL(c) || modifiers) /* special key */
+ {
+! if (fprintf(fd, (char *)get_special_key_name(c, modifiers)) < 0)
+ return FAIL;
+ continue;
+ }
+--- 4801,4807 ----
+ }
+ if (IS_SPECIAL(c) || modifiers) /* special key */
+ {
+! if (fputs((char *)get_special_key_name(c, modifiers), fd) < 0)
+ return FAIL;
+ continue;
+ }
+*** ../vim-7.2.053/src/version.c Fri Nov 28 11:47:14 2008
+--- src/version.c Fri Nov 28 12:02:48 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 54,
+ /**/
+
+--
+Not too long ago, compress was something you did to garbage...
+
+ /// 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.055 b/source/ap/vim/patches/7.2.055
new file mode 100644
index 000000000..ffab9a267
--- /dev/null
+++ b/source/ap/vim/patches/7.2.055
@@ -0,0 +1,1271 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.055
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.055
+Problem: Various compiler warnings with strict checking.
+Solution: Avoid the warnings by using return values and renaming.
+Files: src/diff.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c,
+ src/fileio.c, src/fold.c, src/globals.h, src/gui.c,
+ src/gui_at_sb.c, src/gui_gtk_x11.c, src/gui_xmdlg.c,
+ src/gui_xmebw.c, src/main.c, src/mbyte.c, src/message.c,
+ src/netbeans.c, src/option.c, src/os_unix.c, src/spell.c,
+ src/ui.c, src/window.c
+
+
+*** ../vim-7.2.054/src/diff.c Fri Jan 18 17:39:32 2008
+--- src/diff.c Fri Nov 28 17:23:35 2008
+***************
+*** 661,666 ****
+--- 665,671 ----
+ char_u *tmp_diff;
+ FILE *fd;
+ int ok;
++ int io_error = FALSE;
+
+ /* Delete all diffblocks. */
+ diff_clear(curtab);
+***************
+*** 697,714 ****
+ {
+ ok = FALSE;
+ fd = mch_fopen((char *)tmp_orig, "w");
+! if (fd != NULL)
+ {
+! fwrite("line1\n", (size_t)6, (size_t)1, fd);
+ fclose(fd);
+ fd = mch_fopen((char *)tmp_new, "w");
+! if (fd != NULL)
+ {
+! fwrite("line2\n", (size_t)6, (size_t)1, fd);
+ fclose(fd);
+ diff_file(tmp_orig, tmp_new, tmp_diff);
+ fd = mch_fopen((char *)tmp_diff, "r");
+! if (fd != NULL)
+ {
+ char_u linebuf[LBUFLEN];
+
+--- 702,727 ----
+ {
+ ok = FALSE;
+ fd = mch_fopen((char *)tmp_orig, "w");
+! if (fd == NULL)
+! io_error = TRUE;
+! else
+ {
+! if (fwrite("line1\n", (size_t)6, (size_t)1, fd) != 1)
+! io_error = TRUE;
+ fclose(fd);
+ fd = mch_fopen((char *)tmp_new, "w");
+! if (fd == NULL)
+! io_error = TRUE;
+! else
+ {
+! if (fwrite("line2\n", (size_t)6, (size_t)1, fd) != 1)
+! io_error = TRUE;
+ fclose(fd);
+ diff_file(tmp_orig, tmp_new, tmp_diff);
+ fd = mch_fopen((char *)tmp_diff, "r");
+! if (fd == NULL)
+! io_error = TRUE;
+! else
+ {
+ char_u linebuf[LBUFLEN];
+
+***************
+*** 761,766 ****
+--- 774,781 ----
+ }
+ if (!ok)
+ {
++ if (io_error)
++ EMSG(_("E810: Cannot read or write temp files"));
+ EMSG(_("E97: Cannot create diffs"));
+ diff_a_works = MAYBE;
+ #if defined(MSWIN) || defined(MSDOS)
+***************
+*** 925,934 ****
+ {
+ # ifdef TEMPDIRNAMES
+ if (vim_tempdir != NULL)
+! mch_chdir((char *)vim_tempdir);
+ else
+ # endif
+! mch_chdir("/tmp");
+ shorten_fnames(TRUE);
+ }
+ #endif
+--- 940,949 ----
+ {
+ # ifdef TEMPDIRNAMES
+ if (vim_tempdir != NULL)
+! ignored = mch_chdir((char *)vim_tempdir);
+ else
+ # endif
+! ignored = mch_chdir("/tmp");
+ shorten_fnames(TRUE);
+ }
+ #endif
+*** ../vim-7.2.054/src/eval.c Fri Nov 28 11:15:10 2008
+--- src/eval.c Fri Nov 28 12:23:13 2008
+***************
+*** 10641,10647 ****
+ # ifdef FEAT_WINDOWS
+ win_T *wp;
+ # endif
+! int n = 1;
+
+ if (row >= 0 && col >= 0)
+ {
+--- 10641,10647 ----
+ # ifdef FEAT_WINDOWS
+ win_T *wp;
+ # endif
+! int winnr = 1;
+
+ if (row >= 0 && col >= 0)
+ {
+***************
+*** 10651,10659 ****
+ (void)mouse_comp_pos(win, &row, &col, &lnum);
+ # ifdef FEAT_WINDOWS
+ for (wp = firstwin; wp != win; wp = wp->w_next)
+! ++n;
+ # endif
+! vimvars[VV_MOUSE_WIN].vv_nr = n;
+ vimvars[VV_MOUSE_LNUM].vv_nr = lnum;
+ vimvars[VV_MOUSE_COL].vv_nr = col + 1;
+ }
+--- 10651,10659 ----
+ (void)mouse_comp_pos(win, &row, &col, &lnum);
+ # ifdef FEAT_WINDOWS
+ for (wp = firstwin; wp != win; wp = wp->w_next)
+! ++winnr;
+ # endif
+! vimvars[VV_MOUSE_WIN].vv_nr = winnr;
+ vimvars[VV_MOUSE_LNUM].vv_nr = lnum;
+ vimvars[VV_MOUSE_COL].vv_nr = col + 1;
+ }
+*** ../vim-7.2.054/src/ex_cmds.c Sat Nov 15 14:10:23 2008
+--- src/ex_cmds.c Fri Nov 28 17:24:08 2008
+***************
+*** 1941,1947 ****
+ * root.
+ */
+ if (fp_out != NULL)
+! (void)fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
+ #endif
+ }
+ }
+--- 1941,1947 ----
+ * root.
+ */
+ if (fp_out != NULL)
+! ignored = fchown(fileno(fp_out), st_old.st_uid, st_old.st_gid);
+ #endif
+ }
+ }
+*** ../vim-7.2.054/src/ex_docmd.c Sat Nov 15 14:10:23 2008
+--- src/ex_docmd.c Fri Nov 28 17:26:13 2008
+***************
+*** 8753,8760 ****
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! (void)mch_chdir((char *)globaldir);
+! shorten_fnames(TRUE);
+ }
+
+ failed |= (makeopens(fd, dirnow) == FAIL);
+--- 8753,8760 ----
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == OK)
+! shorten_fnames(TRUE);
+ }
+
+ failed |= (makeopens(fd, dirnow) == FAIL);
+*** ../vim-7.2.054/src/fileio.c Wed Nov 12 16:04:43 2008
+--- src/fileio.c Fri Nov 28 17:35:54 2008
+***************
+*** 2214,2220 ****
+ {
+ /* Use stderr for stdin, makes shell commands work. */
+ close(0);
+! dup(2);
+ }
+ #endif
+
+--- 2214,2220 ----
+ {
+ /* Use stderr for stdin, makes shell commands work. */
+ close(0);
+! ignored = dup(2);
+ }
+ #endif
+
+***************
+*** 3449,3455 ****
+ {
+ # ifdef UNIX
+ # ifdef HAVE_FCHOWN
+! fchown(fd, st_old.st_uid, st_old.st_gid);
+ # endif
+ if (mch_stat((char *)IObuff, &st) < 0
+ || st.st_uid != st_old.st_uid
+--- 3449,3455 ----
+ {
+ # ifdef UNIX
+ # ifdef HAVE_FCHOWN
+! ignored = fchown(fd, st_old.st_uid, st_old.st_gid);
+ # endif
+ if (mch_stat((char *)IObuff, &st) < 0
+ || st.st_uid != st_old.st_uid
+***************
+*** 4365,4371 ****
+ || st.st_uid != st_old.st_uid
+ || st.st_gid != st_old.st_gid)
+ {
+! fchown(fd, st_old.st_uid, st_old.st_gid);
+ if (perm >= 0) /* set permission again, may have changed */
+ (void)mch_setperm(wfname, perm);
+ }
+--- 4365,4371 ----
+ || st.st_uid != st_old.st_uid
+ || st.st_gid != st_old.st_gid)
+ {
+! ignored = fchown(fd, st_old.st_uid, st_old.st_gid);
+ if (perm >= 0) /* set permission again, may have changed */
+ (void)mch_setperm(wfname, perm);
+ }
+***************
+*** 6030,6038 ****
+ {
+ tbuf[FGETS_SIZE - 2] = NUL;
+ #ifdef USE_CR
+! fgets_cr((char *)tbuf, FGETS_SIZE, fp);
+ #else
+! fgets((char *)tbuf, FGETS_SIZE, fp);
+ #endif
+ } while (tbuf[FGETS_SIZE - 2] != NUL && tbuf[FGETS_SIZE - 2] != '\n');
+ }
+--- 6030,6038 ----
+ {
+ tbuf[FGETS_SIZE - 2] = NUL;
+ #ifdef USE_CR
+! ignoredp = fgets_cr((char *)tbuf, FGETS_SIZE, fp);
+ #else
+! ignoredp = fgets((char *)tbuf, FGETS_SIZE, fp);
+ #endif
+ } while (tbuf[FGETS_SIZE - 2] != NUL && tbuf[FGETS_SIZE - 2] != '\n');
+ }
+*** ../vim-7.2.054/src/fold.c Wed Aug 6 18:59:40 2008
+--- src/fold.c Fri Nov 28 12:24:16 2008
+***************
+*** 48,54 ****
+ static int foldFind __ARGS((garray_T *gap, linenr_T lnum, fold_T **fpp));
+ static int foldLevelWin __ARGS((win_T *wp, linenr_T lnum));
+ static void checkupdate __ARGS((win_T *wp));
+! static void setFoldRepeat __ARGS((linenr_T lnum, long count, int open));
+ static linenr_T setManualFold __ARGS((linenr_T lnum, int opening, int recurse, int *donep));
+ static linenr_T setManualFoldWin __ARGS((win_T *wp, linenr_T lnum, int opening, int recurse, int *donep));
+ static void foldOpenNested __ARGS((fold_T *fpr));
+--- 48,54 ----
+ static int foldFind __ARGS((garray_T *gap, linenr_T lnum, fold_T **fpp));
+ static int foldLevelWin __ARGS((win_T *wp, linenr_T lnum));
+ static void checkupdate __ARGS((win_T *wp));
+! static void setFoldRepeat __ARGS((linenr_T lnum, long count, int do_open));
+ static linenr_T setManualFold __ARGS((linenr_T lnum, int opening, int recurse, int *donep));
+ static linenr_T setManualFoldWin __ARGS((win_T *wp, linenr_T lnum, int opening, int recurse, int *donep));
+ static void foldOpenNested __ARGS((fold_T *fpr));
+***************
+*** 1241,1250 ****
+ * Repeat "count" times.
+ */
+ static void
+! setFoldRepeat(lnum, count, open)
+ linenr_T lnum;
+ long count;
+! int open;
+ {
+ int done;
+ long n;
+--- 1241,1250 ----
+ * Repeat "count" times.
+ */
+ static void
+! setFoldRepeat(lnum, count, do_open)
+ linenr_T lnum;
+ long count;
+! int do_open;
+ {
+ int done;
+ long n;
+***************
+*** 1252,1258 ****
+ for (n = 0; n < count; ++n)
+ {
+ done = DONE_NOTHING;
+! (void)setManualFold(lnum, open, FALSE, &done);
+ if (!(done & DONE_ACTION))
+ {
+ /* Only give an error message when no fold could be opened. */
+--- 1252,1258 ----
+ for (n = 0; n < count; ++n)
+ {
+ done = DONE_NOTHING;
+! (void)setManualFold(lnum, do_open, FALSE, &done);
+ if (!(done & DONE_ACTION))
+ {
+ /* Only give an error message when no fold could be opened. */
+*** ../vim-7.2.054/src/globals.h Thu Sep 18 21:29:07 2008
+--- src/globals.h Fri Nov 28 17:35:50 2008
+***************
+*** 1549,1554 ****
+--- 1549,1562 ----
+ EXTERN time_t starttime;
+
+ /*
++ * 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
++ * the warning.
++ */
++ EXTERN int ignored;
++ EXTERN char *ignoredp;
++
++ /*
+ * Optional Farsi support. Include it here, so EXTERN and INIT are defined.
+ */
+ #ifdef FEAT_FKMAP
+*** ../vim-7.2.054/src/gui.c Wed Aug 6 14:37:26 2008
+--- src/gui.c Fri Nov 28 18:48:31 2008
+***************
+*** 139,145 ****
+ /* The read returns when the child closes the pipe (or when
+ * the child dies for some reason). */
+ close(pipefd[1]);
+! (void)read(pipefd[0], &dummy, (size_t)1);
+ close(pipefd[0]);
+ }
+
+--- 139,145 ----
+ /* The read returns when the child closes the pipe (or when
+ * the child dies for some reason). */
+ close(pipefd[1]);
+! ignored = (int)read(pipefd[0], &dummy, (size_t)1);
+ close(pipefd[0]);
+ }
+
+*** ../vim-7.2.054/src/gui_at_sb.c Sun Jun 13 21:37:13 2004
+--- src/gui_at_sb.c Fri Nov 28 12:19:19 2008
+***************
+*** 1078,1083 ****
+--- 1078,1089 ----
+ Cardinal *num_params; /* unused */
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget)w;
++ /* Use a union to avoid a warning for the weird conversion from float to
++ * XtPointer. Comes from Xaw/Scrollbar.c. */
++ union {
++ XtPointer xtp;
++ float xtf;
++ } xtpf;
+
+ if (LookAhead(w, event))
+ return;
+***************
+*** 1085,1091 ****
+ /* thumbProc is not pretty, but is necessary for backwards
+ compatibility on those architectures for which it work{s,ed};
+ the intent is to pass a (truncated) float by value. */
+! XtCallCallbacks(w, XtNthumbProc, *(XtPointer*)&sbw->scrollbar.top);
+ XtCallCallbacks(w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
+ }
+
+--- 1091,1098 ----
+ /* thumbProc is not pretty, but is necessary for backwards
+ compatibility on those architectures for which it work{s,ed};
+ the intent is to pass a (truncated) float by value. */
+! xtpf.xtf = sbw->scrollbar.top;
+! XtCallCallbacks(w, XtNthumbProc, xtpf.xtp);
+ XtCallCallbacks(w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
+ }
+
+*** ../vim-7.2.054/src/gui_gtk_x11.c Tue Jul 8 12:46:08 2008
+--- src/gui_gtk_x11.c Fri Nov 28 21:06:38 2008
+***************
+*** 4070,4083 ****
+
+ if (mask & (XValue | YValue))
+ {
+! int w, h;
+! gui_mch_get_screen_dimensions(&w, &h);
+! h += p_ghr + get_menu_tool_height();
+! w += get_menu_tool_width();
+ if (mask & XNegative)
+! x += w - pixel_width;
+ if (mask & YNegative)
+! y += h - pixel_height;
+ #ifdef HAVE_GTK2
+ gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
+ #else
+--- 4070,4083 ----
+
+ if (mask & (XValue | YValue))
+ {
+! int ww, hh;
+! gui_mch_get_screen_dimensions(&ww, &hh);
+! hh += p_ghr + get_menu_tool_height();
+! ww += get_menu_tool_width();
+ if (mask & XNegative)
+! x += ww - pixel_width;
+ if (mask & YNegative)
+! y += hh - pixel_height;
+ #ifdef HAVE_GTK2
+ gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
+ #else
+*** ../vim-7.2.054/src/gui_xmdlg.c Tue Jun 24 23:39:32 2008
+--- src/gui_xmdlg.c Fri Nov 28 21:04:08 2008
+***************
+*** 369,378 ****
+ char buf[TEMP_BUF_SIZE];
+ XmString items[MAX_ENTRIES_IN_LIST];
+ int i;
+! int index;
+
+! for (index = (int)ENCODING; index < (int)NONE; ++index)
+! count[index] = 0;
+
+ /* First we insert the wild char into every single list. */
+ if (fix != ENCODING)
+--- 369,378 ----
+ char buf[TEMP_BUF_SIZE];
+ XmString items[MAX_ENTRIES_IN_LIST];
+ int i;
+! int idx;
+
+! for (idx = (int)ENCODING; idx < (int)NONE; ++idx)
+! count[idx] = 0;
+
+ /* First we insert the wild char into every single list. */
+ if (fix != ENCODING)
+***************
+*** 503,516 ****
+ /*
+ * Now loop trough the remaining lists and set them up.
+ */
+! for (index = (int)NAME; index < (int)NONE; ++index)
+ {
+ Widget w;
+
+! if (fix == (enum ListSpecifier)index)
+ continue;
+
+! switch ((enum ListSpecifier)index)
+ {
+ case NAME:
+ w = data->list[NAME];
+--- 503,516 ----
+ /*
+ * Now loop trough the remaining lists and set them up.
+ */
+! for (idx = (int)NAME; idx < (int)NONE; ++idx)
+ {
+ Widget w;
+
+! if (fix == (enum ListSpecifier)idx)
+ continue;
+
+! switch ((enum ListSpecifier)idx)
+ {
+ case NAME:
+ w = data->list[NAME];
+***************
+*** 525,545 ****
+ w = (Widget)0; /* for lint */
+ }
+
+! for (i = 0; i < count[index]; ++i)
+ {
+! items[i] = XmStringCreateLocalized(list[index][i]);
+! XtFree(list[index][i]);
+ }
+ XmListDeleteAllItems(w);
+! XmListAddItems(w, items, count[index], 1);
+! if (data->sel[index])
+ {
+ XmStringFree(items[0]);
+! items[0] = XmStringCreateLocalized(data->sel[index]);
+ XmListSelectItem(w, items[0], False);
+ XmListSetBottomItem(w, items[0]);
+ }
+! for (i = 0; i < count[index]; ++i)
+ XmStringFree(items[i]);
+ }
+ }
+--- 525,545 ----
+ w = (Widget)0; /* for lint */
+ }
+
+! for (i = 0; i < count[idx]; ++i)
+ {
+! items[i] = XmStringCreateLocalized(list[idx][i]);
+! XtFree(list[idx][i]);
+ }
+ XmListDeleteAllItems(w);
+! XmListAddItems(w, items, count[idx], 1);
+! if (data->sel[idx])
+ {
+ XmStringFree(items[0]);
+! items[0] = XmStringCreateLocalized(data->sel[idx]);
+ XmListSelectItem(w, items[0], False);
+ XmListSetBottomItem(w, items[0]);
+ }
+! for (i = 0; i < count[idx]; ++i)
+ XmStringFree(items[i]);
+ }
+ }
+***************
+*** 695,708 ****
+ int n;
+ XmString str;
+ Arg args[4];
+! char *msg = _("no specific match");
+
+ n = 0;
+! str = XmStringCreateLocalized(msg);
+ XtSetArg(args[n], XmNlabelString, str); ++n;
+ XtSetValues(data->sample, args, n);
+ apply_fontlist(data->sample);
+! XmTextSetString(data->name, msg);
+ XmStringFree(str);
+
+ return False;
+--- 695,708 ----
+ int n;
+ XmString str;
+ Arg args[4];
+! char *nomatch_msg = _("no specific match");
+
+ n = 0;
+! str = XmStringCreateLocalized(nomatch_msg);
+ XtSetArg(args[n], XmNlabelString, str); ++n;
+ XtSetValues(data->sample, args, n);
+ apply_fontlist(data->sample);
+! XmTextSetString(data->name, nomatch_msg);
+ XmStringFree(str);
+
+ return False;
+***************
+*** 886,906 ****
+ {
+ int i;
+ int max;
+! int index = 0;
+ int size;
+! char str[128];
+
+ for (i = 0, max = 0; i < data->num; i++)
+ {
+! get_part(fn(data, i), 7, str);
+! size = atoi(str);
+ if ((size > max) && (size < MAX_DISPLAY_SIZE))
+ {
+! index = i;
+ max = size;
+ }
+ }
+! strcpy(big_font, fn(data, index));
+ }
+ data->old = XLoadQueryFont(XtDisplay(parent), big_font);
+ data->old_list = gui_motif_create_fontlist(data->old);
+--- 886,906 ----
+ {
+ int i;
+ int max;
+! int idx = 0;
+ int size;
+! char buf[128];
+
+ for (i = 0, max = 0; i < data->num; i++)
+ {
+! get_part(fn(data, i), 7, buf);
+! size = atoi(buf);
+ if ((size > max) && (size < MAX_DISPLAY_SIZE))
+ {
+! idx = i;
+ max = size;
+ }
+ }
+! strcpy(big_font, fn(data, idx));
+ }
+ data->old = XLoadQueryFont(XtDisplay(parent), big_font);
+ data->old_list = gui_motif_create_fontlist(data->old);
+***************
+*** 1217,1244 ****
+
+ if (i != 0)
+ {
+! char name[TEMP_BUF_SIZE];
+! char style[TEMP_BUF_SIZE];
+! char size[TEMP_BUF_SIZE];
+! char encoding[TEMP_BUF_SIZE];
+ char *found;
+
+ found = names[0];
+
+! name_part(found, name);
+! style_part(found, style);
+! size_part(found, size, data->in_pixels);
+! encoding_part(found, encoding);
+!
+! if (strlen(name) > 0
+! && strlen(style) > 0
+! && strlen(size) > 0
+! && strlen(encoding) > 0)
+ {
+! data->sel[NAME] = XtNewString(name);
+! data->sel[STYLE] = XtNewString(style);
+! data->sel[SIZE] = XtNewString(size);
+! data->sel[ENCODING] = XtNewString(encoding);
+ data->font_name = XtNewString(names[0]);
+ display_sample(data);
+ XmTextSetString(data->name, data->font_name);
+--- 1217,1244 ----
+
+ if (i != 0)
+ {
+! char namebuf[TEMP_BUF_SIZE];
+! char stylebuf[TEMP_BUF_SIZE];
+! char sizebuf[TEMP_BUF_SIZE];
+! char encodingbuf[TEMP_BUF_SIZE];
+ char *found;
+
+ found = names[0];
+
+! name_part(found, namebuf);
+! style_part(found, stylebuf);
+! size_part(found, sizebuf, data->in_pixels);
+! encoding_part(found, encodingbuf);
+!
+! if (strlen(namebuf) > 0
+! && strlen(stylebuf) > 0
+! && strlen(sizebuf) > 0
+! && strlen(encodingbuf) > 0)
+ {
+! data->sel[NAME] = XtNewString(namebuf);
+! data->sel[STYLE] = XtNewString(stylebuf);
+! data->sel[SIZE] = XtNewString(sizebuf);
+! data->sel[ENCODING] = XtNewString(encodingbuf);
+ data->font_name = XtNewString(names[0]);
+ display_sample(data);
+ XmTextSetString(data->name, data->font_name);
+*** ../vim-7.2.054/src/gui_xmebw.c Thu Nov 8 20:48:14 2007
+--- src/gui_xmebw.c Fri Nov 28 18:58:53 2008
+***************
+*** 1256,1262 ****
+ }
+ else
+ {
+! int adjust = 0;
+
+ #if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+ /*
+--- 1256,1262 ----
+ }
+ else
+ {
+! adjust = 0;
+
+ #if !defined(LESSTIF_VERSION) && (XmVersion > 1002)
+ /*
+***************
+*** 1268,1279 ****
+ {
+ case XmEXTERNAL_HIGHLIGHT:
+ adjust = (eb->primitive.highlight_thickness -
+! (eb->pushbutton.default_button_shadow_thickness ?
+! Xm3D_ENHANCE_PIXEL : 0));
+ break;
+
+ case XmINTERNAL_HIGHLIGHT:
+- adjust = 0;
+ break;
+
+ default:
+--- 1268,1278 ----
+ {
+ case XmEXTERNAL_HIGHLIGHT:
+ adjust = (eb->primitive.highlight_thickness -
+! (eb->pushbutton.default_button_shadow_thickness
+! ? Xm3D_ENHANCE_PIXEL : 0));
+ break;
+
+ case XmINTERNAL_HIGHLIGHT:
+ break;
+
+ default:
+*** ../vim-7.2.054/src/main.c Thu Nov 20 14:11:47 2008
+--- src/main.c Fri Nov 28 18:32:48 2008
+***************
+*** 2372,2378 ****
+ * Is there any other system that cannot do this?
+ */
+ close(0);
+! dup(2);
+ #endif
+ }
+
+--- 2372,2378 ----
+ * Is there any other system that cannot do this?
+ */
+ close(0);
+! ignored = dup(2);
+ #endif
+ }
+
+*** ../vim-7.2.054/src/mbyte.c Thu Nov 20 17:09:09 2008
+--- src/mbyte.c Fri Nov 28 18:44:05 2008
+***************
+*** 717,723 ****
+ * where mblen() returns 0 for invalid character.
+ * Therefore, following condition includes 0.
+ */
+! (void)mblen(NULL, 0); /* First reset the state. */
+ if (mblen(buf, (size_t)1) <= 0)
+ n = 2;
+ else
+--- 717,723 ----
+ * where mblen() returns 0 for invalid character.
+ * Therefore, following condition includes 0.
+ */
+! ignored = mblen(NULL, 0); /* First reset the state. */
+ if (mblen(buf, (size_t)1) <= 0)
+ n = 2;
+ else
+***************
+*** 5278,5284 ****
+
+ /*ARGSUSED*/
+ static void
+! preedit_start_cbproc(XIC xic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("xim_decide_input_style()\n");
+--- 5278,5284 ----
+
+ /*ARGSUSED*/
+ static void
+! preedit_start_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("xim_decide_input_style()\n");
+***************
+*** 5312,5318 ****
+
+ /*ARGSUSED*/
+ static void
+! preedit_draw_cbproc(XIC xic, XPointer client_data, XPointer call_data)
+ {
+ XIMPreeditDrawCallbackStruct *draw_data;
+ XIMText *text;
+--- 5312,5318 ----
+
+ /*ARGSUSED*/
+ static void
+! preedit_draw_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ XIMPreeditDrawCallbackStruct *draw_data;
+ XIMText *text;
+***************
+*** 5453,5459 ****
+
+ /*ARGSUSED*/
+ static void
+! preedit_caret_cbproc(XIC xic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_caret_cbproc()\n");
+--- 5453,5459 ----
+
+ /*ARGSUSED*/
+ static void
+! preedit_caret_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_caret_cbproc()\n");
+***************
+*** 5462,5468 ****
+
+ /*ARGSUSED*/
+ static void
+! preedit_done_cbproc(XIC xic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_done_cbproc()\n");
+--- 5462,5468 ----
+
+ /*ARGSUSED*/
+ static void
+! preedit_done_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_done_cbproc()\n");
+*** ../vim-7.2.054/src/message.c Sun Jul 13 19:18:44 2008
+--- src/message.c Fri Nov 28 12:26:56 2008
+***************
+*** 4585,4645 ****
+ if (remove_trailing_zeroes)
+ {
+ int i;
+! char *p;
+
+ /* Using %g or %G: remove superfluous zeroes. */
+ if (fmt_spec == 'f')
+! p = tmp + str_arg_l - 1;
+ else
+ {
+! p = (char *)vim_strchr((char_u *)tmp,
+ fmt_spec == 'e' ? 'e' : 'E');
+! if (p != NULL)
+ {
+ /* Remove superfluous '+' and leading
+ * zeroes from the exponent. */
+! if (p[1] == '+')
+ {
+ /* Change "1.0e+07" to "1.0e07" */
+! STRMOVE(p + 1, p + 2);
+ --str_arg_l;
+ }
+! i = (p[1] == '-') ? 2 : 1;
+! while (p[i] == '0')
+ {
+ /* Change "1.0e07" to "1.0e7" */
+! STRMOVE(p + i, p + i + 1);
+ --str_arg_l;
+ }
+! --p;
+ }
+ }
+
+! if (p != NULL && !precision_specified)
+ /* Remove trailing zeroes, but keep the one
+ * just after a dot. */
+! while (p > tmp + 2 && *p == '0' && p[-1] != '.')
+ {
+! STRMOVE(p, p + 1);
+! --p;
+ --str_arg_l;
+ }
+ }
+ else
+ {
+! char *p;
+
+ /* Be consistent: some printf("%e") use 1.0e+12
+ * and some 1.0e+012. Remove one zero in the last
+ * case. */
+! p = (char *)vim_strchr((char_u *)tmp,
+ fmt_spec == 'e' ? 'e' : 'E');
+! if (p != NULL && (p[1] == '+' || p[1] == '-')
+! && p[2] == '0'
+! && vim_isdigit(p[3])
+! && vim_isdigit(p[4]))
+ {
+! STRMOVE(p + 2, p + 3);
+ --str_arg_l;
+ }
+ }
+--- 4585,4646 ----
+ if (remove_trailing_zeroes)
+ {
+ int i;
+! char *tp;
+
+ /* Using %g or %G: remove superfluous zeroes. */
+ if (fmt_spec == 'f')
+! tp = tmp + str_arg_l - 1;
+ else
+ {
+! tp = (char *)vim_strchr((char_u *)tmp,
+ fmt_spec == 'e' ? 'e' : 'E');
+! if (tp != NULL)
+ {
+ /* Remove superfluous '+' and leading
+ * zeroes from the exponent. */
+! if (tp[1] == '+')
+ {
+ /* Change "1.0e+07" to "1.0e07" */
+! STRMOVE(tp + 1, tp + 2);
+ --str_arg_l;
+ }
+! i = (tp[1] == '-') ? 2 : 1;
+! while (tp[i] == '0')
+ {
+ /* Change "1.0e07" to "1.0e7" */
+! STRMOVE(tp + i, tp + i + 1);
+ --str_arg_l;
+ }
+! --tp;
+ }
+ }
+
+! if (tp != NULL && !precision_specified)
+ /* Remove trailing zeroes, but keep the one
+ * just after a dot. */
+! while (tp > tmp + 2 && *tp == '0'
+! && tp[-1] != '.')
+ {
+! STRMOVE(tp, tp + 1);
+! --tp;
+ --str_arg_l;
+ }
+ }
+ else
+ {
+! char *tp;
+
+ /* Be consistent: some printf("%e") use 1.0e+12
+ * and some 1.0e+012. Remove one zero in the last
+ * case. */
+! tp = (char *)vim_strchr((char_u *)tmp,
+ fmt_spec == 'e' ? 'e' : 'E');
+! if (tp != NULL && (tp[1] == '+' || tp[1] == '-')
+! && tp[2] == '0'
+! && vim_isdigit(tp[3])
+! && vim_isdigit(tp[4]))
+ {
+! STRMOVE(tp + 2, tp + 3);
+ --str_arg_l;
+ }
+ }
+*** ../vim-7.2.054/src/netbeans.c Sat Nov 15 14:10:23 2008
+--- src/netbeans.c Fri Nov 28 18:51:43 2008
+***************
+*** 1043,1049 ****
+ nbdebug(("EVT: %s", buf));
+ /* nb_send(buf, "netbeans_end"); avoid "write failed" messages */
+ if (sd >= 0)
+! sock_write(sd, buf, (int)STRLEN(buf)); /* ignore errors */
+ }
+ }
+
+--- 1043,1049 ----
+ nbdebug(("EVT: %s", buf));
+ /* nb_send(buf, "netbeans_end"); avoid "write failed" messages */
+ if (sd >= 0)
+! ignored = sock_write(sd, buf, (int)STRLEN(buf));
+ }
+ }
+
+***************
+*** 2277,2285 ****
+ int serNum;
+ int localTypeNum;
+ int typeNum;
+- # ifdef NBDEBUG
+- int len;
+- # endif
+ pos_T *pos;
+
+ if (buf == NULL || buf->bufp == NULL)
+--- 2277,2282 ----
+***************
+*** 2303,2315 ****
+ pos = get_off_or_lnum(buf->bufp, &args);
+
+ cp = (char *)args;
+! # ifdef NBDEBUG
+! len =
+! # endif
+! strtol(cp, &cp, 10);
+ args = (char_u *)cp;
+ # ifdef NBDEBUG
+! if (len != -1)
+ {
+ nbdebug((" partial line annotation -- Not Yet Implemented!\n"));
+ }
+--- 2300,2309 ----
+ pos = get_off_or_lnum(buf->bufp, &args);
+
+ cp = (char *)args;
+! ignored = (int)strtol(cp, &cp, 10);
+ args = (char_u *)cp;
+ # ifdef NBDEBUG
+! if (ignored != -1)
+ {
+ nbdebug((" partial line annotation -- Not Yet Implemented!\n"));
+ }
+*** ../vim-7.2.054/src/option.c Sun Nov 9 13:43:25 2008
+--- src/option.c Fri Nov 28 12:27:34 2008
+***************
+*** 8232,8244 ****
+ {
+ if (number == 0 && string != NULL)
+ {
+! int index;
+
+ /* Either we are given a string or we are setting option
+ * to zero. */
+! for (index = 0; string[index] == '0'; ++index)
+ ;
+! if (string[index] != NUL || index == 0)
+ {
+ /* There's another character after zeros or the string
+ * is empty. In both cases, we are trying to set a
+--- 8232,8244 ----
+ {
+ if (number == 0 && string != NULL)
+ {
+! int idx;
+
+ /* Either we are given a string or we are setting option
+ * to zero. */
+! for (idx = 0; string[idx] == '0'; ++idx)
+ ;
+! if (string[idx] != NUL || idx == 0)
+ {
+ /* There's another character after zeros or the string
+ * is empty. In both cases, we are trying to set a
+*** ../vim-7.2.054/src/os_unix.c Wed Nov 12 14:09:38 2008
+--- src/os_unix.c Fri Nov 28 18:39:55 2008
+***************
+*** 315,326 ****
+ {-1, "Unknown!", FALSE}
+ };
+
+ void
+ mch_write(s, len)
+ char_u *s;
+ int len;
+ {
+! write(1, (char *)s, len);
+ if (p_wd) /* Unix is too fast, slow down a bit more */
+ RealWaitForChar(read_cmd_fd, p_wd, NULL);
+ }
+--- 315,329 ----
+ {-1, "Unknown!", FALSE}
+ };
+
++ /*
++ * Write s[len] to the screen.
++ */
+ void
+ mch_write(s, len)
+ char_u *s;
+ int len;
+ {
+! ignored = (int)write(1, (char *)s, len);
+ if (p_wd) /* Unix is too fast, slow down a bit more */
+ RealWaitForChar(read_cmd_fd, p_wd, NULL);
+ }
+***************
+*** 3927,3935 ****
+ */
+ if (fd >= 0)
+ {
+! dup(fd); /* To replace stdin (file descriptor 0) */
+! dup(fd); /* To replace stdout (file descriptor 1) */
+! dup(fd); /* To replace stderr (file descriptor 2) */
+
+ /* Don't need this now that we've duplicated it */
+ close(fd);
+--- 3930,3938 ----
+ */
+ if (fd >= 0)
+ {
+! ignored = dup(fd); /* To replace stdin (fd 0) */
+! ignored = dup(fd); /* To replace stdout (fd 1) */
+! ignored = dup(fd); /* To replace stderr (fd 2) */
+
+ /* Don't need this now that we've duplicated it */
+ close(fd);
+***************
+*** 3997,4009 ****
+
+ /* set up stdin/stdout/stderr for the child */
+ close(0);
+! dup(pty_slave_fd);
+ close(1);
+! dup(pty_slave_fd);
+ if (gui.in_use)
+ {
+ close(2);
+! dup(pty_slave_fd);
+ }
+
+ close(pty_slave_fd); /* has been dupped, close it now */
+--- 4000,4012 ----
+
+ /* set up stdin/stdout/stderr for the child */
+ close(0);
+! ignored = dup(pty_slave_fd);
+ close(1);
+! ignored = dup(pty_slave_fd);
+ if (gui.in_use)
+ {
+ close(2);
+! ignored = dup(pty_slave_fd);
+ }
+
+ close(pty_slave_fd); /* has been dupped, close it now */
+***************
+*** 4014,4026 ****
+ /* set up stdin for the child */
+ close(fd_toshell[1]);
+ close(0);
+! dup(fd_toshell[0]);
+ close(fd_toshell[0]);
+
+ /* set up stdout for the child */
+ close(fd_fromshell[0]);
+ close(1);
+! dup(fd_fromshell[1]);
+ close(fd_fromshell[1]);
+
+ # ifdef FEAT_GUI
+--- 4017,4029 ----
+ /* set up stdin for the child */
+ close(fd_toshell[1]);
+ close(0);
+! ignored = dup(fd_toshell[0]);
+ close(fd_toshell[0]);
+
+ /* set up stdout for the child */
+ close(fd_fromshell[0]);
+ close(1);
+! ignored = dup(fd_fromshell[1]);
+ close(fd_fromshell[1]);
+
+ # ifdef FEAT_GUI
+***************
+*** 4028,4034 ****
+ {
+ /* set up stderr for the child */
+ close(2);
+! dup(1);
+ }
+ # endif
+ }
+--- 4031,4037 ----
+ {
+ /* set up stderr for the child */
+ close(2);
+! ignored = dup(1);
+ }
+ # endif
+ }
+***************
+*** 4159,4165 ****
+ && (lnum !=
+ curbuf->b_ml.ml_line_count
+ || curbuf->b_p_eol)))
+! write(toshell_fd, "\n", (size_t)1);
+ ++lnum;
+ if (lnum > curbuf->b_op_end.lnum)
+ {
+--- 4162,4169 ----
+ && (lnum !=
+ curbuf->b_ml.ml_line_count
+ || curbuf->b_p_eol)))
+! ignored = write(toshell_fd, "\n",
+! (size_t)1);
+ ++lnum;
+ if (lnum > curbuf->b_op_end.lnum)
+ {
+*** ../vim-7.2.054/src/spell.c Fri Nov 28 10:08:05 2008
+--- src/spell.c Fri Nov 28 12:28:24 2008
+***************
+*** 4950,4956 ****
+ static void put_sugtime __ARGS((spellinfo_T *spin, FILE *fd));
+ static int write_vim_spell __ARGS((spellinfo_T *spin, char_u *fname));
+ static void clear_node __ARGS((wordnode_T *node));
+! static int put_node __ARGS((FILE *fd, wordnode_T *node, int index, int regionmask, int prefixtree));
+ static void spell_make_sugfile __ARGS((spellinfo_T *spin, char_u *wfname));
+ static int sug_filltree __ARGS((spellinfo_T *spin, slang_T *slang));
+ static int sug_maketable __ARGS((spellinfo_T *spin));
+--- 4950,4956 ----
+ static void put_sugtime __ARGS((spellinfo_T *spin, FILE *fd));
+ static int write_vim_spell __ARGS((spellinfo_T *spin, char_u *fname));
+ static void clear_node __ARGS((wordnode_T *node));
+! static int put_node __ARGS((FILE *fd, wordnode_T *node, int idx, int regionmask, int prefixtree));
+ static void spell_make_sugfile __ARGS((spellinfo_T *spin, char_u *wfname));
+ static int sug_filltree __ARGS((spellinfo_T *spin, slang_T *slang));
+ static int sug_maketable __ARGS((spellinfo_T *spin));
+*** ../vim-7.2.054/src/ui.c Sun Sep 14 15:57:54 2008
+--- src/ui.c Fri Nov 28 19:04:36 2008
+***************
+*** 1820,1826 ****
+ #ifdef HAVE_DUP
+ /* Use stderr for stdin, also works for shell commands. */
+ close(0);
+! dup(2);
+ #else
+ read_cmd_fd = 2; /* read from stderr instead of stdin */
+ #endif
+--- 1820,1826 ----
+ #ifdef HAVE_DUP
+ /* Use stderr for stdin, also works for shell commands. */
+ close(0);
+! ignored = dup(2);
+ #else
+ read_cmd_fd = 2; /* read from stderr instead of stdin */
+ #endif
+*** ../vim-7.2.054/src/window.c Sat Nov 15 14:10:23 2008
+--- src/window.c Fri Nov 28 18:46:45 2008
+***************
+*** 4029,4042 ****
+ if (mch_dirname(cwd, MAXPATHL) == OK)
+ globaldir = vim_strsave(cwd);
+ }
+! mch_chdir((char *)curwin->w_localdir);
+! shorten_fnames(TRUE);
+ }
+ else if (globaldir != NULL)
+ {
+ /* Window doesn't have a local directory and we are not in the global
+ * directory: Change to the global directory. */
+! mch_chdir((char *)globaldir);
+ vim_free(globaldir);
+ globaldir = NULL;
+ shorten_fnames(TRUE);
+--- 4029,4042 ----
+ if (mch_dirname(cwd, MAXPATHL) == OK)
+ globaldir = vim_strsave(cwd);
+ }
+! if (mch_chdir((char *)curwin->w_localdir) == 0)
+! shorten_fnames(TRUE);
+ }
+ else if (globaldir != NULL)
+ {
+ /* Window doesn't have a local directory and we are not in the global
+ * directory: Change to the global directory. */
+! ignored = mch_chdir((char *)globaldir);
+ vim_free(globaldir);
+ globaldir = NULL;
+ shorten_fnames(TRUE);
+*** ../vim-7.2.054/src/version.c Fri Nov 28 12:05:07 2008
+--- src/version.c Fri Nov 28 21:12:42 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 55,
+ /**/
+
+--
+PRINCE: He's come to rescue me, father.
+LAUNCELOT: (embarrassed) Well, let's not jump to conclusions ...
+ "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.056 b/source/ap/vim/patches/7.2.056
new file mode 100644
index 000000000..9e23f3da6
--- /dev/null
+++ b/source/ap/vim/patches/7.2.056
@@ -0,0 +1,57 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.056
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.056 (after 7.2.050)
+Problem: Tests 58 and 59 fail.
+Solution: Don't invoke fwrite() with a zero length. (Dominique Pelle)
+Files: src/spell.c
+
+
+*** ../vim-7.2.055/src/spell.c Fri Nov 28 21:26:50 2008
+--- src/spell.c Sat Nov 29 19:58:21 2008
+***************
+*** 8112,8118 ****
+ p = rr == 1 ? ftp->ft_from : ftp->ft_to;
+ l = (int)STRLEN(p);
+ putc(l, fd);
+! fwv &= fwrite(p, l, (size_t)1, fd);
+ }
+ }
+
+--- 8218,8225 ----
+ p = rr == 1 ? ftp->ft_from : ftp->ft_to;
+ l = (int)STRLEN(p);
+ putc(l, fd);
+! if (l > 0)
+! fwv &= fwrite(p, l, (size_t)1, fd);
+ }
+ }
+
+*** ../vim-7.2.055/src/version.c Fri Nov 28 21:26:50 2008
+--- src/version.c Sat Nov 29 20:10:05 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 56,
+ /**/
+
+--
+GUARD #1: Where'd you get the coconut?
+ARTHUR: We found them.
+GUARD #1: Found them? In Mercea? The coconut's tropical!
+ARTHUR: What do you mean?
+GUARD #1: Well, this is a temperate zone.
+ 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.057 b/source/ap/vim/patches/7.2.057
new file mode 100644
index 000000000..37549121e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.057
@@ -0,0 +1,111 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.057
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.057 (after 7.2.056)
+Problem: Combination of int and size_t may not work.
+Solution: Use size_t for variable.
+Files: src/spell.c
+
+
+*** ../vim-7.2.056/src/spell.c Sat Nov 29 20:10:59 2008
+--- src/spell.c Sat Nov 29 20:15:43 2008
+***************
+*** 7926,7932 ****
+ char_u *p;
+ int rr;
+ int retval = OK;
+! int fwv = 1; /* collect return value of fwrite() to avoid
+ warnings from picky compiler */
+
+ fd = mch_fopen((char *)fname, "w");
+--- 8028,8034 ----
+ char_u *p;
+ int rr;
+ int retval = OK;
+! size_t fwv = 1; /* collect return value of fwrite() to avoid
+ warnings from picky compiler */
+
+ fd = mch_fopen((char *)fname, "w");
+***************
+*** 7939,7944 ****
+--- 8041,8050 ----
+ /* <HEADER>: <fileID> <versionnr> */
+ /* <fileID> */
+ fwv &= fwrite(VIMSPELLMAGIC, VIMSPELLMAGICL, (size_t)1, fd);
++ if (fwv != (size_t)1)
++ /* Catch first write error, don't try writing more. */
++ goto theend;
++
+ putc(VIMSPELLVERSION, fd); /* <versionnr> */
+
+ /*
+***************
+*** 8300,8310 ****
+ /* Write another byte to check for errors (file system full). */
+ if (putc(0, fd) == EOF)
+ retval = FAIL;
+!
+ if (fclose(fd) == EOF)
+ retval = FAIL;
+
+! if (fwv != 1)
+ retval = FAIL;
+ if (retval == FAIL)
+ EMSG(_(e_write));
+--- 8406,8416 ----
+ /* Write another byte to check for errors (file system full). */
+ if (putc(0, fd) == EOF)
+ retval = FAIL;
+! theend:
+ if (fclose(fd) == EOF)
+ retval = FAIL;
+
+! if (fwv != (size_t)1)
+ retval = FAIL;
+ if (retval == FAIL)
+ EMSG(_(e_write));
+***************
+*** 9897,9903 ****
+ char_u *p;
+ int len;
+ int totlen;
+! int x = 1; /* collect return value of fwrite() */
+
+ if (fd != NULL)
+ put_bytes(fd, (long_u)gap->ga_len, 2); /* <prefcondcnt> */
+--- 10003,10009 ----
+ char_u *p;
+ int len;
+ int totlen;
+! size_t x = 1; /* collect return value of fwrite() */
+
+ if (fd != NULL)
+ put_bytes(fd, (long_u)gap->ga_len, 2); /* <prefcondcnt> */
+*** ../vim-7.2.056/src/version.c Sat Nov 29 20:10:59 2008
+--- src/version.c Sat Nov 29 20:13:46 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 57,
+ /**/
+
+--
+GUARD #1: What -- a swallow carrying a coconut?
+ARTHUR: It could grip it by the husk!
+GUARD #1: It's not a question of where he grips it! It's a simple question
+ of weight ratios! A five ounce bird could not carry a 1 pound
+ coconut.
+ 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.058 b/source/ap/vim/patches/7.2.058
new file mode 100644
index 000000000..95de243fc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.058
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.058
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.058
+Problem: Can't add a patch name to the ":version" output.
+Solution: Add the extra_patches array.
+Files: src/version.c
+
+
+*** ../vim-7.2.057/src/version.c Sat Nov 29 20:18:44 2008
+--- src/version.c Sun Nov 30 12:12:31 2008
+***************
+*** 794,799 ****
+--- 796,814 ----
+ 0
+ };
+
++ /*
++ * Place to put a short description when adding a feature with a patch.
++ * Keep it short, e.g.,: "relative numbers", "persistent undo".
++ * Also add a comment marker to separate the lines.
++ * See the official Vim patches for the diff format: It must use a context of
++ * one line only. Use "diff -C2".
++ */
++ static char *(extra_patches[]) =
++ { /* Add your patch description below this line */
++ /**/
++ NULL
++ };
++
+ int
+ highest_patch()
+ {
+***************
+*** 939,944 ****
+--- 954,972 ----
+ }
+ }
+
++ /* Print the list of extra patch descriptions if there is at least one. */
++ if (extra_patches[0] != NULL)
++ {
++ MSG_PUTS(_("\nExtra patches: "));
++ s = "";
++ for (i = 0; extra_patches[i] != NULL; ++i)
++ {
++ MSG_PUTS(s);
++ s = ", ";
++ MSG_PUTS(extra_patches[i]);
++ }
++ }
++
+ #ifdef MODIFIED_BY
+ MSG_PUTS("\n");
+ MSG_PUTS(_("Modified by "));
+*** ../vim-7.2.057/src/version.c Sat Nov 29 20:18:44 2008
+--- src/version.c Sun Nov 30 12:12:31 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 58,
+ /**/
+
+--
+ARTHUR: Well, it doesn't matter. Will you go and tell your master that
+ Arthur from the Court of Camelot is here.
+GUARD #1: Listen, in order to maintain air-speed velocity, a swallow
+ needs to beat its wings 43 times every second, right?
+ARTHUR: Please!
+ 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.059 b/source/ap/vim/patches/7.2.059
new file mode 100644
index 000000000..0012ad6db
--- /dev/null
+++ b/source/ap/vim/patches/7.2.059
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.059
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.059
+Problem: Diff display is not always updated.
+Solution: Update the display more often.
+Files: src/diff.c
+
+
+*** ../vim-7.2.058/src/diff.c Fri Nov 28 21:26:50 2008
+--- src/diff.c Fri Nov 28 17:23:35 2008
+***************
+*** 73,78 ****
+--- 73,80 ----
+ {
+ tp->tp_diffbuf[i] = NULL;
+ tp->tp_diff_invalid = TRUE;
++ if (tp == curtab)
++ diff_redraw(TRUE);
+ }
+ }
+ }
+***************
+*** 102,107 ****
+--- 104,110 ----
+ {
+ curtab->tp_diffbuf[i] = NULL;
+ curtab->tp_diff_invalid = TRUE;
++ diff_redraw(TRUE);
+ }
+ }
+ }
+***************
+*** 131,136 ****
+--- 134,140 ----
+ {
+ curtab->tp_diffbuf[i] = buf;
+ curtab->tp_diff_invalid = TRUE;
++ diff_redraw(TRUE);
+ return;
+ }
+
+*** ../vim-7.2.058/src/version.c Sun Nov 30 12:14:35 2008
+--- src/version.c Sun Nov 30 15:13:18 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 59,
+ /**/
+
+--
+GUARD #2: Wait a minute -- supposing two swallows carried it together?
+GUARD #1: No, they'd have to have it on a line.
+GUARD #2: Well, simple! They'd just use a standard creeper!
+GUARD #1: What, held under the dorsal guiding feathers?
+GUARD #2: Well, why not?
+ 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.060 b/source/ap/vim/patches/7.2.060
new file mode 100644
index 000000000..ec6e6b787
--- /dev/null
+++ b/source/ap/vim/patches/7.2.060
@@ -0,0 +1,1102 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.060
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.060
+Problem: When a spell files has many compound rules it may take a very long
+ time making the list of suggestions. Displaying also can be slow
+ when there are misspelled words.
+ Can't parse some Hunspell .aff files.
+Solution: Check if a compounding can possibly work before trying a
+ combination, if the compound rules don't contain wildcards.
+ Implement using CHECKCOMPOUNDPATTERN.
+ Ignore COMPOUNDRULES. Ignore a comment after most items.
+ Accept ONLYINCOMPOUND as an alias for NEEDCOMPOUND.
+ Accept FORBIDDENWORD as an alias for BAD.
+Files: runtime/doc/spell.txt, src/spell.c
+
+
+*** ../vim-7.2.059/runtime/doc/spell.txt Sat Aug 9 19:36:52 2008
+--- runtime/doc/spell.txt Sun Nov 30 16:30:02 2008
+***************
+*** 1,4 ****
+! *spell.txt* For Vim version 7.2. Last change: 2008 Jun 21
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+--- 1,4 ----
+! *spell.txt* For Vim version 7.2. Last change: 2008 Nov 30
+
+
+ VIM REFERENCE MANUAL by Bram Moolenaar
+***************
+*** 831,838 ****
+
+ # comment line ~
+
+! With some items it's also possible to put a comment after it, but this isn't
+! supported in general.
+
+
+ ENCODING *spell-SET*
+--- 831,841 ----
+
+ # comment line ~
+
+! Items with a fixed number of arguments can be followed by a comment. But only
+! if none of the arguments can contain white space. The comment must start with
+! a "#" character. Example:
+!
+! KEEPCASE = # fix case for words with this flag ~
+
+
+ ENCODING *spell-SET*
+***************
+*** 965,970 ****
+--- 968,976 ----
+
+ Note: When using utf-8 only characters up to 65000 may be used for flags.
+
++ Note: even when using "num" or "long" the number of flags available to
++ compounding and prefixes is limited to about 250.
++
+
+ AFFIXES
+ *spell-PFX* *spell-SFX*
+***************
+*** 1178,1183 ****
+--- 1185,1193 ----
+ The flag also applies to the word with affixes, thus this can be used to mark
+ a whole bunch of related words as bad.
+
++ *spell-FORBIDDENWORD*
++ FORBIDDENWORD can be used just like BAD. For compatibility with Hunspell.
++
+ *spell-NEEDAFFIX*
+ The NEEDAFFIX flag is used to require that a word is used with an affix. The
+ word itself is not a good word (unless there is an empty affix). Example:
+***************
+*** 1268,1273 ****
+--- 1278,1287 ----
+
+ NEEDCOMPOUND & ~
+
++ *spell-ONLYINCOMPOUND*
++ The ONLYINCOMPOUND does exactly the same as NEEDCOMPOUND. Supported for
++ compatiblity with Hunspell.
++
+ *spell-COMPOUNDMIN*
+ The minimal character length of a word used for compounding is specified with
+ COMPOUNDMIN. Example:
+***************
+*** 1328,1333 ****
+--- 1342,1361 ----
+ rules. Can also be used for an affix to count the affix as a compounding
+ word.
+
++ *spell-CHECKCOMPOUNDPATTERN*
++ CHECKCOMPOUNDPATTERN is used to define patterns that, when matching at the
++ position where two words are compounded together forbids the compound.
++ For example:
++ CHECKCOMPOUNDPATTERN o e ~
++
++ This forbids compounding if the first word ends in "o" and the second word
++ starts with "e".
++
++ The arguments must be plain text, no patterns are actually supported, despite
++ the item name. Case is always ignored.
++
++ The Hunspell feature to use three arguments and flags is not supported.
++
+ *spell-SYLLABLE*
+ The SYLLABLE item defines characters or character sequences that are used to
+ count the number of syllables in a word. Example:
+***************
+*** 1496,1501 ****
+--- 1524,1533 ----
+ ACCENT (Hunspell) *spell-ACCENT*
+ Use MAP instead. |spell-MAP|
+
++ BREAK (Hunspell) *spell-BREAK*
++ Define break points. Unclear how it works exactly.
++ Not supported.
++
+ CHECKCOMPOUNDCASE (Hunspell) *spell-CHECKCOMPOUNDCASE*
+ Disallow uppercase letters at compound word boundaries.
+ Not supported.
+***************
+*** 1512,1520 ****
+ Forbid three identical characters when compounding. Not
+ supported.
+
+- CHECKCOMPOUNDPATTERN (Hunspell) *spell-CHECKCOMPOUNDPATTERN*
+- Forbid compounding when patterns match. Not supported.
+-
+ COMPLEXPREFIXES (Hunspell) *spell-COMPLEXPREFIXES*
+ Enables using two prefixes. Not supported.
+
+--- 1544,1549 ----
+***************
+*** 1536,1548 ****
+ COMPOUNDMIDDLE (Hunspell) *spell-COMPOUNDMIDDLE*
+ Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
+
+ COMPOUNDSYLLABLE (Hunspell) *spell-COMPOUNDSYLLABLE*
+ Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE|
+ |spell-COMPOUNDSYLMAX|
+
+! FORBIDDENWORD (Hunspell) *spell-FORBIDDENWORD*
+! Use BAD instead. |spell-BAD|
+!
+ LANG (Hunspell) *spell-LANG*
+ This specifies language-specific behavior. This actually
+ moves part of the language knowledge into the program,
+--- 1565,1582 ----
+ COMPOUNDMIDDLE (Hunspell) *spell-COMPOUNDMIDDLE*
+ Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
+
++ COMPOUNDRULES (Hunspell) *spell-COMPOUNDRULES*
++ Number of COMPOUNDRULE lines following. Ignored, but the
++ argument must be a number.
++
+ COMPOUNDSYLLABLE (Hunspell) *spell-COMPOUNDSYLLABLE*
+ Use SYLLABLE and COMPOUNDSYLMAX instead. |spell-SYLLABLE|
+ |spell-COMPOUNDSYLMAX|
+
+! KEY (Hunspell) *spell-KEY*
+! Define characters that are close together on the keyboard.
+! Used to give better suggestions. Not supported.
+!
+ LANG (Hunspell) *spell-LANG*
+ This specifies language-specific behavior. This actually
+ moves part of the language knowledge into the program,
+***************
+*** 1553,1562 ****
+ Only needed for morphological analysis.
+
+ MAXNGRAMSUGS (Hunspell) *spell-MAXNGRAMSUGS*
+! Not supported.
+!
+! ONLYINCOMPOUND (Hunspell) *spell-ONLYINCOMPOUND*
+! Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND|
+
+ PSEUDOROOT (Hunspell) *spell-PSEUDOROOT*
+ Use NEEDAFFIX instead. |spell-NEEDAFFIX|
+--- 1587,1593 ----
+ Only needed for morphological analysis.
+
+ MAXNGRAMSUGS (Hunspell) *spell-MAXNGRAMSUGS*
+! Set number of n-gram suggestions. Not supported.
+
+ PSEUDOROOT (Hunspell) *spell-PSEUDOROOT*
+ Use NEEDAFFIX instead. |spell-NEEDAFFIX|
+*** ../vim-7.2.059/src/spell.c Sat Nov 29 20:18:44 2008
+--- src/spell.c Sun Nov 30 20:59:13 2008
+***************
+*** 469,474 ****
+--- 469,475 ----
+ garray_T sl_comppat; /* CHECKCOMPOUNDPATTERN items */
+ regprog_T *sl_compprog; /* COMPOUNDRULE turned into a regexp progrm
+ * (NULL when no compounding) */
++ char_u *sl_comprules; /* all COMPOUNDRULE concatenated (or NULL) */
+ char_u *sl_compstartflags; /* flags for first compound word */
+ char_u *sl_compallflags; /* all flags for compound words */
+ char_u sl_nobreak; /* When TRUE: no spaces between words */
+***************
+*** 839,845 ****
+--- 840,849 ----
+ static void slang_clear __ARGS((slang_T *lp));
+ static void slang_clear_sug __ARGS((slang_T *lp));
+ static void find_word __ARGS((matchinf_T *mip, int mode));
++ static int match_checkcompoundpattern __ARGS((char_u *ptr, int wlen, garray_T *gap));
+ static int can_compound __ARGS((slang_T *slang, char_u *word, char_u *flags));
++ static int can_be_compound __ARGS((trystate_T *sp, slang_T *slang, char_u *compflags, int flag));
++ static int match_compoundrule __ARGS((slang_T *slang, char_u *compflags));
+ static int valid_word_prefix __ARGS((int totprefcnt, int arridx, int flags, char_u *word, slang_T *slang, int cond_req));
+ static void find_prefix __ARGS((matchinf_T *mip, int mode));
+ static int fold_more __ARGS((matchinf_T *mip));
+***************
+*** 1519,1524 ****
+--- 1523,1533 ----
+ ((unsigned)flags >> 24)))
+ continue;
+
++ /* If there is a match with a CHECKCOMPOUNDPATTERN rule
++ * discard the compound word. */
++ if (match_checkcompoundpattern(ptr, wlen, &slang->sl_comppat))
++ continue;
++
+ if (mode == FIND_COMPOUND)
+ {
+ int capflags;
+***************
+*** 1577,1582 ****
+--- 1586,1596 ----
+ if (!can_compound(slang, fword, mip->mi_compflags))
+ continue;
+ }
++ else if (slang->sl_comprules != NULL
++ && !match_compoundrule(slang, mip->mi_compflags))
++ /* The compound flags collected so far do not match any
++ * COMPOUNDRULE, discard the compounded word. */
++ continue;
+ }
+
+ /* Check NEEDCOMPOUND: can't use word without compounding. */
+***************
+*** 1727,1732 ****
+--- 1741,1779 ----
+ }
+
+ /*
++ * Return TRUE if there is a match between the word ptr[wlen] and
++ * CHECKCOMPOUNDPATTERN rules, assuming that we will concatenate with another
++ * word.
++ * A match means that the first part of CHECKCOMPOUNDPATTERN matches at the
++ * end of ptr[wlen] and the second part matches after it.
++ */
++ static int
++ match_checkcompoundpattern(ptr, wlen, gap)
++ char_u *ptr;
++ int wlen;
++ garray_T *gap; /* &sl_comppat */
++ {
++ int i;
++ char_u *p;
++ int len;
++
++ for (i = 0; i + 1 < gap->ga_len; i += 2)
++ {
++ p = ((char_u **)gap->ga_data)[i + 1];
++ if (STRNCMP(ptr + wlen, p, STRLEN(p)) == 0)
++ {
++ /* Second part matches at start of following compound word, now
++ * check if first part matches at end of previous word. */
++ p = ((char_u **)gap->ga_data)[i];
++ len = STRLEN(p);
++ if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
++ return TRUE;
++ }
++ }
++ return FALSE;
++ }
++
++ /*
+ * Return TRUE if "flags" is a valid sequence of compound flags and "word"
+ * does not have too many syllables.
+ */
+***************
+*** 1773,1778 ****
+--- 1820,1917 ----
+ }
+
+ /*
++ * Return TRUE when the sequence of flags in "compflags" plus "flag" can
++ * possibly form a valid compounded word. This also checks the COMPOUNDRULE
++ * lines if they don't contain wildcards.
++ */
++ static int
++ can_be_compound(sp, slang, compflags, flag)
++ trystate_T *sp;
++ slang_T *slang;
++ char_u *compflags;
++ int flag;
++ {
++ /* If the flag doesn't appear in sl_compstartflags or sl_compallflags
++ * then it can't possibly compound. */
++ if (!byte_in_str(sp->ts_complen == sp->ts_compsplit
++ ? slang->sl_compstartflags : slang->sl_compallflags, flag))
++ return FALSE;
++
++ /* If there are no wildcards, we can check if the flags collected so far
++ * possibly can form a match with COMPOUNDRULE patterns. This only
++ * makes sense when we have two or more words. */
++ if (slang->sl_comprules != NULL && sp->ts_complen > sp->ts_compsplit)
++ {
++ int v;
++
++ compflags[sp->ts_complen] = flag;
++ compflags[sp->ts_complen + 1] = NUL;
++ v = match_compoundrule(slang, compflags + sp->ts_compsplit);
++ compflags[sp->ts_complen] = NUL;
++ return v;
++ }
++
++ return TRUE;
++ }
++
++
++ /*
++ * Return TRUE if the compound flags in compflags[] match the start of any
++ * compound rule. This is used to stop trying a compound if the flags
++ * collected so far can't possibly match any compound rule.
++ * Caller must check that slang->sl_comprules is not NULL.
++ */
++ static int
++ match_compoundrule(slang, compflags)
++ slang_T *slang;
++ char_u *compflags;
++ {
++ char_u *p;
++ int i;
++ int c;
++
++ /* loop over all the COMPOUNDRULE entries */
++ for (p = slang->sl_comprules; *p != NUL; ++p)
++ {
++ /* loop over the flags in the compound word we have made, match
++ * them against the current rule entry */
++ for (i = 0; ; ++i)
++ {
++ c = compflags[i];
++ if (c == NUL)
++ /* found a rule that matches for the flags we have so far */
++ return TRUE;
++ if (*p == '/' || *p == NUL)
++ break; /* end of rule, it's too short */
++ if (*p == '[')
++ {
++ int match = FALSE;
++
++ /* compare against all the flags in [] */
++ ++p;
++ while (*p != ']' && *p != NUL)
++ if (*p++ == c)
++ match = TRUE;
++ if (!match)
++ break; /* none matches */
++ }
++ else if (*p != c)
++ break; /* flag of word doesn't match flag in pattern */
++ ++p;
++ }
++
++ /* Skip to the next "/", where the next pattern starts. */
++ p = vim_strchr(p, '/');
++ if (p == NULL)
++ break;
++ }
++
++ /* Checked all the rules and none of them match the flags, so there
++ * can't possibly be a compound starting with these flags. */
++ return FALSE;
++ }
++
++ /*
+ * Return non-zero if the prefix indicated by "arridx" matches with the prefix
+ * ID in "flags" for the word "word".
+ * The WF_RAREPFX flag is included in the return value for a rare prefix.
+***************
+*** 2513,2521 ****
+--- 2652,2662 ----
+ lp->sl_midword = NULL;
+
+ vim_free(lp->sl_compprog);
++ vim_free(lp->sl_comprules);
+ vim_free(lp->sl_compstartflags);
+ vim_free(lp->sl_compallflags);
+ lp->sl_compprog = NULL;
++ lp->sl_comprules = NULL;
+ lp->sl_compstartflags = NULL;
+ lp->sl_compallflags = NULL;
+
+***************
+*** 3460,3465 ****
+--- 3601,3607 ----
+ char_u *pp;
+ char_u *cp;
+ char_u *ap;
++ char_u *crp;
+ int cnt;
+ garray_T *gap;
+
+***************
+*** 3545,3550 ****
+--- 3687,3698 ----
+ slang->sl_compallflags = ap;
+ *ap = NUL;
+
++ /* And a list of all patterns in their original form, for checking whether
++ * compounding may work in match_compoundrule(). This is freed when we
++ * encounter a wildcard, the check doesn't work then. */
++ crp = alloc(todo + 1);
++ slang->sl_comprules = crp;
++
+ pp = pat;
+ *pp++ = '^';
+ *pp++ = '\\';
+***************
+*** 3587,3592 ****
+--- 3735,3754 ----
+ atstart = 0;
+ }
+ }
++
++ /* Copy flag to "sl_comprules", unless we run into a wildcard. */
++ if (crp != NULL)
++ {
++ if (c == '+' || c == '*')
++ {
++ vim_free(slang->sl_comprules);
++ slang->sl_comprules = NULL;
++ crp = NULL;
++ }
++ else
++ *crp++ = c;
++ }
++
+ if (c == '/') /* slash separates two items */
+ {
+ *pp++ = '\\';
+***************
+*** 3611,3616 ****
+--- 3773,3781 ----
+ *pp++ = '$';
+ *pp = NUL;
+
++ if (crp != NULL)
++ *crp = NUL;
++
+ slang->sl_compprog = vim_regcomp(pat, RE_MAGIC + RE_STRING + RE_STRICT);
+ vim_free(pat);
+ if (slang->sl_compprog == NULL)
+***************
+*** 4915,4920 ****
+--- 5080,5086 ----
+ } spellinfo_T;
+
+ static afffile_T *spell_read_aff __ARGS((spellinfo_T *spin, char_u *fname));
++ static int is_aff_rule __ARGS((char_u **items, int itemcnt, char *rulename, int mincount));
+ static void aff_process_flags __ARGS((afffile_T *affile, affentry_T *entry));
+ static int spell_info_item __ARGS((char_u *s));
+ static unsigned affitem2flag __ARGS((int flagtype, char_u *item, char_u *fname, int lnum));
+***************
+*** 5223,5230 ****
+ /* Handle non-empty lines. */
+ if (itemcnt > 0)
+ {
+! if (STRCMP(items[0], "SET") == 0 && itemcnt == 2
+! && aff->af_enc == NULL)
+ {
+ #ifdef FEAT_MBYTE
+ /* Setup for conversion from "ENC" to 'encoding'. */
+--- 5389,5395 ----
+ /* Handle non-empty lines. */
+ if (itemcnt > 0)
+ {
+! if (is_aff_rule(items, itemcnt, "SET", 2) && aff->af_enc == NULL)
+ {
+ #ifdef FEAT_MBYTE
+ /* Setup for conversion from "ENC" to 'encoding'. */
+***************
+*** 5239,5245 ****
+ smsg((char_u *)_("Conversion in %s not supported"), fname);
+ #endif
+ }
+! else if (STRCMP(items[0], "FLAG") == 0 && itemcnt == 2
+ && aff->af_flagtype == AFT_CHAR)
+ {
+ if (STRCMP(items[1], "long") == 0)
+--- 5404,5410 ----
+ smsg((char_u *)_("Conversion in %s not supported"), fname);
+ #endif
+ }
+! else if (is_aff_rule(items, itemcnt, "FLAG", 2)
+ && aff->af_flagtype == AFT_CHAR)
+ {
+ if (STRCMP(items[1], "long") == 0)
+***************
+*** 5284,5352 ****
+ spin->si_info = p;
+ }
+ }
+! else if (STRCMP(items[0], "MIDWORD") == 0 && itemcnt == 2
+ && midword == NULL)
+ {
+ midword = getroom_save(spin, items[1]);
+ }
+! else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2)
+ {
+ /* ignored, we look in the tree for what chars may appear */
+ }
+ /* TODO: remove "RAR" later */
+! else if ((STRCMP(items[0], "RAR") == 0
+! || STRCMP(items[0], "RARE") == 0) && itemcnt == 2
+! && aff->af_rare == 0)
+ {
+ aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+ /* TODO: remove "KEP" later */
+! else if ((STRCMP(items[0], "KEP") == 0
+! || STRCMP(items[0], "KEEPCASE") == 0) && itemcnt == 2
+ && aff->af_keepcase == 0)
+ {
+ aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "BAD") == 0 && itemcnt == 2
+! && aff->af_bad == 0)
+ {
+ aff->af_bad = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "NEEDAFFIX") == 0 && itemcnt == 2
+ && aff->af_needaffix == 0)
+ {
+ aff->af_needaffix = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "CIRCUMFIX") == 0 && itemcnt == 2
+ && aff->af_circumfix == 0)
+ {
+ aff->af_circumfix = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "NOSUGGEST") == 0 && itemcnt == 2
+ && aff->af_nosuggest == 0)
+ {
+ aff->af_nosuggest = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "NEEDCOMPOUND") == 0 && itemcnt == 2
+ && aff->af_needcomp == 0)
+ {
+ aff->af_needcomp = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "COMPOUNDROOT") == 0 && itemcnt == 2
+ && aff->af_comproot == 0)
+ {
+ aff->af_comproot = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "COMPOUNDFORBIDFLAG") == 0
+! && itemcnt == 2 && aff->af_compforbid == 0)
+ {
+ aff->af_compforbid = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+--- 5449,5519 ----
+ spin->si_info = p;
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "MIDWORD", 2)
+ && midword == NULL)
+ {
+ midword = getroom_save(spin, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "TRY", 2))
+ {
+ /* ignored, we look in the tree for what chars may appear */
+ }
+ /* TODO: remove "RAR" later */
+! else if ((is_aff_rule(items, itemcnt, "RAR", 2)
+! || is_aff_rule(items, itemcnt, "RARE", 2))
+! && aff->af_rare == 0)
+ {
+ aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+ /* TODO: remove "KEP" later */
+! else if ((is_aff_rule(items, itemcnt, "KEP", 2)
+! || is_aff_rule(items, itemcnt, "KEEPCASE", 2))
+ && aff->af_keepcase == 0)
+ {
+ aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if ((is_aff_rule(items, itemcnt, "BAD", 2)
+! || is_aff_rule(items, itemcnt, "FORBIDDENWORD", 2))
+! && aff->af_bad == 0)
+ {
+ aff->af_bad = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "NEEDAFFIX", 2)
+ && aff->af_needaffix == 0)
+ {
+ aff->af_needaffix = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "CIRCUMFIX", 2)
+ && aff->af_circumfix == 0)
+ {
+ aff->af_circumfix = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "NOSUGGEST", 2)
+ && aff->af_nosuggest == 0)
+ {
+ aff->af_nosuggest = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if ((is_aff_rule(items, itemcnt, "NEEDCOMPOUND", 2)
+! || is_aff_rule(items, itemcnt, "ONLYINCOMPOUND", 2))
+ && aff->af_needcomp == 0)
+ {
+ aff->af_needcomp = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDROOT", 2)
+ && aff->af_comproot == 0)
+ {
+ aff->af_comproot = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDFORBIDFLAG", 2)
+! && aff->af_compforbid == 0)
+ {
+ aff->af_compforbid = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+***************
+*** 5354,5361 ****
+ smsg((char_u *)_("Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %d"),
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "COMPOUNDPERMITFLAG") == 0
+! && itemcnt == 2 && aff->af_comppermit == 0)
+ {
+ aff->af_comppermit = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+--- 5521,5528 ----
+ smsg((char_u *)_("Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line %d"),
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDPERMITFLAG", 2)
+! && aff->af_comppermit == 0)
+ {
+ aff->af_comppermit = affitem2flag(aff->af_flagtype, items[1],
+ fname, lnum);
+***************
+*** 5363,5369 ****
+ smsg((char_u *)_("Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %d"),
+ fname, lnum);
+ }
+! else if (STRCMP(items[0], "COMPOUNDFLAG") == 0 && itemcnt == 2
+ && compflags == NULL)
+ {
+ /* Turn flag "c" into COMPOUNDRULE compatible string "c+",
+--- 5530,5536 ----
+ smsg((char_u *)_("Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line %d"),
+ fname, lnum);
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDFLAG", 2)
+ && compflags == NULL)
+ {
+ /* Turn flag "c" into COMPOUNDRULE compatible string "c+",
+***************
+*** 5376,5382 ****
+ compflags = p;
+ }
+ }
+! else if (STRCMP(items[0], "COMPOUNDRULE") == 0 && itemcnt == 2)
+ {
+ /* Concatenate this string to previously defined ones, using a
+ * slash to separate them. */
+--- 5543,5557 ----
+ compflags = p;
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDRULES", 2))
+! {
+! /* We don't use the count, but do check that it's a number and
+! * not COMPOUNDRULE mistyped. */
+! if (atoi((char *)items[1]) == 0)
+! smsg((char_u *)_("Wrong COMPOUNDRULES value in %s line %d: %s"),
+! fname, lnum, items[1]);
+! }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDRULE", 2))
+ {
+ /* Concatenate this string to previously defined ones, using a
+ * slash to separate them. */
+***************
+*** 5395,5401 ****
+ compflags = p;
+ }
+ }
+! else if (STRCMP(items[0], "COMPOUNDWORDMAX") == 0 && itemcnt == 2
+ && compmax == 0)
+ {
+ compmax = atoi((char *)items[1]);
+--- 5570,5576 ----
+ compflags = p;
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDWORDMAX", 2)
+ && compmax == 0)
+ {
+ compmax = atoi((char *)items[1]);
+***************
+*** 5403,5409 ****
+ smsg((char_u *)_("Wrong COMPOUNDWORDMAX value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (STRCMP(items[0], "COMPOUNDMIN") == 0 && itemcnt == 2
+ && compminlen == 0)
+ {
+ compminlen = atoi((char *)items[1]);
+--- 5578,5584 ----
+ smsg((char_u *)_("Wrong COMPOUNDWORDMAX value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDMIN", 2)
+ && compminlen == 0)
+ {
+ compminlen = atoi((char *)items[1]);
+***************
+*** 5411,5417 ****
+ smsg((char_u *)_("Wrong COMPOUNDMIN value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (STRCMP(items[0], "COMPOUNDSYLMAX") == 0 && itemcnt == 2
+ && compsylmax == 0)
+ {
+ compsylmax = atoi((char *)items[1]);
+--- 5586,5592 ----
+ smsg((char_u *)_("Wrong COMPOUNDMIN value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "COMPOUNDSYLMAX", 2)
+ && compsylmax == 0)
+ {
+ compsylmax = atoi((char *)items[1]);
+***************
+*** 5419,5450 ****
+ smsg((char_u *)_("Wrong COMPOUNDSYLMAX value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (STRCMP(items[0], "CHECKCOMPOUNDDUP") == 0 && itemcnt == 1)
+ {
+ compoptions |= COMP_CHECKDUP;
+ }
+! else if (STRCMP(items[0], "CHECKCOMPOUNDREP") == 0 && itemcnt == 1)
+ {
+ compoptions |= COMP_CHECKREP;
+ }
+! else if (STRCMP(items[0], "CHECKCOMPOUNDCASE") == 0 && itemcnt == 1)
+ {
+ compoptions |= COMP_CHECKCASE;
+ }
+! else if (STRCMP(items[0], "CHECKCOMPOUNDTRIPLE") == 0
+! && itemcnt == 1)
+ {
+ compoptions |= COMP_CHECKTRIPLE;
+ }
+! else if (STRCMP(items[0], "CHECKCOMPOUNDPATTERN") == 0
+! && itemcnt == 2)
+ {
+ if (atoi((char *)items[1]) == 0)
+ smsg((char_u *)_("Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (STRCMP(items[0], "CHECKCOMPOUNDPATTERN") == 0
+! && itemcnt == 3)
+ {
+ garray_T *gap = &spin->si_comppat;
+ int i;
+--- 5594,5622 ----
+ smsg((char_u *)_("Wrong COMPOUNDSYLMAX value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDDUP", 1))
+ {
+ compoptions |= COMP_CHECKDUP;
+ }
+! else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDREP", 1))
+ {
+ compoptions |= COMP_CHECKREP;
+ }
+! else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDCASE", 1))
+ {
+ compoptions |= COMP_CHECKCASE;
+ }
+! else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDTRIPLE", 1))
+ {
+ compoptions |= COMP_CHECKTRIPLE;
+ }
+! else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDPATTERN", 2))
+ {
+ if (atoi((char *)items[1]) == 0)
+ smsg((char_u *)_("Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"),
+ fname, lnum, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "CHECKCOMPOUNDPATTERN", 3))
+ {
+ garray_T *gap = &spin->si_comppat;
+ int i;
+***************
+*** 5463,5486 ****
+ = getroom_save(spin, items[2]);
+ }
+ }
+! else if (STRCMP(items[0], "SYLLABLE") == 0 && itemcnt == 2
+ && syllable == NULL)
+ {
+ syllable = getroom_save(spin, items[1]);
+ }
+! else if (STRCMP(items[0], "NOBREAK") == 0 && itemcnt == 1)
+ {
+ spin->si_nobreak = TRUE;
+ }
+! else if (STRCMP(items[0], "NOSPLITSUGS") == 0 && itemcnt == 1)
+ {
+ spin->si_nosplitsugs = TRUE;
+ }
+! else if (STRCMP(items[0], "NOSUGFILE") == 0 && itemcnt == 1)
+ {
+ spin->si_nosugfile = TRUE;
+ }
+! else if (STRCMP(items[0], "PFXPOSTPONE") == 0 && itemcnt == 1)
+ {
+ aff->af_pfxpostpone = TRUE;
+ }
+--- 5635,5658 ----
+ = getroom_save(spin, items[2]);
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "SYLLABLE", 2)
+ && syllable == NULL)
+ {
+ syllable = getroom_save(spin, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "NOBREAK", 1))
+ {
+ spin->si_nobreak = TRUE;
+ }
+! else if (is_aff_rule(items, itemcnt, "NOSPLITSUGS", 1))
+ {
+ spin->si_nosplitsugs = TRUE;
+ }
+! else if (is_aff_rule(items, itemcnt, "NOSUGFILE", 1))
+ {
+ spin->si_nosugfile = TRUE;
+ }
+! else if (is_aff_rule(items, itemcnt, "PFXPOSTPONE", 1))
+ {
+ aff->af_pfxpostpone = TRUE;
+ }
+***************
+*** 5771,5794 ****
+ }
+ }
+ }
+! else if (STRCMP(items[0], "FOL") == 0 && itemcnt == 2
+! && fol == NULL)
+ {
+ fol = vim_strsave(items[1]);
+ }
+! else if (STRCMP(items[0], "LOW") == 0 && itemcnt == 2
+! && low == NULL)
+ {
+ low = vim_strsave(items[1]);
+ }
+! else if (STRCMP(items[0], "UPP") == 0 && itemcnt == 2
+! && upp == NULL)
+ {
+ upp = vim_strsave(items[1]);
+ }
+! else if ((STRCMP(items[0], "REP") == 0
+! || STRCMP(items[0], "REPSAL") == 0)
+! && itemcnt == 2)
+ {
+ /* Ignore REP/REPSAL count */;
+ if (!isdigit(*items[1]))
+--- 5943,5962 ----
+ }
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "FOL", 2) && fol == NULL)
+ {
+ fol = vim_strsave(items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "LOW", 2) && low == NULL)
+ {
+ low = vim_strsave(items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "UPP", 2) && upp == NULL)
+ {
+ upp = vim_strsave(items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "REP", 2)
+! || is_aff_rule(items, itemcnt, "REPSAL", 2))
+ {
+ /* Ignore REP/REPSAL count */;
+ if (!isdigit(*items[1]))
+***************
+*** 5819,5825 ****
+ : &spin->si_rep, items[1], items[2]);
+ }
+ }
+! else if (STRCMP(items[0], "MAP") == 0 && itemcnt == 2)
+ {
+ /* MAP item or count */
+ if (!found_map)
+--- 5987,5993 ----
+ : &spin->si_rep, items[1], items[2]);
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "MAP", 2))
+ {
+ /* MAP item or count */
+ if (!found_map)
+***************
+*** 5856,5864 ****
+ ga_append(&spin->si_map, '/');
+ }
+ }
+! /* Accept "SAL from to" and "SAL from to # comment". */
+! else if (STRCMP(items[0], "SAL") == 0
+! && (itemcnt == 3 || (itemcnt > 3 && items[3][0] == '#')))
+ {
+ if (do_sal)
+ {
+--- 6024,6031 ----
+ ga_append(&spin->si_map, '/');
+ }
+ }
+! /* Accept "SAL from to" and "SAL from to #comment". */
+! else if (is_aff_rule(items, itemcnt, "SAL", 3))
+ {
+ if (do_sal)
+ {
+***************
+*** 5877,5888 ****
+ : items[2]);
+ }
+ }
+! else if (STRCMP(items[0], "SOFOFROM") == 0 && itemcnt == 2
+ && sofofrom == NULL)
+ {
+ sofofrom = getroom_save(spin, items[1]);
+ }
+! else if (STRCMP(items[0], "SOFOTO") == 0 && itemcnt == 2
+ && sofoto == NULL)
+ {
+ sofoto = getroom_save(spin, items[1]);
+--- 6044,6055 ----
+ : items[2]);
+ }
+ }
+! else if (is_aff_rule(items, itemcnt, "SOFOFROM", 2)
+ && sofofrom == NULL)
+ {
+ sofofrom = getroom_save(spin, items[1]);
+ }
+! else if (is_aff_rule(items, itemcnt, "SOFOTO", 2)
+ && sofoto == NULL)
+ {
+ sofoto = getroom_save(spin, items[1]);
+***************
+*** 6017,6022 ****
+--- 6184,6205 ----
+ }
+
+ /*
++ * Return TRUE when items[0] equals "rulename", there are "mincount" items or
++ * a comment is following after item "mincount".
++ */
++ static int
++ is_aff_rule(items, itemcnt, rulename, mincount)
++ char_u **items;
++ int itemcnt;
++ char *rulename;
++ int mincount;
++ {
++ return (STRCMP(items[0], rulename) == 0
++ && (itemcnt == mincount
++ || (itemcnt > mincount && items[mincount][0] == '#')));
++ }
++
++ /*
+ * For affix "entry" move COMPOUNDFORBIDFLAG and COMPOUNDPERMITFLAG from
+ * ae_flags to ae_comppermit and ae_compforbid.
+ */
+***************
+*** 11492,11506 ****
+ vim_strncpy(preword + sp->ts_prewordlen,
+ tword + sp->ts_splitoff,
+ sp->ts_twordlen - sp->ts_splitoff);
+! p = preword;
+! while (*skiptowhite(p) != NUL)
+! p = skipwhite(skiptowhite(p));
+! if (fword_ends && !can_compound(slang, p,
+! compflags + sp->ts_compsplit))
+! /* Compound is not allowed. But it may still be
+! * possible if we add another (short) word. */
+ compound_ok = FALSE;
+
+ /* Get pointer to last char of previous word. */
+ p = preword + sp->ts_prewordlen;
+ mb_ptr_back(preword, p);
+--- 11675,11698 ----
+ vim_strncpy(preword + sp->ts_prewordlen,
+ tword + sp->ts_splitoff,
+ sp->ts_twordlen - sp->ts_splitoff);
+!
+! /* Verify CHECKCOMPOUNDPATTERN rules. */
+! if (match_checkcompoundpattern(preword, sp->ts_prewordlen,
+! &slang->sl_comppat))
+ compound_ok = FALSE;
+
++ if (compound_ok)
++ {
++ p = preword;
++ while (*skiptowhite(p) != NUL)
++ p = skipwhite(skiptowhite(p));
++ if (fword_ends && !can_compound(slang, p,
++ compflags + sp->ts_compsplit))
++ /* Compound is not allowed. But it may still be
++ * possible if we add another (short) word. */
++ compound_ok = FALSE;
++ }
++
+ /* Get pointer to last char of previous word. */
+ p = preword + sp->ts_prewordlen;
+ mb_ptr_back(preword, p);
+***************
+*** 11697,11706 ****
+ && (slang->sl_compsylmax < MAXWLEN
+ || sp->ts_complen + 1 - sp->ts_compsplit
+ < slang->sl_compmax)
+! && (byte_in_str(sp->ts_complen == sp->ts_compsplit
+! ? slang->sl_compstartflags
+! : slang->sl_compallflags,
+! ((unsigned)flags >> 24))))
+ {
+ try_compound = TRUE;
+ compflags[sp->ts_complen] = ((unsigned)flags >> 24);
+--- 11889,11897 ----
+ && (slang->sl_compsylmax < MAXWLEN
+ || sp->ts_complen + 1 - sp->ts_compsplit
+ < slang->sl_compmax)
+! && (can_be_compound(sp, slang,
+! compflags, ((unsigned)flags >> 24))))
+!
+ {
+ try_compound = TRUE;
+ compflags[sp->ts_complen] = ((unsigned)flags >> 24);
+*** ../vim-7.2.059/src/version.c Sun Nov 30 15:15:56 2008
+--- src/version.c Sun Nov 30 21:09:23 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 60,
+ /**/
+
+--
+DEAD PERSON: I'm getting better!
+CUSTOMER: No, you're not -- you'll be stone dead in a moment.
+MORTICIAN: Oh, I can't take him like that -- it's against regulations.
+ 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.061 b/source/ap/vim/patches/7.2.061
new file mode 100644
index 000000000..787aa66af
--- /dev/null
+++ b/source/ap/vim/patches/7.2.061
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.061
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.061
+Problem: Can't create a funcref for an autoload function without loading
+ the script first. (Marc Weber)
+Solution: Accept autoload functions that don't exist yet in function().
+Files: src/eval.c
+
+
+*** ../vim-7.2.060/src/eval.c Fri Nov 28 21:26:50 2008
+--- src/eval.c Sat Nov 29 12:28:51 2008
+***************
+*** 10339,10345 ****
+ s = get_tv_string(&argvars[0]);
+ if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
+ EMSG2(_(e_invarg2), s);
+! else if (!function_exists(s))
+ EMSG2(_("E700: Unknown function: %s"), s);
+ else
+ {
+--- 10339,10346 ----
+ s = get_tv_string(&argvars[0]);
+ if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
+ EMSG2(_(e_invarg2), s);
+! /* Don't check an autoload name for existence here. */
+! else if (vim_strchr(s, AUTOLOAD_CHAR) == NULL && !function_exists(s))
+ EMSG2(_("E700: Unknown function: %s"), s);
+ else
+ {
+*** ../vim-7.2.060/src/version.c Sun Nov 30 21:11:54 2008
+--- src/version.c Wed Dec 3 09:49:07 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 61,
+ /**/
+
+--
+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.062 b/source/ap/vim/patches/7.2.062
new file mode 100644
index 000000000..6b4b8909e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.062
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.062
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.062
+Problem: "[Scratch]" is not translated.
+Solution: Mark the string for translation. (Dominique Pelle)
+Files: src/buffer.c
+
+
+*** ../vim-7.2.061/src/buffer.c Sat Nov 15 16:05:30 2008
+--- src/buffer.c Tue Dec 2 21:51:02 2008
+***************
+*** 5118,5124 ****
+ {
+ if (buf->b_sfname != NULL)
+ return (char *)buf->b_sfname;
+! return "[Scratch]";
+ }
+ #endif
+ if (buf->b_fname == NULL)
+--- 5118,5124 ----
+ {
+ if (buf->b_sfname != NULL)
+ return (char *)buf->b_sfname;
+! return _("[Scratch]");
+ }
+ #endif
+ if (buf->b_fname == NULL)
+*** ../vim-7.2.061/src/version.c Wed Dec 3 09:51:19 2008
+--- src/version.c Wed Dec 3 11:20:30 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 62,
+ /**/
+
+--
+DENNIS: Listen -- strange women lying in ponds distributing swords is no
+ basis for a system of government. Supreme executive power derives
+ from a mandate from the masses, not from some farcical aquatic
+ ceremony.
+ 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.063 b/source/ap/vim/patches/7.2.063
new file mode 100644
index 000000000..f95155469
--- /dev/null
+++ b/source/ap/vim/patches/7.2.063
@@ -0,0 +1,103 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.063
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.063
+Problem: Warning for NULL argument of Perl_sys_init3().
+Solution: Use Perl_sys_init() instead. (partly by Dominique Pelle)
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.062/src/if_perl.xs Mon Sep 1 17:56:05 2008
+--- src/if_perl.xs Wed Dec 3 12:44:38 2008
+***************
+*** 166,172 ****
+ # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
+ # define boot_DynaLoader dll_boot_DynaLoader
+
+! # define Perl_sys_init3 dll_Perl_sys_init3
+ # define Perl_sys_term dll_Perl_sys_term
+ # define Perl_ISv_ptr dll_Perl_ISv_ptr
+ # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
+--- 166,172 ----
+ # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr
+ # define boot_DynaLoader dll_boot_DynaLoader
+
+! # define Perl_sys_init dll_Perl_sys_init
+ # define Perl_sys_term dll_Perl_sys_term
+ # define Perl_ISv_ptr dll_Perl_ISv_ptr
+ # define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr
+***************
+*** 272,278 ****
+
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ static void (*Perl_sv_free2)(pTHX_ SV*);
+! static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env);
+ static void (*Perl_sys_term)(void);
+ static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
+ static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
+--- 272,278 ----
+
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+ static void (*Perl_sv_free2)(pTHX_ SV*);
+! static void (*Perl_sys_init)(int* argc, char*** argv);
+ static void (*Perl_sys_term)(void);
+ static SV** (*Perl_ISv_ptr)(register PerlInterpreter*);
+ static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*);
+***************
+*** 372,378 ****
+ {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
+ #else
+ {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
+! {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3},
+ {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
+ {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
+ {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
+--- 372,378 ----
+ {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr},
+ #else
+ {"Perl_sv_free2", (PERL_PROC*)&Perl_sv_free2},
+! {"Perl_sys_init", (PERL_PROC*)&Perl_sys_init},
+ {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term},
+ {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr},
+ {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr},
+***************
+*** 460,466 ****
+ static char *argv[] = { "", "-e", "" };
+
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+! Perl_sys_init3(&argc, (char***)&argv, NULL);
+ #endif
+ perl_interp = perl_alloc();
+ perl_construct(perl_interp);
+--- 460,466 ----
+ static char *argv[] = { "", "-e", "" };
+
+ #if (PERL_REVISION == 5) && (PERL_VERSION >= 10)
+! Perl_sys_init(&argc, (char***)&argv);
+ #endif
+ perl_interp = perl_alloc();
+ perl_construct(perl_interp);
+*** ../vim-7.2.062/src/version.c Wed Dec 3 11:21:20 2008
+--- src/version.c Wed Dec 3 12:42:50 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 63,
+ /**/
+
+--
+Windows
+M!uqoms
+
+ /// 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.064 b/source/ap/vim/patches/7.2.064
new file mode 100644
index 000000000..48ca877ed
--- /dev/null
+++ b/source/ap/vim/patches/7.2.064
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.064
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.064
+Problem: Screen update bug when repeating "~" on a Visual block and the
+ last line doesn't change.
+Solution: Keep track of changes for all lines. (Moritz Orbach)
+Files: src/ops.c
+
+
+*** ../vim-7.2.063/src/ops.c Tue Jun 24 23:59:55 2008
+--- src/ops.c Wed Dec 3 13:12:06 2008
+***************
+*** 2209,2220 ****
+ {
+ for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
+ {
+ block_prep(oap, &bd, pos.lnum, FALSE);
+ pos.col = bd.textcol;
+! did_change = swapchars(oap->op_type, &pos, bd.textlen);
+
+ # ifdef FEAT_NETBEANS_INTG
+! if (usingNetbeans && did_change)
+ {
+ char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
+
+--- 2209,2223 ----
+ {
+ for (; pos.lnum <= oap->end.lnum; ++pos.lnum)
+ {
++ int one_change;
++
+ block_prep(oap, &bd, pos.lnum, FALSE);
+ pos.col = bd.textcol;
+! one_change = swapchars(oap->op_type, &pos, bd.textlen);
+! did_change |= one_change;
+
+ # ifdef FEAT_NETBEANS_INTG
+! if (usingNetbeans && one_change)
+ {
+ char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
+
+*** ../vim-7.2.063/src/version.c Wed Dec 3 13:18:16 2008
+--- src/version.c Wed Dec 3 13:14:46 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 64,
+ /**/
+
+--
+Q: How many hardware engineers does it take to change a lightbulb?
+A: None. We'll fix it in software.
+
+ /// 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.065 b/source/ap/vim/patches/7.2.065
new file mode 100644
index 000000000..d2cac8416
--- /dev/null
+++ b/source/ap/vim/patches/7.2.065
@@ -0,0 +1,177 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.065
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.065
+Problem: GTK GUI: the cursor disappears when doing ":vsp" and the Vim
+ window is maximized. (Dominique Pelle, Denis Smolyar)
+Solution: Don't change "Columns" back to an old value at a wrong moment.
+ Do change "Rows" when it should not be a problem.
+Files: src/gui.c
+
+
+*** ../vim-7.2.064/src/gui.c Fri Nov 28 21:26:50 2008
+--- src/gui.c Wed Dec 3 18:01:21 2008
+***************
+*** 3241,3247 ****
+ i = Rows;
+ gui_update_tabline();
+ Rows = i;
+! need_set_size = RESIZE_VERT;
+ if (using_tabline)
+ fix_size = TRUE;
+ if (!gui_use_tabline())
+--- 3241,3247 ----
+ i = Rows;
+ gui_update_tabline();
+ Rows = i;
+! need_set_size |= RESIZE_VERT;
+ if (using_tabline)
+ fix_size = TRUE;
+ if (!gui_use_tabline())
+***************
+*** 3275,3283 ****
+ if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
+ {
+ if (i == SBAR_BOTTOM)
+! need_set_size = RESIZE_VERT;
+ else
+! need_set_size = RESIZE_HOR;
+ if (gui.which_scrollbars[i])
+ fix_size = TRUE;
+ }
+--- 3275,3283 ----
+ if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
+ {
+ if (i == SBAR_BOTTOM)
+! need_set_size |= RESIZE_VERT;
+ else
+! need_set_size |= RESIZE_HOR;
+ if (gui.which_scrollbars[i])
+ fix_size = TRUE;
+ }
+***************
+*** 3297,3303 ****
+ gui_mch_enable_menu(gui.menu_is_active);
+ Rows = i;
+ prev_menu_is_active = gui.menu_is_active;
+! need_set_size = RESIZE_VERT;
+ if (gui.menu_is_active)
+ fix_size = TRUE;
+ }
+--- 3297,3303 ----
+ gui_mch_enable_menu(gui.menu_is_active);
+ Rows = i;
+ prev_menu_is_active = gui.menu_is_active;
+! need_set_size |= RESIZE_VERT;
+ if (gui.menu_is_active)
+ fix_size = TRUE;
+ }
+***************
+*** 3308,3314 ****
+ {
+ gui_mch_show_toolbar(using_toolbar);
+ prev_toolbar = using_toolbar;
+! need_set_size = RESIZE_VERT;
+ if (using_toolbar)
+ fix_size = TRUE;
+ }
+--- 3308,3314 ----
+ {
+ gui_mch_show_toolbar(using_toolbar);
+ prev_toolbar = using_toolbar;
+! need_set_size |= RESIZE_VERT;
+ if (using_toolbar)
+ fix_size = TRUE;
+ }
+***************
+*** 3318,3324 ****
+ {
+ gui_mch_enable_footer(using_footer);
+ prev_footer = using_footer;
+! need_set_size = RESIZE_VERT;
+ if (using_footer)
+ fix_size = TRUE;
+ }
+--- 3318,3324 ----
+ {
+ gui_mch_enable_footer(using_footer);
+ prev_footer = using_footer;
+! need_set_size |= RESIZE_VERT;
+ if (using_footer)
+ fix_size = TRUE;
+ }
+***************
+*** 3330,3339 ****
+ prev_tearoff = using_tearoff;
+ }
+ #endif
+! if (need_set_size)
+ {
+ #ifdef FEAT_GUI_GTK
+! long c = Columns;
+ #endif
+ /* Adjust the size of the window to make the text area keep the
+ * same size and to avoid that part of our window is off-screen
+--- 3330,3340 ----
+ prev_tearoff = using_tearoff;
+ }
+ #endif
+! if (need_set_size != 0)
+ {
+ #ifdef FEAT_GUI_GTK
+! long prev_Columns = Columns;
+! long prev_Rows = Rows;
+ #endif
+ /* Adjust the size of the window to make the text area keep the
+ * same size and to avoid that part of our window is off-screen
+***************
+*** 3349,3359 ****
+ * If you remove this, please test this command for resizing
+ * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
+ * Don't do this while starting up though.
+! * And don't change Rows, it may have be reduced intentionally
+! * when adding menu/toolbar/tabline. */
+! if (!gui.starting)
+ (void)char_avail();
+! Columns = c;
+ #endif
+ }
+ #ifdef FEAT_WINDOWS
+--- 3350,3363 ----
+ * If you remove this, please test this command for resizing
+ * effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
+ * Don't do this while starting up though.
+! * Don't change Rows when adding menu/toolbar/tabline.
+! * Don't change Columns when adding vertical toolbar. */
+! if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
+ (void)char_avail();
+! if ((need_set_size & RESIZE_VERT) == 0)
+! Rows = prev_Rows;
+! if ((need_set_size & RESIZE_HOR) == 0)
+! Columns = prev_Columns;
+ #endif
+ }
+ #ifdef FEAT_WINDOWS
+*** ../vim-7.2.064/src/version.c Wed Dec 3 13:38:00 2008
+--- src/version.c Wed Dec 3 18:47:11 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 65,
+ /**/
+
+--
+Seen on the back of a biker's vest: If you can read this, my wife fell off.
+
+ /// 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.066 b/source/ap/vim/patches/7.2.066
new file mode 100644
index 000000000..a5991d428
--- /dev/null
+++ b/source/ap/vim/patches/7.2.066
@@ -0,0 +1,70 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.066
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.066
+Problem: It's not easy to see whether 'encoding' is a multi-byte encoding.
+Solution: Add has('multi_byte_encoding').
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.2.065/runtime/doc/eval.txt Fri Nov 28 11:15:10 2008
+--- runtime/doc/eval.txt Tue Dec 9 10:55:59 2008
+***************
+*** 5841,5847 ****
+ mouse_pterm Compiled with support for qnx pterm mouse.
+ mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse)
+ mouse_xterm Compiled with support for xterm mouse.
+! multi_byte Compiled with support for editing Korean et al.
+ multi_byte_ime Compiled with support for IME input method.
+ multi_lang Compiled with support for multiple languages.
+ mzscheme Compiled with MzScheme interface |mzscheme|.
+--- 5852,5859 ----
+ mouse_pterm Compiled with support for qnx pterm mouse.
+ mouse_sysmouse Compiled with support for sysmouse (*BSD console mouse)
+ mouse_xterm Compiled with support for xterm mouse.
+! multi_byte Compiled with support for 'encoding'
+! multi_byte_encoding 'encoding' is set to a multi-byte encoding.
+ multi_byte_ime Compiled with support for IME input method.
+ multi_lang Compiled with support for multiple languages.
+ mzscheme Compiled with MzScheme interface |mzscheme|.
+*** ../vim-7.2.065/src/eval.c Wed Dec 3 09:51:19 2008
+--- src/eval.c Wed Dec 3 14:29:09 2008
+***************
+*** 11842,11847 ****
+--- 11842,11851 ----
+ n = has_patch(atoi((char *)name + 5));
+ else if (STRICMP(name, "vim_starting") == 0)
+ n = (starting != 0);
++ #ifdef FEAT_MBYTE
++ else if (STRICMP(name, "multi_byte_encoding") == 0)
++ n = has_mbyte;
++ #endif
+ #if defined(FEAT_BEVAL) && defined(FEAT_GUI_W32)
+ else if (STRICMP(name, "balloon_multiline") == 0)
+ n = multiline_balloon_available();
+*** ../vim-7.2.065/src/version.c Wed Dec 3 18:50:09 2008
+--- src/version.c Tue Dec 9 10:48:49 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 66,
+ /**/
+
+--
+ARTHUR: Listen, old crone! Unless you tell us where we can buy a shrubbery,
+ my friend and I will ... we will say "Ni!"
+CRONE: Do your worst!
+ "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.067 b/source/ap/vim/patches/7.2.067
new file mode 100644
index 000000000..079a05302
--- /dev/null
+++ b/source/ap/vim/patches/7.2.067
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.067
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.067
+Problem: Session file can't load extra file when the path contains special
+ characters.
+Solution: Escape the file name. (Lech Lorens)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.066/src/ex_docmd.c Fri Nov 28 21:26:50 2008
+--- src/ex_docmd.c Fri Dec 5 21:34:11 2008
+***************
+*** 10106,10112 ****
+ */
+ if (put_line(fd, "let s:sx = expand(\"<sfile>:p:r\").\"x.vim\"") == FAIL
+ || put_line(fd, "if file_readable(s:sx)") == FAIL
+! || put_line(fd, " exe \"source \" . s:sx") == FAIL
+ || put_line(fd, "endif") == FAIL)
+ return FAIL;
+
+--- 10106,10112 ----
+ */
+ if (put_line(fd, "let s:sx = expand(\"<sfile>:p:r\").\"x.vim\"") == FAIL
+ || put_line(fd, "if file_readable(s:sx)") == FAIL
+! || put_line(fd, " exe \"source \" . fnameescape(s:sx)") == FAIL
+ || put_line(fd, "endif") == FAIL)
+ return FAIL;
+
+*** ../vim-7.2.066/src/version.c Tue Dec 9 10:56:50 2008
+--- src/version.c Tue Dec 9 11:16:27 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 67,
+ /**/
+
+--
+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.068 b/source/ap/vim/patches/7.2.068
new file mode 100644
index 000000000..508bac125
--- /dev/null
+++ b/source/ap/vim/patches/7.2.068
@@ -0,0 +1,101 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.068
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.068
+Problem: Emacs tags file lines can be too long, resulting in an error
+ message. (James Vega)
+Solution: Ignore lines with errors if they are too long.
+Files: src/tag.c
+
+
+*** ../vim-7.2.067/src/tag.c Fri Jul 18 11:26:12 2008
+--- src/tag.c Sat Dec 6 13:54:33 2008
+***************
+*** 2725,2731 ****
+--- 2725,2748 ----
+ */
+ p_7f = vim_strchr(lbuf, 0x7f);
+ if (p_7f == NULL)
++ {
++ etag_fail:
++ if (vim_strchr(lbuf, '\n') == NULL)
++ {
++ /* Truncated line. Ignore it. */
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ MSG(_("Ignoring long line in tags file"));
++ verbose_leave();
++ }
++ tagp->command = lbuf;
++ tagp->tagname = lbuf;
++ tagp->tagname_end = lbuf;
++ return OK;
++ }
+ return FAIL;
++ }
+
+ /* Find ^A. If not found the line number is after the 0x7f */
+ p = vim_strchr(p_7f, Ctrl_A);
+***************
+*** 2735,2741 ****
+ ++p;
+
+ if (!VIM_ISDIGIT(*p)) /* check for start of line number */
+! return FAIL;
+ tagp->command = p;
+
+
+--- 2752,2758 ----
+ ++p;
+
+ if (!VIM_ISDIGIT(*p)) /* check for start of line number */
+! goto etag_fail;
+ tagp->command = p;
+
+
+***************
+*** 2749,2755 ****
+ /* find end of tagname */
+ for (p = p_7f - 1; !vim_iswordc(*p); --p)
+ if (p == lbuf)
+! return FAIL;
+ tagp->tagname_end = p + 1;
+ while (p >= lbuf && vim_iswordc(*p))
+ --p;
+--- 2766,2772 ----
+ /* find end of tagname */
+ for (p = p_7f - 1; !vim_iswordc(*p); --p)
+ if (p == lbuf)
+! goto etag_fail;
+ tagp->tagname_end = p + 1;
+ while (p >= lbuf && vim_iswordc(*p))
+ --p;
+*** ../vim-7.2.067/src/version.c Tue Dec 9 11:17:23 2008
+--- src/version.c Tue Dec 9 12:05:41 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 68,
+ /**/
+
+--
+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.069 b/source/ap/vim/patches/7.2.069
new file mode 100644
index 000000000..7714fae9d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.069
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.069
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.069 (after 7.2.060)
+Problem: Compiler warning for storing size_t in int.
+Solution: Add type cast.
+Files: src/spell.c
+
+
+*** ../vim-7.2.068/src/spell.c Sun Nov 30 21:11:54 2008
+--- src/spell.c Tue Dec 9 22:19:04 2008
+***************
+*** 1765,1771 ****
+ /* Second part matches at start of following compound word, now
+ * check if first part matches at end of previous word. */
+ p = ((char_u **)gap->ga_data)[i];
+! len = STRLEN(p);
+ if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
+ return TRUE;
+ }
+--- 1765,1771 ----
+ /* Second part matches at start of following compound word, now
+ * check if first part matches at end of previous word. */
+ p = ((char_u **)gap->ga_data)[i];
+! len = (int)STRLEN(p);
+ if (len <= wlen && STRNCMP(ptr + wlen - len, p, len) == 0)
+ return TRUE;
+ }
+*** ../vim-7.2.068/src/version.c Tue Dec 9 12:12:31 2008
+--- src/version.c Tue Dec 9 22:21:15 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 69,
+ /**/
+
+--
+The war between Emacs and Vi is over. Vi has won with 3 to 1.
+ http://www.ssc.com/lg/issue30/raymond.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.070 b/source/ap/vim/patches/7.2.070
new file mode 100644
index 000000000..9a7edc785
--- /dev/null
+++ b/source/ap/vim/patches/7.2.070
@@ -0,0 +1,566 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.070
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.070
+Problem: Crash when a function returns a:000. (Matt Wozkiski)
+Solution: Don't put the function struct on the stack, allocate it. Free it
+ only when nothing in it is used.
+Files: src/eval.c
+
+
+*** ../vim-7.2.069/src/eval.c Tue Dec 9 10:56:50 2008
+--- src/eval.c Wed Dec 17 21:32:26 2008
+***************
+*** 32,37 ****
+--- 32,40 ----
+
+ #define DICT_MAXNEST 100 /* maximum nesting of lists and dicts */
+
++ #define DO_NOT_FREE_CNT 99999 /* refcount for dict or list that should not
++ be freed. */
++
+ /*
+ * In a hashtab item "hi_key" points to "di_key" in a dictitem.
+ * This avoids adding a pointer to the hashtab item.
+***************
+*** 789,794 ****
+--- 792,799 ----
+ static void func_unref __ARGS((char_u *name));
+ static void func_ref __ARGS((char_u *name));
+ static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars, typval_T *rettv, linenr_T firstline, linenr_T lastline, dict_T *selfdict));
++ static int can_free_funccal __ARGS((funccall_T *fc, int copyID)) ;
++ static void free_funccal __ARGS((funccall_T *fc, int free_val));
+ static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
+ static win_T *find_win_by_nr __ARGS((typval_T *vp, tabpage_T *tp));
+ static void getwinvar __ARGS((typval_T *argvars, typval_T *rettv, int off));
+***************
+*** 923,928 ****
+--- 928,937 ----
+ /* pointer to funccal for currently active function */
+ funccall_T *current_funccal = NULL;
+
++ /* pointer to list of previously used funccal, still around because some
++ * item in it is still being used. */
++ funccall_T *previous_funccal = NULL;
++
+ /*
+ * Return TRUE when a function was ended by a ":return" command.
+ */
+***************
+*** 6490,6496 ****
+ buf_T *buf;
+ win_T *wp;
+ int i;
+! funccall_T *fc;
+ int did_free = FALSE;
+ #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+--- 6499,6505 ----
+ buf_T *buf;
+ win_T *wp;
+ int i;
+! funccall_T *fc, **pfc;
+ int did_free = FALSE;
+ #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+***************
+*** 6574,6579 ****
+--- 6583,6602 ----
+ else
+ ll = ll->lv_used_next;
+
++ /* check if any funccal can be freed now */
++ for (pfc = &previous_funccal; *pfc != NULL; )
++ {
++ if (can_free_funccal(*pfc, copyID))
++ {
++ fc = *pfc;
++ *pfc = fc->caller;
++ free_funccal(fc, TRUE);
++ did_free = TRUE;
++ }
++ else
++ pfc = &(*pfc)->caller;
++ }
++
+ return did_free;
+ }
+
+***************
+*** 18962,18968 ****
+ dictitem_T *dict_var;
+ {
+ hash_init(&dict->dv_hashtab);
+! dict->dv_refcount = 99999;
+ dict_var->di_tv.vval.v_dict = dict;
+ dict_var->di_tv.v_type = VAR_DICT;
+ dict_var->di_tv.v_lock = VAR_FIXED;
+--- 18985,18991 ----
+ dictitem_T *dict_var;
+ {
+ hash_init(&dict->dv_hashtab);
+! dict->dv_refcount = DO_NOT_FREE_CNT;
+ dict_var->di_tv.vval.v_dict = dict;
+ dict_var->di_tv.v_type = VAR_DICT;
+ dict_var->di_tv.v_lock = VAR_FIXED;
+***************
+*** 19299,19304 ****
+--- 19322,19329 ----
+ * Copy the values from typval_T "from" to typval_T "to".
+ * When needed allocates string or increases reference count.
+ * Does not make a copy of a list or dict but copies the reference!
++ * 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)
+***************
+*** 21111,21117 ****
+ char_u *save_sourcing_name;
+ linenr_T save_sourcing_lnum;
+ scid_T save_current_SID;
+! funccall_T fc;
+ int save_did_emsg;
+ static int depth = 0;
+ dictitem_T *v;
+--- 21136,21142 ----
+ char_u *save_sourcing_name;
+ linenr_T save_sourcing_lnum;
+ scid_T save_current_SID;
+! funccall_T *fc;
+ int save_did_emsg;
+ static int depth = 0;
+ dictitem_T *v;
+***************
+*** 21137,21172 ****
+
+ line_breakcheck(); /* check for CTRL-C hit */
+
+! fc.caller = current_funccal;
+! current_funccal = &fc;
+! fc.func = fp;
+! fc.rettv = rettv;
+ rettv->vval.v_number = 0;
+! fc.linenr = 0;
+! fc.returned = FALSE;
+! fc.level = ex_nesting_level;
+ /* Check if this function has a breakpoint. */
+! fc.breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0);
+! fc.dbg_tick = debug_tick;
+
+ /*
+! * Note about using fc.fixvar[]: This is an array of FIXVAR_CNT variables
+ * with names up to VAR_SHORT_LEN long. This avoids having to alloc/free
+ * each argument variable and saves a lot of time.
+ */
+ /*
+ * Init l: variables.
+ */
+! init_var_dict(&fc.l_vars, &fc.l_vars_var);
+ if (selfdict != NULL)
+ {
+ /* Set l:self to "selfdict". Use "name" to avoid a warning from
+ * some compiler that checks the destination size. */
+! v = &fc.fixvar[fixvar_idx++].var;
+ name = v->di_key;
+ STRCPY(name, "self");
+ v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
+! hash_add(&fc.l_vars.dv_hashtab, DI2HIKEY(v));
+ v->di_tv.v_type = VAR_DICT;
+ v->di_tv.v_lock = 0;
+ v->di_tv.vval.v_dict = selfdict;
+--- 21162,21198 ----
+
+ line_breakcheck(); /* check for CTRL-C hit */
+
+! fc = (funccall_T *)alloc(sizeof(funccall_T));
+! fc->caller = current_funccal;
+! current_funccal = fc;
+! fc->func = fp;
+! fc->rettv = rettv;
+ rettv->vval.v_number = 0;
+! fc->linenr = 0;
+! fc->returned = FALSE;
+! fc->level = ex_nesting_level;
+ /* Check if this function has a breakpoint. */
+! fc->breakpoint = dbg_find_breakpoint(FALSE, fp->uf_name, (linenr_T)0);
+! fc->dbg_tick = debug_tick;
+
+ /*
+! * Note about using fc->fixvar[]: This is an array of FIXVAR_CNT variables
+ * with names up to VAR_SHORT_LEN long. This avoids having to alloc/free
+ * each argument variable and saves a lot of time.
+ */
+ /*
+ * Init l: variables.
+ */
+! init_var_dict(&fc->l_vars, &fc->l_vars_var);
+ if (selfdict != NULL)
+ {
+ /* Set l:self to "selfdict". Use "name" to avoid a warning from
+ * some compiler that checks the destination size. */
+! v = &fc->fixvar[fixvar_idx++].var;
+ name = v->di_key;
+ STRCPY(name, "self");
+ v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
+! hash_add(&fc->l_vars.dv_hashtab, DI2HIKEY(v));
+ v->di_tv.v_type = VAR_DICT;
+ v->di_tv.v_lock = 0;
+ v->di_tv.vval.v_dict = selfdict;
+***************
+*** 21178,21208 ****
+ * Set a:0 to "argcount".
+ * Set a:000 to a list with room for the "..." arguments.
+ */
+! init_var_dict(&fc.l_avars, &fc.l_avars_var);
+! add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "0",
+ (varnumber_T)(argcount - fp->uf_args.ga_len));
+ /* Use "name" to avoid a warning from some compiler that checks the
+ * destination size. */
+! v = &fc.fixvar[fixvar_idx++].var;
+ name = v->di_key;
+ STRCPY(name, "000");
+ v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
+! hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
+ v->di_tv.v_type = VAR_LIST;
+ v->di_tv.v_lock = VAR_FIXED;
+! v->di_tv.vval.v_list = &fc.l_varlist;
+! vim_memset(&fc.l_varlist, 0, sizeof(list_T));
+! fc.l_varlist.lv_refcount = 99999;
+! fc.l_varlist.lv_lock = VAR_FIXED;
+
+ /*
+ * Set a:firstline to "firstline" and a:lastline to "lastline".
+ * Set a:name to named arguments.
+ * Set a:N to the "..." arguments.
+ */
+! add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "firstline",
+ (varnumber_T)firstline);
+! add_nr_var(&fc.l_avars, &fc.fixvar[fixvar_idx++].var, "lastline",
+ (varnumber_T)lastline);
+ for (i = 0; i < argcount; ++i)
+ {
+--- 21204,21234 ----
+ * Set a:0 to "argcount".
+ * Set a:000 to a list with room for the "..." arguments.
+ */
+! init_var_dict(&fc->l_avars, &fc->l_avars_var);
+! add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "0",
+ (varnumber_T)(argcount - fp->uf_args.ga_len));
+ /* Use "name" to avoid a warning from some compiler that checks the
+ * destination size. */
+! v = &fc->fixvar[fixvar_idx++].var;
+ name = v->di_key;
+ STRCPY(name, "000");
+ v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
+! hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
+ v->di_tv.v_type = VAR_LIST;
+ v->di_tv.v_lock = VAR_FIXED;
+! v->di_tv.vval.v_list = &fc->l_varlist;
+! vim_memset(&fc->l_varlist, 0, sizeof(list_T));
+! fc->l_varlist.lv_refcount = DO_NOT_FREE_CNT;
+! fc->l_varlist.lv_lock = VAR_FIXED;
+
+ /*
+ * Set a:firstline to "firstline" and a:lastline to "lastline".
+ * Set a:name to named arguments.
+ * Set a:N to the "..." arguments.
+ */
+! add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "firstline",
+ (varnumber_T)firstline);
+! add_nr_var(&fc->l_avars, &fc->fixvar[fixvar_idx++].var, "lastline",
+ (varnumber_T)lastline);
+ for (i = 0; i < argcount; ++i)
+ {
+***************
+*** 21218,21224 ****
+ }
+ if (fixvar_idx < FIXVAR_CNT && STRLEN(name) <= VAR_SHORT_LEN)
+ {
+! v = &fc.fixvar[fixvar_idx++].var;
+ v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
+ }
+ else
+--- 21244,21250 ----
+ }
+ if (fixvar_idx < FIXVAR_CNT && STRLEN(name) <= VAR_SHORT_LEN)
+ {
+! v = &fc->fixvar[fixvar_idx++].var;
+ v->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
+ }
+ else
+***************
+*** 21230,21236 ****
+ v->di_flags = DI_FLAGS_RO;
+ }
+ STRCPY(v->di_key, name);
+! hash_add(&fc.l_avars.dv_hashtab, DI2HIKEY(v));
+
+ /* Note: the values are copied directly to avoid alloc/free.
+ * "argvars" must have VAR_FIXED for v_lock. */
+--- 21256,21262 ----
+ v->di_flags = DI_FLAGS_RO;
+ }
+ STRCPY(v->di_key, name);
+! hash_add(&fc->l_avars.dv_hashtab, DI2HIKEY(v));
+
+ /* Note: the values are copied directly to avoid alloc/free.
+ * "argvars" must have VAR_FIXED for v_lock. */
+***************
+*** 21239,21247 ****
+
+ if (ai >= 0 && ai < MAX_FUNC_ARGS)
+ {
+! list_append(&fc.l_varlist, &fc.l_listitems[ai]);
+! fc.l_listitems[ai].li_tv = argvars[i];
+! fc.l_listitems[ai].li_tv.v_lock = VAR_FIXED;
+ }
+ }
+
+--- 21265,21273 ----
+
+ if (ai >= 0 && ai < MAX_FUNC_ARGS)
+ {
+! list_append(&fc->l_varlist, &fc->l_listitems[ai]);
+! fc->l_listitems[ai].li_tv = argvars[i];
+! fc->l_listitems[ai].li_tv.v_lock = VAR_FIXED;
+ }
+ }
+
+***************
+*** 21306,21312 ****
+ if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
+ func_do_profile(fp);
+ if (fp->uf_profiling
+! || (fc.caller != NULL && fc.caller->func->uf_profiling))
+ {
+ ++fp->uf_tm_count;
+ profile_start(&call_start);
+--- 21332,21338 ----
+ if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
+ func_do_profile(fp);
+ if (fp->uf_profiling
+! || (fc->caller != NULL && fc->caller->func->uf_profiling))
+ {
+ ++fp->uf_tm_count;
+ profile_start(&call_start);
+***************
+*** 21322,21328 ****
+ did_emsg = FALSE;
+
+ /* call do_cmdline() to execute the lines */
+! do_cmdline(NULL, get_func_line, (void *)&fc,
+ DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
+
+ --RedrawingDisabled;
+--- 21348,21354 ----
+ did_emsg = FALSE;
+
+ /* call do_cmdline() to execute the lines */
+! do_cmdline(NULL, get_func_line, (void *)fc,
+ DOCMD_NOWAIT|DOCMD_VERBOSE|DOCMD_REPEAT);
+
+ --RedrawingDisabled;
+***************
+*** 21337,21352 ****
+
+ #ifdef FEAT_PROFILE
+ if (do_profiling == PROF_YES && (fp->uf_profiling
+! || (fc.caller != NULL && fc.caller->func->uf_profiling)))
+ {
+ profile_end(&call_start);
+ profile_sub_wait(&wait_start, &call_start);
+ profile_add(&fp->uf_tm_total, &call_start);
+ profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
+! if (fc.caller != NULL && fc.caller->func->uf_profiling)
+ {
+! profile_add(&fc.caller->func->uf_tm_children, &call_start);
+! profile_add(&fc.caller->func->uf_tml_children, &call_start);
+ }
+ }
+ #endif
+--- 21363,21378 ----
+
+ #ifdef FEAT_PROFILE
+ if (do_profiling == PROF_YES && (fp->uf_profiling
+! || (fc->caller != NULL && fc->caller->func->uf_profiling)))
+ {
+ profile_end(&call_start);
+ profile_sub_wait(&wait_start, &call_start);
+ profile_add(&fp->uf_tm_total, &call_start);
+ profile_self(&fp->uf_tm_self, &call_start, &fp->uf_tm_children);
+! if (fc->caller != NULL && fc->caller->func->uf_profiling)
+ {
+! profile_add(&fc->caller->func->uf_tm_children, &call_start);
+! profile_add(&fc->caller->func->uf_tml_children, &call_start);
+ }
+ }
+ #endif
+***************
+*** 21359,21367 ****
+
+ if (aborting())
+ smsg((char_u *)_("%s aborted"), sourcing_name);
+! else if (fc.rettv->v_type == VAR_NUMBER)
+ smsg((char_u *)_("%s returning #%ld"), sourcing_name,
+! (long)fc.rettv->vval.v_number);
+ else
+ {
+ char_u buf[MSG_BUF_LEN];
+--- 21385,21393 ----
+
+ if (aborting())
+ smsg((char_u *)_("%s aborted"), sourcing_name);
+! else if (fc->rettv->v_type == VAR_NUMBER)
+ smsg((char_u *)_("%s returning #%ld"), sourcing_name,
+! (long)fc->rettv->vval.v_number);
+ else
+ {
+ char_u buf[MSG_BUF_LEN];
+***************
+*** 21372,21378 ****
+ /* The value may be very long. Skip the middle part, so that we
+ * have some idea how it starts and ends. smsg() would always
+ * truncate it at the end. */
+! s = tv2string(fc.rettv, &tofree, numbuf2, 0);
+ if (s != NULL)
+ {
+ trunc_string(s, buf, MSG_BUF_CLEN);
+--- 21398,21404 ----
+ /* The value may be very long. Skip the middle part, so that we
+ * have some idea how it starts and ends. smsg() would always
+ * truncate it at the end. */
+! s = tv2string(fc->rettv, &tofree, numbuf2, 0);
+ if (s != NULL)
+ {
+ trunc_string(s, buf, MSG_BUF_CLEN);
+***************
+*** 21408,21421 ****
+ }
+
+ did_emsg |= save_did_emsg;
+! current_funccal = fc.caller;
+
+! /* The a: variables typevals were not allocated, only free the allocated
+! * variables. */
+! vars_clear_ext(&fc.l_avars.dv_hashtab, FALSE);
+
+! vars_clear(&fc.l_vars.dv_hashtab); /* free all l: variables */
+! --depth;
+ }
+
+ /*
+--- 21434,21517 ----
+ }
+
+ did_emsg |= save_did_emsg;
+! current_funccal = fc->caller;
+! --depth;
+
+! /* if the a:000 list and the a: dict are not referenced we can free the
+! * funccall_T and what's in it. */
+! if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
+! && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
+! && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
+! {
+! free_funccal(fc, FALSE);
+! }
+! else
+! {
+! hashitem_T *hi;
+! listitem_T *li;
+! int todo;
+
+! /* "fc" is still in use. This can happen when returning "a:000" or
+! * assigning "l:" to a global variable.
+! * Link "fc" in the list for garbage collection later. */
+! fc->caller = previous_funccal;
+! previous_funccal = fc;
+!
+! /* Make a copy of the a: variables, since we didn't do that above. */
+! todo = (int)fc->l_avars.dv_hashtab.ht_used;
+! for (hi = fc->l_avars.dv_hashtab.ht_array; todo > 0; ++hi)
+! {
+! if (!HASHITEM_EMPTY(hi))
+! {
+! --todo;
+! v = HI2DI(hi);
+! copy_tv(&v->di_tv, &v->di_tv);
+! }
+! }
+!
+! /* Make a copy of the a:000 items, since we didn't do that above. */
+! for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next)
+! copy_tv(&li->li_tv, &li->li_tv);
+! }
+! }
+!
+! /*
+! * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywyere.
+! */
+! static int
+! can_free_funccal(fc, copyID)
+! funccall_T *fc;
+! int copyID;
+! {
+! return (fc->l_varlist.lv_copyID != copyID
+! && fc->l_vars.dv_copyID != copyID
+! && fc->l_avars.dv_copyID != copyID);
+! }
+!
+! /*
+! * Free "fc" and what it contains.
+! */
+! static void
+! free_funccal(fc, free_val)
+! funccall_T *fc;
+! int free_val; /* a: vars were allocated */
+! {
+! listitem_T *li;
+!
+! /* The a: variables typevals may not have been allocated, only free the
+! * allocated variables. */
+! vars_clear_ext(&fc->l_avars.dv_hashtab, free_val);
+!
+! /* free all l: variables */
+! vars_clear(&fc->l_vars.dv_hashtab);
+!
+! /* Free the a:000 variables if they were allocated. */
+! if (free_val)
+! for (li = fc->l_varlist.lv_first; li != NULL; li = li->li_next)
+! clear_tv(&li->li_tv);
+!
+! vim_free(fc);
+ }
+
+ /*
+*** ../vim-7.2.069/src/version.c Tue Dec 9 22:34:02 2008
+--- src/version.c Sun Dec 21 12:47:07 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 70,
+ /**/
+
+--
+Close your shells, or I'll kill -9 you
+Tomorrow I'll quota you
+Remember the disks'll always be full
+And then while I'm away
+I'll write ~ everyday
+And I'll send-pr all my buggings to you.
+ [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]
+
+ /// 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.071 b/source/ap/vim/patches/7.2.071
new file mode 100644
index 000000000..0a1e5137f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.071
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.071
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.071 (extra)
+Problem: Win32: Handling netbeans events while Vim is busy updating the
+ screen may cause a crash.
+Solution: Like with GTK, only handle netbeans messages in the main loop.
+ (Xavier de Gaye)
+Files: src/gui_w48.c, src/netbeans.c
+
+
+*** ../vim-7.2.070/src/gui_w48.c Thu Nov 20 17:09:09 2008
+--- src/gui_w48.c Thu Dec 11 23:47:18 2008
+***************
+*** 1937,1942 ****
+--- 1937,1947 ----
+ s_need_activate = FALSE;
+ }
+
++ #ifdef FEAT_NETBEANS_INTG
++ /* Process the queued netbeans messages. */
++ netbeans_parse_messages();
++ #endif
++
+ /*
+ * Don't use gui_mch_update() because then we will spin-lock until a
+ * char arrives, instead we use GetMessage() to hang until an
+*** ../vim-7.2.070/src/netbeans.c Fri Nov 28 21:26:50 2008
+--- src/netbeans.c Sun Nov 30 12:07:00 2008
+***************
+*** 769,779 ****
+ return; /* don't try to parse it */
+ }
+
+! #ifdef FEAT_GUI_GTK
+ if (gtk_main_level() > 0)
+ gtk_main_quit();
+ #else
+! /* Parse the messages, but avoid recursion. */
+ if (level == 1)
+ netbeans_parse_messages();
+
+--- 769,782 ----
+ return; /* don't try to parse it */
+ }
+
+! #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)
+! /* Let the main loop handle messages. */
+! # ifdef FEAT_GUI_GTK
+ if (gtk_main_level() > 0)
+ gtk_main_quit();
++ # endif
+ #else
+! /* Parse the messages now, but avoid recursion. */
+ if (level == 1)
+ netbeans_parse_messages();
+
+*** ../vim-7.2.070/src/version.c Sun Dec 21 13:02:47 2008
+--- src/version.c Wed Dec 24 12:18:59 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 71,
+ /**/
+
+--
+No children may attend school with their breath smelling of "wild onions."
+ [real standing law in West Virginia, 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.072 b/source/ap/vim/patches/7.2.072
new file mode 100644
index 000000000..1dffd9181
--- /dev/null
+++ b/source/ap/vim/patches/7.2.072
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.072 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.072 (extra)
+Problem: Compiler warning in Sniff code.
+Solution: Use return value of pipe(). (Dominique Pelle)
+Files: src/if_sniff.c
+
+NOTE: Patch was adjusted to avoid problems with CVS interference.
+
+*** ../vim-7.2.071/src/if_sniff.c Sat Nov 15 14:11:10 2008
+--- src/if_sniff.c Sat Dec 6 14:01:57 2008
+***************
+*** 716,723 ****
+ #else /* UNIX Version of the Code */
+ int ToSniffEmacs[2], FromSniffEmacs[2];
+
+! pipe(ToSniffEmacs);
+! pipe(FromSniffEmacs);
+
+ /* fork */
+ if ((sniffemacs_pid=fork()) == 0)
+--- 714,723 ----
+ #else /* UNIX Version of the Code */
+ int ToSniffEmacs[2], FromSniffEmacs[2];
+
+! if (pipe(ToSniffEmacs) != 0)
+! return 1;
+! if (pipe(FromSniffEmacs) != 0)
+! return 1;
+
+ /* fork */
+ if ((sniffemacs_pid=fork()) == 0)
+*** ../vim-7.2.071/src/version.c Wed Dec 24 12:20:10 2008
+--- src/version.c Wed Dec 24 12:42:13 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 72,
+ /**/
+
+--
+SIGIRO -- irony detected (iron 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.073 b/source/ap/vim/patches/7.2.073
new file mode 100644
index 000000000..16f1297d3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.073
@@ -0,0 +1,135 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.073
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.073
+Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt
+ Wozniski)
+Solution: Don't translate "x" keys to its alternative for ":set".
+Files: src/misc2.c, src/option.c, src/proto/misc2.pro
+
+
+*** ../vim-7.2.072/src/misc2.c Wed Nov 12 13:07:48 2008
+--- src/misc2.c Sun Dec 14 12:28:47 2008
+***************
+*** 2561,2567 ****
+ int key;
+ int dlen = 0;
+
+! key = find_special_key(srcp, &modifiers, keycode);
+ if (key == 0)
+ return 0;
+
+--- 2561,2567 ----
+ int key;
+ int dlen = 0;
+
+! key = find_special_key(srcp, &modifiers, keycode, FALSE);
+ if (key == 0)
+ return 0;
+
+***************
+*** 2597,2606 ****
+ * returns 0 if there is no match.
+ */
+ int
+! find_special_key(srcp, modp, keycode)
+ char_u **srcp;
+ int *modp;
+! int keycode; /* prefer key code, e.g. K_DEL instead of DEL */
+ {
+ char_u *last_dash;
+ char_u *end_of_name;
+--- 2597,2607 ----
+ * returns 0 if there is no match.
+ */
+ int
+! find_special_key(srcp, modp, keycode, keep_x_key)
+ char_u **srcp;
+ int *modp;
+! int keycode; /* prefer key code, e.g. K_DEL instead of DEL */
+! int keep_x_key; /* don't translate xHome to Home key */
+ {
+ char_u *last_dash;
+ char_u *end_of_name;
+***************
+*** 2668,2674 ****
+ else
+ {
+ key = get_special_key_code(last_dash + 1);
+! key = handle_x_keys(key);
+ }
+
+ /*
+--- 2669,2676 ----
+ else
+ {
+ key = get_special_key_code(last_dash + 1);
+! if (!keep_x_key)
+! key = handle_x_keys(key);
+ }
+
+ /*
+*** ../vim-7.2.072/src/option.c Fri Nov 28 21:26:50 2008
+--- src/option.c Sun Dec 14 12:28:56 2008
+***************
+*** 8328,8334 ****
+ {
+ --arg; /* put arg at the '<' */
+ modifiers = 0;
+! key = find_special_key(&arg, &modifiers, TRUE);
+ if (modifiers) /* can't handle modifiers here */
+ key = 0;
+ }
+--- 8328,8334 ----
+ {
+ --arg; /* put arg at the '<' */
+ modifiers = 0;
+! key = find_special_key(&arg, &modifiers, TRUE, TRUE);
+ if (modifiers) /* can't handle modifiers here */
+ key = 0;
+ }
+*** ../vim-7.2.072/src/proto/misc2.pro Thu Jul 24 20:29:37 2008
+--- src/proto/misc2.pro Sun Dec 14 12:29:05 2008
+***************
+*** 59,65 ****
+ int handle_x_keys __ARGS((int key));
+ char_u *get_special_key_name __ARGS((int c, int modifiers));
+ int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
+! int find_special_key __ARGS((char_u **srcp, int *modp, int keycode));
+ int extract_modifiers __ARGS((int key, int *modp));
+ int find_special_key_in_table __ARGS((int c));
+ int get_special_key_code __ARGS((char_u *name));
+--- 59,65 ----
+ int handle_x_keys __ARGS((int key));
+ char_u *get_special_key_name __ARGS((int c, int modifiers));
+ int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
+! int find_special_key __ARGS((char_u **srcp, int *modp, int keycode, int keep_x_key));
+ int extract_modifiers __ARGS((int key, int *modp));
+ int find_special_key_in_table __ARGS((int c));
+ int get_special_key_code __ARGS((char_u *name));
+*** ../vim-7.2.072/src/version.c Wed Dec 24 12:43:15 2008
+--- src/version.c Wed Dec 24 12:51:26 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 73,
+ /**/
+
+
+--
+ARTHUR: If you do not open these doors, we will take this castle by force ...
+ [A bucket of slops land on ARTHUR. He tries to retain his dignity.]
+ "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.074 b/source/ap/vim/patches/7.2.074
new file mode 100644
index 000000000..6000fca53
--- /dev/null
+++ b/source/ap/vim/patches/7.2.074
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.074 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.074 (extra, after 7.2.073)
+Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt
+ Wozniski)
+Solution: Don't translate "x" keys to its alternative for ":set".
+Files: src/gui_mac.c
+
+
+*** ../vim-7.2.073/src/gui_mac.c Sat Aug 9 19:37:28 2008
+--- src/gui_mac.c Sun Dec 14 12:28:26 2008
+***************
+*** 4966,4972 ****
+ char_u *p_actext;
+
+ p_actext = menu->actext;
+! key = find_special_key(&p_actext, &modifiers, /*keycode=*/0);
+ if (*p_actext != 0)
+ key = 0; /* error: trailing text */
+ /* find_special_key() returns a keycode with as many of the
+--- 4966,4972 ----
+ char_u *p_actext;
+
+ p_actext = menu->actext;
+! key = find_special_key(&p_actext, &modifiers, FALSE, FALSE);
+ if (*p_actext != 0)
+ key = 0; /* error: trailing text */
+ /* find_special_key() returns a keycode with as many of the
+*** ../vim-7.2.073/src/version.c Wed Dec 24 12:53:33 2008
+--- src/version.c Wed Dec 24 12:55:42 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 74,
+ /**/
+
+--
+ Another bucket of what can only be described as human ordure hits ARTHUR.
+ARTHUR: ... Right! (to the KNIGHTS) That settles it!
+ "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.075 b/source/ap/vim/patches/7.2.075
new file mode 100644
index 000000000..4bec708ab
--- /dev/null
+++ b/source/ap/vim/patches/7.2.075
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.075
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.075 (after 7.2.058)
+Problem: Explanation about making a diff for extra_patches is unclear.
+Solution: Adjust comment.
+Files: src/version.c
+
+
+*** ../vim-7.2.074/src/version.c Wed Dec 24 13:04:41 2008
+--- src/version.c Wed Dec 24 13:07:47 2008
+***************
+*** 833,839 ****
+ * Keep it short, e.g.,: "relative numbers", "persistent undo".
+ * Also add a comment marker to separate the lines.
+ * See the official Vim patches for the diff format: It must use a context of
+! * one line only. Use "diff -C2".
+ */
+ static char *(extra_patches[]) =
+ { /* Add your patch description below this line */
+--- 835,841 ----
+ * Keep it short, e.g.,: "relative numbers", "persistent undo".
+ * Also add a comment marker to separate the lines.
+ * See the official Vim patches for the diff format: It must use a context of
+! * one line only. Create it by hand or use "diff -C2" and edit the patch.
+ */
+ static char *(extra_patches[]) =
+ { /* Add your patch description below this line */
+*** ../vim-7.2.074/src/version.c Wed Dec 24 13:04:41 2008
+--- src/version.c Wed Dec 24 13:07:47 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 75,
+ /**/
+
+--
+BEDEVERE: Stand by for attack!!
+ [CUT TO enormous army forming up. Trebuchets, rows of PIKEMEN, siege
+ towers, pennants flying, shouts of "Stand by for attack!" Traditional
+ army build-up shots. The shouts echo across the ranks of the army.
+ We see various groups reacting, and stirring themselves in readiness.]
+ARTHUR: Who are they?
+BEDEVERE: Oh, just some friends!
+ "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.076 b/source/ap/vim/patches/7.2.076
new file mode 100644
index 000000000..5166bbab2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.076
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.076
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.076
+Problem: rename(from, to) deletes the file if "from" and "to" are not equal
+ but still refer to the same file. E.g., on a FAT32 filesystem
+ under Unix.
+Solution: Go through another file name.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.075/src/fileio.c Fri Nov 28 21:26:50 2008
+--- src/fileio.c Tue Dec 30 16:04:44 2008
+***************
+*** 6119,6124 ****
+--- 6119,6165 ----
+ if (mch_stat((char *)from, &st) < 0)
+ return -1;
+
++ #ifdef UNIX
++ {
++ struct stat st_to;
++ char tempname[MAXPATHL + 1];
++
++ /* It's possible for the source and destination to be the same file.
++ * This happens when "from" and "to" differ in case and are on a FAT32
++ * filesystem. In that case go through a temp file name. */
++ if (mch_stat((char *)to, &st_to) >= 0
++ && st.st_dev == st_to.st_dev
++ && st.st_ino == st_to.st_ino)
++ {
++ /* Find a name that doesn't exist and is in the same directory.
++ * Move "from" to "tempname" and then to "to". */
++ if (STRLEN(from) >= MAXPATHL - 5)
++ return -1;
++ STRCPY(tempname, from);
++ for (n = 123; n < 99999; ++n)
++ {
++ sprintf(gettail(tempname), "%d", n);
++ if (mch_stat(tempname, &st_to) < 0)
++ {
++ if (mch_rename((char *)from, tempname) == 0)
++ {
++ if (mch_rename(tempname, (char *)to) == 0)
++ return 0;
++ /* Strange, the second step failed. Try moving the
++ * file back and return failure. */
++ mch_rename(tempname, (char *)from);
++ return -1;
++ }
++ /* If it fails for one temp name it will most likely fail
++ * for any temp name, give up. */
++ return -1;
++ }
++ }
++ return -1;
++ }
++ }
++ #endif
++
+ /*
+ * Delete the "to" file, this is required on some systems to make the
+ * mch_rename() work, on other systems it makes sure that we don't have
+*** ../vim-7.2.075/src/version.c Wed Dec 24 14:24:41 2008
+--- src/version.c Tue Dec 30 16:09:51 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 76,
+ /**/
+
+--
+FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing.
+
+ /// 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.077 b/source/ap/vim/patches/7.2.077
new file mode 100644
index 000000000..396444c3d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.077
@@ -0,0 +1,164 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.077
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.077 (after 7.2.076)
+Problem: rename(from, to) doesn't work if "from" and "to" differ only in
+ case on a system that ignores case in file names.
+Solution: Go through another file name.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.076/src/fileio.c Tue Dec 30 16:15:16 2008
+--- src/fileio.c Wed Dec 31 14:59:59 2008
+***************
+*** 6106,6117 ****
+ #ifdef HAVE_ACL
+ vim_acl_T acl; /* ACL from original file */
+ #endif
+
+ /*
+! * When the names are identical, there is nothing to do.
+ */
+ if (fnamecmp(from, to) == 0)
+! return 0;
+
+ /*
+ * Fail if the "from" file doesn't exist. Avoids that "to" is deleted.
+--- 6106,6129 ----
+ #ifdef HAVE_ACL
+ vim_acl_T acl; /* ACL from original file */
+ #endif
++ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
++ int use_tmp_file = FALSE;
++ #endif
+
+ /*
+! * When the names are identical, there is nothing to do. When they refer
+! * to the same file (ignoring case and slash/backslash differences) but
+! * the file name differs we need to go through a temp file.
+ */
+ if (fnamecmp(from, to) == 0)
+! {
+! #ifdef CASE_INSENSITIVE_FILENAME
+! if (STRCMP(gettail(from), gettail(to)) != 0)
+! use_tmp_file = TRUE;
+! else
+! #endif
+! return 0;
+! }
+
+ /*
+ * Fail if the "from" file doesn't exist. Avoids that "to" is deleted.
+***************
+*** 6122,6128 ****
+ #ifdef UNIX
+ {
+ struct stat st_to;
+- char tempname[MAXPATHL + 1];
+
+ /* It's possible for the source and destination to be the same file.
+ * This happens when "from" and "to" differ in case and are on a FAT32
+--- 6134,6139 ----
+***************
+*** 6130,6162 ****
+ if (mch_stat((char *)to, &st_to) >= 0
+ && st.st_dev == st_to.st_dev
+ && st.st_ino == st_to.st_ino)
+ {
+! /* Find a name that doesn't exist and is in the same directory.
+! * Move "from" to "tempname" and then to "to". */
+! if (STRLEN(from) >= MAXPATHL - 5)
+! return -1;
+! STRCPY(tempname, from);
+! for (n = 123; n < 99999; ++n)
+ {
+! sprintf(gettail(tempname), "%d", n);
+! if (mch_stat(tempname, &st_to) < 0)
+ {
+! if (mch_rename((char *)from, tempname) == 0)
+! {
+! if (mch_rename(tempname, (char *)to) == 0)
+! return 0;
+! /* Strange, the second step failed. Try moving the
+! * file back and return failure. */
+! mch_rename(tempname, (char *)from);
+! return -1;
+! }
+! /* If it fails for one temp name it will most likely fail
+! * for any temp name, give up. */
+ return -1;
+ }
+ }
+- return -1;
+ }
+ }
+ #endif
+
+--- 6141,6182 ----
+ if (mch_stat((char *)to, &st_to) >= 0
+ && st.st_dev == st_to.st_dev
+ && st.st_ino == st_to.st_ino)
++ use_tmp_file = TRUE;
++ }
++ #endif
++
++ #if defined(UNIX) || defined(CASE_INSENSITIVE_FILENAME)
++ if (use_tmp_file)
++ {
++ char tempname[MAXPATHL + 1];
++
++ /*
++ * Find a name that doesn't exist and is in the same directory.
++ * Rename "from" to "tempname" and then rename "tempname" to "to".
++ */
++ if (STRLEN(from) >= MAXPATHL - 5)
++ return -1;
++ STRCPY(tempname, from);
++ for (n = 123; n < 99999; ++n)
+ {
+! sprintf((char *)gettail((char_u *)tempname), "%d", n);
+! if (mch_stat(tempname, &st) < 0)
+ {
+! if (mch_rename((char *)from, tempname) == 0)
+ {
+! if (mch_rename(tempname, (char *)to) == 0)
+! return 0;
+! /* Strange, the second step failed. Try moving the
+! * file back and return failure. */
+! mch_rename(tempname, (char *)from);
+ return -1;
+ }
++ /* If it fails for one temp name it will most likely fail
++ * for any temp name, give up. */
++ return -1;
+ }
+ }
++ return -1;
+ }
+ #endif
+
+*** ../vim-7.2.076/src/version.c Tue Dec 30 16:15:16 2008
+--- src/version.c Wed Dec 31 16:19:29 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 77,
+ /**/
+
+--
+We apologise again for the fault in the subtitles. Those responsible for
+sacking the people who have just been sacked have been sacked.
+ "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.078 b/source/ap/vim/patches/7.2.078
new file mode 100644
index 000000000..0e127bc41
--- /dev/null
+++ b/source/ap/vim/patches/7.2.078
@@ -0,0 +1,120 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.078
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.078
+Problem: When deleting a fold that is specified with markers the cursor
+ position may be wrong. Folds may not be displayed properly after
+ a delete. Wrong fold may be deleted.
+Solution: Fix the problems. (mostly by Lech Lorens)
+Files: src/fold.c
+
+
+*** ../vim-7.2.077/src/fold.c Fri Nov 28 21:26:50 2008
+--- src/fold.c Tue Jan 6 14:53:26 2009
+***************
+*** 740,746 ****
+ garray_T *found_ga;
+ fold_T *found_fp = NULL;
+ linenr_T found_off = 0;
+! int use_level = FALSE;
+ int maybe_small = FALSE;
+ int level = 0;
+ linenr_T lnum = start;
+--- 740,746 ----
+ garray_T *found_ga;
+ fold_T *found_fp = NULL;
+ linenr_T found_off = 0;
+! int use_level;
+ int maybe_small = FALSE;
+ int level = 0;
+ linenr_T lnum = start;
+***************
+*** 757,762 ****
+--- 757,763 ----
+ gap = &curwin->w_folds;
+ found_ga = NULL;
+ lnum_off = 0;
++ use_level = FALSE;
+ for (;;)
+ {
+ if (!foldFind(gap, lnum - lnum_off, &fp))
+***************
+*** 783,802 ****
+ else
+ {
+ lnum = found_fp->fd_top + found_fp->fd_len + found_off;
+- did_one = TRUE;
+
+ if (foldmethodIsManual(curwin))
+ deleteFoldEntry(found_ga,
+ (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
+ else
+ {
+! if (found_fp->fd_top + found_off < first_lnum)
+! first_lnum = found_fp->fd_top;
+! if (lnum > last_lnum)
+ last_lnum = lnum;
+! parseMarker(curwin);
+ deleteFoldMarkers(found_fp, recursive, found_off);
+ }
+
+ /* redraw window */
+ changed_window_setting();
+--- 784,804 ----
+ else
+ {
+ lnum = found_fp->fd_top + found_fp->fd_len + found_off;
+
+ if (foldmethodIsManual(curwin))
+ deleteFoldEntry(found_ga,
+ (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
+ else
+ {
+! if (first_lnum > found_fp->fd_top + found_off)
+! first_lnum = found_fp->fd_top + found_off;
+! if (last_lnum < lnum)
+ last_lnum = lnum;
+! if (!did_one)
+! parseMarker(curwin);
+ deleteFoldMarkers(found_fp, recursive, found_off);
+ }
++ did_one = TRUE;
+
+ /* redraw window */
+ changed_window_setting();
+***************
+*** 811,816 ****
+--- 813,822 ----
+ redraw_curbuf_later(INVERTED);
+ #endif
+ }
++ else
++ /* Deleting markers may make cursor column invalid. */
++ check_cursor_col();
++
+ if (last_lnum > 0)
+ changed_lines(first_lnum, (colnr_T)0, last_lnum, 0L);
+ }
+*** ../vim-7.2.077/src/version.c Wed Dec 31 16:20:54 2008
+--- src/version.c Tue Jan 6 15:00:36 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 78,
+ /**/
+
+--
+Looking at Perl through Lisp glasses, Perl looks atrocious.
+
+ /// 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.079 b/source/ap/vim/patches/7.2.079
new file mode 100644
index 000000000..60da797d6
--- /dev/null
+++ b/source/ap/vim/patches/7.2.079
@@ -0,0 +1,229 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.079
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.079
+Problem: "killed" netbeans events are not handled correctly.
+Solution: A "killed" netbeans event is sent when the buffer is deleted or
+ wiped out (in this case, the netbeans annotations in this buffer
+ have been removed). A user can still remove a sign with the
+ command ":sign unplace" and this does not trigger a "killed"
+ event. (Xavier de Gaye)
+Files: runtime/doc/netbeans.txt, src/buffer.c, src/globals.h,
+ src/netbeans.c, src/proto/netbeans.pro
+
+
+*** ../vim-7.2.078/runtime/doc/netbeans.txt Sat Aug 9 19:36:49 2008
+--- runtime/doc/netbeans.txt Tue Jan 6 15:23:39 2009
+***************
+*** 1,4 ****
+! *netbeans.txt* For Vim version 7.2. Last change: 2008 Jun 28
+
+
+ VIM REFERENCE MANUAL by Gordon Prieur et al.
+--- 1,4 ----
+! *netbeans.txt* For Vim version 7.2. Last change: 2009 Jan 06
+
+
+ VIM REFERENCE MANUAL by Gordon Prieur et al.
+***************
+*** 722,729 ****
+ of the cursor.
+ New in version 2.1.
+
+! killed A file was closed by the user. Only for files that have been
+! assigned a number by the IDE.
+
+ newDotAndMark off off
+ Reports the position of the cursor being at "off" bytes into
+--- 722,731 ----
+ of the cursor.
+ New in version 2.1.
+
+! killed A file was deleted or wiped out by the user and the buffer
+! annotations have been removed. The bufID number for this
+! buffer has become invalid. Only for files that have been
+! assigned a bufID number by the IDE.
+
+ newDotAndMark off off
+ Reports the position of the cursor being at "off" bytes into
+*** ../vim-7.2.078/src/buffer.c Wed Dec 3 11:21:20 2008
+--- src/buffer.c Tue Jan 6 15:23:02 2009
+***************
+*** 437,446 ****
+ return;
+ #endif
+
+- #ifdef FEAT_NETBEANS_INTG
+- if (usingNetbeans)
+- netbeans_file_closed(buf);
+- #endif
+ /* Change directories when the 'acd' option is set. */
+ DO_AUTOCHDIR
+
+--- 437,442 ----
+***************
+*** 639,644 ****
+--- 635,644 ----
+ #ifdef FEAT_SIGNS
+ buf_delete_signs(buf); /* delete any signs */
+ #endif
++ #ifdef FEAT_NETBEANS_INTG
++ if (usingNetbeans)
++ netbeans_file_killed(buf);
++ #endif
+ #ifdef FEAT_LOCALMAP
+ map_clear_int(buf, MAP_ALL_MODES, TRUE, FALSE); /* clear local mappings */
+ map_clear_int(buf, MAP_ALL_MODES, TRUE, TRUE); /* clear local abbrevs */
+***************
+*** 815,823 ****
+ int bnr; /* buffer number */
+ char_u *p;
+
+- #ifdef FEAT_NETBEANS_INTG
+- netbeansCloseFile = 1;
+- #endif
+ if (addr_count == 0)
+ {
+ (void)do_buffer(command, DOBUF_CURRENT, FORWARD, 0, forceit);
+--- 815,820 ----
+***************
+*** 912,920 ****
+ }
+ }
+
+- #ifdef FEAT_NETBEANS_INTG
+- netbeansCloseFile = 0;
+- #endif
+
+ return errormsg;
+ }
+--- 909,914 ----
+*** ../vim-7.2.078/src/globals.h Fri Nov 28 21:26:50 2008
+--- src/globals.h Tue Jan 6 15:23:02 2009
+***************
+*** 1340,1346 ****
+
+ #ifdef FEAT_NETBEANS_INTG
+ EXTERN char *netbeansArg INIT(= NULL); /* the -nb[:host:port:passwd] arg */
+- EXTERN int netbeansCloseFile INIT(= 0); /* send killed if != 0 */
+ EXTERN int netbeansFireChanges INIT(= 1); /* send buffer changes if != 0 */
+ EXTERN int netbeansForcedQuit INIT(= 0);/* don't write modified files */
+ EXTERN int netbeansReadFile INIT(= 1); /* OK to read from disk if != 0 */
+--- 1340,1345 ----
+*** ../vim-7.2.078/src/netbeans.c Wed Dec 24 12:20:10 2008
+--- src/netbeans.c Tue Jan 6 15:23:02 2009
+***************
+*** 2921,2964 ****
+ }
+
+ /*
+! * Tell netbeans a file was closed.
+ */
+ void
+! netbeans_file_closed(buf_T *bufp)
+ {
+ int bufno = nb_getbufno(bufp);
+ nbbuf_T *nbbuf = nb_get_buf(bufno);
+ char buffer[2*MAXPATHL];
+
+! if (!haveConnection || bufno < 0)
+ return;
+
+! if (!netbeansCloseFile)
+! {
+! nbdebug(("Ignoring file_closed for %s. File was closed from IDE\n",
+! bufp->b_ffname));
+! return;
+! }
+!
+! nbdebug(("netbeans_file_closed:\n"));
+! nbdebug((" Closing bufno: %d", bufno));
+! if (curbuf != NULL && curbuf != bufp)
+! {
+! nbdebug((" Curbuf bufno: %d\n", nb_getbufno(curbuf)));
+! }
+! else if (curbuf == bufp)
+! {
+! nbdebug((" curbuf == bufp\n"));
+! }
+!
+! if (bufno <= 0)
+! return;
+
+ sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
+
+ nbdebug(("EVT: %s", buffer));
+
+! nb_send(buffer, "netbeans_file_closed");
+
+ if (nbbuf != NULL)
+ nbbuf->bufp = NULL;
+--- 2921,2946 ----
+ }
+
+ /*
+! * Tell netbeans that a file was deleted or wiped out.
+ */
+ void
+! netbeans_file_killed(buf_T *bufp)
+ {
+ int bufno = nb_getbufno(bufp);
+ nbbuf_T *nbbuf = nb_get_buf(bufno);
+ char buffer[2*MAXPATHL];
+
+! if (!haveConnection || bufno == -1)
+ return;
+
+! nbdebug(("netbeans_file_killed:\n"));
+! nbdebug((" Killing bufno: %d", bufno));
+
+ sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno);
+
+ nbdebug(("EVT: %s", buffer));
+
+! nb_send(buffer, "netbeans_file_killed");
+
+ if (nbbuf != NULL)
+ nbbuf->bufp = NULL;
+*** ../vim-7.2.078/src/proto/netbeans.pro Tue Jun 24 23:25:53 2008
+--- src/proto/netbeans.pro Tue Jan 6 15:23:02 2009
+***************
+*** 11,17 ****
+ void netbeans_frame_moved __ARGS((int new_x, int new_y));
+ void netbeans_file_activated __ARGS((buf_T *bufp));
+ void netbeans_file_opened __ARGS((buf_T *bufp));
+! void netbeans_file_closed __ARGS((buf_T *bufp));
+ void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
+ void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+ void netbeans_unmodified __ARGS((buf_T *bufp));
+--- 11,17 ----
+ void netbeans_frame_moved __ARGS((int new_x, int new_y));
+ void netbeans_file_activated __ARGS((buf_T *bufp));
+ void netbeans_file_opened __ARGS((buf_T *bufp));
+! void netbeans_file_killed __ARGS((buf_T *bufp));
+ void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen));
+ void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len));
+ void netbeans_unmodified __ARGS((buf_T *bufp));
+*** ../vim-7.2.078/src/version.c Tue Jan 6 15:01:58 2009
+--- src/version.c Tue Jan 6 16:11:11 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 79,
+ /**/
+
+--
+Friends? I have lots of friends! In fact, I have every episode ever made.
+
+ /// 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.080 b/source/ap/vim/patches/7.2.080
new file mode 100644
index 000000000..399f9e1c3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.080
@@ -0,0 +1,365 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.080
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.080
+Problem: When typing a composing character just after starting completion
+ may access memory before its allocation point. (Dominique Pelle)
+Solution: Don't delete before the completion start column. Add extra checks
+ for the offset not being negative.
+Files: src/edit.c
+
+
+*** ../vim-7.2.079/src/edit.c Wed Aug 6 18:56:55 2008
+--- src/edit.c Tue Jan 13 12:05:57 2009
+***************
+*** 147,152 ****
+--- 147,153 ----
+ static int ins_compl_bs __ARGS((void));
+ static void ins_compl_new_leader __ARGS((void));
+ static void ins_compl_addleader __ARGS((int c));
++ static int ins_compl_len __ARGS((void));
+ static void ins_compl_restart __ARGS((void));
+ static void ins_compl_set_original_text __ARGS((char_u *str));
+ static void ins_compl_addfrommatch __ARGS((void));
+***************
+*** 197,203 ****
+ static void mb_replace_pop_ins __ARGS((int cc));
+ #endif
+ static void replace_flush __ARGS((void));
+! static void replace_do_bs __ARGS((void));
+ #ifdef FEAT_CINDENT
+ static int cindent_on __ARGS((void));
+ #endif
+--- 198,205 ----
+ static void mb_replace_pop_ins __ARGS((int cc));
+ #endif
+ static void replace_flush __ARGS((void));
+! static void replace_do_bs __ARGS((int limit_col));
+! static int del_char_after_col __ARGS((int limit_col));
+ #ifdef FEAT_CINDENT
+ static int cindent_on __ARGS((void));
+ #endif
+***************
+*** 1933,1938 ****
+--- 1935,1942 ----
+ /*
+ * Backspace the cursor until the given column. Handles REPLACE and VREPLACE
+ * modes correctly. May also be used when not in insert mode at all.
++ * Will attempt not to go before "col" even when there is a composing
++ * character.
+ */
+ void
+ backspace_until_column(col)
+***************
+*** 1942,1954 ****
+ {
+ curwin->w_cursor.col--;
+ if (State & REPLACE_FLAG)
+! replace_do_bs();
+! else
+! (void)del_char(FALSE);
+ }
+ }
+ #endif
+
+ #if defined(FEAT_INS_EXPAND) || defined(PROTO)
+ /*
+ * CTRL-X pressed in Insert mode.
+--- 1946,1994 ----
+ {
+ curwin->w_cursor.col--;
+ if (State & REPLACE_FLAG)
+! replace_do_bs(col);
+! else if (!del_char_after_col(col))
+! break;
+ }
+ }
+ #endif
+
++ /*
++ * Like del_char(), but make sure not to go before column "limit_col".
++ * Only matters when there are composing characters.
++ * Return TRUE when something was deleted.
++ */
++ static int
++ del_char_after_col(limit_col)
++ int limit_col;
++ {
++ #ifdef FEAT_MBYTE
++ if (enc_utf8 && limit_col >= 0)
++ {
++ int ecol = curwin->w_cursor.col + 1;
++
++ /* Make sure the cursor is at the start of a character, but
++ * skip forward again when going too far back because of a
++ * composing character. */
++ mb_adjust_cursor();
++ while (curwin->w_cursor.col < limit_col)
++ {
++ int l = utf_ptr2len(ml_get_cursor());
++
++ if (l == 0) /* end of line */
++ break;
++ curwin->w_cursor.col += l;
++ }
++ if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
++ return FALSE;
++ del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
++ }
++ else
++ #endif
++ (void)del_char(FALSE);
++ return TRUE;
++ }
++
+ #if defined(FEAT_INS_EXPAND) || defined(PROTO)
+ /*
+ * CTRL-X pressed in Insert mode.
+***************
+*** 2418,2424 ****
+ {
+ had_match = (curwin->w_cursor.col > compl_col);
+ ins_compl_delete();
+! ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+ ins_redraw(FALSE);
+
+ /* When the match isn't there (to avoid matching itself) remove it
+--- 2458,2464 ----
+ {
+ had_match = (curwin->w_cursor.col > compl_col);
+ ins_compl_delete();
+! ins_bytes(compl_leader + ins_compl_len());
+ ins_redraw(FALSE);
+
+ /* When the match isn't there (to avoid matching itself) remove it
+***************
+*** 2470,2476 ****
+ *p = NUL;
+ had_match = (curwin->w_cursor.col > compl_col);
+ ins_compl_delete();
+! ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+ ins_redraw(FALSE);
+
+ /* When the match isn't there (to avoid matching itself) remove it
+--- 2510,2516 ----
+ *p = NUL;
+ had_match = (curwin->w_cursor.col > compl_col);
+ ins_compl_delete();
+! ins_bytes(compl_leader + ins_compl_len());
+ ins_redraw(FALSE);
+
+ /* When the match isn't there (to avoid matching itself) remove it
+***************
+*** 3209,3215 ****
+ {
+ ins_compl_del_pum();
+ ins_compl_delete();
+! ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+ compl_used_match = FALSE;
+
+ if (compl_started)
+--- 3249,3255 ----
+ {
+ ins_compl_del_pum();
+ ins_compl_delete();
+! ins_bytes(compl_leader + ins_compl_len());
+ compl_used_match = FALSE;
+
+ if (compl_started)
+***************
+*** 3264,3269 ****
+--- 3304,3323 ----
+ }
+
+ /*
++ * Return the length of the completion, from the completion start column to
++ * the cursor column. Making sure it never goes below zero.
++ */
++ static int
++ ins_compl_len()
++ {
++ int off = curwin->w_cursor.col - compl_col;
++
++ if (off < 0)
++ return 0;
++ return off;
++ }
++
++ /*
+ * Append one character to the match leader. May reduce the number of
+ * matches.
+ */
+***************
+*** 3621,3630 ****
+ {
+ ins_compl_delete();
+ if (compl_leader != NULL)
+! ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+ else if (compl_first_match != NULL)
+! ins_bytes(compl_orig_text
+! + curwin->w_cursor.col - compl_col);
+ retval = TRUE;
+ }
+
+--- 3675,3683 ----
+ {
+ ins_compl_delete();
+ if (compl_leader != NULL)
+! ins_bytes(compl_leader + ins_compl_len());
+ else if (compl_first_match != NULL)
+! ins_bytes(compl_orig_text + ins_compl_len());
+ retval = TRUE;
+ }
+
+***************
+*** 4256,4262 ****
+ static void
+ ins_compl_insert()
+ {
+! ins_bytes(compl_shown_match->cp_str + curwin->w_cursor.col - compl_col);
+ if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
+ compl_used_match = FALSE;
+ else
+--- 4309,4315 ----
+ static void
+ ins_compl_insert()
+ {
+! ins_bytes(compl_shown_match->cp_str + ins_compl_len());
+ if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
+ compl_used_match = FALSE;
+ else
+***************
+*** 4425,4431 ****
+ if (!compl_get_longest || compl_used_match)
+ ins_compl_insert();
+ else
+! ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+ }
+ else
+ compl_used_match = FALSE;
+--- 4478,4484 ----
+ if (!compl_get_longest || compl_used_match)
+ ins_compl_insert();
+ else
+! ins_bytes(compl_leader + ins_compl_len());
+ }
+ else
+ compl_used_match = FALSE;
+***************
+*** 7123,7131 ****
+ * cc == 0: character was inserted, delete it
+ * cc > 0: character was replaced, put cc (first byte of original char) back
+ * and check for more characters to be put back
+ */
+ static void
+! replace_do_bs()
+ {
+ int cc;
+ #ifdef FEAT_VREPLACE
+--- 7176,7187 ----
+ * cc == 0: character was inserted, delete it
+ * cc > 0: character was replaced, put cc (first byte of original char) back
+ * and check for more characters to be put back
++ * When "limit_col" is >= 0, don't delete before this column. Matters when
++ * using composing characters, use del_char_after_col() instead of del_char().
+ */
+ static void
+! replace_do_bs(limit_col)
+! int limit_col;
+ {
+ int cc;
+ #ifdef FEAT_VREPLACE
+***************
+*** 7153,7159 ****
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+! del_char(FALSE);
+ # ifdef FEAT_VREPLACE
+ if (State & VREPLACE_FLAG)
+ orig_len = (int)STRLEN(ml_get_cursor());
+--- 7209,7215 ----
+ #ifdef FEAT_MBYTE
+ if (has_mbyte)
+ {
+! (void)del_char_after_col(limit_col);
+ # ifdef FEAT_VREPLACE
+ if (State & VREPLACE_FLAG)
+ orig_len = (int)STRLEN(ml_get_cursor());
+***************
+*** 7203,7209 ****
+ changed_bytes(curwin->w_cursor.lnum, curwin->w_cursor.col);
+ }
+ else if (cc == 0)
+! (void)del_char(FALSE);
+ }
+
+ #ifdef FEAT_CINDENT
+--- 7259,7265 ----
+ changed_bytes(curwin->w_cursor.lnum, curwin->w_cursor.col);
+ }
+ else if (cc == 0)
+! (void)del_char_after_col(limit_col);
+ }
+
+ #ifdef FEAT_CINDENT
+***************
+*** 8239,8245 ****
+ * Replace mode */
+ if (curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+! replace_do_bs();
+ }
+ else
+ (void)del_char(FALSE);
+--- 8295,8301 ----
+ * Replace mode */
+ if (curwin->w_cursor.lnum != Insstart.lnum
+ || curwin->w_cursor.col >= Insstart.col)
+! replace_do_bs(-1);
+ }
+ else
+ (void)del_char(FALSE);
+***************
+*** 8556,8562 ****
+ break;
+ }
+ if (State & REPLACE_FLAG)
+! replace_do_bs();
+ else
+ {
+ #ifdef FEAT_MBYTE
+--- 8612,8618 ----
+ break;
+ }
+ if (State & REPLACE_FLAG)
+! replace_do_bs(-1);
+ else
+ {
+ #ifdef FEAT_MBYTE
+*** ../vim-7.2.079/src/version.c Tue Jan 6 16:13:42 2009
+--- src/version.c Tue Jan 13 12:25:29 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 80,
+ /**/
+
+--
+At some point in the project somebody will start whining about the need to
+determine the project "requirements". This involves interviewing people who
+don't know what they want but, curiously, know exactly when they need it.
+ (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.081 b/source/ap/vim/patches/7.2.081
new file mode 100644
index 000000000..9f1259d7c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.081
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.081
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.081
+Problem: Compiler warning for floating point overflow on VAX.
+Solution: For VAX use a smaller number. (Zoltan Arpadffy)
+Files: src/message.c
+
+
+*** ../vim-7.2.080/src/message.c Fri Nov 28 21:26:50 2008
+--- src/message.c Tue Jan 13 16:19:07 2009
+***************
+*** 4556,4562 ****
+ remove_trailing_zeroes = TRUE;
+ }
+
+! if (fmt_spec == 'f' && abs_f > 1.0e307)
+ {
+ /* Avoid a buffer overflow */
+ strcpy(tmp, "inf");
+--- 4556,4568 ----
+ remove_trailing_zeroes = TRUE;
+ }
+
+! if (fmt_spec == 'f' &&
+! #ifdef VAX
+! abs_f > 1.0e38
+! #else
+! abs_f > 1.0e307
+! #endif
+! )
+ {
+ /* Avoid a buffer overflow */
+ strcpy(tmp, "inf");
+*** ../vim-7.2.080/src/version.c Tue Jan 13 12:29:03 2009
+--- src/version.c Tue Jan 13 16:19:52 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 81,
+ /**/
+
+--
+Sometimes you can protect millions of dollars in your budget simply by buying
+a bag of cookies, dropping it on the budget anylyst's desk, and saying
+something deeply personal such as "How was your weekend, big guy?"
+ (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.082 b/source/ap/vim/patches/7.2.082
new file mode 100644
index 000000000..c6bf703cc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.082
@@ -0,0 +1,77 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.082
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.082
+Problem: When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a.
+ (Andy Wokula)
+Solution: Use NL for this situation. (Lech Lorens)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.081/src/ex_cmds.c Fri Nov 28 21:26:50 2008
+--- src/ex_cmds.c Tue Jan 13 16:51:32 2009
+***************
+*** 49,54 ****
+--- 49,55 ----
+ exarg_T *eap;
+ {
+ int c;
++ int cval;
+ char buf1[20];
+ char buf2[20];
+ char_u buf3[7];
+***************
+*** 75,80 ****
+--- 76,85 ----
+ {
+ if (c == NL) /* NUL is stored as NL */
+ c = NUL;
++ if (c == CAR && get_fileformat(curbuf) == EOL_MAC)
++ cval = NL; /* NL is stored as CR */
++ else
++ cval = c;
+ if (vim_isprintc_strict(c) && (c < ' '
+ #ifndef EBCDIC
+ || c > '~'
+***************
+*** 94,100 ****
+ buf2[0] = NUL;
+ vim_snprintf((char *)IObuff, IOSIZE,
+ _("<%s>%s%s %d, Hex %02x, Octal %03o"),
+! transchar(c), buf1, buf2, c, c, c);
+ #ifdef FEAT_MBYTE
+ if (enc_utf8)
+ c = cc[ci++];
+--- 99,105 ----
+ buf2[0] = NUL;
+ vim_snprintf((char *)IObuff, IOSIZE,
+ _("<%s>%s%s %d, Hex %02x, Octal %03o"),
+! transchar(c), buf1, buf2, cval, cval, cval);
+ #ifdef FEAT_MBYTE
+ if (enc_utf8)
+ c = cc[ci++];
+*** ../vim-7.2.081/src/version.c Tue Jan 13 16:37:31 2009
+--- src/version.c Tue Jan 13 16:53:39 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 82,
+ /**/
+
+--
+The budget process was invented by an alien race of sadistic beings who
+resemble large cats.
+ (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.083 b/source/ap/vim/patches/7.2.083
new file mode 100644
index 000000000..5406ebc6b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.083
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.083
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.083
+Problem: ":tag" does not return to the right tag entry from the tag stack.
+Solution: Don't change the current match when there is no argument.
+ (Erik Falor)
+Files: src/tag.c
+
+
+*** ../vim-7.2.082/src/tag.c Tue Dec 9 12:12:31 2008
+--- src/tag.c Tue Jan 13 17:14:59 2009
+***************
+*** 515,521 ****
+ * If a count is supplied to the ":tag <name>" command, then
+ * jump to count'th matching tag.
+ */
+! if (type == DT_TAG && count > 0)
+ cur_match = count - 1;
+
+ if (type == DT_SELECT || type == DT_JUMP
+--- 515,521 ----
+ * If a count is supplied to the ":tag <name>" command, then
+ * jump to count'th matching tag.
+ */
+! if (type == DT_TAG && *tag != NUL && count > 0)
+ cur_match = count - 1;
+
+ if (type == DT_SELECT || type == DT_JUMP
+*** ../vim-7.2.082/src/version.c Tue Jan 13 16:57:09 2009
+--- src/version.c Tue Jan 13 17:16:42 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 83,
+ /**/
+
+--
+Engineers will go without food and hygiene for days to solve a problem.
+(Other times just because they forgot.)
+ (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.084 b/source/ap/vim/patches/7.2.084
new file mode 100644
index 000000000..4c912ca7a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.084
@@ -0,0 +1,144 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.084
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.084
+Problem: Recursive structures are not handled properly in Python
+ vim.eval().
+Solution: Keep track of references in a better way. (Yukihiro Nakadaira)
+Files: src/if_python.c
+
+
+*** ../vim-7.2.083/src/if_python.c Thu Nov 20 11:04:01 2008
+--- src/if_python.c Tue Jan 13 18:08:06 2009
+***************
+*** 1151,1164 ****
+
+ /* Check if we run into a recursive loop. The item must be in lookupDict
+ * then and we can use it again. */
+! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U, (long_u)our_tv);
+! result = PyDict_GetItemString(lookupDict, ptrBuf);
+! if (result != NULL)
+! Py_INCREF(result);
+! else if (our_tv->v_type == VAR_STRING)
+ {
+ result = Py_BuildValue("s", our_tv->vval.v_string);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ }
+ else if (our_tv->v_type == VAR_NUMBER)
+ {
+--- 1151,1173 ----
+
+ /* Check if we run into a recursive loop. The item must be in lookupDict
+ * then and we can use it again. */
+! if ((our_tv->v_type == VAR_LIST && our_tv->vval.v_list != NULL)
+! || (our_tv->v_type == VAR_DICT && our_tv->vval.v_dict != NULL))
+! {
+! sprintf(ptrBuf, PRINTF_DECIMAL_LONG_U,
+! our_tv->v_type == VAR_LIST ? (long_u)our_tv->vval.v_list
+! : (long_u)our_tv->vval.v_dict);
+! result = PyDict_GetItemString(lookupDict, ptrBuf);
+! if (result != NULL)
+! {
+! Py_INCREF(result);
+! return result;
+! }
+! }
+!
+! if (our_tv->v_type == VAR_STRING)
+ {
+ result = Py_BuildValue("s", our_tv->vval.v_string);
+ }
+ else if (our_tv->v_type == VAR_NUMBER)
+ {
+***************
+*** 1167,1173 ****
+ /* For backwards compatibility numbers are stored as strings. */
+ sprintf(buf, "%ld", (long)our_tv->vval.v_number);
+ result = Py_BuildValue("s", buf);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ }
+ # ifdef FEAT_FLOAT
+ else if (our_tv->v_type == VAR_FLOAT)
+--- 1176,1181 ----
+***************
+*** 1176,1182 ****
+
+ sprintf(buf, "%f", our_tv->vval.v_float);
+ result = Py_BuildValue("s", buf);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+ }
+ # endif
+ else if (our_tv->v_type == VAR_LIST)
+--- 1184,1189 ----
+***************
+*** 1185,1194 ****
+ listitem_T *curr;
+
+ result = PyList_New(0);
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+
+ if (list != NULL)
+ {
+ for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+ {
+ newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
+--- 1192,1202 ----
+ listitem_T *curr;
+
+ result = PyList_New(0);
+
+ if (list != NULL)
+ {
++ PyDict_SetItemString(lookupDict, ptrBuf, result);
++
+ for (curr = list->lv_first; curr != NULL; curr = curr->li_next)
+ {
+ newObj = VimToPython(&curr->li_tv, depth + 1, lookupDict);
+***************
+*** 1200,1206 ****
+ else if (our_tv->v_type == VAR_DICT)
+ {
+ result = PyDict_New();
+- PyDict_SetItemString(lookupDict, ptrBuf, result);
+
+ if (our_tv->vval.v_dict != NULL)
+ {
+--- 1208,1213 ----
+***************
+*** 1209,1214 ****
+--- 1216,1223 ----
+ hashitem_T *hi;
+ dictitem_T *di;
+
++ PyDict_SetItemString(lookupDict, ptrBuf, result);
++
+ for (hi = ht->ht_array; todo > 0; ++hi)
+ {
+ if (!HASHITEM_EMPTY(hi))
+*** ../vim-7.2.083/src/version.c Tue Jan 13 17:27:18 2009
+--- src/version.c Tue Jan 13 17:54:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 84,
+ /**/
+
+--
+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.085 b/source/ap/vim/patches/7.2.085
new file mode 100644
index 000000000..f9828fa1d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.085
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.085
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.085
+Problem: ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8.
+Solution: Put the <M-b> character in the input buffer as valid utf-8.
+ (partly by Matt Wosniski)
+Files: src/term.c
+
+
+*** ../vim-7.2.084/src/term.c Tue Jul 29 12:22:12 2008
+--- src/term.c Thu Jan 22 18:18:29 2009
+***************
+*** 4920,4926 ****
+ key_name[0] = KEY2TERMCAP0(key);
+ key_name[1] = KEY2TERMCAP1(key);
+ if (key_name[0] == KS_KEY)
+! string[new_slen++] = key_name[1]; /* from ":set <M-b>=xx" */
+ else
+ {
+ string[new_slen++] = K_SPECIAL;
+--- 4920,4934 ----
+ key_name[0] = KEY2TERMCAP0(key);
+ key_name[1] = KEY2TERMCAP1(key);
+ if (key_name[0] == KS_KEY)
+! {
+! /* from ":set <M-b>=xx" */
+! #ifdef FEAT_MBYTE
+! if (has_mbyte)
+! new_slen += (*mb_char2bytes)(key_name[1], string + new_slen);
+! else
+! #endif
+! string[new_slen++] = key_name[1];
+! }
+ else
+ {
+ string[new_slen++] = K_SPECIAL;
+*** ../vim-7.2.084/src/version.c Tue Jan 13 18:10:21 2009
+--- src/version.c Thu Jan 22 18:31:50 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 85,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+20. When looking at a pageful of someone else's links, you notice all of them
+ are already highlighted in purple.
+
+ /// 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.086 b/source/ap/vim/patches/7.2.086
new file mode 100644
index 000000000..f55efbb2c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.086
@@ -0,0 +1,98 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.086
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.086
+Problem: Using ":diffget 1" in buffer 1 corrupts the text.
+Solution: Don't do anything when source and destination of ":diffget" or
+ ":diffput" is the same buffer. (Dominique Pelle)
+Files: src/diff.c
+
+
+*** ../vim-7.2.085/src/diff.c Sun Nov 30 15:15:56 2008
+--- src/diff.c Wed Jan 14 20:40:25 2009
+***************
+*** 8,14 ****
+ */
+
+ /*
+! * diff.c: code for diff'ing two or three buffers.
+ */
+
+ #include "vim.h"
+--- 8,14 ----
+ */
+
+ /*
+! * diff.c: code for diff'ing two, three or four buffers.
+ */
+
+ #include "vim.h"
+***************
+*** 116,122 ****
+ * Add a buffer to make diffs for.
+ * Call this when a new buffer is being edited in the current window where
+ * 'diff' is set.
+! * Marks the current buffer as being part of the diff and requireing updating.
+ * This must be done before any autocmd, because a command may use info
+ * about the screen contents.
+ */
+--- 116,122 ----
+ * Add a buffer to make diffs for.
+ * Call this when a new buffer is being edited in the current window where
+ * 'diff' is set.
+! * Marks the current buffer as being part of the diff and requiring updating.
+ * This must be done before any autocmd, because a command may use info
+ * about the screen contents.
+ */
+***************
+*** 929,935 ****
+ goto theend;
+
+ #ifdef UNIX
+! /* Temporaraly chdir to /tmp, to avoid patching files in the current
+ * directory when the patch file contains more than one patch. When we
+ * have our own temp dir use that instead, it will be cleaned up when we
+ * exit (any .rej files created). Don't change directory if we can't
+--- 929,935 ----
+ goto theend;
+
+ #ifdef UNIX
+! /* Temporarily chdir to /tmp, to avoid patching files in the current
+ * directory when the patch file contains more than one patch. When we
+ * have our own temp dir use that instead, it will be cleaned up when we
+ * exit (any .rej files created). Don't change directory if we can't
+***************
+*** 2129,2134 ****
+--- 2129,2136 ----
+ EMSG2(_("E102: Can't find buffer \"%s\""), eap->arg);
+ return;
+ }
++ if (buf == curbuf)
++ return; /* nothing to do */
+ idx_other = diff_buf_idx(buf);
+ if (idx_other == DB_COUNT)
+ {
+*** ../vim-7.2.085/src/version.c Thu Jan 22 18:32:55 2009
+--- src/version.c Thu Jan 22 20:46:54 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 86,
+ /**/
+
+--
+Shift happens.
+ -- Doppler
+
+ /// 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.087 b/source/ap/vim/patches/7.2.087
new file mode 100644
index 000000000..942acca2c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.087
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.087
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.087
+Problem: Adding URL to 'path' doesn't work to edit a file.
+Solution: Skip simplify_filename() for URLs. (Matt Wosniski)
+Files: src/misc2.c
+
+
+*** ../vim-7.2.086/src/misc2.c Wed Dec 24 12:53:33 2008
+--- src/misc2.c Sun Jan 18 12:26:20 2009
+***************
+*** 4696,4702 ****
+ stackp->ffs_filearray_cur = i + 1;
+ ff_push(search_ctx, stackp);
+
+! simplify_filename(file_path);
+ if (mch_dirname(ff_expand_buffer, MAXPATHL)
+ == OK)
+ {
+--- 4696,4703 ----
+ stackp->ffs_filearray_cur = i + 1;
+ ff_push(search_ctx, stackp);
+
+! if (!path_with_url(file_path))
+! simplify_filename(file_path);
+ if (mch_dirname(ff_expand_buffer, MAXPATHL)
+ == OK)
+ {
+*** ../vim-7.2.086/src/version.c Thu Jan 22 20:48:07 2009
+--- src/version.c Thu Jan 22 21:30:36 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 87,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+21. Your dog has its own home 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.088 b/source/ap/vim/patches/7.2.088
new file mode 100644
index 000000000..1cb985116
--- /dev/null
+++ b/source/ap/vim/patches/7.2.088
@@ -0,0 +1,99 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.088 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.088 (extra)
+Problem: OpenClipboard() may fail when another application is using the
+ clipboard.
+Solution: Retry OpenClipboard() a few times. (Jianrong Yu)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.2.087/src/os_mswin.c Thu Nov 20 17:09:09 2008
+--- src/os_mswin.c Thu Jan 22 18:38:12 2009
+***************
+*** 1224,1229 ****
+--- 1224,1248 ----
+ #endif /* FEAT_MBYTE */
+
+ /*
++ * Wait for another process to Close the Clipboard.
++ * Returns TRUE for success.
++ */
++ int
++ vim_open_clipboard()
++ {
++ int delay = 10;
++
++ while (!OpenClipboard(NULL))
++ {
++ if (delay > 500)
++ return FALSE; /* waited too long, give up */
++ Sleep(delay);
++ delay *= 2; /* wait for 10, 20, 40, 80, etc. msec */
++ }
++ return TRUE;
++ }
++
++ /*
+ * Get the current selection and put it in the clipboard register.
+ *
+ * NOTE: Must use GlobalLock/Unlock here to ensure Win32s compatibility.
+***************
+*** 1254,1260 ****
+ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
+ * then we can't paste back into the same window for some reason - webb.
+ */
+! if (!OpenClipboard(NULL))
+ return;
+
+ /* Check for vim's own clipboard format first. This only gets the type of
+--- 1273,1279 ----
+ * Don't pass GetActiveWindow() as an argument to OpenClipboard() because
+ * then we can't paste back into the same window for some reason - webb.
+ */
+! if (!vim_open_clipboard())
+ return;
+
+ /* Check for vim's own clipboard format first. This only gets the type of
+***************
+*** 1562,1568 ****
+ * because then we can't paste back into the same window for some
+ * reason - webb.
+ */
+! if (OpenClipboard(NULL))
+ {
+ if (EmptyClipboard())
+ {
+--- 1581,1587 ----
+ * because then we can't paste back into the same window for some
+ * reason - webb.
+ */
+! if (vim_open_clipboard())
+ {
+ if (EmptyClipboard())
+ {
+*** ../vim-7.2.087/src/version.c Thu Jan 22 21:31:24 2009
+--- src/version.c Thu Jan 22 21:47:52 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 88,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+22. You've already visited all the links at Yahoo and you're halfway through
+ Lycos.
+
+ /// 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.089 b/source/ap/vim/patches/7.2.089
new file mode 100644
index 000000000..74276c6d4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.089
@@ -0,0 +1,91 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.089 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.089 (extra)
+Problem: Win32: crash when using Ultramon buttons.
+Solution: Don't use a WM_OLE message of zero size. (Ray Megal)
+Files: src/if_ole.cpp, src/gui_w48.c
+
+
+*** ../vim-7.2.088/src/if_ole.cpp Sun Mar 16 14:53:11 2008
+--- src/if_ole.cpp Mon Jan 19 21:16:33 2009
+***************
+*** 353,361 ****
+ }
+
+ /* Pass the string to the main input loop. The memory will be freed when
+! * the message is processed.
+ */
+! PostMessage(NULL, WM_OLE, 0, (LPARAM)str);
+
+ return S_OK;
+ }
+--- 353,365 ----
+ }
+
+ /* Pass the string to the main input loop. The memory will be freed when
+! * the message is processed. Except for an empty message, we don't need
+! * to post it then.
+ */
+! if (*str == NUL)
+! vim_free(str);
+! else
+! PostMessage(NULL, WM_OLE, 0, (LPARAM)str);
+
+ return S_OK;
+ }
+*** ../vim-7.2.088/src/gui_w48.c Wed Dec 24 12:20:10 2008
+--- src/gui_w48.c Mon Jan 19 21:19:30 2009
+***************
+*** 1663,1670 ****
+ if (msg.message == WM_OLE)
+ {
+ char_u *str = (char_u *)msg.lParam;
+! add_to_input_buf(str, (int)STRLEN(str));
+! vim_free(str);
+ return;
+ }
+ #endif
+--- 1663,1679 ----
+ if (msg.message == WM_OLE)
+ {
+ char_u *str = (char_u *)msg.lParam;
+! if (str == NULL || *str == NUL)
+! {
+! /* Message can't be ours, forward it. Fixes problem with Ultramon
+! * 3.0.4 */
+! DispatchMessage(&msg);
+! }
+! else
+! {
+! add_to_input_buf(str, (int)STRLEN(str));
+! vim_free(str); /* was allocated in CVim::SendKeys() */
+! }
+ return;
+ }
+ #endif
+*** ../vim-7.2.088/src/version.c Thu Jan 22 21:49:21 2009
+--- src/version.c Wed Jan 28 14:16:01 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 89,
+ /**/
+
+
+--
+How To Keep A Healthy Level Of Insanity:
+16. Have your coworkers address you by your wrestling name, Rock Hard Kim.
+
+ /// 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.090 b/source/ap/vim/patches/7.2.090
new file mode 100644
index 000000000..59dd7acf3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.090
@@ -0,0 +1,130 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.090
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.090
+Problem: User command containing 0x80 in multi-byte character does not work
+ properly. (Yasuhiro Matsumoto)
+Solution: Undo replacement of K_SPECIAL and CSI characters when executing
+ the command.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.089/src/ex_docmd.c Tue Dec 9 11:17:23 2008
+--- src/ex_docmd.c Wed Jan 28 15:34:19 2009
+***************
+*** 5482,5487 ****
+--- 5482,5490 ----
+ return OK;
+ }
+
++ /*
++ * ":command ..."
++ */
+ static void
+ ex_command(eap)
+ exarg_T *eap;
+***************
+*** 5914,5919 ****
+--- 5917,5923 ----
+
+ char_u *start;
+ char_u *end;
++ char_u *ksp;
+ size_t len, totlen;
+
+ size_t split_len = 0;
+***************
+*** 5930,5945 ****
+
+ /*
+ * Replace <> in the command by the arguments.
+ */
+ buf = NULL;
+ for (;;)
+ {
+! p = cmd->uc_rep;
+! q = buf;
+ totlen = 0;
+! while ((start = vim_strchr(p, '<')) != NULL
+! && (end = vim_strchr(start + 1, '>')) != NULL)
+ {
+ /* Include the '>' */
+ ++end;
+
+--- 5934,5984 ----
+
+ /*
+ * Replace <> in the command by the arguments.
++ * First round: "buf" is NULL, compute length, allocate "buf".
++ * Second round: copy result into "buf".
+ */
+ buf = NULL;
+ for (;;)
+ {
+! p = cmd->uc_rep; /* source */
+! q = buf; /* destinateion */
+ totlen = 0;
+!
+! for (;;)
+ {
++ start = vim_strchr(p, '<');
++ if (start != NULL)
++ end = vim_strchr(start + 1, '>');
++ if (buf != NULL)
++ {
++ ksp = vim_strchr(p, K_SPECIAL);
++ if (ksp != NULL && (start == NULL || ksp < start || end == NULL)
++ && ((ksp[1] == KS_SPECIAL && ksp[2] == KE_FILLER)
++ # ifdef FEAT_GUI
++ || (ksp[1] == KS_EXTRA && ksp[2] == (int)KE_CSI)
++ # endif
++ ))
++ {
++ /* K_SPECIAL han been put in the buffer as K_SPECIAL
++ * KS_SPECIAL KE_FILLER, like for mappings, but
++ * do_cmdline() doesn't handle that, so convert it back.
++ * Also change K_SPECIAL KS_EXTRA KE_CSI into CSI. */
++ len = ksp - p;
++ if (len > 0)
++ {
++ mch_memmove(q, p, len);
++ q += len;
++ }
++ *q++ = ksp[1] == KS_SPECIAL ? K_SPECIAL : CSI;
++ p = ksp + 3;
++ continue;
++ }
++ }
++
++ /* break if there no <item> is found */
++ if (start == NULL || end == NULL)
++ break;
++
+ /* Include the '>' */
+ ++end;
+
+*** ../vim-7.2.089/src/version.c Wed Jan 28 14:17:21 2009
+--- src/version.c Wed Jan 28 15:37:40 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 90,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+17. When the money comes out the ATM, scream "I won!, I won! 3rd
+ time this 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.091 b/source/ap/vim/patches/7.2.091
new file mode 100644
index 000000000..766a155e1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.091
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.091
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.091
+Problem: ":cs help" output is not aligned for some languages.
+Solution: Compute character size instead of byte size. (Dominique Pelle)
+Files: src/if_cscope.c
+
+
+*** ../vim-7.2.090/src/if_cscope.c Mon Aug 25 04:35:13 2008
+--- src/if_cscope.c Thu Jan 22 18:44:46 2009
+***************
+*** 1177,1184 ****
+ (void)MSG_PUTS(_("cscope commands:\n"));
+ while (cmdp->name != NULL)
+ {
+! (void)smsg((char_u *)_("%-5s: %-30s (Usage: %s)"),
+! cmdp->name, _(cmdp->help), cmdp->usage);
+ if (strcmp(cmdp->name, "find") == 0)
+ MSG_PUTS(_("\n"
+ " c: Find functions calling this function\n"
+--- 1177,1192 ----
+ (void)MSG_PUTS(_("cscope commands:\n"));
+ while (cmdp->name != NULL)
+ {
+! char *help = _(cmdp->help);
+! int space_cnt = 30 - vim_strsize((char_u *)help);
+!
+! /* Use %*s rather than %30s to ensure proper alignment in utf-8 */
+! if (space_cnt < 0)
+! space_cnt = 0;
+! (void)smsg((char_u *)_("%-5s: %s%*s (Usage: %s)"),
+! cmdp->name,
+! help, space_cnt, " ",
+! cmdp->usage);
+ if (strcmp(cmdp->name, "find") == 0)
+ MSG_PUTS(_("\n"
+ " c: Find functions calling this function\n"
+*** ../vim-7.2.090/src/version.c Wed Jan 28 15:42:07 2009
+--- src/version.c Wed Jan 28 16:02:25 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 91,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+18. When leaving the zoo, start running towards the parking lot,
+ yelling "run for your lives, they're loose!!"
+
+ /// 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.092 b/source/ap/vim/patches/7.2.092
new file mode 100644
index 000000000..633903ee7
--- /dev/null
+++ b/source/ap/vim/patches/7.2.092
@@ -0,0 +1,164 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.092
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.092
+Problem: Some error messages are not translated.
+Solution: Add _() around the messages. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.2.091/src/eval.c Sun Dec 21 13:02:47 2008
+--- src/eval.c Sat Jan 24 12:22:47 2009
+***************
+*** 7918,7926 ****
+ else if (!aborting())
+ {
+ if (argcount == MAX_FUNC_ARGS)
+! emsg_funcname("E740: Too many arguments for function %s", name);
+ else
+! emsg_funcname("E116: Invalid arguments for function %s", name);
+ }
+
+ while (--argcount >= 0)
+--- 7918,7926 ----
+ else if (!aborting())
+ {
+ if (argcount == MAX_FUNC_ARGS)
+! emsg_funcname(N_("E740: Too many arguments for function %s"), name);
+ else
+! emsg_funcname(N_("E116: Invalid arguments for function %s"), name);
+ }
+
+ while (--argcount >= 0)
+***************
+*** 8153,8158 ****
+--- 8153,8159 ----
+
+ /*
+ * Give an error message with a function name. Handle <SNR> things.
++ * "ermsg" is to be passed without translation, use N_() instead of _().
+ */
+ static void
+ emsg_funcname(ermsg, name)
+***************
+*** 19867,19873 ****
+ }
+ }
+ else
+! emsg_funcname("E123: Undefined function: %s", name);
+ }
+ goto ret_free;
+ }
+--- 19868,19874 ----
+ }
+ }
+ else
+! emsg_funcname(N_("E123: Undefined function: %s"), name);
+ }
+ goto ret_free;
+ }
+***************
+*** 19911,19917 ****
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname(_(e_invarg2), arg);
+ }
+ }
+
+--- 19912,19918 ----
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname(e_invarg2, arg);
+ }
+ }
+
+***************
+*** 20183,20189 ****
+ v = find_var(name, &ht);
+ if (v != NULL && v->di_tv.v_type == VAR_FUNC)
+ {
+! emsg_funcname("E707: Function name conflicts with variable: %s",
+ name);
+ goto erret;
+ }
+--- 20184,20190 ----
+ v = find_var(name, &ht);
+ if (v != NULL && v->di_tv.v_type == VAR_FUNC)
+ {
+! emsg_funcname(N_("E707: Function name conflicts with variable: %s"),
+ name);
+ goto erret;
+ }
+***************
+*** 20198,20204 ****
+ }
+ if (fp->uf_calls > 0)
+ {
+! emsg_funcname("E127: Cannot redefine function %s: It is in use",
+ name);
+ goto erret;
+ }
+--- 20199,20205 ----
+ }
+ if (fp->uf_calls > 0)
+ {
+! emsg_funcname(N_("E127: Cannot redefine function %s: It is in use"),
+ name);
+ goto erret;
+ }
+***************
+*** 21477,21483 ****
+
+ /*
+ * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywyere.
+ */
+ static int
+ can_free_funccal(fc, copyID)
+--- 21478,21484 ----
+
+ /*
+ * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywhere.
+ */
+ static int
+ can_free_funccal(fc, copyID)
+*** ../vim-7.2.091/src/version.c Wed Jan 28 16:03:51 2009
+--- src/version.c Wed Jan 28 19:05:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 92,
+ /**/
+
+
+--
+Now it is such a bizarrely improbable coincidence that anything as
+mind-bogglingly useful as the Babel fish could have evolved purely by chance
+that some thinkers have chosen to see it as a final and clinching proof of the
+NON-existence of God.
+The argument goes something like this: 'I refuse to prove that I exist,' says
+God, 'for proof denies faith, and without faith I am nothing.'
+'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not
+have evolved by chance. It proves you exist, and so therefore, by your own
+arguments, you don't. QED.'
+'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
+puff of logic.
+'Oh, that was easy,' says Man, and for an encore goes on to prove that black
+is white and gets himself killed on the next pedestrian crossing.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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.093 b/source/ap/vim/patches/7.2.093
new file mode 100644
index 000000000..b0f44909b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.093
@@ -0,0 +1,234 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.093 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.093 (extra)
+Problem: Win32: inputdialog() and find/replace dialogs can't handle
+ multi-byte text.
+Solution: Use the wide version of dialog functions when available. (Yanwei
+ Jia)
+Files: src/gui_w32.c, src/gui_w48.c
+
+
+*** ../vim-7.2.092/src/gui_w32.c Thu Nov 20 17:09:09 2008
+--- src/gui_w32.c Wed Jan 28 21:15:29 2009
+***************
+*** 1582,1587 ****
+--- 1582,1598 ----
+ s_findrep_struct.lpstrReplaceWith[0] = NUL;
+ s_findrep_struct.wFindWhatLen = MSWIN_FR_BUFSIZE;
+ s_findrep_struct.wReplaceWithLen = MSWIN_FR_BUFSIZE;
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ s_findrep_struct_w.lStructSize = sizeof(s_findrep_struct_w);
++ s_findrep_struct_w.lpstrFindWhat =
++ (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
++ s_findrep_struct_w.lpstrFindWhat[0] = NUL;
++ s_findrep_struct_w.lpstrReplaceWith =
++ (LPWSTR)alloc(MSWIN_FR_BUFSIZE * sizeof(WCHAR));
++ s_findrep_struct_w.lpstrReplaceWith[0] = NUL;
++ s_findrep_struct_w.wFindWhatLen = MSWIN_FR_BUFSIZE;
++ s_findrep_struct_w.wReplaceWithLen = MSWIN_FR_BUFSIZE;
++ # endif
+ #endif
+
+ theend:
+***************
+*** 2938,2945 ****
+
+ /* If the edit box exists, copy the string. */
+ if (s_textfield != NULL)
+! GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
+ s_textfield, IOSIZE);
+
+ /*
+ * Need to check for IDOK because if the user just hits Return to
+--- 2949,2975 ----
+
+ /* If the edit box exists, copy the string. */
+ if (s_textfield != NULL)
+! {
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! /* If the OS is Windows NT, and 'encoding' differs from active
+! * codepage: use wide function and convert text. */
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! WCHAR *wp = (WCHAR *)alloc(IOSIZE * sizeof(WCHAR));
+! char_u *p;
+!
+! GetDlgItemTextW(hwnd, DLG_NONBUTTON_CONTROL + 2, wp, IOSIZE);
+! p = utf16_to_enc(wp, NULL);
+! vim_strncpy(s_textfield, p, IOSIZE);
+! vim_free(p);
+! vim_free(wp);
+! }
+! else
+! # endif
+! GetDlgItemText(hwnd, DLG_NONBUTTON_CONTROL + 2,
+ s_textfield, IOSIZE);
++ }
+
+ /*
+ * Need to check for IDOK because if the user just hits Return to
+*** ../vim-7.2.092/src/gui_w48.c Wed Jan 28 14:17:21 2009
+--- src/gui_w48.c Wed Jan 28 21:10:26 2009
+***************
+*** 153,158 ****
+--- 153,161 ----
+ #ifdef MSWIN_FIND_REPLACE
+ static UINT s_findrep_msg = 0; /* set in gui_w[16/32].c */
+ static FINDREPLACE s_findrep_struct;
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ static FINDREPLACEW s_findrep_struct_w;
++ # endif
+ static HWND s_findrep_hwnd = NULL;
+ static int s_findrep_is_find; /* TRUE for find dialog, FALSE
+ for find/replace dialog */
+***************
+*** 884,889 ****
+--- 887,931 ----
+ #endif
+
+ #ifdef MSWIN_FIND_REPLACE
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ /*
++ * copy useful data from structure LPFINDREPLACE to structure LPFINDREPLACEW
++ */
++ static void
++ findrep_atow(LPFINDREPLACEW lpfrw, LPFINDREPLACE lpfr)
++ {
++ WCHAR *wp;
++
++ lpfrw->hwndOwner = lpfr->hwndOwner;
++ lpfrw->Flags = lpfr->Flags;
++
++ wp = enc_to_utf16(lpfr->lpstrFindWhat, NULL);
++ wcsncpy(lpfrw->lpstrFindWhat, wp, lpfrw->wFindWhatLen - 1);
++ vim_free(wp);
++
++ /* the field "lpstrReplaceWith" doesn't need to be copied */
++ }
++
++ /*
++ * copy useful data from structure LPFINDREPLACEW to structure LPFINDREPLACE
++ */
++ static void
++ findrep_wtoa(LPFINDREPLACE lpfr, LPFINDREPLACEW lpfrw)
++ {
++ char_u *p;
++
++ lpfr->Flags = lpfrw->Flags;
++
++ p = utf16_to_enc(lpfrw->lpstrFindWhat, NULL);
++ vim_strncpy(lpfr->lpstrFindWhat, p, lpfr->wFindWhatLen - 1);
++ vim_free(p);
++
++ p = utf16_to_enc(lpfrw->lpstrReplaceWith, NULL);
++ vim_strncpy(lpfr->lpstrReplaceWith, p, lpfr->wReplaceWithLen - 1);
++ vim_free(p);
++ }
++ # endif
++
+ /*
+ * Handle a Find/Replace window message.
+ */
+***************
+*** 893,898 ****
+--- 935,950 ----
+ int flags = 0;
+ int down;
+
++ # if defined(FEAT_MBYTE) && defined(WIN3264)
++ /* If the OS is Windows NT, and 'encoding' differs from active codepage:
++ * convert text from wide string. */
++ if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
++ && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
++ {
++ findrep_wtoa(&s_findrep_struct, &s_findrep_struct_w);
++ }
++ # endif
++
+ if (s_findrep_struct.Flags & FR_DIALOGTERM)
+ /* Give main window the focus back. */
+ (void)SetFocus(s_hwnd);
+***************
+*** 2562,2568 ****
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+--- 2614,2632 ----
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! /* If the OS is Windows NT, and 'encoding' differs from active
+! * codepage: convert text and use wide function. */
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
+! s_findrep_hwnd = FindTextW(
+! (LPFINDREPLACEW) &s_findrep_struct_w);
+! }
+! else
+! # endif
+! s_findrep_hwnd = FindText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+***************
+*** 2587,2593 ****
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! s_findrep_hwnd = ReplaceText((LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+--- 2651,2668 ----
+ if (!IsWindow(s_findrep_hwnd))
+ {
+ initialise_findrep(eap->arg);
+! # if defined(FEAT_MBYTE) && defined(WIN3264)
+! if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT
+! && enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+! {
+! findrep_atow(&s_findrep_struct_w, &s_findrep_struct);
+! s_findrep_hwnd = ReplaceTextW(
+! (LPFINDREPLACEW) &s_findrep_struct_w);
+! }
+! else
+! # endif
+! s_findrep_hwnd = ReplaceText(
+! (LPFINDREPLACE) &s_findrep_struct);
+ }
+
+ set_window_title(s_findrep_hwnd,
+*** ../vim-7.2.092/src/version.c Wed Jan 28 19:08:31 2009
+--- src/version.c Wed Jan 28 21:19:56 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 93,
+ /**/
+
+--
+I'm not familiar with this proof, but I'm aware of a significant
+following of toddlers who believe that peanut butter is the solution
+to all of life's problems... -- Tim Hammerquist
+
+ /// 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.094 b/source/ap/vim/patches/7.2.094
new file mode 100644
index 000000000..bc79fa564
--- /dev/null
+++ b/source/ap/vim/patches/7.2.094
@@ -0,0 +1,112 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.094
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.094
+Problem: Compiler warning for signed/unsigned compare.
+Solution: Add type cast. Also fix a few typos.
+Files: src/edit.c
+
+
+*** ../vim-7.2.093/src/edit.c Tue Jan 13 12:29:03 2009
+--- src/edit.c Wed Jan 28 21:13:51 2009
+***************
+*** 1958,1963 ****
+--- 1958,1964 ----
+ * Only matters when there are composing characters.
+ * Return TRUE when something was deleted.
+ */
++ /*ARGSUSED*/
+ static int
+ del_char_after_col(limit_col)
+ int limit_col;
+***************
+*** 1971,1977 ****
+ * skip forward again when going too far back because of a
+ * composing character. */
+ mb_adjust_cursor();
+! while (curwin->w_cursor.col < limit_col)
+ {
+ int l = utf_ptr2len(ml_get_cursor());
+
+--- 1972,1978 ----
+ * skip forward again when going too far back because of a
+ * composing character. */
+ mb_adjust_cursor();
+! while (curwin->w_cursor.col < (colnr_T)limit_col)
+ {
+ int l = utf_ptr2len(ml_get_cursor());
+
+***************
+*** 4240,4246 ****
+ }
+
+ /* check if compl_curr_match has changed, (e.g. other type of
+! * expansion added somenthing) */
+ if (type != 0 && compl_curr_match != old_match)
+ found_new_match = OK;
+
+--- 4241,4247 ----
+ }
+
+ /* check if compl_curr_match has changed, (e.g. other type of
+! * expansion added something) */
+ if (type != 0 && compl_curr_match != old_match)
+ found_new_match = OK;
+
+***************
+*** 4741,4747 ****
+ }
+ compl_length = curwin->w_cursor.col - (int)compl_col;
+ /* IObuff is used to add a "word from the next line" would we
+! * have enough space? just being paranoic */
+ #define MIN_SPACE 75
+ if (compl_length > (IOSIZE - MIN_SPACE))
+ {
+--- 4742,4748 ----
+ }
+ compl_length = curwin->w_cursor.col - (int)compl_col;
+ /* IObuff is used to add a "word from the next line" would we
+! * have enough space? just being paranoid */
+ #define MIN_SPACE 75
+ if (compl_length > (IOSIZE - MIN_SPACE))
+ {
+***************
+*** 8206,8212 ****
+ /*
+ * If the cursor is on an indent, ^T/^D insert/delete one
+ * shiftwidth. Otherwise ^T/^D behave like a "<<" or ">>".
+! * Always round the indent to 'shiftwith', this is compatible
+ * with vi. But vi only supports ^T and ^D after an
+ * autoindent, we support it everywhere.
+ */
+--- 8207,8213 ----
+ /*
+ * If the cursor is on an indent, ^T/^D insert/delete one
+ * shiftwidth. Otherwise ^T/^D behave like a "<<" or ">>".
+! * Always round the indent to 'shiftwidth', this is compatible
+ * with vi. But vi only supports ^T and ^D after an
+ * autoindent, we support it everywhere.
+ */
+*** ../vim-7.2.093/src/version.c Wed Jan 28 21:22:20 2009
+--- src/version.c Wed Feb 4 11:17:02 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 94,
+ /**/
+
+--
+Despite the cost of living, have you noticed how it remains so popular?
+
+ /// 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.095 b/source/ap/vim/patches/7.2.095
new file mode 100644
index 000000000..c69cadb31
--- /dev/null
+++ b/source/ap/vim/patches/7.2.095
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.095
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.095
+Problem: With Visual selection, "r" and then CTRL-C Visual mode is stopped
+ but the highlighting is not removed.
+Solution: Call reset_VIsual().
+Files: src/normal.c
+
+
+*** ../vim-7.2.094/src/normal.c Thu Nov 20 16:11:03 2008
+--- src/normal.c Fri Jan 30 20:37:01 2009
+***************
+*** 6783,6788 ****
+--- 6783,6790 ----
+ /* Visual mode "r" */
+ if (VIsual_active)
+ {
++ if (got_int)
++ reset_VIsual();
+ nv_operator(cap);
+ return;
+ }
+***************
+*** 7839,7845 ****
+ else
+ i = curwin->w_leftcol;
+ /* Go to the middle of the screen line. When 'number' is on and lines
+! * are wrapping the middle can be more to the left.*/
+ if (cap->nchar == 'm')
+ i += (W_WIDTH(curwin) - curwin_col_off()
+ + ((curwin->w_p_wrap && i > 0)
+--- 7841,7847 ----
+ else
+ i = curwin->w_leftcol;
+ /* Go to the middle of the screen line. When 'number' is on and lines
+! * are wrapping the middle can be more to the left. */
+ if (cap->nchar == 'm')
+ i += (W_WIDTH(curwin) - curwin_col_off()
+ + ((curwin->w_p_wrap && i > 0)
+*** ../vim-7.2.094/src/version.c Wed Feb 4 11:19:40 2009
+--- src/version.c Wed Feb 4 11:43:28 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 95,
+ /**/
+
+--
+Nothing is fool-proof to a sufficiently talented fool.
+
+ /// 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.096 b/source/ap/vim/patches/7.2.096
new file mode 100644
index 000000000..e286ca9c8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.096
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.096
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.096
+Problem: After ":number" the "Press Enter" message may be on the wrong
+ screen, if switching screens for shell commands.
+Solution: Reset info_message. (James Vega)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.095/src/ex_cmds.c Tue Jan 13 16:57:09 2009
+--- src/ex_cmds.c Fri Jan 30 21:01:54 2009
+***************
+*** 2417,2424 ****
+ cursor_on(); /* msg_start() switches it off */
+ out_flush();
+ silent_mode = save_silent;
+- info_message = FALSE;
+ }
+ }
+
+ /*
+--- 2417,2424 ----
+ cursor_on(); /* msg_start() switches it off */
+ out_flush();
+ silent_mode = save_silent;
+ }
++ info_message = FALSE;
+ }
+
+ /*
+*** ../vim-7.2.095/src/version.c Wed Feb 4 11:45:28 2009
+--- src/version.c Wed Feb 4 13:12:55 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 96,
+ /**/
+
+--
+A fine is a tax for doing wrong. A tax is a fine for doing well.
+
+ /// 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.097 b/source/ap/vim/patches/7.2.097
new file mode 100644
index 000000000..ac72d5d9e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.097
@@ -0,0 +1,54 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.097
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.097
+Problem: "!xterm&" doesn't work when 'shell' is "bash".
+Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert)
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.096/src/os_unix.c Fri Nov 28 21:26:50 2008
+--- src/os_unix.c Wed Feb 4 12:09:55 2009
+***************
+*** 3950,3956 ****
+--- 3950,3966 ----
+ * children can be kill()ed. Don't do this when using pipes,
+ * because stdin is not a tty, we would lose /dev/tty. */
+ if (p_stmp)
++ {
+ (void)setsid();
++ # if defined(SIGHUP)
++ /* When doing "!xterm&" and 'shell' is bash: the shell
++ * will exit and send SIGHUP to all processes in its
++ * group, killing the just started process. Ignore SIGHUP
++ * to avoid that. (suggested by Simon Schubert)
++ */
++ signal(SIGHUP, SIG_IGN);
++ # endif
++ }
+ # endif
+ # ifdef FEAT_GUI
+ if (pty_slave_fd >= 0)
+*** ../vim-7.2.096/src/version.c Wed Feb 4 13:13:42 2009
+--- src/version.c Wed Feb 4 14:16:37 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 97,
+ /**/
+
+--
+It was recently discovered that research causes cancer in rats.
+
+ /// 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.098 b/source/ap/vim/patches/7.2.098
new file mode 100644
index 000000000..eed0a65d8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.098
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.098
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.098
+Problem: Warning for signed/unsigned pointer.
+Solution: Add type cast.
+Files: src/eval.c
+
+
+*** ../vim-7.2.097/src/eval.c Wed Jan 28 19:08:31 2009
+--- src/eval.c Wed Feb 4 13:09:01 2009
+***************
+*** 3928,3934 ****
+
+ /*
+ * Handle top level expression:
+! * expr1 ? expr0 : expr0
+ *
+ * "arg" must point to the first non-white of the expression.
+ * "arg" is advanced to the next non-white after the recognized expression.
+--- 3928,3934 ----
+
+ /*
+ * Handle top level expression:
+! * expr2 ? expr1 : expr1
+ *
+ * "arg" must point to the first non-white of the expression.
+ * "arg" is advanced to the next non-white after the recognized expression.
+***************
+*** 19912,19918 ****
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname(e_invarg2, arg);
+ }
+ }
+
+--- 19912,19918 ----
+ : eval_isnamec(arg[j])))
+ ++j;
+ if (arg[j] != NUL)
+! emsg_funcname((char *)e_invarg2, arg);
+ }
+ }
+
+*** ../vim-7.2.097/src/version.c Wed Feb 4 14:18:44 2009
+--- src/version.c Wed Feb 4 16:24:06 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 98,
+ /**/
+
+--
+Everybody lies, but it doesn't matter since nobody listens.
+ -- Lieberman's Law
+
+ /// 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.099 b/source/ap/vim/patches/7.2.099
new file mode 100644
index 000000000..6f5dae5d5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.099
@@ -0,0 +1,127 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.099
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.099
+Problem: Changing GUI options causes an unnecessary redraw when the GUI
+ isn't active.
+Solution: Avoid the redraw. (Lech Lorens)
+Files: src/option.c
+
+
+*** ../vim-7.2.098/src/option.c Wed Dec 24 12:53:33 2008
+--- src/option.c Wed Feb 4 16:59:56 2009
+***************
+*** 5407,5412 ****
+--- 5407,5416 ----
+ int did_chartab = FALSE;
+ char_u **gvarp;
+ long_u free_oldval = (options[opt_idx].flags & P_ALLOCED);
++ #ifdef FEAT_GUI
++ /* set when changing an option that only requires a redraw in the GUI */
++ int redraw_gui_only = FALSE;
++ #endif
+
+ /* Get the global option to compare with, otherwise we would have to check
+ * two values for all local options. */
+***************
+*** 6055,6060 ****
+--- 6059,6065 ----
+ errmsg = (char_u *)N_("E596: Invalid font(s)");
+ }
+ }
++ redraw_gui_only = TRUE;
+ }
+ # ifdef FEAT_XFONTSET
+ else if (varp == &p_guifontset)
+***************
+*** 6063,6068 ****
+--- 6068,6074 ----
+ errmsg = (char_u *)N_("E597: can't select fontset");
+ else if (gui.in_use && gui_init_font(p_guifontset, TRUE) != OK)
+ errmsg = (char_u *)N_("E598: Invalid fontset");
++ redraw_gui_only = TRUE;
+ }
+ # endif
+ # ifdef FEAT_MBYTE
+***************
+*** 6072,6077 ****
+--- 6078,6084 ----
+ errmsg = (char_u *)N_("E533: can't select wide font");
+ else if (gui_get_wide_font() == FAIL)
+ errmsg = (char_u *)N_("E534: Invalid wide font");
++ redraw_gui_only = TRUE;
+ }
+ # endif
+ #endif
+***************
+*** 6133,6145 ****
+--- 6140,6163 ----
+ #ifdef FEAT_GUI
+ /* 'guioptions' */
+ else if (varp == &p_go)
++ {
+ gui_init_which_components(oldval);
++ redraw_gui_only = TRUE;
++ }
+ #endif
+
+ #if defined(FEAT_GUI_TABLINE)
+ /* 'guitablabel' */
+ else if (varp == &p_gtl)
++ {
+ redraw_tabline = TRUE;
++ redraw_gui_only = TRUE;
++ }
++ /* 'guitabtooltip' */
++ else if (varp == &p_gtt)
++ {
++ redraw_gui_only = TRUE;
++ }
+ #endif
+
+ #if defined(FEAT_MOUSE_TTY) && (defined(UNIX) || defined(VMS))
+***************
+*** 6717,6723 ****
+
+ if (curwin->w_curswant != MAXCOL)
+ curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */
+! check_redraw(options[opt_idx].flags);
+
+ return errmsg;
+ }
+--- 6735,6745 ----
+
+ if (curwin->w_curswant != MAXCOL)
+ curwin->w_set_curswant = TRUE; /* in case 'showbreak' changed */
+! #ifdef FEAT_GUI
+! /* check redraw when it's not a GUI option or the GUI is active. */
+! if (!redraw_gui_only || gui.in_use)
+! #endif
+! check_redraw(options[opt_idx].flags);
+
+ return errmsg;
+ }
+*** ../vim-7.2.098/src/version.c Wed Feb 4 16:25:53 2009
+--- src/version.c Wed Feb 4 17:24:11 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 99,
+ /**/
+
+--
+I started out with nothing, and I still have most of it.
+ -- Michael Davis -- "Tonight Show"
+
+ /// 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.100 b/source/ap/vim/patches/7.2.100
new file mode 100644
index 000000000..0099edb1f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.100
@@ -0,0 +1,132 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.100
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.100
+Problem: When using ":source" on a FIFO or something else that can't rewind
+ the first three bytes are skipped.
+Solution: Instead of rewinding read the first line and detect a BOM in that.
+ (mostly by James Vega)
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.099/src/ex_cmds2.c Sat Nov 15 14:10:23 2008
+--- src/ex_cmds2.c Wed Feb 4 16:05:51 2009
+***************
+*** 2842,2847 ****
+--- 2842,2848 ----
+ linenr_T save_sourcing_lnum;
+ char_u *p;
+ char_u *fname_exp;
++ char_u *firstline = NULL;
+ int retval = FAIL;
+ #ifdef FEAT_EVAL
+ scid_T save_current_SID;
+***************
+*** 2992,3014 ****
+
+ cookie.level = ex_nesting_level;
+ #endif
+- #ifdef FEAT_MBYTE
+- cookie.conv.vc_type = CONV_NONE; /* no conversion */
+-
+- /* Try reading the first few bytes to check for a UTF-8 BOM. */
+- {
+- char_u buf[3];
+-
+- if (fread((char *)buf, sizeof(char_u), (size_t)3, cookie.fp)
+- == (size_t)3
+- && buf[0] == 0xef && buf[1] == 0xbb && buf[2] == 0xbf)
+- /* Found BOM, setup conversion and skip over it. */
+- convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
+- else
+- /* No BOM found, rewind. */
+- fseek(cookie.fp, 0L, SEEK_SET);
+- }
+- #endif
+
+ /*
+ * Keep the sourcing name/lnum, for recursive calls.
+--- 2993,2998 ----
+***************
+*** 3018,3023 ****
+--- 3002,3026 ----
+ save_sourcing_lnum = sourcing_lnum;
+ sourcing_lnum = 0;
+
++ #ifdef FEAT_MBYTE
++ cookie.conv.vc_type = CONV_NONE; /* no conversion */
++
++ /* Read the first line so we can check for a UTF-8 BOM. */
++ firstline = getsourceline(0, (void *)&cookie, 0);
++ if (firstline != NULL && STRLEN(firstline) >= 3 && firstline[0] == 0xef
++ && firstline[1] == 0xbb && firstline[2] == 0xbf)
++ {
++ /* Found BOM; setup conversion, skip over BOM and recode the line. */
++ convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
++ p = string_convert(&cookie.conv, firstline + 3, NULL);
++ if (p != NULL)
++ {
++ vim_free(firstline);
++ firstline = p;
++ }
++ }
++ #endif
++
+ #ifdef STARTUPTIME
+ time_push(&tv_rel, &tv_start);
+ #endif
+***************
+*** 3111,3119 ****
+ /*
+ * Call do_cmdline, which will call getsourceline() to get the lines.
+ */
+! do_cmdline(NULL, getsourceline, (void *)&cookie,
+ DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
+-
+ retval = OK;
+
+ #ifdef FEAT_PROFILE
+--- 3114,3121 ----
+ /*
+ * Call do_cmdline, which will call getsourceline() to get the lines.
+ */
+! do_cmdline(firstline, getsourceline, (void *)&cookie,
+ DOCMD_VERBOSE|DOCMD_NOWAIT|DOCMD_REPEAT);
+ retval = OK;
+
+ #ifdef FEAT_PROFILE
+***************
+*** 3171,3176 ****
+--- 3173,3179 ----
+ #endif
+ fclose(cookie.fp);
+ vim_free(cookie.nextline);
++ vim_free(firstline);
+ #ifdef FEAT_MBYTE
+ convert_setup(&cookie.conv, NULL, NULL);
+ #endif
+*** ../vim-7.2.099/src/version.c Wed Feb 4 17:27:50 2009
+--- src/version.c Wed Feb 4 17:48:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 100,
+ /**/
+
+--
+Well, you come from nothing, you go back to nothing... What have you
+lost? Nothing!
+ -- Monty Python: The life of Brian
+
+ /// 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.101 b/source/ap/vim/patches/7.2.101
new file mode 100644
index 000000000..e3526ca88
--- /dev/null
+++ b/source/ap/vim/patches/7.2.101
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.101 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.101 (extra)
+Problem: MSVC version not recognized.
+Solution: Add the version number to the list. (Zhong Zhang)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.2.100/src/Make_mvc.mak Thu Jul 24 20:49:58 2008
+--- src/Make_mvc.mak Wed Feb 4 18:32:47 2009
+***************
+*** 354,359 ****
+--- 354,362 ----
+ !if "$(_NMAKE_VER)" == "9.00.21022.08"
+ MSVCVER = 9.0
+ !endif
++ !if "$(_NMAKE_VER)" == "9.00.30729.01"
++ MSVCVER = 9.0
++ !endif
+ !endif
+
+ # Abort bulding VIM if version of VC is unrecognised.
+*** ../vim-7.2.100/src/version.c Wed Feb 4 17:49:46 2009
+--- src/version.c Wed Feb 4 18:34:12 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 101,
+ /**/
+
+--
+Light travels faster than sound. This is why some people
+appear bright until you hear them speak
+
+ /// 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.102 b/source/ap/vim/patches/7.2.102
new file mode 100644
index 000000000..316c32bde
--- /dev/null
+++ b/source/ap/vim/patches/7.2.102
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.102
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.102 (after 7.2.100)
+Problem: When 'encoding' is "utf-8" a BOM at the start of a Vim script is
+ not removed. (Tony Mechelynck)
+Solution: When no conversion is taking place make a copy of the line without
+ the BOM.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.101/src/ex_cmds2.c Wed Feb 4 17:49:46 2009
+--- src/ex_cmds2.c Thu Feb 5 20:41:56 2009
+***************
+*** 3013,3018 ****
+--- 3013,3020 ----
+ /* Found BOM; setup conversion, skip over BOM and recode the line. */
+ convert_setup(&cookie.conv, (char_u *)"utf-8", p_enc);
+ p = string_convert(&cookie.conv, firstline + 3, NULL);
++ if (p == NULL)
++ p = vim_strsave(firstline + 3);
+ if (p != NULL)
+ {
+ vim_free(firstline);
+*** ../vim-7.2.101/src/version.c Wed Feb 4 18:34:54 2009
+--- src/version.c Thu Feb 5 20:44:55 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 102,
+ /**/
+
+--
+CVS sux, men don't like commitment
+
+ /// 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.103 b/source/ap/vim/patches/7.2.103
new file mode 100644
index 000000000..25a513a75
--- /dev/null
+++ b/source/ap/vim/patches/7.2.103
@@ -0,0 +1,216 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.103
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.103
+Problem: When 'bomb' is changed the window title is updated to show/hide a
+ "+", but the tab page label isn't. (Patrick Texier)
+Solution: Set "redraw_tabline" in most places where "need_maketitle" is set.
+ (partly by Lech Lorens)
+Files: src/option.c
+
+
+*** ../vim-7.2.102/src/option.c Wed Feb 4 17:27:50 2009
+--- src/option.c Wed Feb 4 17:40:02 2009
+***************
+*** 5268,5273 ****
+--- 5268,5288 ----
+ }
+ #endif
+
++ #ifdef FEAT_TITLE
++ static void redraw_titles __ARGS((void));
++
++ /*
++ * Redraw the window title and/or tab page text later.
++ */
++ static void redraw_titles()
++ {
++ need_maketitle = TRUE;
++ # ifdef FEAT_WINDOWS
++ redraw_tabline = TRUE;
++ # endif
++ }
++ #endif
++
+ /*
+ * Set a string option to a new value (without checking the effect).
+ * The string is copied into allocated memory.
+***************
+*** 5672,5678 ****
+ {
+ # ifdef FEAT_TITLE
+ /* May show a "+" in the title now. */
+! need_maketitle = TRUE;
+ # endif
+ /* Add 'fileencoding' to the swap file. */
+ ml_setflags(curbuf);
+--- 5687,5693 ----
+ {
+ # ifdef FEAT_TITLE
+ /* May show a "+" in the title now. */
+! redraw_titles();
+ # endif
+ /* Add 'fileencoding' to the swap file. */
+ ml_setflags(curbuf);
+***************
+*** 5691,5697 ****
+ {
+ errmsg = mb_init();
+ # ifdef FEAT_TITLE
+! need_maketitle = TRUE;
+ # endif
+ }
+ }
+--- 5706,5712 ----
+ {
+ errmsg = mb_init();
+ # ifdef FEAT_TITLE
+! redraw_titles();
+ # endif
+ }
+ }
+***************
+*** 5800,5806 ****
+ else
+ curbuf->b_p_tx = FALSE;
+ #ifdef FEAT_TITLE
+! need_maketitle = TRUE;
+ #endif
+ /* update flag in swap file */
+ ml_setflags(curbuf);
+--- 5815,5821 ----
+ else
+ curbuf->b_p_tx = FALSE;
+ #ifdef FEAT_TITLE
+! redraw_titles();
+ #endif
+ /* update flag in swap file */
+ ml_setflags(curbuf);
+***************
+*** 7127,7148 ****
+ curbuf->b_did_warn = FALSE;
+
+ #ifdef FEAT_TITLE
+! need_maketitle = TRUE;
+ #endif
+ }
+
+ #ifdef FEAT_TITLE
+ /* when 'modifiable' is changed, redraw the window title */
+ else if ((int *)varp == &curbuf->b_p_ma)
+! need_maketitle = TRUE;
+ /* when 'endofline' is changed, redraw the window title */
+ else if ((int *)varp == &curbuf->b_p_eol)
+! need_maketitle = TRUE;
+! #ifdef FEAT_MBYTE
+! /* when 'bomb' is changed, redraw the window title */
+ else if ((int *)varp == &curbuf->b_p_bomb)
+! need_maketitle = TRUE;
+! #endif
+ #endif
+
+ /* when 'bin' is set also set some other options */
+--- 7142,7169 ----
+ curbuf->b_did_warn = FALSE;
+
+ #ifdef FEAT_TITLE
+! redraw_titles();
+ #endif
+ }
+
+ #ifdef FEAT_TITLE
+ /* when 'modifiable' is changed, redraw the window title */
+ else if ((int *)varp == &curbuf->b_p_ma)
+! {
+! redraw_titles();
+! }
+ /* when 'endofline' is changed, redraw the window title */
+ else if ((int *)varp == &curbuf->b_p_eol)
+! {
+! redraw_titles();
+! }
+! # ifdef FEAT_MBYTE
+! /* when 'bomb' is changed, redraw the window title and tab page text */
+ else if ((int *)varp == &curbuf->b_p_bomb)
+! {
+! redraw_titles();
+! }
+! # endif
+ #endif
+
+ /* when 'bin' is set also set some other options */
+***************
+*** 7150,7156 ****
+ {
+ set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
+ #ifdef FEAT_TITLE
+! need_maketitle = TRUE;
+ #endif
+ }
+
+--- 7171,7177 ----
+ {
+ set_options_bin(old_value, curbuf->b_p_bin, opt_flags);
+ #ifdef FEAT_TITLE
+! redraw_titles();
+ #endif
+ }
+
+***************
+*** 7301,7307 ****
+ if (!value)
+ save_file_ff(curbuf); /* Buffer is unchanged */
+ #ifdef FEAT_TITLE
+! need_maketitle = TRUE;
+ #endif
+ #ifdef FEAT_AUTOCMD
+ modified_was_set = value;
+--- 7322,7328 ----
+ if (!value)
+ save_file_ff(curbuf); /* Buffer is unchanged */
+ #ifdef FEAT_TITLE
+! redraw_titles();
+ #endif
+ #ifdef FEAT_AUTOCMD
+ modified_was_set = value;
+***************
+*** 7736,7742 ****
+ newFoldLevel();
+ }
+
+! /* 'foldminlevel' */
+ else if (pp == &curwin->w_p_fml)
+ {
+ foldUpdateAll(curwin);
+--- 7757,7763 ----
+ newFoldLevel();
+ }
+
+! /* 'foldminlines' */
+ else if (pp == &curwin->w_p_fml)
+ {
+ foldUpdateAll(curwin);
+*** ../vim-7.2.102/src/version.c Thu Feb 5 20:47:14 2009
+--- src/version.c Wed Feb 11 11:32:20 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 103,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+73. You give your dog used motherboards instead of bones
+
+ /// 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.104 b/source/ap/vim/patches/7.2.104
new file mode 100644
index 000000000..51c0e097d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.104
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.104
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.104
+Problem: When using ":saveas bar.c" the tab label isn't updated right away.
+Solution: Set redraw_tabline. (Francois Ingelrest)
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.103/src/ex_cmds.c Wed Feb 4 13:13:42 2009
+--- src/ex_cmds.c Wed Feb 11 15:58:06 2009
+***************
+*** 2707,2713 ****
+--- 2707,2718 ----
+ if (eap->cmdidx == CMD_saveas)
+ {
+ if (retval == OK)
++ {
+ curbuf->b_p_ro = FALSE;
++ #ifdef FEAT_WINDOWS
++ redraw_tabline = TRUE;
++ #endif
++ }
+ /* Change directories when the 'acd' option is set. */
+ DO_AUTOCHDIR
+ }
+*** ../vim-7.2.103/src/version.c Wed Feb 11 11:34:24 2009
+--- src/version.c Wed Feb 11 16:02:19 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 104,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+75. You start wondering whether you could actually upgrade your brain
+ with a Pentium Pro microprocessor 80. The upgrade works just fine.
+
+ /// 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.105 b/source/ap/vim/patches/7.2.105
new file mode 100644
index 000000000..486ffb3fc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.105
@@ -0,0 +1,72 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.105
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.105
+Problem: Modeline setting for 'foldmethod' overrules diff options. (Ingo
+ Karkat)
+Solution: Don't set 'foldmethod' and 'wrap' from a modeline when 'diff' is
+ on.
+Files: src/option.c
+
+
+*** ../vim-7.2.104/src/option.c Wed Feb 11 11:34:24 2009
+--- src/option.c Wed Feb 11 16:29:56 2009
+***************
+*** 4119,4129 ****
+ && options[opt_idx].var == VAR_WIN)
+ goto skip;
+
+! /* Disallow changing some options from modelines */
+! if ((opt_flags & OPT_MODELINE) && (flags & P_SECURE))
+ {
+! errmsg = (char_u *)_("E520: Not allowed in a modeline");
+! goto skip;
+ }
+
+ #ifdef HAVE_SANDBOX
+--- 4119,4139 ----
+ && options[opt_idx].var == VAR_WIN)
+ goto skip;
+
+! /* Disallow changing some options from modelines. */
+! if (opt_flags & OPT_MODELINE)
+ {
+! if (flags & P_SECURE)
+! {
+! errmsg = (char_u *)_("E520: Not allowed in a modeline");
+! goto skip;
+! }
+! /* In diff mode some options are overruled. This avoids that
+! * 'foldmethod' becomes "marker" instead of "diff" and that
+! * "wrap" gets set. */
+! if (curwin->w_p_diff
+! && (options[opt_idx].indir == PV_FDM
+! || options[opt_idx].indir == PV_WRAP))
+! goto skip;
+ }
+
+ #ifdef HAVE_SANDBOX
+*** ../vim-7.2.104/src/version.c Wed Feb 11 16:02:29 2009
+--- src/version.c Wed Feb 11 16:40:35 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 105,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+76. Your ISP regards you as a business partner rather than as a customer.
+
+ /// 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.106 b/source/ap/vim/patches/7.2.106
new file mode 100644
index 000000000..2c547973b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.106
@@ -0,0 +1,103 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.106
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.106
+Problem: Endless loop when using "]s" in HTML when there are no
+ misspellings. (Ingo Karkat)
+Solution: Break the search loop. Also fix pointer alignment for systems
+ with pointers larger than int.
+Files: src/spell.c
+
+
+*** ../vim-7.2.105/src/spell.c Tue Dec 9 22:34:02 2008
+--- src/spell.c Wed Feb 11 17:54:50 2009
+***************
+*** 2376,2382 ****
+
+ /* If we are back at the starting line and there is no match then
+ * give up. */
+! if (lnum == wp->w_cursor.lnum && !found_one)
+ break;
+
+ /* Skip the characters at the start of the next line that were
+--- 2376,2382 ----
+
+ /* If we are back at the starting line and there is no match then
+ * give up. */
+! if (lnum == wp->w_cursor.lnum && (!found_one || wrapped))
+ break;
+
+ /* Skip the characters at the start of the next line that were
+***************
+*** 4956,4968 ****
+ * Structure that is used to store the items in the word tree. This avoids
+ * the need to keep track of each allocated thing, everything is freed all at
+ * once after ":mkspell" is done.
+ */
+ #define SBLOCKSIZE 16000 /* size of sb_data */
+ typedef struct sblock_S sblock_T;
+ struct sblock_S
+ {
+- sblock_T *sb_next; /* next block in list */
+ int sb_used; /* nr of bytes already in use */
+ char_u sb_data[1]; /* data, actually longer */
+ };
+
+--- 4956,4971 ----
+ * Structure that is used to store the items in the word tree. This avoids
+ * the need to keep track of each allocated thing, everything is freed all at
+ * once after ":mkspell" is done.
++ * Note: "sb_next" must be just before "sb_data" to make sure the alignment of
++ * "sb_data" is correct for systems where pointers must be aligned on
++ * pointer-size boundaries and sizeof(pointer) > sizeof(int) (e.g., Sparc).
+ */
+ #define SBLOCKSIZE 16000 /* size of sb_data */
+ typedef struct sblock_S sblock_T;
+ struct sblock_S
+ {
+ int sb_used; /* nr of bytes already in use */
++ sblock_T *sb_next; /* next block in list */
+ char_u sb_data[1]; /* data, actually longer */
+ };
+
+***************
+*** 15011,15017 ****
+
+ case 0:
+ /*
+! * Lenghts are equal, thus changes must result in same length: An
+ * insert is only possible in combination with a delete.
+ * 1: check if for identical strings
+ */
+--- 15014,15020 ----
+
+ case 0:
+ /*
+! * Lengths are equal, thus changes must result in same length: An
+ * insert is only possible in combination with a delete.
+ * 1: check if for identical strings
+ */
+*** ../vim-7.2.105/src/version.c Wed Feb 11 16:45:56 2009
+--- src/version.c Wed Feb 11 17:56:34 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 106,
+ /**/
+
+--
+If bankers can count, how come they have eight windows and
+only four tellers?
+
+ /// 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.107 b/source/ap/vim/patches/7.2.107
new file mode 100644
index 000000000..956737541
--- /dev/null
+++ b/source/ap/vim/patches/7.2.107
@@ -0,0 +1,56 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.107
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.107
+Problem: When using a GUI dialog and ":echo" commands the messages are
+ deleted after the dialog. (Vicent Birebent)
+Solution: Don't call msg_end_prompt() since there was no prompt.
+Files: src/message.c
+
+
+*** ../vim-7.2.106/src/message.c Tue Jan 13 16:37:31 2009
+--- src/message.c Wed Feb 11 18:38:14 2009
+***************
+*** 3309,3315 ****
+ {
+ c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
+ textfield);
+! msg_end_prompt();
+
+ /* Flush output to avoid that further messages and redrawing is done
+ * in the wrong order. */
+--- 3309,3318 ----
+ {
+ c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
+ textfield);
+! /* avoid a hit-enter prompt without clearing the cmdline */
+! need_wait_return = FALSE;
+! emsg_on_display = FALSE;
+! cmdline_row = msg_row;
+
+ /* Flush output to avoid that further messages and redrawing is done
+ * in the wrong order. */
+*** ../vim-7.2.106/src/version.c Wed Feb 11 17:57:43 2009
+--- src/version.c Wed Feb 11 18:46:12 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 107,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+79. All of your most erotic dreams have a scrollbar at the right side.
+
+ /// 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.108 b/source/ap/vim/patches/7.2.108
new file mode 100644
index 000000000..5164b83c6
--- /dev/null
+++ b/source/ap/vim/patches/7.2.108
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.108
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.108 (after 7.2.105)
+Problem: Can't build without the diff feature.
+Solution: Add #ifdef.
+Files: src/option.c
+
+
+*** ../vim-7.2.107/src/option.c Wed Feb 11 16:45:56 2009
+--- src/option.c Wed Feb 11 22:21:16 2009
+***************
+*** 4127,4132 ****
+--- 4127,4133 ----
+ errmsg = (char_u *)_("E520: Not allowed in a modeline");
+ goto skip;
+ }
++ #ifdef FEAT_DIFF
+ /* In diff mode some options are overruled. This avoids that
+ * 'foldmethod' becomes "marker" instead of "diff" and that
+ * "wrap" gets set. */
+***************
+*** 4134,4139 ****
+--- 4135,4141 ----
+ && (options[opt_idx].indir == PV_FDM
+ || options[opt_idx].indir == PV_WRAP))
+ goto skip;
++ #endif
+ }
+
+ #ifdef HAVE_SANDBOX
+*** ../vim-7.2.107/src/version.c Wed Feb 11 18:46:48 2009
+--- src/version.c Wed Feb 11 22:46:40 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 108,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+80. At parties, you introduce your spouse as your "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.109 b/source/ap/vim/patches/7.2.109
new file mode 100644
index 000000000..8c3866cf9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.109
@@ -0,0 +1,423 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.109
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.109
+Problem: 'langmap' does not work for multi-byte characters.
+Solution: Add a list of mapped multi-byte characters. (based on work by
+ Konstantin Korikov, Agathoklis Hatzimanikas)
+Files: runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h,
+ src/normal.c, src/option.c, src/proto/option.pro, src/window.c
+
+
+*** ../vim-7.2.108/runtime/doc/options.txt Fri Nov 28 10:59:57 2008
+--- runtime/doc/options.txt Wed Feb 11 18:59:34 2009
+***************
+*** 4175,4183 ****
+ be able to execute Normal mode commands.
+ This is the opposite of the 'keymap' option, where characters are
+ mapped in Insert mode.
+- This only works for 8-bit characters. The value of 'langmap' may be
+- specified with multi-byte characters (e.g., UTF-8), but only the lower
+- 8 bits of each character will be used.
+
+ Example (for Greek, in UTF-8): *greek* >
+ :set langmap=ΑA,Î’B,ΨC,ΔD,ΕE,ΦF,ΓG,ΗH,ΙI,ΞJ,ΚK,ΛL,ÎœM,ÎN,ΟO,ΠP,QQ,ΡR,ΣS,ΤT,ΘU,ΩV,WW,ΧX,Î¥Y,ΖZ,αa,βb,ψc,δd,εe,φf,γg,ηh,ιi,ξj,κk,λl,μm,νn,οo,Ï€p,qq,Ïr,σs,Ï„t,θu,ωv,Ï‚w,χx,Ï…y,ζz
+--- 4188,4193 ----
+*** ../vim-7.2.108/src/edit.c Wed Feb 4 11:19:40 2009
+--- src/edit.c Sat Feb 21 19:54:03 2009
+***************
+*** 7703,7711 ****
+ */
+ ++no_mapping;
+ regname = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(regname, TRUE);
+- #endif
+ if (regname == Ctrl_R || regname == Ctrl_O || regname == Ctrl_P)
+ {
+ /* Get a third key for literal register insertion */
+--- 7703,7709 ----
+***************
+*** 7714,7722 ****
+ add_to_showcmd_c(literally);
+ #endif
+ regname = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(regname, TRUE);
+- #endif
+ }
+ --no_mapping;
+
+--- 7712,7718 ----
+*** ../vim-7.2.108/src/macros.h Wed Aug 15 20:41:07 2007
+--- src/macros.h Sat Feb 21 19:55:38 2009
+***************
+*** 127,141 ****
+ #ifdef FEAT_LANGMAP
+ /*
+ * Adjust chars in a language according to 'langmap' option.
+! * NOTE that there is NO overhead if 'langmap' is not set; but even
+! * when set we only have to do 2 ifs and an array lookup.
+ * Don't apply 'langmap' if the character comes from the Stuff buffer.
+ * The do-while is just to ignore a ';' after the macro.
+ */
+! # define LANGMAP_ADJUST(c, condition) do { \
+! if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
+! c = langmap_mapchar[c]; \
+ } while (0)
+ #endif
+
+ /*
+--- 127,157 ----
+ #ifdef FEAT_LANGMAP
+ /*
+ * Adjust chars in a language according to 'langmap' option.
+! * NOTE that there is no noticeable overhead if 'langmap' is not set.
+! * When set the overhead for characters < 256 is small.
+ * Don't apply 'langmap' if the character comes from the Stuff buffer.
+ * The do-while is just to ignore a ';' after the macro.
+ */
+! # ifdef FEAT_MBYTE
+! # define LANGMAP_ADJUST(c, condition) \
+! do { \
+! if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0) \
+! { \
+! if ((c) < 256) \
+! c = langmap_mapchar[c]; \
+! else \
+! c = langmap_adjust_mb(c); \
+! } \
+ } while (0)
++ # else
++ # define LANGMAP_ADJUST(c, condition) \
++ do { \
++ if (*p_langmap && (condition) && !KeyStuffed && (c) >= 0 && (c) < 256) \
++ c = langmap_mapchar[c]; \
++ } while (0)
++ # endif
++ #else
++ # define LANGMAP_ADJUST(c, condition) /* nop */
+ #endif
+
+ /*
+*** ../vim-7.2.108/src/normal.c Wed Feb 4 11:45:28 2009
+--- src/normal.c Sat Feb 21 19:55:17 2009
+***************
+*** 651,660 ****
+ * Get the command character from the user.
+ */
+ c = safe_vgetc();
+-
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(c, TRUE);
+- #endif
+
+ #ifdef FEAT_VISUAL
+ /*
+--- 651,657 ----
+***************
+*** 744,752 ****
+ }
+ ++no_zero_mapping; /* don't map zero here */
+ c = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(c, TRUE);
+- #endif
+ --no_zero_mapping;
+ if (ctrl_w)
+ {
+--- 741,747 ----
+***************
+*** 769,777 ****
+ ++no_mapping;
+ ++allow_keys; /* no mapping for nchar, but keys */
+ c = plain_vgetc(); /* get next character */
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(c, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 764,770 ----
+***************
+*** 959,967 ****
+ * "gr", "g'" and "g`".
+ */
+ ca.nchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(ca.nchar, TRUE);
+- #endif
+ #ifdef FEAT_CMDL_INFO
+ need_flushbuf |= add_to_showcmd(ca.nchar);
+ #endif
+--- 952,958 ----
+***************
+*** 1062,1071 ****
+ }
+ #endif
+
+- #ifdef FEAT_LANGMAP
+ /* adjust chars > 127, except after "tTfFr" commands */
+ LANGMAP_ADJUST(*cp, !lang);
+- #endif
+ #ifdef FEAT_RIGHTLEFT
+ /* adjust Hebrew mapped char */
+ if (p_hkmap && lang && KeyTyped)
+--- 1053,1060 ----
+***************
+*** 4630,4638 ****
+ ++no_mapping;
+ ++allow_keys; /* no mapping for nchar, but allow key codes */
+ nchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(nchar, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 4619,4625 ----
+***************
+*** 4988,4996 ****
+ ++no_mapping;
+ ++allow_keys; /* no mapping for nchar, but allow key codes */
+ nchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(nchar, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 4975,4981 ----
+*** ../vim-7.2.108/src/option.c Wed Feb 11 22:47:32 2009
+--- src/option.c Sat Feb 21 19:46:13 2009
+***************
+*** 10153,10177 ****
+
+ #ifdef FEAT_LANGMAP
+ /*
+! * Any character has an equivalent character. This is used for keyboards that
+! * have a special language mode that sends characters above 128 (although
+! * other characters can be translated too).
+ */
+
+ /*
+! * char_u langmap_mapchar[256];
+! * Normally maps each of the 128 upper chars to an <128 ascii char; used to
+! * "translate" native lang chars in normal mode or some cases of
+! * insert mode without having to tediously switch lang mode back&forth.
+ */
+
+ static void
+ langmap_init()
+ {
+ int i;
+
+! for (i = 0; i < 256; i++) /* we init with a-one-to one map */
+! langmap_mapchar[i] = i;
+ }
+
+ /*
+--- 10153,10262 ----
+
+ #ifdef FEAT_LANGMAP
+ /*
+! * Any character has an equivalent 'langmap' character. This is used for
+! * keyboards that have a special language mode that sends characters above
+! * 128 (although other characters can be translated too). The "to" field is a
+! * Vim command character. This avoids having to switch the keyboard back to
+! * ASCII mode when leaving Insert mode.
+! *
+! * langmap_mapchar[] maps any of 256 chars to an ASCII char used for Vim
+! * commands.
+! * When FEAT_MBYTE is defined langmap_mapga.ga_data is a sorted table of
+! * langmap_entry_T. This does the same as langmap_mapchar[] for characters >=
+! * 256.
+! */
+! # ifdef FEAT_MBYTE
+! /*
+! * With multi-byte support use growarray for 'langmap' chars >= 256
+ */
++ typedef struct
++ {
++ int from;
++ int to;
++ } langmap_entry_T;
++
++ static garray_T langmap_mapga;
++ static void langmap_set_entry __ARGS((int from, int to));
++
++ /*
++ * Search for an entry in "langmap_mapga" for "from". If found set the "to"
++ * field. If not found insert a new entry at the appropriate location.
++ */
++ static void
++ langmap_set_entry(from, to)
++ int from;
++ int to;
++ {
++ langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
++ int a = 0;
++ int b = langmap_mapga.ga_len;
++
++ /* Do a binary search for an existing entry. */
++ while (a != b)
++ {
++ int i = (a + b) / 2;
++ int d = entries[i].from - from;
++
++ if (d == 0)
++ {
++ entries[i].to = to;
++ return;
++ }
++ if (d < 0)
++ a = i + 1;
++ else
++ b = i;
++ }
++
++ if (ga_grow(&langmap_mapga, 1) != OK)
++ return; /* out of memory */
++
++ /* insert new entry at position "a" */
++ entries = (langmap_entry_T *)(langmap_mapga.ga_data) + a;
++ mch_memmove(entries + 1, entries,
++ (langmap_mapga.ga_len - a) * sizeof(langmap_entry_T));
++ ++langmap_mapga.ga_len;
++ entries[0].from = from;
++ entries[0].to = to;
++ }
+
+ /*
+! * Apply 'langmap' to multi-byte character "c" and return the result.
+ */
++ int
++ langmap_adjust_mb(c)
++ int c;
++ {
++ langmap_entry_T *entries = (langmap_entry_T *)(langmap_mapga.ga_data);
++ int a = 0;
++ int b = langmap_mapga.ga_len;
++
++ while (a != b)
++ {
++ int i = (a + b) / 2;
++ int d = entries[i].from - c;
++
++ if (d == 0)
++ return entries[i].to; /* found matching entry */
++ if (d < 0)
++ a = i + 1;
++ else
++ b = i;
++ }
++ return c; /* no entry found, return "c" unmodified */
++ }
++ # endif
+
+ static void
+ langmap_init()
+ {
+ int i;
+
+! for (i = 0; i < 256; i++)
+! langmap_mapchar[i] = i; /* we init with a one-to-one map */
+! # ifdef FEAT_MBYTE
+! ga_init2(&langmap_mapga, sizeof(langmap_entry_T), 8);
+! # endif
+ }
+
+ /*
+***************
+*** 10185,10191 ****
+ char_u *p2;
+ int from, to;
+
+! langmap_init(); /* back to one-to-one map first */
+
+ for (p = p_langmap; p[0] != NUL; )
+ {
+--- 10270,10279 ----
+ char_u *p2;
+ int from, to;
+
+! #ifdef FEAT_MBYTE
+! ga_clear(&langmap_mapga); /* clear the previous map first */
+! #endif
+! langmap_init(); /* back to one-to-one map */
+
+ for (p = p_langmap; p[0] != NUL; )
+ {
+***************
+*** 10235,10241 ****
+ transchar(from));
+ return;
+ }
+! langmap_mapchar[from & 255] = to;
+
+ /* Advance to next pair */
+ mb_ptr_adv(p);
+--- 10323,10335 ----
+ transchar(from));
+ return;
+ }
+!
+! #ifdef FEAT_MBYTE
+! if (from >= 256)
+! langmap_set_entry(from, to);
+! else
+! #endif
+! langmap_mapchar[from & 255] = to;
+
+ /* Advance to next pair */
+ mb_ptr_adv(p);
+*** ../vim-7.2.108/src/proto/option.pro Sat May 5 19:28:04 2007
+--- src/proto/option.pro Wed Feb 11 21:21:05 2009
+***************
+*** 44,49 ****
+--- 44,50 ----
+ void set_context_in_set_cmd __ARGS((expand_T *xp, char_u *arg, int opt_flags));
+ int ExpandSettings __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file));
+ int ExpandOldSetting __ARGS((int *num_file, char_u ***file));
++ int langmap_adjust_mb __ARGS((int c));
+ int has_format_option __ARGS((int x));
+ int shortmess __ARGS((int x));
+ void vimrc_found __ARGS((char_u *fname, char_u *envname));
+*** ../vim-7.2.108/src/window.c Fri Nov 28 21:26:50 2008
+--- src/window.c Sat Feb 21 19:55:25 2009
+***************
+*** 594,602 ****
+ ++allow_keys; /* no mapping for xchar, but allow key codes */
+ if (xchar == NUL)
+ xchar = plain_vgetc();
+- #ifdef FEAT_LANGMAP
+ LANGMAP_ADJUST(xchar, TRUE);
+- #endif
+ --no_mapping;
+ --allow_keys;
+ #ifdef FEAT_CMDL_INFO
+--- 594,600 ----
+*** ../vim-7.2.108/src/version.c Wed Feb 11 22:47:32 2009
+--- src/version.c Sat Feb 21 19:34:28 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 109,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+99. The hum of a cooling fan and the click of keys is comforting to you.
+
+ /// 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.110 b/source/ap/vim/patches/7.2.110
new file mode 100644
index 000000000..4594e78c3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.110
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.110
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.110
+Problem: Compiler warning for unused variable.
+Solution: Init the variable.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.109/src/ex_docmd.c Wed Jan 28 15:42:07 2009
+--- src/ex_docmd.c Tue Feb 17 03:47:13 2009
+***************
+*** 5916,5922 ****
+ char_u *q;
+
+ char_u *start;
+! char_u *end;
+ char_u *ksp;
+ size_t len, totlen;
+
+--- 5916,5922 ----
+ char_u *q;
+
+ char_u *start;
+! char_u *end = NULL;
+ char_u *ksp;
+ size_t len, totlen;
+
+*** ../vim-7.2.109/src/version.c Sat Feb 21 20:27:00 2009
+--- src/version.c Sat Feb 21 20:35:50 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 110,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+100. The most exciting sporting events you noticed during summer 1996
+ was Netscape vs. Microsoft.
+
+ /// 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.111 b/source/ap/vim/patches/7.2.111
new file mode 100644
index 000000000..acc0be423
--- /dev/null
+++ b/source/ap/vim/patches/7.2.111
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.111
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.111
+Problem: When using Visual block mode with 'cursorcolumn' it's unclear what
+ is selected.
+Solution: Don't use 'cursorcolumn' highlighting inside the Visual selection.
+ (idea by Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.110/src/screen.c Wed Oct 1 21:09:02 2008
+--- src/screen.c Sat Feb 21 21:04:19 2009
+***************
+*** 2596,2601 ****
+--- 2596,2602 ----
+ int noinvcur = FALSE; /* don't invert the cursor */
+ #ifdef FEAT_VISUAL
+ pos_T *top, *bot;
++ int lnum_in_visual_area = FALSE;
+ #endif
+ pos_T pos;
+ long v;
+***************
+*** 2792,2800 ****
+ top = &VIsual;
+ bot = &curwin->w_cursor;
+ }
+ if (VIsual_mode == Ctrl_V) /* block mode */
+ {
+! if (lnum >= top->lnum && lnum <= bot->lnum)
+ {
+ fromcol = wp->w_old_cursor_fcol;
+ tocol = wp->w_old_cursor_lcol;
+--- 2793,2802 ----
+ top = &VIsual;
+ bot = &curwin->w_cursor;
+ }
++ lnum_in_visual_area = (lnum >= top->lnum && lnum <= bot->lnum);
+ if (VIsual_mode == Ctrl_V) /* block mode */
+ {
+! if (lnum_in_visual_area)
+ {
+ fromcol = wp->w_old_cursor_fcol;
+ tocol = wp->w_old_cursor_lcol;
+***************
+*** 4557,4563 ****
+ * highlight the cursor position itself. */
+ if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
+ && lnum != wp->w_cursor.lnum
+! && draw_state == WL_LINE)
+ {
+ vcol_save_attr = char_attr;
+ char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
+--- 4560,4567 ----
+ * highlight the cursor position itself. */
+ if (wp->w_p_cuc && vcol == (long)wp->w_virtcol
+ && lnum != wp->w_cursor.lnum
+! && draw_state == WL_LINE
+! && !lnum_in_visual_area)
+ {
+ vcol_save_attr = char_attr;
+ char_attr = hl_combine_attr(char_attr, hl_attr(HLF_CUC));
+*** ../vim-7.2.110/src/version.c Sat Feb 21 20:36:30 2009
+--- src/version.c Sat Feb 21 21:08:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 111,
+ /**/
+
+--
+Contrary to popular belief, Unix is user friendly.
+It just happens to be selective about who it makes friends with.
+ -- Dave Parnas
+
+ /// 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.112 b/source/ap/vim/patches/7.2.112
new file mode 100644
index 000000000..6611999e1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.112
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.112
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.112
+Problem: Cursor invisible in Visual mode when 'number' is set and cursor in
+ first column. (Matti Niemenmaa, Renato Alves)
+Solution: Check that vcol_prev is smaller than vcol.
+Files: src/screen.c
+
+
+*** ../vim-7.2.111/src/screen.c Sat Feb 21 21:10:24 2009
+--- src/screen.c Sat Feb 21 21:04:19 2009
+***************
+*** 3422,3427 ****
+--- 3422,3428 ----
+ && (*mb_ptr2cells)(ptr) > 1)
+ #endif
+ || ((int)vcol_prev == fromcol_prev
++ && vcol_prev < vcol /* not at margin */
+ && vcol < tocol))
+ area_attr = attr; /* start highlighting */
+ else if (area_attr != 0
+*** ../vim-7.2.111/src/version.c Sat Feb 21 21:10:24 2009
+--- src/version.c Sat Feb 21 21:20:51 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 112,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+102. When filling out your driver's license application, you give
+ your IP 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.113 b/source/ap/vim/patches/7.2.113
new file mode 100644
index 000000000..f0e4ebf31
--- /dev/null
+++ b/source/ap/vim/patches/7.2.113
@@ -0,0 +1,99 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.113
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.113
+Problem: Crash for substitute() call using submatch(1) while there is no
+ such submatch. (Yukihiro Nakadaira)
+Solution: Also check the start of the submatch is set, it can be NULL when
+ an attempted match didn't work out.
+Files: src/regexp.c
+
+
+*** ../vim-7.2.112/src/regexp.c Fri Aug 8 13:45:31 2008
+--- src/regexp.c Sat Feb 21 21:46:49 2009
+***************
+*** 4532,4538 ****
+ cleanup_subexpr();
+ if (!REG_MULTI) /* Single-line regexp */
+ {
+! if (reg_endp[no] == NULL)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+--- 4532,4538 ----
+ cleanup_subexpr();
+ if (!REG_MULTI) /* Single-line regexp */
+ {
+! if (reg_startp[no] == NULL || reg_endp[no] == NULL)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+***************
+*** 4548,4554 ****
+ }
+ else /* Multi-line regexp */
+ {
+! if (reg_endpos[no].lnum < 0)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+--- 4548,4554 ----
+ }
+ else /* Multi-line regexp */
+ {
+! if (reg_startpos[no].lnum < 0 || reg_endpos[no].lnum < 0)
+ {
+ /* Backref was not set: Match an empty string. */
+ len = 0;
+***************
+*** 7279,7291 ****
+ }
+ else
+ {
+! if (submatch_match->endp[no] == NULL)
+ retval = NULL;
+ else
+- {
+- s = submatch_match->startp[no];
+ retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
+- }
+ }
+
+ return retval;
+--- 7279,7289 ----
+ }
+ else
+ {
+! s = submatch_match->startp[no];
+! if (s == NULL || submatch_match->endp[no] == NULL)
+ retval = NULL;
+ else
+ retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s));
+ }
+
+ return retval;
+*** ../vim-7.2.112/src/version.c Sat Feb 21 21:22:44 2009
+--- src/version.c Sat Feb 21 22:01:56 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 113,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+103. When you find yourself in the "Computer" section of Barnes & Noble
+ enjoying yourself.
+
+ /// 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.114 b/source/ap/vim/patches/7.2.114
new file mode 100644
index 000000000..9742b52d7
--- /dev/null
+++ b/source/ap/vim/patches/7.2.114
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.114
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.114
+Problem: Using wrong printf format.
+Solution: Use "%ld" instead of "%d". (Dominique Pelle)
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.113/src/netbeans.c Tue Jan 6 16:13:42 2009
+--- src/netbeans.c Tue Feb 17 03:21:33 2009
+***************
+*** 1924,1930 ****
+ vim_free(path);
+ if (bufp == NULL)
+ {
+! nbdebug((" File %s not found in setBufferNumber\n", args));
+ EMSG2("E642: File %s not found in setBufferNumber", args);
+ return FAIL;
+ }
+--- 1924,1930 ----
+ vim_free(path);
+ if (bufp == NULL)
+ {
+! nbdebug((" File %s not found in setBufferNumber\n", args));
+ EMSG2("E642: File %s not found in setBufferNumber", args);
+ return FAIL;
+ }
+***************
+*** 2318,2324 ****
+ }
+ if (pos)
+ {
+! coloncmd(":sign place %d line=%d name=%d buffer=%d",
+ serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
+ if (typeNum == curPCtype)
+ coloncmd(":sign jump %d buffer=%d", serNum,
+--- 2318,2324 ----
+ }
+ if (pos)
+ {
+! coloncmd(":sign place %d line=%ld name=%d buffer=%d",
+ serNum, pos->lnum, typeNum, buf->bufp->b_fnum);
+ if (typeNum == curPCtype)
+ coloncmd(":sign jump %d buffer=%d", serNum,
+***************
+*** 2422,2428 ****
+ GUARDED) == 0)
+ {
+ coloncmd(
+! ":sign place %d line=%d name=%d buffer=%d",
+ guardId++, lnum, GUARDED,
+ buf->bufp->b_fnum);
+ }
+--- 2422,2428 ----
+ GUARDED) == 0)
+ {
+ coloncmd(
+! ":sign place %d line=%ld name=%d buffer=%d",
+ guardId++, lnum, GUARDED,
+ buf->bufp->b_fnum);
+ }
+*** ../vim-7.2.113/src/version.c Sat Feb 21 22:03:06 2009
+--- src/version.c Sat Feb 21 22:11:21 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 114,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+104. When people ask about the Presidential Election you ask "Which country?"
+
+ /// 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.115 b/source/ap/vim/patches/7.2.115
new file mode 100644
index 000000000..b51a1f503
--- /dev/null
+++ b/source/ap/vim/patches/7.2.115
@@ -0,0 +1,133 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.115
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.115
+Problem: Some debugging code is never used.
+Solution: Remove nbtrace() and nbprt(). (Dominique Pelle)
+Files: src/nbdebug.c, src/nbdebug.h
+
+*** ../vim-7.2.114/src/nbdebug.c Tue Jun 24 23:54:30 2008
+--- src/nbdebug.c Tue Feb 17 03:26:07 2009
+***************
+*** 33,39 ****
+ u_int nb_dlevel = 0; /* nb_debug verbosity level */
+
+ void nbdb(char *, ...);
+- void nbtrace(char *, ...);
+
+ static int lookup(char *);
+ #ifdef USE_NB_ERRORHANDLER
+--- 33,38 ----
+***************
+*** 100,124 ****
+ } /* end nbdebug_log_init */
+
+
+-
+-
+- void
+- nbtrace(
+- char *fmt,
+- ...)
+- {
+- va_list ap;
+-
+- if (nb_debug!= NULL && (nb_dlevel & (NB_TRACE | NB_TRACE_VERBOSE))) {
+- va_start(ap, fmt);
+- vfprintf(nb_debug, fmt, ap);
+- va_end(ap);
+- fflush(nb_debug);
+- }
+-
+- } /* end nbtrace */
+-
+-
+ void
+ nbdbg(
+ char *fmt,
+--- 99,104 ----
+***************
+*** 136,158 ****
+ } /* end nbdbg */
+
+
+- void
+- nbprt(
+- char *fmt,
+- ...)
+- {
+- va_list ap;
+-
+- if (nb_debug != NULL && nb_dlevel & NB_PRINT) {
+- va_start(ap, fmt);
+- vfprintf(nb_debug, fmt, ap);
+- va_end(ap);
+- fflush(nb_debug);
+- }
+-
+- } /* end nbprt */
+-
+-
+ static int
+ lookup(
+ char *file)
+--- 116,121 ----
+*** ../vim-7.2.114/src/nbdebug.h Wed Jun 25 00:47:21 2008
+--- src/nbdebug.h Tue Feb 17 03:26:38 2009
+***************
+*** 43,50 ****
+
+
+ void nbdbg(char *, ...);
+- void nbprt(char *, ...);
+- void nbtrace(char *, ...);
+
+ void nbdebug_wait __ARGS((u_int wait_flags, char *wait_var, u_int wait_secs));
+ void nbdebug_log_init __ARGS((char *log_var, char *level_var));
+--- 43,48 ----
+***************
+*** 70,88 ****
+ {
+ }
+
+- void
+- nbprt(
+- char *fmt,
+- ...)
+- {
+- }
+-
+- void
+- nbtrace(
+- char *fmt,
+- ...)
+- {
+- }
+-
+ #endif /* NBDEBUG */
+ #endif /* NBDEBUG_H */
+--- 68,72 ----
+*** ../vim-7.2.114/src/version.c Sat Feb 21 22:12:43 2009
+--- src/version.c Sat Feb 21 22:28:21 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 115,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+105. When someone asks you for your address, you tell them your URL.
+
+ /// 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.116 b/source/ap/vim/patches/7.2.116
new file mode 100644
index 000000000..edd2bd145
--- /dev/null
+++ b/source/ap/vim/patches/7.2.116
@@ -0,0 +1,55 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.116
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.116
+Problem: Not all memory is freed when EXITFREE is defined.
+Solution: Free allocated memory on exit. (Dominique Pelle)
+Files: src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c,
+ src/tag.c
+
+
+*** ../vim-7.2.115/src/tag.c Tue Jan 13 17:27:18 2009
+--- src/tag.c Tue Feb 17 03:43:32 2009
+***************
+*** 2542,2547 ****
+--- 2542,2556 ----
+ {
+ ga_clear_strings(&tag_fnames);
+ do_tag(NULL, DT_FREE, 0, 0, 0);
++ tag_freematch();
++
++ # if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
++ if (ptag_entry.tagname)
++ {
++ vim_free(ptag_entry.tagname);
++ ptag_entry.tagname = NULL;
++ }
++ # endif
+ }
+ #endif
+
+*** ../vim-7.2.115/src/version.c Sat Feb 21 22:29:12 2009
+--- src/version.c Sat Feb 21 22:56:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 116,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+106. When told to "go to your room" you inform your parents that you
+ can't...because you were kicked out and banned.
+
+ /// 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.117 b/source/ap/vim/patches/7.2.117
new file mode 100644
index 000000000..4c4e66a09
--- /dev/null
+++ b/source/ap/vim/patches/7.2.117
@@ -0,0 +1,107 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.117
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.117
+Problem: Location list incorrectly labelled "Quickfix List".
+Solution: Break out of both loops for finding window for location list
+ buffer. (Lech Lorens)
+Files: src/buffer.c, src/quickfix.c, src/screen.c
+
+
+*** ../vim-7.2.116/src/buffer.c Tue Jan 6 16:13:42 2009
+--- src/buffer.c Tue Feb 17 04:00:51 2009
+***************
+*** 5098,5104 ****
+ */
+ FOR_ALL_TAB_WINDOWS(tp, win)
+ if (win->w_buffer == buf)
+! break;
+ if (win != NULL && win->w_llist_ref != NULL)
+ return _("[Location List]");
+ else
+--- 5098,5105 ----
+ */
+ FOR_ALL_TAB_WINDOWS(tp, win)
+ if (win->w_buffer == buf)
+! goto win_found;
+! win_found:
+ if (win != NULL && win->w_llist_ref != NULL)
+ return _("[Location List]");
+ else
+*** ../vim-7.2.116/src/quickfix.c Sat Nov 15 14:10:23 2008
+--- src/quickfix.c Sat Feb 21 22:54:25 2009
+***************
+*** 1610,1619 ****
+ {
+ goto_tabpage_win(tp, wp);
+ usable_win = 1;
+! break;
+ }
+ }
+ }
+
+ /*
+ * If there is only one window and it is the quickfix window, create a
+--- 1612,1622 ----
+ {
+ goto_tabpage_win(tp, wp);
+ usable_win = 1;
+! goto win_found;
+ }
+ }
+ }
++ win_found:
+
+ /*
+ * If there is only one window and it is the quickfix window, create a
+*** ../vim-7.2.116/src/screen.c Sat Feb 21 21:22:44 2009
+--- src/screen.c Sat Feb 21 21:04:19 2009
+***************
+*** 7452,7461 ****
+ {
+ outofmem = TRUE;
+ #ifdef FEAT_WINDOWS
+! break;
+ #endif
+ }
+ }
+
+ #ifdef FEAT_MBYTE
+ for (i = 0; i < p_mco; ++i)
+--- 7452,7464 ----
+ {
+ outofmem = TRUE;
+ #ifdef FEAT_WINDOWS
+! goto give_up;
+ #endif
+ }
+ }
++ #ifdef FEAT_WINDOWS
++ give_up:
++ #endif
+
+ #ifdef FEAT_MBYTE
+ for (i = 0; i < p_mco; ++i)
+*** ../vim-7.2.116/src/version.c Sat Feb 21 22:57:10 2009
+--- src/version.c Sat Feb 21 23:58:24 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 117,
+ /**/
+
+--
+Laughing helps. It's like jogging on the inside.
+
+ /// 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.118 b/source/ap/vim/patches/7.2.118
new file mode 100644
index 000000000..73b6cbbbc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.118
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.118
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.118
+Problem: <PageUp> at the more prompt only does half a page.
+Solution: Make <PageUp> go up a whole page. Also make 'f' go a page
+ forward, but not quit the more prompt. (Markus Heidelberg)
+Files: src/message.c
+
+
+*** ../vim-7.2.117/src/message.c Wed Feb 11 18:46:48 2009
+--- src/message.c Fri Feb 20 05:20:15 2009
+***************
+*** 976,982 ****
+ }
+ }
+ else if (msg_scrolled > Rows - 2
+! && (c == 'j' || c == K_DOWN || c == 'd'))
+ c = K_IGNORE;
+ }
+ } while ((had_got_int && c == Ctrl_C)
+--- 976,982 ----
+ }
+ }
+ else if (msg_scrolled > Rows - 2
+! && (c == 'j' || c == K_DOWN || c == 'd' || c == 'f'))
+ c = K_IGNORE;
+ }
+ } while ((had_got_int && c == Ctrl_C)
+***************
+*** 2504,2510 ****
+ break;
+
+ case 'u': /* Up half a page */
+- case K_PAGEUP:
+ scroll = -(Rows / 2);
+ break;
+
+--- 2504,2509 ----
+***************
+*** 2513,2522 ****
+--- 2512,2523 ----
+ break;
+
+ case 'b': /* one page back */
++ case K_PAGEUP:
+ scroll = -(Rows - 1);
+ break;
+
+ case ' ': /* one extra page */
++ case 'f':
+ case K_PAGEDOWN:
+ case K_LEFTMOUSE:
+ scroll = Rows - 1;
+*** ../vim-7.2.117/src/version.c Sun Feb 22 00:01:42 2009
+--- src/version.c Sun Feb 22 00:57:16 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 118,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+109. You actually read -- and enjoy -- lists like this.
+
+ /// 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.119 b/source/ap/vim/patches/7.2.119
new file mode 100644
index 000000000..f31f2e660
--- /dev/null
+++ b/source/ap/vim/patches/7.2.119
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.119
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.119
+Problem: Status line is redrawn too often.
+Solution: Check ScreeenLinesUC[] properly. (Yukihiro Nakadaira)
+Files: src/screen.c
+
+
+*** ../vim-7.2.118/src/screen.c Sun Feb 22 00:01:42 2009
+--- src/screen.c Sun Feb 22 01:07:38 2009
+***************
+*** 6362,6368 ****
+ && c == 0x8e
+ && ScreenLines2[off] != ptr[1])
+ || (enc_utf8
+! && (ScreenLinesUC[off] != (u8char_T)u8c
+ || screen_comp_differs(off, u8cc)))
+ #endif
+ || ScreenAttrs[off] != attr
+--- 6362,6368 ----
+ && 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
+*** ../vim-7.2.118/src/version.c Sun Feb 22 00:58:03 2009
+--- src/version.c Sun Feb 22 01:09:54 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 119,
+ /**/
+
+--
+In a world without walls and borders, who needs windows and gates?
+
+ /// 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.120 b/source/ap/vim/patches/7.2.120
new file mode 100644
index 000000000..cf687f3ed
--- /dev/null
+++ b/source/ap/vim/patches/7.2.120
@@ -0,0 +1,277 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.120
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.120
+Problem: When opening the quickfix window or splitting the window and
+ setting the location list, the location list is copied and then
+ deleted, which is inefficient.
+Solution: Don't copy the location list when not needed. (Lech Lorens)
+Files: src/quickfix.c, src/vim.h, src/window.c
+
+
+*** ../vim-7.2.119/src/quickfix.c Sun Feb 22 00:01:42 2009
+--- src/quickfix.c Sat Feb 21 22:54:25 2009
+***************
+*** 1419,1424 ****
+--- 1419,1425 ----
+ int opened_window = FALSE;
+ win_T *win;
+ win_T *altwin;
++ int flags;
+ #endif
+ win_T *oldwin = curwin;
+ int print_message = TRUE;
+***************
+*** 1531,1537 ****
+ if (qf_ptr->qf_type == 1 && (!curwin->w_buffer->b_help || cmdmod.tab != 0))
+ {
+ win_T *wp;
+- int n;
+
+ if (cmdmod.tab != 0)
+ wp = NULL;
+--- 1532,1537 ----
+***************
+*** 1547,1559 ****
+ * Split off help window; put it at far top if no position
+ * specified, the current window is vertically split and narrow.
+ */
+! n = WSP_HELP;
+ # ifdef FEAT_VERTSPLIT
+ if (cmdmod.split == 0 && curwin->w_width != Columns
+ && curwin->w_width < 80)
+! n |= WSP_TOP;
+ # endif
+! if (win_split(0, n) == FAIL)
+ goto theend;
+ opened_window = TRUE; /* close it when fail */
+
+--- 1547,1562 ----
+ * Split off help window; put it at far top if no position
+ * specified, the current window is vertically split and narrow.
+ */
+! flags = WSP_HELP;
+ # ifdef FEAT_VERTSPLIT
+ if (cmdmod.split == 0 && curwin->w_width != Columns
+ && curwin->w_width < 80)
+! flags |= WSP_TOP;
+ # endif
+! if (qi != &ql_info)
+! flags |= WSP_NEWLOC; /* don't copy the location list */
+!
+! if (win_split(0, flags) == FAIL)
+ goto theend;
+ opened_window = TRUE; /* close it when fail */
+
+***************
+*** 1563,1569 ****
+ if (qi != &ql_info) /* not a quickfix list */
+ {
+ /* The new window should use the supplied location list */
+- qf_free_all(curwin);
+ curwin->w_llist = qi;
+ qi->qf_refcount++;
+ }
+--- 1566,1571 ----
+***************
+*** 1624,1630 ****
+ {
+ ll_ref = curwin->w_llist_ref;
+
+! if (win_split(0, WSP_ABOVE) == FAIL)
+ goto failed; /* not enough room for window */
+ opened_window = TRUE; /* close it when fail */
+ p_swb = empty_option; /* don't split again */
+--- 1626,1635 ----
+ {
+ ll_ref = curwin->w_llist_ref;
+
+! flags = WSP_ABOVE;
+! if (ll_ref != NULL)
+! flags |= WSP_NEWLOC;
+! if (win_split(0, flags) == FAIL)
+ goto failed; /* not enough room for window */
+ opened_window = TRUE; /* close it when fail */
+ p_swb = empty_option; /* don't split again */
+***************
+*** 1636,1642 ****
+ {
+ /* The new window should use the location list from the
+ * location list window */
+- qf_free_all(curwin);
+ curwin->w_llist = ll_ref;
+ ll_ref->qf_refcount++;
+ }
+--- 1641,1646 ----
+***************
+*** 2311,2325 ****
+ if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
+ /* Create the new window at the very bottom. */
+ win_goto(lastwin);
+! if (win_split(height, WSP_BELOW) == FAIL)
+ return; /* not enough room for window */
+ #ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ #endif
+
+- /* Remove the location list for the quickfix window */
+- qf_free_all(curwin);
+-
+ if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
+ {
+ /*
+--- 2315,2326 ----
+ if (eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
+ /* Create the new window at the very bottom. */
+ win_goto(lastwin);
+! if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
+ return; /* not enough room for window */
+ #ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ #endif
+
+ if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
+ {
+ /*
+*** ../vim-7.2.119/src/vim.h Thu Nov 20 14:11:47 2008
+--- src/vim.h Sat Feb 21 22:53:03 2009
+***************
+*** 1057,1062 ****
+--- 1057,1063 ----
+ #define WSP_HELP 16 /* creating the help window */
+ #define WSP_BELOW 32 /* put new window below/right */
+ #define WSP_ABOVE 64 /* put new window above/left */
++ #define WSP_NEWLOC 128 /* don't copy location list */
+
+ /*
+ * arguments for gui_set_shellsize()
+*** ../vim-7.2.119/src/window.c Sat Feb 21 20:27:00 2009
+--- src/window.c Sat Feb 21 23:56:41 2009
+***************
+*** 12,18 ****
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+! static void win_init __ARGS((win_T *newp, win_T *oldp));
+ static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
+ static void frame_setheight __ARGS((frame_T *curfrp, int height));
+ #ifdef FEAT_VERTSPLIT
+--- 12,18 ----
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+! static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
+ static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
+ static void frame_setheight __ARGS((frame_T *curfrp, int height));
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 911,917 ****
+ return FAIL;
+
+ /* make the contents of the new window the same as the current one */
+! win_init(wp, curwin);
+ }
+
+ /*
+--- 911,917 ----
+ return FAIL;
+
+ /* make the contents of the new window the same as the current one */
+! win_init(wp, curwin, flags);
+ }
+
+ /*
+***************
+*** 1160,1170 ****
+ * Initialize window "newp" from window "oldp".
+ * Used when splitting a window and when creating a new tab page.
+ * The windows will both edit the same buffer.
+ */
+ static void
+! win_init(newp, oldp)
+ win_T *newp;
+ win_T *oldp;
+ {
+ int i;
+
+--- 1160,1174 ----
+ * Initialize window "newp" from window "oldp".
+ * Used when splitting a window and when creating a new tab page.
+ * The windows will both edit the same buffer.
++ * WSP_NEWLOC may be specified in flags to prevent the location list from
++ * being copied.
+ */
++ /*ARGSUSED*/
+ static void
+! win_init(newp, oldp, flags)
+ win_T *newp;
+ win_T *oldp;
++ int flags;
+ {
+ int i;
+
+***************
+*** 1189,1195 ****
+ copy_jumplist(oldp, newp);
+ #endif
+ #ifdef FEAT_QUICKFIX
+! copy_loclist(oldp, newp);
+ #endif
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+--- 1193,1206 ----
+ copy_jumplist(oldp, newp);
+ #endif
+ #ifdef FEAT_QUICKFIX
+! if (flags & WSP_NEWLOC)
+! {
+! /* Don't copy the location list. */
+! newp->w_llist = NULL;
+! newp->w_llist_ref = NULL;
+! }
+! else
+! copy_loclist(oldp, newp);
+ #endif
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+***************
+*** 3219,3225 ****
+ else
+ {
+ /* First window in new tab page, initialize it from "oldwin". */
+! win_init(curwin, oldwin);
+
+ # ifdef FEAT_SCROLLBIND
+ /* We don't want scroll-binding in the first window. */
+--- 3230,3236 ----
+ else
+ {
+ /* First window in new tab page, initialize it from "oldwin". */
+! win_init(curwin, oldwin, 0);
+
+ # ifdef FEAT_SCROLLBIND
+ /* We don't want scroll-binding in the first window. */
+*** ../vim-7.2.119/src/version.c Sun Feb 22 01:13:45 2009
+--- src/version.c Sun Feb 22 02:32:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 120,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+110. You actually volunteer to become your employer's webmaster.
+
+ /// 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.121 b/source/ap/vim/patches/7.2.121
new file mode 100644
index 000000000..ea5306f70
--- /dev/null
+++ b/source/ap/vim/patches/7.2.121
@@ -0,0 +1,180 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.121
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.121
+Problem: In gvim "!grep a *.c" spews out a lot of text that can't be
+ stopped with CTRL-C.
+Solution: When looping to read and show text, do check for typed characters
+ every two seconds.
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.120/src/os_unix.c Wed Feb 4 14:18:44 2009
+--- src/os_unix.c Sun Feb 22 00:54:05 2009
+***************
+*** 4092,4097 ****
+--- 4092,4100 ----
+ int fromshell_fd;
+ garray_T ga;
+ int noread_cnt;
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ struct timeval start_tv;
++ # endif
+
+ # ifdef FEAT_GUI
+ if (pty_master_fd >= 0)
+***************
+*** 4201,4207 ****
+ ga_init2(&ga, 1, BUFLEN);
+
+ noread_cnt = 0;
+!
+ for (;;)
+ {
+ /*
+--- 4204,4212 ----
+ ga_init2(&ga, 1, BUFLEN);
+
+ noread_cnt = 0;
+! # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
+! gettimeofday(&start_tv, NULL);
+! # endif
+ for (;;)
+ {
+ /*
+***************
+*** 4214,4238 ****
+ * that a typed password is echoed for ssh or gpg command.
+ * Don't get characters when the child has already
+ * finished (wait_pid == 0).
+- * Don't get extra characters when we already have one.
+ * Don't read characters unless we didn't get output for a
+! * while, avoids that ":r !ls" eats typeahead.
+ */
+ len = 0;
+ if (!(options & SHELL_EXPAND)
+ && ((options &
+ (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
+ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
+! #ifdef FEAT_GUI
+ || gui.in_use
+! #endif
+ )
+ && wait_pid == 0
+! && (ta_len > 0
+! || (noread_cnt > 4
+! && (len = ui_inchar(ta_buf,
+! BUFLEN, 10L, 0)) > 0)))
+ {
+ /*
+ * For pipes:
+ * Check for CTRL-C: send interrupt signal to child.
+--- 4219,4252 ----
+ * that a typed password is echoed for ssh or gpg command.
+ * Don't get characters when the child has already
+ * finished (wait_pid == 0).
+ * Don't read characters unless we didn't get output for a
+! * while (noread_cnt > 4), avoids that ":r !ls" eats
+! * typeahead.
+ */
+ len = 0;
+ if (!(options & SHELL_EXPAND)
+ && ((options &
+ (SHELL_READ|SHELL_WRITE|SHELL_COOKED))
+ != (SHELL_READ|SHELL_WRITE|SHELL_COOKED)
+! # ifdef FEAT_GUI
+ || gui.in_use
+! # endif
+ )
+ && wait_pid == 0
+! && (ta_len > 0 || noread_cnt > 4))
+ {
++ if (ta_len == 0)
++ {
++ /* Get extra characters when we don't have any.
++ * Reset the counter and timer. */
++ noread_cnt = 0;
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ gettimeofday(&start_tv, NULL);
++ # endif
++ len = ui_inchar(ta_buf, BUFLEN, 10L, 0);
++ }
++ if (ta_len > 0 || len > 0)
++ {
+ /*
+ * For pipes:
+ * Check for CTRL-C: send interrupt signal to child.
+***************
+*** 4334,4342 ****
+ {
+ ta_len -= len;
+ mch_memmove(ta_buf, ta_buf + len, ta_len);
+- noread_cnt = 0;
+ }
+ }
+ }
+
+ if (got_int)
+--- 4348,4356 ----
+ {
+ ta_len -= len;
+ mch_memmove(ta_buf, ta_buf + len, ta_len);
+ }
+ }
++ }
+ }
+
+ if (got_int)
+***************
+*** 4444,4449 ****
+--- 4458,4482 ----
+ out_flush();
+ if (got_int)
+ break;
++
++ # if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_SYS_TIME_H)
++ {
++ struct timeval now_tv;
++ long msec;
++
++ /* Avoid that we keep looping here without
++ * checking for a CTRL-C for a long time. Don't
++ * break out too often to avoid losing typeahead. */
++ gettimeofday(&now_tv, NULL);
++ msec = (now_tv.tv_sec - start_tv.tv_sec) * 1000L
++ + (now_tv.tv_usec - start_tv.tv_usec) / 1000L;
++ if (msec > 2000)
++ {
++ noread_cnt = 5;
++ break;
++ }
++ }
++ # endif
+ }
+
+ /* If we already detected the child has finished break the
+*** ../vim-7.2.120/src/version.c Sun Feb 22 02:36:36 2009
+--- src/version.c Sun Feb 22 02:48:03 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 121,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+111. You and your friends get together regularly on IRC, even though
+ all of you live in the same city.
+
+ /// 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.122 b/source/ap/vim/patches/7.2.122
new file mode 100644
index 000000000..18f69898b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.122
@@ -0,0 +1,80 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.122
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.122
+Problem: Invalid memory access when the VimResized autocommand changes
+ 'columns' and/or 'lines'.
+Solution: After VimResized check for changed values. (Dominique Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.121/src/screen.c Sun Feb 22 01:13:45 2009
+--- src/screen.c Sun Feb 22 01:07:38 2009
+***************
+*** 7368,7374 ****
+--- 7368,7378 ----
+ #endif
+ static int entered = FALSE; /* avoid recursiveness */
+ static int done_outofmem_msg = FALSE; /* did outofmem message */
++ #ifdef FEAT_AUTOCMD
++ int retry_count = 0;
+
++ retry:
++ #endif
+ /*
+ * Allocation of the screen buffers is done only when the size changes and
+ * when Rows and Columns have been set and we have started doing full
+***************
+*** 7643,7650 ****
+ --RedrawingDisabled;
+
+ #ifdef FEAT_AUTOCMD
+! if (starting == 0)
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
+ #endif
+ }
+
+--- 7647,7663 ----
+ --RedrawingDisabled;
+
+ #ifdef FEAT_AUTOCMD
+! /*
+! * Do not apply autocommands more than 3 times to avoid an endless loop
+! * in case applying autocommands always changes Rows or Columns.
+! */
+! if (starting == 0 && ++retry_count <= 3)
+! {
+ apply_autocmds(EVENT_VIMRESIZED, NULL, NULL, FALSE, curbuf);
++ /* In rare cases, autocommands may have altered Rows or Columns,
++ * jump back to check if we need to allocate the screen again. */
++ goto retry;
++ }
+ #endif
+ }
+
+*** ../vim-7.2.121/src/version.c Sun Feb 22 02:51:37 2009
+--- src/version.c Sun Feb 22 21:11:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 122,
+ /**/
+
+--
+FIXME and XXX are two common keywords used to mark broken or incomplete code
+not only since XXX as a sex reference would grab everbodys attention but
+simply due to the fact that Vim would highlight these words.
+ -- Hendrik Scholz
+
+ /// 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.123 b/source/ap/vim/patches/7.2.123
new file mode 100644
index 000000000..4cf9b810b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.123
@@ -0,0 +1,50 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.123
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.123
+Problem: Typing 'q' at more prompt for ":map" output still displays another
+ line, causing another more prompt. (Markus Heidelberg)
+Solution: Quit listing maps when 'q' typed.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.122/src/getchar.c Fri Nov 28 12:05:07 2008
+--- src/getchar.c Sun Feb 22 23:10:45 2009
+***************
+*** 3816,3822 ****
+--- 3816,3826 ----
+ int len = 1;
+
+ if (msg_didout || msg_silent != 0)
++ {
+ msg_putchar('\n');
++ if (got_int) /* 'q' typed at MORE prompt */
++ return;
++ }
+ if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
+ msg_putchar('!'); /* :map! */
+ else if (mp->m_mode & INSERT)
+*** ../vim-7.2.122/src/version.c Sun Feb 22 21:12:22 2009
+--- src/version.c Sun Feb 22 23:16:29 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 123,
+ /**/
+
+--
+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.124 b/source/ap/vim/patches/7.2.124
new file mode 100644
index 000000000..eca6bec1e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.124
@@ -0,0 +1,122 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.124
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.124
+Problem: Typing 'q' at more prompt for ":tselect" output still displays
+ more lines, causing another more prompt. (Markus Heidelberg)
+Solution: Quit listing tags when 'q' typed.
+Files: src/tag.c
+
+
+*** ../vim-7.2.123/src/tag.c Sat Feb 21 22:57:10 2009
+--- src/tag.c Mon Feb 23 00:07:24 2009
+***************
+*** 618,624 ****
+ taglen_advance(taglen);
+ MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
+
+! for (i = 0; i < num_matches; ++i)
+ {
+ parse_match(matches[i], &tagp);
+ if (!new_tag && (
+--- 618,624 ----
+ taglen_advance(taglen);
+ MSG_PUTS_ATTR(_("file\n"), hl_attr(HLF_T));
+
+! for (i = 0; i < num_matches && !got_int; ++i)
+ {
+ parse_match(matches[i], &tagp);
+ if (!new_tag && (
+***************
+*** 655,660 ****
+--- 655,662 ----
+ }
+ if (msg_col > 0)
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+
+ /* print any extra fields */
+***************
+*** 689,694 ****
+--- 691,698 ----
+ if (msg_col + ptr2cells(p) >= Columns)
+ {
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+ }
+ p = msg_outtrans_one(p, attr);
+***************
+*** 704,709 ****
+--- 708,715 ----
+ if (msg_col > 15)
+ {
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+ }
+ }
+***************
+*** 734,739 ****
+--- 740,747 ----
+ {
+ if (msg_col + (*p == TAB ? 1 : ptr2cells(p)) > Columns)
+ msg_putchar('\n');
++ if (got_int)
++ break;
+ msg_advance(15);
+
+ /* skip backslash used for escaping command char */
+***************
+*** 760,771 ****
+ if (msg_col)
+ msg_putchar('\n');
+ ui_breakcheck();
+- if (got_int)
+- {
+- got_int = FALSE; /* only stop the listing */
+- break;
+- }
+ }
+ ask_for_selection = TRUE;
+ }
+ #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
+--- 768,776 ----
+ if (msg_col)
+ msg_putchar('\n');
+ ui_breakcheck();
+ }
++ if (got_int)
++ got_int = FALSE; /* only stop the listing */
+ ask_for_selection = TRUE;
+ }
+ #if defined(FEAT_QUICKFIX) && defined(FEAT_EVAL)
+*** ../vim-7.2.123/src/version.c Sun Feb 22 23:42:08 2009
+--- src/version.c Mon Feb 23 00:51:57 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 124,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+123. You ask the car dealer to install an extra cigarette lighter
+ on your new car to power your notebook.
+
+ /// 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.125 b/source/ap/vim/patches/7.2.125
new file mode 100644
index 000000000..460bdea58
--- /dev/null
+++ b/source/ap/vim/patches/7.2.125
@@ -0,0 +1,161 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.125
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.125
+Problem: Leaking memory when reading XPM bitmap for a sign.
+Solution: Don't allocate the memory twice. (Dominique Pelle)
+Files: src/gui_x11.c
+
+
+*** ../vim-7.2.124/src/gui_x11.c Wed Nov 12 13:07:48 2008
+--- src/gui_x11.c Sun Feb 22 21:58:19 2009
+***************
+*** 1587,1592 ****
+--- 1587,1594 ----
+ XtCloseDisplay(gui.dpy);
+ gui.dpy = NULL;
+ vimShell = (Widget)0;
++ vim_free(gui_argv);
++ gui_argv = NULL;
+ }
+
+ /*
+***************
+*** 1761,1766 ****
+--- 1763,1770 ----
+ * says that this isn't needed when exiting, so just skip it. */
+ XtCloseDisplay(gui.dpy);
+ #endif
++ vim_free(gui_argv);
++ gui_argv = NULL;
+ }
+
+ /*
+***************
+*** 3439,3485 ****
+ char_u *signfile;
+ {
+ XpmAttributes attrs;
+! XImage *sign;
+ int status;
+
+ /*
+ * Setup the color substitution table.
+ */
+- sign = NULL;
+ if (signfile[0] != NUL && signfile[0] != '-')
+ {
+! sign = (XImage *)alloc(sizeof(XImage));
+! if (sign != NULL)
+ {
+! XpmColorSymbol color[5] =
+! {
+! {"none", NULL, 0},
+! {"iconColor1", NULL, 0},
+! {"bottomShadowColor", NULL, 0},
+! {"topShadowColor", NULL, 0},
+! {"selectColor", NULL, 0}
+! };
+! attrs.valuemask = XpmColorSymbols;
+! attrs.numsymbols = 2;
+! attrs.colorsymbols = color;
+! attrs.colorsymbols[0].pixel = gui.back_pixel;
+! attrs.colorsymbols[1].pixel = gui.norm_pixel;
+! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
+ &sign, NULL, &attrs);
+!
+! if (status == 0)
+! {
+! /* Sign width is fixed at two columns now.
+! if (sign->width > gui.sign_width)
+! gui.sign_width = sign->width + 8; */
+! }
+! else
+! {
+! vim_free(sign);
+! sign = NULL;
+! EMSG(_(e_signdata));
+! }
+ }
+ }
+
+ return (void *)sign;
+--- 3443,3479 ----
+ char_u *signfile;
+ {
+ XpmAttributes attrs;
+! XImage *sign = NULL;
+ int status;
+
+ /*
+ * Setup the color substitution table.
+ */
+ if (signfile[0] != NUL && signfile[0] != '-')
+ {
+! XpmColorSymbol color[5] =
+ {
+! {"none", NULL, 0},
+! {"iconColor1", NULL, 0},
+! {"bottomShadowColor", NULL, 0},
+! {"topShadowColor", NULL, 0},
+! {"selectColor", NULL, 0}
+! };
+! attrs.valuemask = XpmColorSymbols;
+! attrs.numsymbols = 2;
+! attrs.colorsymbols = color;
+! attrs.colorsymbols[0].pixel = gui.back_pixel;
+! attrs.colorsymbols[1].pixel = gui.norm_pixel;
+! status = XpmReadFileToImage(gui.dpy, (char *)signfile,
+ &sign, NULL, &attrs);
+! if (status == 0)
+! {
+! /* Sign width is fixed at two columns now.
+! if (sign->width > gui.sign_width)
+! gui.sign_width = sign->width + 8; */
+ }
++ else
++ EMSG(_(e_signdata));
+ }
+
+ return (void *)sign;
+***************
+*** 3489,3496 ****
+ gui_mch_destroy_sign(sign)
+ void *sign;
+ {
+! XFree(((XImage *)sign)->data);
+! vim_free(sign);
+ }
+ #endif
+
+--- 3483,3489 ----
+ gui_mch_destroy_sign(sign)
+ void *sign;
+ {
+! XDestroyImage((XImage*)sign);
+ }
+ #endif
+
+*** ../vim-7.2.124/src/version.c Mon Feb 23 00:53:35 2009
+--- src/version.c Tue Feb 24 04:09:33 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 125,
+ /**/
+
+--
+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.126 b/source/ap/vim/patches/7.2.126
new file mode 100644
index 000000000..fe2dd6576
--- /dev/null
+++ b/source/ap/vim/patches/7.2.126
@@ -0,0 +1,174 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.126
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.126
+Problem: When EXITFREE is defined signs are not freed.
+Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle)
+Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro
+
+
+*** ../vim-7.2.125/src/misc2.c Thu Jan 22 21:31:24 2009
+--- src/misc2.c Sun Feb 22 22:04:53 2009
+***************
+*** 1010,1015 ****
+--- 1010,1018 ----
+ # if defined(FEAT_PROFILE)
+ do_cmdline_cmd((char_u *)"profdel *");
+ # endif
++ # if defined(FEAT_KEYMAP)
++ do_cmdline_cmd((char_u *)"set keymap=");
++ #endif
+
+ # ifdef FEAT_TITLE
+ free_titles();
+***************
+*** 1034,1039 ****
+--- 1037,1045 ----
+ free_regexp_stuff();
+ free_tag_stuff();
+ free_cd_dir();
++ # ifdef FEAT_SIGNS
++ free_signs();
++ # endif
+ # ifdef FEAT_EVAL
+ set_expr_line(NULL);
+ # endif
+*** ../vim-7.2.125/src/ex_cmds.c Wed Feb 11 16:02:29 2009
+--- src/ex_cmds.c Sun Feb 22 22:07:08 2009
+***************
+*** 6541,6546 ****
+--- 6541,6547 ----
+ static int last_sign_typenr = MAX_TYPENR; /* is decremented */
+
+ static void sign_list_defined __ARGS((sign_T *sp));
++ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+ /*
+ * ":sign" command
+***************
+*** 6749,6772 ****
+ /* ":sign list {name}" */
+ sign_list_defined(sp);
+ else
+- {
+ /* ":sign undefine {name}" */
+! vim_free(sp->sn_name);
+! vim_free(sp->sn_icon);
+! #ifdef FEAT_SIGN_ICONS
+! if (sp->sn_image != NULL)
+! {
+! out_flush();
+! gui_mch_destroy_sign(sp->sn_image);
+! }
+! #endif
+! vim_free(sp->sn_text);
+! if (sp_prev == NULL)
+! first_sign = sp->sn_next;
+! else
+! sp_prev->sn_next = sp->sn_next;
+! vim_free(sp);
+! }
+ }
+ }
+ else
+--- 6750,6757 ----
+ /* ":sign list {name}" */
+ sign_list_defined(sp);
+ else
+ /* ":sign undefine {name}" */
+! sign_undefine(sp, sp_prev);
+ }
+ }
+ else
+***************
+*** 7015,7020 ****
+--- 7000,7030 ----
+ }
+
+ /*
++ * Undefine a sign and free its memory.
++ */
++ static void
++ sign_undefine(sp, sp_prev)
++ sign_T *sp;
++ sign_T *sp_prev;
++ {
++ vim_free(sp->sn_name);
++ vim_free(sp->sn_icon);
++ #ifdef FEAT_SIGN_ICONS
++ if (sp->sn_image != NULL)
++ {
++ out_flush();
++ gui_mch_destroy_sign(sp->sn_image);
++ }
++ #endif
++ vim_free(sp->sn_text);
++ if (sp_prev == NULL)
++ first_sign = sp->sn_next;
++ else
++ sp_prev->sn_next = sp->sn_next;
++ vim_free(sp);
++ }
++
++ /*
+ * Get highlighting attribute for sign "typenr".
+ * If "line" is TRUE: line highl, if FALSE: text highl.
+ */
+***************
+*** 7088,7093 ****
+--- 7098,7115 ----
+ return (char_u *)_("[Deleted]");
+ }
+
++ #if defined(EXITFREE) || defined(PROTO)
++ /*
++ * Undefine/free all signs.
++ */
++ void
++ free_signs()
++ {
++ while (first_sign != NULL)
++ sign_undefine(first_sign, NULL);
++ }
++ #endif
++
+ #endif
+
+ #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
+*** ../vim-7.2.125/src/proto/ex_cmds.pro Sat Nov 15 14:10:23 2008
+--- src/proto/ex_cmds.pro Sun Feb 22 22:04:53 2009
+***************
+*** 40,45 ****
+--- 40,46 ----
+ int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+ void write_viminfo_sub_string __ARGS((FILE *fp));
+ void free_old_sub __ARGS((void));
++ void free_signs __ARGS((void));
+ int prepare_tagpreview __ARGS((int undo_sync));
+ void ex_help __ARGS((exarg_T *eap));
+ char_u *check_help_lang __ARGS((char_u *arg));
+*** ../vim-7.2.125/src/version.c Tue Feb 24 04:11:07 2009
+--- src/version.c Tue Feb 24 04:24:46 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 126,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+125. You begin to wonder how often it REALLY is necessary to get up
+ and shower or bathe.
+
+ /// 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.127 b/source/ap/vim/patches/7.2.127
new file mode 100644
index 000000000..662fe0fa1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.127
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.127
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.127
+Problem: When listing mappings and a wrapping line causes the more prompt,
+ after typing 'q' there can be another more prompt. (Markus
+ Heidelberg)
+Solution: Set "lines_left" to allow more lines to be displayed.
+Files: src/message.c
+
+
+*** ../vim-7.2.126/src/message.c Sun Feb 22 00:58:03 2009
+--- src/message.c Mon Feb 23 04:17:39 2009
+***************
+*** 2553,2559 ****
+ {
+ /* Jump to the choices of the dialog. */
+ retval = TRUE;
+- lines_left = Rows - 1;
+ }
+ else
+ #endif
+--- 2553,2558 ----
+***************
+*** 2561,2566 ****
+--- 2560,2568 ----
+ got_int = TRUE;
+ quit_more = TRUE;
+ }
++ /* When there is some more output (wrapping line) display that
++ * without another prompt. */
++ lines_left = Rows - 1;
+ break;
+
+ #ifdef FEAT_CLIPBOARD
+*** ../vim-7.2.126/src/version.c Tue Feb 24 04:28:40 2009
+--- src/version.c Tue Feb 24 04:35:38 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 127,
+ /**/
+
+--
+The difference between theory and practice, is that in theory, there
+is no difference between theory and practice.
+
+ /// 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.128 b/source/ap/vim/patches/7.2.128
new file mode 100644
index 000000000..0c17f1852
--- /dev/null
+++ b/source/ap/vim/patches/7.2.128
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.128
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.128 (after 7.2.055)
+Problem: Using ":lcd" makes session files not work.
+Solution: Compare return value of mch_chdir() properly. (Andreas Bernauer)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.127/src/ex_docmd.c Sat Feb 21 20:36:30 2009
+--- src/ex_docmd.c Sun Mar 1 02:39:38 2009
+***************
+*** 8792,8798 ****
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == OK)
+ shorten_fnames(TRUE);
+ }
+
+--- 8799,8805 ----
+ else if (*dirnow != NUL
+ && (ssop_flags & SSOP_CURDIR) && globaldir != NULL)
+ {
+! if (mch_chdir((char *)globaldir) == 0)
+ shorten_fnames(TRUE);
+ }
+
+*** ../vim-7.2.127/src/version.c Tue Feb 24 04:36:50 2009
+--- src/version.c Sun Mar 1 02:42:47 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 128,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+138. You develop a liking for cold 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.129 b/source/ap/vim/patches/7.2.129
new file mode 100644
index 000000000..ca756cfa9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.129
@@ -0,0 +1,73 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.129
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.129
+Problem: When opening a command window from input() it uses the search
+ history.
+Solution: Use get_cmdline_type(). (James Vega)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.128/src/ex_getln.c Fri Nov 28 10:59:57 2008
+--- src/ex_getln.c Mon Mar 2 00:53:39 2009
+***************
+*** 6047,6055 ****
+ # endif
+ return K_IGNORE;
+ }
+! cmdwin_type = ccline.cmdfirstc;
+! if (cmdwin_type == NUL)
+! cmdwin_type = '-';
+
+ /* Create the command-line buffer empty. */
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+--- 6062,6068 ----
+ # endif
+ return K_IGNORE;
+ }
+! cmdwin_type = get_cmdline_type();
+
+ /* Create the command-line buffer empty. */
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+***************
+*** 6073,6079 ****
+ /* Showing the prompt may have set need_wait_return, reset it. */
+ need_wait_return = FALSE;
+
+! histtype = hist_char2type(ccline.cmdfirstc);
+ if (histtype == HIST_CMD || histtype == HIST_DEBUG)
+ {
+ if (p_wc == TAB)
+--- 6086,6092 ----
+ /* Showing the prompt may have set need_wait_return, reset it. */
+ need_wait_return = FALSE;
+
+! histtype = hist_char2type(cmdwin_type);
+ if (histtype == HIST_CMD || histtype == HIST_DEBUG)
+ {
+ if (p_wc == TAB)
+*** ../vim-7.2.128/src/version.c Sun Mar 1 02:43:50 2009
+--- src/version.c Mon Mar 2 02:10:11 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 129,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+146. You experience ACTUAL physical withdrawal symptoms when away
+ from your 'puter and 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.130 b/source/ap/vim/patches/7.2.130
new file mode 100644
index 000000000..8d6546820
--- /dev/null
+++ b/source/ap/vim/patches/7.2.130
@@ -0,0 +1,413 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.130
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.130
+Problem: Vim may haing until CTRL-C is typed when using CTRL-Z.
+Solution: Avoid using pause(). Also use "volatile" for variables used in
+ signal functions. (Dominique Pelle)
+Files: src/auto/configure, src/configure.in, src/config.h.in,
+ src/globals.h, src/os_unix.c
+
+
+*** ../vim-7.2.129/src/auto/configure Thu Nov 20 10:36:04 2008
+--- src/auto/configure Mon Mar 2 02:36:52 2009
+***************
+*** 11565,11570 ****
+--- 11565,11631 ----
+
+ fi
+
++ { $as_echo "$as_me:$LINENO: checking for working volatile" >&5
++ $as_echo_n "checking for working volatile... " >&6; }
++ if test "${ac_cv_c_volatile+set}" = set; then
++ $as_echo_n "(cached) " >&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 ()
++ {
++
++ volatile int x;
++ int * volatile y = (int *) 0;
++ return !x && !y;
++ ;
++ 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_c_volatile=yes
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ ac_cv_c_volatile=no
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++ fi
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
++ $as_echo "$ac_cv_c_volatile" >&6; }
++ if test $ac_cv_c_volatile = no; then
++
++ cat >>confdefs.h <<\_ACEOF
++ #define volatile /**/
++ _ACEOF
++
++ fi
++
+ { $as_echo "$as_me:$LINENO: checking for mode_t" >&5
+ $as_echo_n "checking for mode_t... " >&6; }
+ if test "${ac_cv_type_mode_t+set}" = set; then
+*** ../vim-7.2.129/src/configure.in Thu Nov 20 10:36:04 2008
+--- src/configure.in Sun Feb 22 21:47:44 2009
+***************
+*** 2148,2153 ****
+--- 2148,2154 ----
+ dnl Checks for typedefs, structures, and compiler characteristics.
+ AC_PROG_GCC_TRADITIONAL
+ AC_C_CONST
++ AC_C_VOLATILE
+ AC_TYPE_MODE_T
+ AC_TYPE_OFF_T
+ AC_TYPE_PID_T
+*** ../vim-7.2.129/src/config.h.in Tue Jun 24 23:47:46 2008
+--- src/config.h.in Mon Feb 23 00:13:17 2009
+***************
+*** 50,55 ****
+--- 50,58 ----
+ /* Define to empty if the keyword does not work. */
+ #undef const
+
++ /* Define to empty if the keyword does not work. */
++ #undef volatile
++
+ /* Define to `int' if <sys/types.h> doesn't define. */
+ #undef mode_t
+
+*** ../vim-7.2.129/src/globals.h Tue Jan 6 16:13:42 2009
+--- src/globals.h Mon Mar 2 02:40:16 2009
+***************
+*** 482,489 ****
+ /*
+ * While executing external commands or in Ex mode, should not insert GUI
+ * events in the input buffer: Set hold_gui_events to non-zero.
+ */
+! EXTERN int hold_gui_events INIT(= 0);
+
+ /*
+ * When resizing the shell is postponed, remember the new size, and call
+--- 482,491 ----
+ /*
+ * While executing external commands or in Ex mode, should not insert GUI
+ * events in the input buffer: Set hold_gui_events to non-zero.
++ *
++ * volatile because it is used in signal handler sig_sysmouse().
+ */
+! EXTERN volatile int hold_gui_events INIT(= 0);
+
+ /*
+ * When resizing the shell is postponed, remember the new size, and call
+***************
+*** 597,603 ****
+ EXTERN int really_exiting INIT(= FALSE);
+ /* TRUE when we are sure to exit, e.g., after
+ * a deadly signal */
+! EXTERN int full_screen INIT(= FALSE);
+ /* TRUE when doing full-screen output
+ * otherwise only writing some messages */
+
+--- 599,606 ----
+ EXTERN int really_exiting INIT(= FALSE);
+ /* TRUE when we are sure to exit, e.g., after
+ * a deadly signal */
+! /* volatile because it is used in signal handler deathtrap(). */
+! EXTERN volatile int full_screen INIT(= FALSE);
+ /* TRUE when doing full-screen output
+ * otherwise only writing some messages */
+
+***************
+*** 739,748 ****
+ */
+ EXTERN JMP_BUF lc_jump_env; /* argument to SETJMP() */
+ # ifdef SIGHASARG
+! EXTERN int lc_signal; /* catched signal number, 0 when no was signal
+! catched; used for mch_libcall() */
+ # endif
+! EXTERN int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
+ #endif
+
+ #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
+--- 747,758 ----
+ */
+ EXTERN JMP_BUF lc_jump_env; /* argument to SETJMP() */
+ # ifdef SIGHASARG
+! /* volatile because it is used in signal handlers. */
+! EXTERN volatile int lc_signal; /* caught signal number, 0 when no was signal
+! caught; used for mch_libcall() */
+ # endif
+! /* volatile because it is used in signal handler deathtrap(). */
+! EXTERN volatile int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
+ #endif
+
+ #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
+***************
+*** 986,992 ****
+ EXTERN FILE *scriptout INIT(= NULL); /* stream to write script to */
+ EXTERN int read_cmd_fd INIT(= 0); /* fd to read commands from */
+
+! EXTERN int got_int INIT(= FALSE); /* set to TRUE when interrupt
+ signal occurred */
+ #ifdef USE_TERM_CONSOLE
+ EXTERN int term_console INIT(= FALSE); /* set to TRUE when console used */
+--- 996,1003 ----
+ EXTERN FILE *scriptout INIT(= NULL); /* stream to write script to */
+ EXTERN int read_cmd_fd INIT(= 0); /* fd to read commands from */
+
+! /* volatile because it is used in signal handler catch_sigint(). */
+! EXTERN volatile int got_int INIT(= FALSE); /* set to TRUE when interrupt
+ signal occurred */
+ #ifdef USE_TERM_CONSOLE
+ EXTERN int term_console INIT(= FALSE); /* set to TRUE when console used */
+*** ../vim-7.2.129/src/os_unix.c Sun Feb 22 02:51:37 2009
+--- src/os_unix.c Mon Mar 2 01:05:50 2009
+***************
+*** 181,187 ****
+ && defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
+ # define SET_SIG_ALARM
+ static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
+! static int sig_alarm_called;
+ #endif
+ static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
+
+--- 181,188 ----
+ && defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
+ # define SET_SIG_ALARM
+ static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
+! /* volatile because it is used in signal handler sig_alarm(). */
+! static volatile int sig_alarm_called;
+ #endif
+ static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
+
+***************
+*** 201,213 ****
+ # define SIG_ERR ((RETSIGTYPE (*)())-1)
+ #endif
+
+! static int do_resize = FALSE;
+ #ifndef __EMX__
+ static char_u *extra_shell_arg = NULL;
+ static int show_shell_mess = TRUE;
+ #endif
+! static int deadly_signal = 0; /* The signal we caught */
+! static int in_mch_delay = FALSE; /* sleeping in mch_delay() */
+
+ static int curr_tmode = TMODE_COOK; /* contains current terminal mode */
+
+--- 202,217 ----
+ # define SIG_ERR ((RETSIGTYPE (*)())-1)
+ #endif
+
+! /* volatile because it is used in signal handler sig_winch(). */
+! static volatile int do_resize = FALSE;
+ #ifndef __EMX__
+ static char_u *extra_shell_arg = NULL;
+ static int show_shell_mess = TRUE;
+ #endif
+! /* volatile because it is used in signal handler deathtrap(). */
+! static volatile int deadly_signal = 0; /* The signal we caught */
+! /* volatile because it is used in signal handler deathtrap(). */
+! static volatile int in_mch_delay = FALSE; /* sleeping in mch_delay() */
+
+ static int curr_tmode = TMODE_COOK; /* contains current terminal mode */
+
+***************
+*** 802,808 ****
+ #endif
+
+ /*
+! * We need correct potatotypes for a signal function, otherwise mean compilers
+ * will barf when the second argument to signal() is ``wrong''.
+ * Let me try it with a few tricky defines from my own osdef.h (jw).
+ */
+--- 806,812 ----
+ #endif
+
+ /*
+! * We need correct prototypes for a signal function, otherwise mean compilers
+ * will barf when the second argument to signal() is ``wrong''.
+ * Let me try it with a few tricky defines from my own osdef.h (jw).
+ */
+***************
+*** 1068,1080 ****
+ SIGRETURN;
+ }
+
+! #ifdef _REENTRANT
+ /*
+ * On Solaris with multi-threading, suspending might not work immediately.
+ * Catch the SIGCONT signal, which will be used as an indication whether the
+ * suspending has been done or not.
+ */
+! static int sigcont_received;
+ static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+
+ /*
+--- 1072,1089 ----
+ SIGRETURN;
+ }
+
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ /*
+ * On Solaris with multi-threading, suspending might not work immediately.
+ * Catch the SIGCONT signal, which will be used as an indication whether the
+ * suspending has been done or not.
++ *
++ * On Linux, signal is not always handled immediately either.
++ * See https://bugs.launchpad.net/bugs/291373
++ *
++ * volatile because it is used in in signal handler sigcont_handler().
+ */
+! static volatile int sigcont_received;
+ static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
+
+ /*
+***************
+*** 1118,1132 ****
+ }
+ # endif
+
+! # ifdef _REENTRANT
+ sigcont_received = FALSE;
+ # endif
+ kill(0, SIGTSTP); /* send ourselves a STOP signal */
+! # ifdef _REENTRANT
+! /* When we didn't suspend immediately in the kill(), do it now. Happens
+! * on multi-threaded Solaris. */
+! if (!sigcont_received)
+! pause();
+ # endif
+
+ # ifdef FEAT_TITLE
+--- 1127,1154 ----
+ }
+ # endif
+
+! # if defined(_REENTRANT) && defined(SIGCONT)
+ sigcont_received = FALSE;
+ # endif
+ kill(0, SIGTSTP); /* send ourselves a STOP signal */
+! # if defined(_REENTRANT) && defined(SIGCONT)
+! /*
+! * Wait for the SIGCONT signal to be handled. It generally happens
+! * immediately, but somehow not all the time. Do not call pause()
+! * because there would be race condition which would hang Vim if
+! * signal happened in between the test of sigcont_received and the
+! * call to pause(). If signal is not yet received, call sleep(0)
+! * to just yield CPU. Signal should then be received. If somehow
+! * it's still not received, sleep 1, 2, 3 ms. Don't bother waiting
+! * further if signal is not received after 1+2+3+4 ms (not expected
+! * to happen).
+! */
+! {
+! long wait;
+! for (wait = 0; !sigcont_received && wait <= 3L; wait++)
+! /* Loop is not entered most of the time */
+! mch_delay(wait, FALSE);
+! }
+ # endif
+
+ # ifdef FEAT_TITLE
+***************
+*** 1175,1181 ****
+ #ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ #endif
+! #ifdef _REENTRANT
+ signal(SIGCONT, sigcont_handler);
+ #endif
+
+--- 1197,1203 ----
+ #ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ #endif
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ signal(SIGCONT, sigcont_handler);
+ #endif
+
+***************
+*** 1234,1240 ****
+ reset_signals()
+ {
+ catch_signals(SIG_DFL, SIG_DFL);
+! #ifdef _REENTRANT
+ /* SIGCONT isn't in the list, because its default action is ignore */
+ signal(SIGCONT, SIG_DFL);
+ #endif
+--- 1256,1262 ----
+ reset_signals()
+ {
+ catch_signals(SIG_DFL, SIG_DFL);
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ /* SIGCONT isn't in the list, because its default action is ignore */
+ signal(SIGCONT, SIG_DFL);
+ #endif
+***************
+*** 5899,5905 ****
+--- 5921,5929 ----
+ * we are going to suspend or starting an external process
+ * so we shouldn't have problem with this
+ */
++ # ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
++ # endif
+ return 1; /* succeed */
+ }
+ if (gpm_fd == -2)
+*** ../vim-7.2.129/src/version.c Mon Mar 2 02:11:09 2009
+--- src/version.c Mon Mar 2 02:36:00 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 130,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+148. You find it easier to dial-up the National Weather Service
+ Weather/your_town/now.html than to simply look out the window.
+
+ /// 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.131 b/source/ap/vim/patches/7.2.131
new file mode 100644
index 000000000..fec2b5e15
--- /dev/null
+++ b/source/ap/vim/patches/7.2.131
@@ -0,0 +1,83 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.131
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.131
+Problem: When 'keymap' is cleared may still use the cursor highlighting for
+ when it's enabled.
+Solution: Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle)
+ Also avoid ":setlocal" for these options have a global effect.
+Files: src/option.c
+
+
+*** ../vim-7.2.130/src/option.c Sat Feb 21 20:27:00 2009
+--- src/option.c Wed Mar 4 04:09:51 2009
+***************
+*** 5797,5810 ****
+ /* load or unload key mapping tables */
+ errmsg = keymap_init();
+
+! /* When successfully installed a new keymap switch on using it. */
+! if (*curbuf->b_p_keymap != NUL && errmsg == NULL)
+ {
+! curbuf->b_p_iminsert = B_IMODE_LMAP;
+! if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
+! curbuf->b_p_imsearch = B_IMODE_LMAP;
+! set_iminsert_global();
+! set_imsearch_global();
+ # ifdef FEAT_WINDOWS
+ status_redraw_curbuf();
+ # endif
+--- 5797,5824 ----
+ /* load or unload key mapping tables */
+ errmsg = keymap_init();
+
+! if (errmsg == NULL)
+ {
+! if (*curbuf->b_p_keymap != NUL)
+! {
+! /* Installed a new keymap, switch on using it. */
+! curbuf->b_p_iminsert = B_IMODE_LMAP;
+! if (curbuf->b_p_imsearch != B_IMODE_USE_INSERT)
+! curbuf->b_p_imsearch = B_IMODE_LMAP;
+! }
+! else
+! {
+! /* Cleared the keymap, may reset 'iminsert' and 'imsearch'. */
+! if (curbuf->b_p_iminsert == B_IMODE_LMAP)
+! curbuf->b_p_iminsert = B_IMODE_NONE;
+! if (curbuf->b_p_imsearch == B_IMODE_LMAP)
+! curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
+! }
+! if ((opt_flags & OPT_LOCAL) == 0)
+! {
+! set_iminsert_global();
+! set_imsearch_global();
+! }
+ # ifdef FEAT_WINDOWS
+ status_redraw_curbuf();
+ # endif
+*** ../vim-7.2.130/src/version.c Mon Mar 2 02:44:54 2009
+--- src/version.c Wed Mar 4 04:10:32 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 131,
+ /**/
+
+--
+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.132 b/source/ap/vim/patches/7.2.132
new file mode 100644
index 000000000..69e19ee45
--- /dev/null
+++ b/source/ap/vim/patches/7.2.132
@@ -0,0 +1,268 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.132
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.132
+Problem: When changing directory during a SwapExists autocmd freed memory
+ may be accessed. (Dominique Pelle)
+Solution: Add the allbuf_lock flag.
+Files: src/ex_getln.c, src/globals.h, src/fileio.c,
+ src/proto/ex_getln.pro
+
+
+*** ../vim-7.2.131/src/ex_getln.c Mon Mar 2 02:11:09 2009
+--- src/ex_getln.c Mon Mar 2 00:53:39 2009
+***************
+*** 2000,2007 ****
+
+ #if defined(FEAT_AUTOCMD) || defined(PROTO)
+ /*
+! * Check if "curbuf_lock" is set and return TRUE when it is and give an error
+! * message.
+ */
+ int
+ curbuf_locked()
+--- 2000,2007 ----
+
+ #if defined(FEAT_AUTOCMD) || defined(PROTO)
+ /*
+! * Check if "curbuf_lock" or "allbuf_lock" is set and return TRUE when it is
+! * and give an error message.
+ */
+ int
+ curbuf_locked()
+***************
+*** 2011,2016 ****
+--- 2011,2031 ----
+ EMSG(_("E788: Not allowed to edit another buffer now"));
+ return TRUE;
+ }
++ return allbuf_locked();
++ }
++
++ /*
++ * Check if "allbuf_lock" is set and return TRUE when it is and give an error
++ * message.
++ */
++ int
++ allbuf_locked()
++ {
++ if (allbuf_lock > 0)
++ {
++ EMSG(_("E811: Not allowed to change buffer information now"));
++ return TRUE;
++ }
+ return FALSE;
+ }
+ #endif
+*** ../vim-7.2.131/src/globals.h Mon Mar 2 02:44:54 2009
+--- src/globals.h Mon Mar 2 02:40:16 2009
+***************
+*** 619,624 ****
+--- 619,629 ----
+ EXTERN int curbuf_lock INIT(= 0);
+ /* non-zero when the current buffer can't be
+ * changed. Used for FileChangedRO. */
++ EXTERN int allbuf_lock INIT(= 0);
++ /* non-zero when no buffer name can be
++ * changed, no buffer can be deleted and
++ * current directory can't be changed.
++ * Used for SwapExists et al. */
+ #endif
+ #ifdef FEAT_EVAL
+ # define HAVE_SANDBOX
+*** ../vim-7.2.131/src/fileio.c Wed Dec 31 16:20:54 2008
+--- src/fileio.c Sun Mar 1 23:37:10 2009
+***************
+*** 69,75 ****
+ static int au_find_group __ARGS((char_u *name));
+
+ # define AUGROUP_DEFAULT -1 /* default autocmd group */
+! # define AUGROUP_ERROR -2 /* errornouse autocmd group */
+ # define AUGROUP_ALL -3 /* all autocmd groups */
+ #endif
+
+--- 69,75 ----
+ static int au_find_group __ARGS((char_u *name));
+
+ # define AUGROUP_DEFAULT -1 /* default autocmd group */
+! # define AUGROUP_ERROR -2 /* erroneous autocmd group */
+ # define AUGROUP_ALL -3 /* all autocmd groups */
+ #endif
+
+***************
+*** 144,150 ****
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+!
+
+ void
+ filemess(buf, name, s, attr)
+--- 144,152 ----
+ # endif
+ #endif
+ static int move_lines __ARGS((buf_T *frombuf, buf_T *tobuf));
+! #ifdef FEAT_AUTOCMD
+! static char *e_auchangedbuf = N_("E812: Autocommands changed buffer or buffer name");
+! #endif
+
+ void
+ filemess(buf, name, s, attr)
+***************
+*** 295,300 ****
+--- 297,315 ----
+ int conv_restlen = 0; /* nr of bytes in conv_rest[] */
+ #endif
+
++ #ifdef FEAT_AUTOCMD
++ /* Remember the initial values of curbuf, curbuf->b_ffname and
++ * curbuf->b_fname to detect whether they are altered as a result of
++ * executing nasty autocommands. Also check if "fname" and "sfname"
++ * point to one of these values. */
++ buf_T *old_curbuf = curbuf;
++ char_u *old_b_ffname = curbuf->b_ffname;
++ char_u *old_b_fname = curbuf->b_fname;
++ int using_b_ffname = (fname == curbuf->b_ffname)
++ || (sfname == curbuf->b_ffname);
++ int using_b_fname = (fname == curbuf->b_fname)
++ || (sfname == curbuf->b_fname);
++ #endif
+ write_no_eol_lnum = 0; /* in case it was set by the previous read */
+
+ /*
+***************
+*** 589,595 ****
+--- 604,624 ----
+ #ifdef FEAT_QUICKFIX
+ if (!bt_dontwrite(curbuf))
+ #endif
++ {
+ check_need_swap(newfile);
++ #ifdef FEAT_AUTOCMD
++ /* SwapExists autocommand may mess things up */
++ if (curbuf != old_curbuf
++ || (using_b_ffname
++ && (old_b_ffname != curbuf->b_ffname))
++ || (using_b_fname
++ && (old_b_fname != curbuf->b_fname)))
++ {
++ EMSG(_(e_auchangedbuf));
++ return FAIL;
++ }
++ #endif
++ }
+ if (dir_of_file_exists(fname))
+ filemess(curbuf, sfname, (char_u *)_("[New File]"), 0);
+ else
+***************
+*** 668,673 ****
+--- 697,713 ----
+ #endif
+ {
+ check_need_swap(newfile);
++ #ifdef FEAT_AUTOCMD
++ if (!read_stdin && (curbuf != old_curbuf
++ || (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
++ || (using_b_fname && (old_b_fname != curbuf->b_fname))))
++ {
++ EMSG(_(e_auchangedbuf));
++ if (!read_buffer)
++ close(fd);
++ return FAIL;
++ }
++ #endif
+ #ifdef UNIX
+ /* Set swap file protection bits after creating it. */
+ if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
+***************
+*** 698,704 ****
+ {
+ int m = msg_scroll;
+ int n = msg_scrolled;
+- buf_T *old_curbuf = curbuf;
+
+ /*
+ * The file must be closed again, the autocommands may want to change
+--- 738,743 ----
+***************
+*** 740,747 ****
+--- 779,791 ----
+ /*
+ * Don't allow the autocommands to change the current buffer.
+ * Try to re-open the file.
++ *
++ * Don't allow the autocommands to change the buffer name either
++ * (cd for example) if it invalidates fname or sfname.
+ */
+ if (!read_stdin && (curbuf != old_curbuf
++ || (using_b_ffname && (old_b_ffname != curbuf->b_ffname))
++ || (using_b_fname && (old_b_fname != curbuf->b_fname))
+ || (fd = mch_open((char *)fname, O_RDONLY | O_EXTRA, 0)) < 0))
+ {
+ --no_wait_return;
+***************
+*** 6320,6326 ****
+
+ if (!stuff_empty() || global_busy || !typebuf_typed()
+ #ifdef FEAT_AUTOCMD
+! || autocmd_busy || curbuf_lock > 0
+ #endif
+ )
+ need_check_timestamps = TRUE; /* check later */
+--- 6364,6370 ----
+
+ if (!stuff_empty() || global_busy || !typebuf_typed()
+ #ifdef FEAT_AUTOCMD
+! || autocmd_busy || curbuf_lock > 0 || allbuf_lock > 0
+ #endif
+ )
+ need_check_timestamps = TRUE; /* check later */
+***************
+*** 6522,6529 ****
+--- 6566,6575 ----
+ set_vim_var_string(VV_FCS_REASON, (char_u *)reason, -1);
+ set_vim_var_string(VV_FCS_CHOICE, (char_u *)"", -1);
+ # endif
++ ++allbuf_lock;
+ n = apply_autocmds(EVENT_FILECHANGEDSHELL,
+ buf->b_fname, buf->b_fname, FALSE, buf);
++ --allbuf_lock;
+ busy = FALSE;
+ if (n)
+ {
+*** ../vim-7.2.131/src/proto/ex_getln.pro Fri Nov 28 10:59:57 2008
+--- src/proto/ex_getln.pro Sun Mar 1 00:27:12 2009
+***************
+*** 4,9 ****
+--- 4,10 ----
+ int text_locked __ARGS((void));
+ void text_locked_msg __ARGS((void));
+ int curbuf_locked __ARGS((void));
++ int allbuf_locked __ARGS((void));
+ char_u *getexline __ARGS((int c, void *dummy, int indent));
+ char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
+ int cmdline_overstrike __ARGS((void));
+*** ../vim-7.2.131/src/version.c Wed Mar 4 04:11:56 2009
+--- src/version.c Thu Mar 5 03:08:54 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 132,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+168. You have your own domain 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.133 b/source/ap/vim/patches/7.2.133
new file mode 100644
index 000000000..ffb19d71b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.133
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.133
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.133
+Problem: ":diffoff!" changes settings in windows not in diff mode.
+Solution: Only change settings in other windows when 'diff' is set, always
+ do it for the current window. (Lech Lorens)
+Files: src/diff.c
+
+
+*** ../vim-7.2.132/src/diff.c Thu Jan 22 20:48:07 2009
+--- src/diff.c Fri Mar 6 04:17:41 2009
+***************
+*** 1153,1159 ****
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ {
+! if (wp == curwin || eap->forceit)
+ {
+ /* Set 'diff', 'scrollbind' off and 'wrap' on. */
+ wp->w_p_diff = FALSE;
+--- 1153,1159 ----
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+ {
+! if (wp == curwin || (eap->forceit && wp->w_p_diff))
+ {
+ /* Set 'diff', 'scrollbind' off and 'wrap' on. */
+ wp->w_p_diff = FALSE;
+*** ../vim-7.2.132/src/version.c Thu Mar 5 03:13:51 2009
+--- src/version.c Wed Mar 11 12:45:10 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 133,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+192. Your boss asks you to "go fer" coffee and you come up with 235 FTP sites.
+
+ /// 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.134 b/source/ap/vim/patches/7.2.134
new file mode 100644
index 000000000..fee2789a5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.134
@@ -0,0 +1,68 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.134
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.134
+Problem: Warning for discarding "const" from pointer.
+Solution: Don't pass const pointer to mch_memmove().
+Files: src/fileio.c
+
+
+*** ../vim-7.2.133/src/fileio.c Thu Mar 5 03:13:51 2009
+--- src/fileio.c Wed Mar 11 12:59:35 2009
+***************
+*** 5288,5300 ****
+ /* Convert with iconv(). */
+ if (ip->bw_restlen > 0)
+ {
+ /* Need to concatenate the remainder of the previous call and
+ * the bytes of the current call. Use the end of the
+ * conversion buffer for this. */
+ fromlen = len + ip->bw_restlen;
+! from = (char *)ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
+! mch_memmove((void *)from, ip->bw_rest, (size_t)ip->bw_restlen);
+! mch_memmove((void *)(from + ip->bw_restlen), buf, (size_t)len);
+ tolen = ip->bw_conv_buflen - fromlen;
+ }
+ else
+--- 5288,5303 ----
+ /* Convert with iconv(). */
+ if (ip->bw_restlen > 0)
+ {
++ char *fp;
++
+ /* Need to concatenate the remainder of the previous call and
+ * the bytes of the current call. Use the end of the
+ * conversion buffer for this. */
+ fromlen = len + ip->bw_restlen;
+! fp = (char *)ip->bw_conv_buf + ip->bw_conv_buflen - fromlen;
+! mch_memmove(fp, ip->bw_rest, (size_t)ip->bw_restlen);
+! mch_memmove(fp + ip->bw_restlen, buf, (size_t)len);
+! from = fp;
+ tolen = ip->bw_conv_buflen - fromlen;
+ }
+ else
+*** ../vim-7.2.133/src/version.c Wed Mar 11 12:45:44 2009
+--- src/version.c Wed Mar 11 13:08:25 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 134,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+193. You ask your girlfriend to drive home so you can sit back with
+ your PDA and download the information to 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.135 b/source/ap/vim/patches/7.2.135
new file mode 100644
index 000000000..a58e6bb21
--- /dev/null
+++ b/source/ap/vim/patches/7.2.135
@@ -0,0 +1,85 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.135
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.135
+Problem: Memory leak when redefining user command with complete argument.
+Solution: Free the old complete argument. (Dominique Pelle)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.134/src/ex_docmd.c Sun Mar 1 02:43:50 2009
+--- src/ex_docmd.c Wed Mar 11 11:13:31 2009
+***************
+*** 5124,5130 ****
+ }
+
+ vim_free(cmd->uc_rep);
+! cmd->uc_rep = 0;
+ break;
+ }
+
+--- 5124,5134 ----
+ }
+
+ vim_free(cmd->uc_rep);
+! cmd->uc_rep = NULL;
+! #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
+! vim_free(cmd->uc_compl_arg);
+! cmd->uc_compl_arg = NULL;
+! #endif
+ break;
+ }
+
+***************
+*** 5941,5947 ****
+ for (;;)
+ {
+ p = cmd->uc_rep; /* source */
+! q = buf; /* destinateion */
+ totlen = 0;
+
+ for (;;)
+--- 5945,5951 ----
+ for (;;)
+ {
+ p = cmd->uc_rep; /* source */
+! q = buf; /* destination */
+ totlen = 0;
+
+ for (;;)
+***************
+*** 7846,7851 ****
+--- 7850,7858 ----
+ {
+ vim_free(prev_dir);
+ prev_dir = NULL;
++
++ vim_free(globaldir);
++ globaldir = NULL;
+ }
+ #endif
+
+*** ../vim-7.2.134/src/version.c Wed Mar 11 13:09:30 2009
+--- src/version.c Wed Mar 11 15:06:23 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 135,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+194. Your business cards contain your e-mail and home page 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.136 b/source/ap/vim/patches/7.2.136
new file mode 100644
index 000000000..b0045eb9a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.136
@@ -0,0 +1,47 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.136
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.136 (after 7.2.132)
+Problem: ":cd" is still possible in a SwapExists autocmd.
+Solution: Check the allbuf_lock flag in ex_cd().
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.135/src/ex_docmd.c Wed Mar 11 15:09:07 2009
+--- src/ex_docmd.c Wed Mar 11 11:13:31 2009
+***************
+*** 7875,7880 ****
+--- 7875,7884 ----
+ else
+ #endif
+ {
++ #ifdef FEAT_AUTOCMD
++ if (allbuf_locked())
++ return;
++ #endif
+ if (vim_strchr(p_cpo, CPO_CHDIR) != NULL && curbufIsChanged()
+ && !eap->forceit)
+ {
+*** ../vim-7.2.135/src/version.c Wed Mar 11 15:09:07 2009
+--- src/version.c Wed Mar 11 15:35:36 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 136,
+ /**/
+
+--
+Press any key to continue, press any other key to quit.
+
+ /// 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.137 b/source/ap/vim/patches/7.2.137
new file mode 100644
index 000000000..706b046bb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.137
@@ -0,0 +1,343 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.137
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Note: The special characters in the patch may cause problems.
+
+Patch 7.2.137
+Problem: When 'virtualedit' is set, a left shift of a blockwise selection
+ that starts and ends inside a tab shifts too much. (Helmut
+ Stiegler)
+Solution: Redo the block left shift code. (Lech Lorens)
+Files: src/ops.c, src/testdir/Makefile, src/testdir/test66.in,
+ src/testdir/test66.ok
+
+
+*** ../vim-7.2.136/src/ops.c Wed Dec 3 13:38:00 2008
+--- src/ops.c Thu Mar 5 04:47:09 2009
+***************
+*** 72,82 ****
+ */
+ struct block_def
+ {
+! int startspaces; /* 'extra' cols of first char */
+! int endspaces; /* 'extra' cols of first char */
+ int textlen; /* chars in block */
+! char_u *textstart; /* pointer to 1st char in block */
+! colnr_T textcol; /* cols of chars (at least part.) in block */
+ colnr_T start_vcol; /* start col of 1st char wholly inside block */
+ colnr_T end_vcol; /* start col of 1st char wholly after block */
+ #ifdef FEAT_VISUALEXTRA
+--- 72,82 ----
+ */
+ struct block_def
+ {
+! int startspaces; /* 'extra' cols before first char */
+! int endspaces; /* 'extra' cols after last char */
+ int textlen; /* chars in block */
+! char_u *textstart; /* pointer to 1st char (partially) in block */
+! colnr_T textcol; /* index of chars (partially) in block */
+ colnr_T start_vcol; /* start col of 1st char wholly inside block */
+ colnr_T end_vcol; /* start col of 1st char wholly after block */
+ #ifdef FEAT_VISUALEXTRA
+***************
+*** 382,396 ****
+ {
+ int left = (oap->op_type == OP_LSHIFT);
+ int oldstate = State;
+! int total, split;
+! char_u *newp, *oldp, *midp, *ptr;
+ int oldcol = curwin->w_cursor.col;
+ int p_sw = (int)curbuf->b_p_sw;
+ int p_ts = (int)curbuf->b_p_ts;
+ struct block_def bd;
+- int internal = 0;
+ int incr;
+! colnr_T vcol, col = 0, ws_vcol;
+ int i = 0, j = 0;
+ int len;
+
+--- 382,395 ----
+ {
+ int left = (oap->op_type == OP_LSHIFT);
+ int oldstate = State;
+! int total;
+! char_u *newp, *oldp;
+ int oldcol = curwin->w_cursor.col;
+ int p_sw = (int)curbuf->b_p_sw;
+ int p_ts = (int)curbuf->b_p_ts;
+ struct block_def bd;
+ int incr;
+! colnr_T ws_vcol;
+ int i = 0, j = 0;
+ int len;
+
+***************
+*** 456,522 ****
+ }
+ else /* left */
+ {
+! vcol = oap->start_vcol;
+! /* walk vcol past ws to be removed */
+! for (midp = oldp + bd.textcol;
+! vcol < (oap->start_vcol + total) && vim_iswhite(*midp); )
+! {
+! incr = lbr_chartabsize_adv(&midp, (colnr_T)vcol);
+! vcol += incr;
+! }
+! /* internal is the block-internal ws replacing a split TAB */
+! if (vcol > (oap->start_vcol + total))
+! {
+! /* we have to split the TAB *(midp-1) */
+! internal = vcol - (oap->start_vcol + total);
+! }
+! /* if 'expandtab' is not set, use TABs */
+
+! split = bd.startspaces + internal;
+! if (split > 0)
+! {
+! if (!curbuf->b_p_et)
+! {
+! for (ptr = oldp, col = 0; ptr < oldp+bd.textcol; )
+! col += lbr_chartabsize_adv(&ptr, (colnr_T)col);
+
+! /* col+1 now equals the start col of the first char of the
+! * block (may be < oap.start_vcol if we're splitting a TAB) */
+! i = ((col % p_ts) + split) / p_ts; /* number of tabs */
+! }
+! if (i)
+! j = ((col % p_ts) + split) % p_ts; /* number of spp */
+! else
+! j = split;
+! }
+
+! newp = alloc_check(bd.textcol + i + j + (unsigned)STRLEN(midp) + 1);
+! if (newp == NULL)
+! return;
+! vim_memset(newp, NUL, (size_t)(bd.textcol + i + j + STRLEN(midp) + 1));
+
+! /* copy first part we want to keep */
+! mch_memmove(newp, oldp, (size_t)bd.textcol);
+! /* Now copy any TABS and spp to ensure correct alignment! */
+! while (vim_iswhite(*midp))
+ {
+! if (*midp == TAB)
+! i++;
+! else /*space */
+! j++;
+! midp++;
+ }
+! /* We might have an extra TAB worth of spp now! */
+! if (j / p_ts && !curbuf->b_p_et)
+ {
+! i++;
+! j -= p_ts;
+ }
+- copy_chars(newp + bd.textcol, (size_t)i, TAB);
+- copy_spaces(newp + bd.textcol + i, (size_t)j);
+
+! /* the end */
+! STRMOVE(newp + STRLEN(newp), midp);
+ }
+ /* replace the line */
+ ml_replace(curwin->w_cursor.lnum, newp, FALSE);
+--- 455,543 ----
+ }
+ else /* left */
+ {
+! colnr_T destination_col; /* column to which text in block will
+! be shifted */
+! char_u *verbatim_copy_end; /* end of the part of the line which is
+! copied verbatim */
+! colnr_T verbatim_copy_width;/* the (displayed) width of this part
+! of line */
+! unsigned fill; /* nr of spaces that replace a TAB */
+! unsigned new_line_len; /* the length of the line after the
+! block shift */
+! size_t block_space_width;
+! size_t shift_amount;
+! char_u *non_white = bd.textstart;
+! colnr_T non_white_col;
+
+! /*
+! * Firstly, let's find the first non-whitespace character that is
+! * displayed after the block's start column and the character's column
+! * number. Also, let's calculate the width of all the whitespace
+! * characters that are displayed in the block and precede the searched
+! * non-whitespace character.
+! */
+
+! /* If "bd.startspaces" is set, "bd.textstart" points to the character,
+! * the part of which is displayed at the block's beginning. Let's start
+! * searching from the next character. */
+! if (bd.startspaces)
+! mb_ptr_adv(non_white);
+
+! /* The character's column is in "bd.start_vcol". */
+! non_white_col = bd.start_vcol;
+
+! while (vim_iswhite(*non_white))
+ {
+! incr = lbr_chartabsize_adv(&non_white, non_white_col);
+! non_white_col += incr;
+ }
+!
+! block_space_width = non_white_col - oap->start_vcol;
+! /* We will shift by "total" or "block_space_width", whichever is less.
+! */
+! shift_amount = (block_space_width < total? block_space_width: total);
+!
+! /* The column to which we will shift the text. */
+! destination_col = non_white_col - shift_amount;
+!
+! /* Now let's find out how much of the beginning of the line we can
+! * reuse without modification. */
+! verbatim_copy_end = bd.textstart;
+! verbatim_copy_width = bd.start_vcol;
+!
+! /* If "bd.startspaces" is set, "bd.textstart" points to the character
+! * preceding the block. We have to subtract its width to obtain its
+! * column number. */
+! if (bd.startspaces)
+! verbatim_copy_width -= bd.start_char_vcols;
+! while (verbatim_copy_width < destination_col)
+ {
+! incr = lbr_chartabsize(verbatim_copy_end, verbatim_copy_width);
+! if (verbatim_copy_width + incr > destination_col)
+! break;
+! verbatim_copy_width += incr;
+! mb_ptr_adv(verbatim_copy_end);
+ }
+
+! /* If "destination_col" is different from the width of the initial
+! * part of the line that will be copied, it means we encountered a tab
+! * character, which we will have to partly replace with spaces. */
+! fill = destination_col - verbatim_copy_width;
+!
+! /* The replacement line will consist of:
+! * - the beginning of the original line up to "verbatim_copy_end",
+! * - "fill" number of spaces,
+! * - the rest of the line, pointed to by non_white. */
+! new_line_len = (unsigned)(verbatim_copy_end - oldp)
+! + fill
+! + (unsigned)STRLEN(non_white) + 1;
+!
+! newp = alloc_check(new_line_len);
+! if (newp == NULL)
+! return;
+! mch_memmove(newp, oldp, (size_t)(verbatim_copy_end - oldp));
+! copy_spaces(newp + (verbatim_copy_end - oldp), (size_t)fill);
+! STRMOVE(newp + (verbatim_copy_end - oldp) + fill, non_white);
+ }
+ /* replace the line */
+ ml_replace(curwin->w_cursor.lnum, newp, FALSE);
+***************
+*** 4851,4857 ****
+ * - textlen includes the first/last char to be (partly) deleted
+ * - start/endspaces is the number of columns that are taken by the
+ * first/last deleted char minus the number of columns that have to be
+! * deleted. for yank and tilde:
+ * - textlen includes the first/last char to be wholly yanked
+ * - start/endspaces is the number of columns of the first/last yanked char
+ * that are to be yanked.
+--- 4872,4879 ----
+ * - textlen includes the first/last char to be (partly) deleted
+ * - start/endspaces is the number of columns that are taken by the
+ * first/last deleted char minus the number of columns that have to be
+! * deleted.
+! * for yank and tilde:
+ * - textlen includes the first/last char to be wholly yanked
+ * - start/endspaces is the number of columns of the first/last yanked char
+ * that are to be yanked.
+*** ../vim-7.2.136/src/testdir/Makefile Wed Sep 10 18:25:18 2008
+--- src/testdir/Makefile Thu Mar 5 04:53:58 2009
+***************
+*** 20,26 ****
+ 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
+
+ SCRIPTS_GUI = test16.out
+
+--- 20,26 ----
+ 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
+
+*** ../vim-7.2.136/src/testdir/test66.in Wed Mar 11 16:24:44 2009
+--- src/testdir/test66.in Wed Mar 11 11:52:57 2009
+***************
+*** 0 ****
+--- 1,25 ----
++
++ Test for visual block shift and tab characters.
++
++ STARTTEST
++ :so small.vim
++ /^abcdefgh
++ 4jI j<<11|D
++ 7|a 
++ 7|a 
++ 7|a 4k13|4j<
++ :$-4,$w! test.out
++ :$-4,$s/\s\+//g
++ 4kI j<<
++ 7|a 
++ 7|a 
++ 7|a 4k13|4j3<
++ :$-4,$w >> test.out
++ :qa!
++ ENDTEST
++
++ abcdefghijklmnopqrstuvwxyz
++ abcdefghijklmnopqrstuvwxyz
++ abcdefghijklmnopqrstuvwxyz
++ abcdefghijklmnopqrstuvwxyz
++ abcdefghijklmnopqrstuvwxyz
+*** ../vim-7.2.136/src/testdir/test66.ok Wed Mar 11 16:24:44 2009
+--- src/testdir/test66.ok Thu Mar 5 04:39:36 2009
+***************
+*** 0 ****
+--- 1,10 ----
++ abcdefghijklmnopqrstuvwxyz
++ abcdefghij
++ abc defghijklmnopqrstuvwxyz
++ abc defghijklmnopqrstuvwxyz
++ abc defghijklmnopqrstuvwxyz
++ abcdefghijklmnopqrstuvwxyz
++ abcdefghij
++ abc defghijklmnopqrstuvwxyz
++ abc defghijklmnopqrstuvwxyz
++ abc defghijklmnopqrstuvwxyz
+*** ../vim-7.2.136/src/version.c Wed Mar 11 15:36:01 2009
+--- src/version.c Wed Mar 11 16:23:07 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 137,
+ /**/
+
+--
+% cat /usr/include/sys/errno.h
+#define EPERM 1 /* Operation not permitted */
+#define ENOENT 2 /* No such file or directory */
+#define ESRCH 3 /* No such process */
+[...]
+#define EMACS 666 /* Too many macros */
+%
+
+ /// 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.138 b/source/ap/vim/patches/7.2.138
new file mode 100644
index 000000000..faa7e7a63
--- /dev/null
+++ b/source/ap/vim/patches/7.2.138
@@ -0,0 +1,160 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.138 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.138 (extra part of 7.2.137)
+Problem: See 7.2.137.
+Solution: See 7.2.137.
+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.137/src/testdir/Make_amiga.mak Tue Jun 24 23:46:42 2008
+--- src/testdir/Make_amiga.mak Thu Mar 5 04:49:38 2009
+***************
+*** 25,31 ****
+ test43.out test44.out test45.out test46.out test47.out \
+ 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
+
+ .SUFFIXES: .in .out
+
+--- 25,32 ----
+ test43.out test44.out test45.out test46.out test47.out \
+ 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
+
+***************
+*** 110,112 ****
+--- 111,114 ----
+ test63.out: test63.in
+ test64.out: test64.in
+ test65.out: test65.in
++ test66.out: test66.in
+*** ../vim-7.2.137/src/testdir/Make_dos.mak Tue Jun 24 23:39:51 2008
+--- src/testdir/Make_dos.mak Thu Mar 5 04:52:47 2009
+***************
+*** 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
+
+ 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
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.137/src/testdir/Make_ming.mak Sat Sep 20 16:26:10 2008
+--- src/testdir/Make_ming.mak Thu Mar 5 04:53:16 2009
+***************
+*** 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
+
+ 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
+
+ SCRIPTS32 = test50.out
+
+*** ../vim-7.2.137/src/testdir/Make_os2.mak Tue Jun 24 22:37:41 2008
+--- src/testdir/Make_os2.mak Thu Mar 5 04:53:31 2009
+***************
+*** 25,31 ****
+ test43.out test44.out test45.out test46.out test47.out \
+ 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
+
+ .SUFFIXES: .in .out
+
+--- 25,32 ----
+ test43.out test44.out test45.out test46.out test47.out \
+ 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
+
+*** ../vim-7.2.137/src/testdir/Make_vms.mms Mon Sep 1 16:50:09 2008
+--- src/testdir/Make_vms.mms Thu Mar 5 04:53:42 2009
+***************
+*** 4,10 ****
+ # Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
+ # Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
+ #
+! # Last change: 2008 Aug 19
+ #
+ # 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 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.
+***************
+*** 68,74 ****
+ test43.out test44.out test45.out test46.out \
+ 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
+
+ .IFDEF WANT_GUI
+ SCRIPT_GUI = test16.out
+--- 68,75 ----
+ test43.out test44.out test45.out test46.out \
+ 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
+*** ../vim-7.2.137/src/version.c Wed Mar 11 16:26:01 2009
+--- src/version.c Wed Mar 11 16:35:06 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 138,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ ESLEEP Operator fell asleep
+ ENOERR No error yet
+ EDOLLAR OS too expensive
+ EWINDOWS MS-Windows loaded, system in danger
+
+ /// 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.139 b/source/ap/vim/patches/7.2.139
new file mode 100644
index 000000000..3366acb72
--- /dev/null
+++ b/source/ap/vim/patches/7.2.139
@@ -0,0 +1,79 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.139
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.139
+Problem: Crash when 'virtualedit' is "all". (James Vega)
+Solution: Avoid overflow when column is MAXCOL. (Dominique Pelle)
+Files: src/misc2.c
+
+
+*** ../vim-7.2.138/src/misc2.c Tue Feb 24 04:28:40 2009
+--- src/misc2.c Wed Mar 11 16:45:05 2009
+***************
+*** 496,502 ****
+ {
+ colnr_T len;
+ #ifdef FEAT_VIRTUALEDIT
+! colnr_T oldcol = curwin->w_cursor.col + curwin->w_cursor.coladd;
+ #endif
+
+ len = (colnr_T)STRLEN(ml_get_curline());
+--- 496,503 ----
+ {
+ colnr_T len;
+ #ifdef FEAT_VIRTUALEDIT
+! colnr_T oldcol = curwin->w_cursor.col;
+! colnr_T oldcoladd = curwin->w_cursor.col + curwin->w_cursor.coladd;
+ #endif
+
+ len = (colnr_T)STRLEN(ml_get_curline());
+***************
+*** 535,541 ****
+ if (oldcol == MAXCOL)
+ curwin->w_cursor.coladd = 0;
+ else if (ve_flags == VE_ALL)
+! curwin->w_cursor.coladd = oldcol - curwin->w_cursor.col;
+ #endif
+ }
+
+--- 536,548 ----
+ if (oldcol == MAXCOL)
+ curwin->w_cursor.coladd = 0;
+ else if (ve_flags == VE_ALL)
+! {
+! if (oldcoladd > curwin->w_cursor.col)
+! curwin->w_cursor.coladd = oldcoladd - curwin->w_cursor.col;
+! else
+! /* avoid weird number when there is a miscalculation or overflow */
+! curwin->w_cursor.coladd = 0;
+! }
+ #endif
+ }
+
+*** ../vim-7.2.138/src/version.c Wed Mar 11 16:36:04 2009
+--- src/version.c Wed Mar 11 17:26:50 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 139,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ EHUH Unexpected error
+ EUSER User error, not our fault!
+ EGOD Horrible problem, god knows what has happened
+ EERR Errornous error: nothing wrong
+
+ /// 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.140 b/source/ap/vim/patches/7.2.140
new file mode 100644
index 000000000..98c127966
--- /dev/null
+++ b/source/ap/vim/patches/7.2.140
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.140
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.140
+Problem: Diff highlighting isn't displayed before the Visual area if it
+ starts at the cursor position. (Markus Heidelberg)
+Solution: Also check fromcol_prev.
+Files: src/screen.c
+
+
+*** ../vim-7.2.139/src/screen.c Sun Feb 22 21:12:22 2009
+--- src/screen.c Wed Mar 11 13:59:24 2009
+***************
+*** 3555,3561 ****
+ /* Use line_attr when not in the Visual or 'incsearch' area
+ * (area_attr may be 0 when "noinvcur" is set). */
+ else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL)
+! || (vcol < fromcol || vcol >= tocol)))
+ char_attr = line_attr;
+ #endif
+ else
+--- 3555,3562 ----
+ /* Use line_attr when not in the Visual or 'incsearch' area
+ * (area_attr may be 0 when "noinvcur" is set). */
+ else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL)
+! || vcol < fromcol || vcol_prev < fromcol_prev
+! || vcol >= tocol))
+ char_attr = line_attr;
+ #endif
+ else
+*** ../vim-7.2.139/src/version.c Wed Mar 11 17:27:46 2009
+--- src/version.c Wed Mar 11 17:42:19 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 140,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ EMEMORY Memory error caused by..., eh...
+ ELICENSE Your license has expired, give us more money!
+ EMOUSE Mouse moved, reinstall Windows
+ EILLEGAL Illegal error, you are not allowed to see this
+ EVIRUS Undetectable virus found
+
+ /// 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.141 b/source/ap/vim/patches/7.2.141
new file mode 100644
index 000000000..395d210de
--- /dev/null
+++ b/source/ap/vim/patches/7.2.141
@@ -0,0 +1,239 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.141
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.141
+Problem: When redrawing a character for bold spill this causes the next
+ character to be redrawn as well.
+Solution: Only redraw one extra character. (Yukihiro Nakadaira)
+Files: src/screen.c
+
+
+*** ../vim-7.2.140/src/screen.c Wed Mar 11 17:44:38 2009
+--- src/screen.c Wed Mar 11 13:59:24 2009
+***************
+*** 5132,5139 ****
+ #endif
+
+ #if defined(FEAT_GUI) || defined(UNIX)
+! /* The bold trick makes a single row of pixels appear in the next
+! * character. When a bold character is removed, the next
+ * character should be redrawn too. This happens for our own GUI
+ * and for some xterms. */
+ if (
+--- 5132,5139 ----
+ #endif
+
+ #if defined(FEAT_GUI) || defined(UNIX)
+! /* The bold trick makes a single column of pixels appear in the
+! * next character. When a bold character is removed, the next
+ * character should be redrawn too. This happens for our own GUI
+ * and for some xterms. */
+ if (
+***************
+*** 6276,6284 ****
+--- 6276,6290 ----
+ int pcc[MAX_MCO];
+ # endif
+ #endif
++ #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
++ int force_redraw_this;
++ int force_redraw_next = FALSE;
++ #endif
++ int need_redraw;
+
+ if (ScreenLines == NULL || row >= screen_Rows) /* safety check */
+ return;
++ off = LineOffset[row] + col;
+
+ #ifdef FEAT_MBYTE
+ /* When drawing over the right halve of a double-wide char clear out the
+***************
+*** 6288,6297 ****
+ && !gui.in_use
+ # endif
+ && mb_fix_col(col, row) != col)
+! screen_puts_len((char_u *)" ", 1, row, col - 1, 0);
+ #endif
+
+- off = LineOffset[row] + col;
+ #ifdef FEAT_MBYTE
+ max_off = LineOffset[row] + screen_Columns;
+ #endif
+--- 6294,6314 ----
+ && !gui.in_use
+ # endif
+ && mb_fix_col(col, row) != col)
+! {
+! ScreenLines[off - 1] = ' ';
+! ScreenAttrs[off - 1] = 0;
+! if (enc_utf8)
+! {
+! ScreenLinesUC[off - 1] = 0;
+! ScreenLinesC[0][off - 1] = 0;
+! }
+! /* redraw the previous cell, make it empty */
+! screen_char(off - 1, row, col - 1);
+! /* force the cell at "col" to be redrawn */
+! force_redraw_next = TRUE;
+! }
+ #endif
+
+ #ifdef FEAT_MBYTE
+ max_off = LineOffset[row] + screen_Columns;
+ #endif
+***************
+*** 6355,6361 ****
+ }
+ #endif
+
+! if (ScreenLines[off] != c
+ #ifdef FEAT_MBYTE
+ || (mbyte_cells == 2
+ && ScreenLines[off + 1] != (enc_dbcs ? ptr[1] : 0))
+--- 6372,6383 ----
+ }
+ #endif
+
+! #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
+! force_redraw_this = force_redraw_next;
+! force_redraw_next = FALSE;
+! #endif
+!
+! need_redraw = ScreenLines[off] != c
+ #ifdef FEAT_MBYTE
+ || (mbyte_cells == 2
+ && ScreenLines[off + 1] != (enc_dbcs ? ptr[1] : 0))
+***************
+*** 6367,6386 ****
+ || screen_comp_differs(off, u8cc)))
+ #endif
+ || ScreenAttrs[off] != attr
+! || exmode_active
+ )
+ {
+ #if defined(FEAT_GUI) || defined(UNIX)
+ /* The bold trick makes a single row of pixels appear in the next
+ * character. When a bold character is removed, the next
+ * character should be redrawn too. This happens for our own GUI
+! * and for some xterms.
+! * Force the redraw by setting the attribute to a different value
+! * than "attr", the contents of ScreenLines[] may be needed by
+! * mb_off2cells() further on.
+! * Don't do this for the last drawn character, because the next
+! * character may not be redrawn. */
+! if (
+ # ifdef FEAT_GUI
+ gui.in_use
+ # endif
+--- 6389,6408 ----
+ || screen_comp_differs(off, u8cc)))
+ #endif
+ || ScreenAttrs[off] != attr
+! || exmode_active;
+!
+! if (need_redraw
+! #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
+! || force_redraw_this
+! #endif
+ )
+ {
+ #if defined(FEAT_GUI) || defined(UNIX)
+ /* The bold trick makes a single row of pixels appear in the next
+ * character. When a bold character is removed, the next
+ * character should be redrawn too. This happens for our own GUI
+! * and for some xterms. */
+! if (need_redraw && ScreenLines[off] != ' ' && (
+ # ifdef FEAT_GUI
+ gui.in_use
+ # endif
+***************
+*** 6390,6412 ****
+ # ifdef UNIX
+ term_is_xterm
+ # endif
+! )
+ {
+! int n;
+
+! n = ScreenAttrs[off];
+! # ifdef FEAT_MBYTE
+! if (col + mbyte_cells < screen_Columns
+! && (n > HL_ALL || (n & HL_BOLD))
+! && (len < 0 ? ptr[mbyte_blen] != NUL
+! : ptr + mbyte_blen < text + len))
+! ScreenAttrs[off + mbyte_cells] = attr + 1;
+! # else
+! if (col + 1 < screen_Columns
+! && (n > HL_ALL || (n & HL_BOLD))
+! && (len < 0 ? ptr[1] != NUL : ptr + 1 < text + len))
+! ScreenLines[off + 1] = 0;
+! # endif
+ }
+ #endif
+ #ifdef FEAT_MBYTE
+--- 6412,6425 ----
+ # ifdef UNIX
+ term_is_xterm
+ # endif
+! ))
+ {
+! int n = ScreenAttrs[off];
+
+! if (n > HL_ALL)
+! n = syn_attr2attr(n);
+! if (n & HL_BOLD)
+! force_redraw_next = TRUE;
+ }
+ #endif
+ #ifdef FEAT_MBYTE
+***************
+*** 6493,6498 ****
+--- 6506,6525 ----
+ ++ptr;
+ }
+ }
++
++ #if defined(FEAT_MBYTE) || defined(FEAT_GUI) || defined(UNIX)
++ /* If we detected the next character needs to be redrawn, but the text
++ * doesn't extend up to there, update the character here. */
++ if (force_redraw_next && col < screen_Columns)
++ {
++ # ifdef FEAT_MBYTE
++ if (enc_dbcs != 0 && dbcs_off2cells(off, max_off) > 1)
++ screen_char_2(off, row, col);
++ else
++ # endif
++ screen_char(off, row, col);
++ }
++ #endif
+ }
+
+ #ifdef FEAT_SEARCH_EXTRA
+*** ../vim-7.2.140/src/version.c Wed Mar 11 17:44:38 2009
+--- src/version.c Wed Mar 11 17:55:22 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 141,
+ /**/
+
+--
+Some of the well know MS-Windows errors:
+ ETIME Wrong time, wait a little while
+ ECRASH Try again...
+ EDETECT Unable to detect errors
+ EOVER You lost! Play another game?
+ ENOCLUE Eh, what did 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.142 b/source/ap/vim/patches/7.2.142
new file mode 100644
index 000000000..adfaab615
--- /dev/null
+++ b/source/ap/vim/patches/7.2.142
@@ -0,0 +1,61 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.142
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.142
+Problem: Motif and Athena balloons don't use tooltip colors.
+Solution: Set the colors. (Matt Wozniski)
+Files: src/gui_beval.c
+
+
+*** ../vim-7.2.141/src/gui_beval.c Thu May 10 21:29:20 2007
+--- src/gui_beval.c Wed Mar 11 15:20:36 2009
+***************
+*** 1291,1296 ****
+--- 1291,1313 ----
+ XtNy, ty,
+ NULL);
+ #endif
++ /* Set tooltip colors */
++ {
++ Arg args[2];
++
++ #ifdef FEAT_GUI_MOTIF
++ args[0].name = XmNbackground;
++ args[0].value = gui.tooltip_bg_pixel;
++ args[1].name = XmNforeground;
++ args[1].value = gui.tooltip_fg_pixel;
++ #else /* Athena */
++ args[0].name = XtNbackground;
++ args[0].value = gui.tooltip_bg_pixel;
++ args[1].name = XtNforeground;
++ args[1].value = gui.tooltip_fg_pixel;
++ #endif
++ XtSetValues(beval->balloonLabel, &args[0], XtNumber(args));
++ }
+
+ XtPopup(beval->balloonShell, XtGrabNone);
+
+*** ../vim-7.2.141/src/version.c Wed Mar 11 17:57:05 2009
+--- src/version.c Wed Mar 18 12:20:01 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 142,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+233. You start dreaming about web pages...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.143 b/source/ap/vim/patches/7.2.143
new file mode 100644
index 000000000..905f15995
--- /dev/null
+++ b/source/ap/vim/patches/7.2.143
@@ -0,0 +1,234 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.143
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.143
+Problem: No command line completion for ":cscope" command.
+Solution: Add the completion for ":cscope". (Dominique Pelle)
+Files: src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c,
+ src/proto/if_cscope.pro, src/vim.h
+
+
+*** ../vim-7.2.142/src/ex_docmd.c Wed Mar 11 15:36:01 2009
+--- src/ex_docmd.c Wed Mar 11 15:45:04 2009
+***************
+*** 3683,3688 ****
+--- 3683,3693 ----
+ case CMD_highlight:
+ set_context_in_highlight_cmd(xp, arg);
+ break;
++ #ifdef FEAT_CSCOPE
++ case CMD_cscope:
++ set_context_in_cscope_cmd(xp, arg);
++ break;
++ #endif
+ #ifdef FEAT_LISTCMDS
+ case CMD_bdelete:
+ case CMD_bwipeout:
+***************
+*** 5187,5192 ****
+--- 5192,5200 ----
+ {EXPAND_AUGROUP, "augroup"},
+ {EXPAND_BUFFERS, "buffer"},
+ {EXPAND_COMMANDS, "command"},
++ #if defined(FEAT_CSCOPE)
++ {EXPAND_CSCOPE, "cscope"},
++ #endif
+ #if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
+ {EXPAND_USER_DEFINED, "custom"},
+ {EXPAND_USER_LIST, "customlist"},
+*** ../vim-7.2.142/src/ex_getln.c Thu Mar 5 03:13:51 2009
+--- src/ex_getln.c Wed Mar 11 15:45:04 2009
+***************
+*** 4518,4523 ****
+--- 4518,4526 ----
+ {EXPAND_EVENTS, get_event_name, TRUE},
+ {EXPAND_AUGROUP, get_augroup_name, TRUE},
+ #endif
++ #ifdef FEAT_CSCOPE
++ {EXPAND_CSCOPE, get_cscope_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.142/src/if_cscope.c Wed Jan 28 16:03:51 2009
+--- src/if_cscope.c Wed Mar 11 15:56:07 2009
+***************
+*** 93,104 ****
+ (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
+ }
+
+ /*
+ * PRIVATE: do_cscope_general
+ *
+! * find the command, print help if invalid, and the then call the
+! * corresponding command function,
+! * called from do_cscope and do_scscope
+ */
+ static void
+ do_cscope_general(eap, make_split)
+--- 93,209 ----
+ (void)EMSG2(_("E560: Usage: cs[cope] %s"), cs_cmds[(int)x].usage);
+ }
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++
++ static enum
++ {
++ EXP_CSCOPE_SUBCMD, /* expand ":cscope" sub-commands */
++ EXP_CSCOPE_FIND, /* expand ":cscope find" arguments */
++ EXP_CSCOPE_KILL /* expand ":cscope kill" arguments */
++ } expand_what;
++
++ /*
++ * Function given to ExpandGeneric() to obtain the cscope command
++ * expansion.
++ */
++ /*ARGSUSED*/
++ char_u *
++ get_cscope_name(xp, idx)
++ expand_T *xp;
++ int idx;
++ {
++ switch (expand_what)
++ {
++ case EXP_CSCOPE_SUBCMD:
++ /* Complete with sub-commands of ":cscope":
++ * add, find, help, kill, reset, show */
++ return (char_u *)cs_cmds[idx].name;
++ case EXP_CSCOPE_FIND:
++ {
++ const char *query_type[] =
++ {
++ "c", "d", "e", "f", "g", "i", "s", "t", NULL
++ };
++
++ /* Complete with query type of ":cscope find {query_type}".
++ * {query_type} can be letters (c, d, ... t) or numbers (0, 1,
++ * ..., 8) but only complete with letters, since numbers are
++ * redundant. */
++ return (char_u *)query_type[idx];
++ }
++ case EXP_CSCOPE_KILL:
++ {
++ int i;
++ int current_idx = 0;
++ static char_u connection[2];
++
++ /* ":cscope kill" accepts connection numbers or partial names of
++ * the pathname of the cscope database as argument. Only complete
++ * with connection numbers. -1 can also be used to kill all
++ * connections. */
++ for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
++ {
++ if (csinfo[i].fname == NULL)
++ continue;
++ if (current_idx++ == idx)
++ {
++ /* Connection number fits in one character since
++ * CSCOPE_MAX_CONNECTIONS is < 10 */
++ connection[0] = i + '0';
++ connection[1] = NUL;
++ return connection;
++ }
++ }
++ return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
++ }
++ default:
++ return NULL;
++ }
++ }
++
++ /*
++ * Handle command line completion for :cscope command.
++ */
++ void
++ set_context_in_cscope_cmd(xp, arg)
++ expand_T *xp;
++ char_u *arg;
++ {
++ char_u *p;
++
++ /* Default: expand subcommands */
++ xp->xp_context = EXPAND_CSCOPE;
++ expand_what = EXP_CSCOPE_SUBCMD;
++ xp->xp_pattern = arg;
++
++ /* (part of) subcommand already typed */
++ if (*arg != NUL)
++ {
++ p = skiptowhite(arg);
++ if (*p != NUL) /* past first word */
++ {
++ xp->xp_pattern = skipwhite(p);
++ if (*skiptowhite(xp->xp_pattern) != NUL)
++ xp->xp_context = EXPAND_NOTHING;
++ else if (STRNICMP(arg, "add", p - arg) == 0)
++ xp->xp_context = EXPAND_FILES;
++ else if (STRNICMP(arg, "kill", p - arg) == 0)
++ expand_what = EXP_CSCOPE_KILL;
++ else if (STRNICMP(arg, "find", p - arg) == 0)
++ expand_what = EXP_CSCOPE_FIND;
++ else
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ }
++ }
++
++ #endif /* FEAT_CMDL_COMPL */
++
+ /*
+ * PRIVATE: do_cscope_general
+ *
+! * Find the command, print help if invalid, and then call the corresponding
+! * command function.
+ */
+ static void
+ do_cscope_general(eap, make_split)
+*** ../vim-7.2.142/src/proto/if_cscope.pro Thu Sep 6 17:38:21 2007
+--- src/proto/if_cscope.pro Wed Mar 11 15:57:03 2009
+***************
+*** 1,4 ****
+--- 1,6 ----
+ /* if_cscope.c */
++ char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
++ void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg));
+ void do_cscope __ARGS((exarg_T *eap));
+ void do_scscope __ARGS((exarg_T *eap));
+ void do_cstag __ARGS((exarg_T *eap));
+*** ../vim-7.2.142/src/vim.h Sun Feb 22 02:36:36 2009
+--- src/vim.h Wed Mar 11 15:45:04 2009
+***************
+*** 708,713 ****
+--- 708,714 ----
+ #define EXPAND_USER_DEFINED 30
+ #define EXPAND_USER_LIST 31
+ #define EXPAND_SHELLCMD 32
++ #define EXPAND_CSCOPE 33
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.2.142/src/version.c Wed Mar 18 12:20:35 2009
+--- src/version.c Wed Mar 18 12:48:08 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 143,
+ /**/
+
+--
+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.144 b/source/ap/vim/patches/7.2.144
new file mode 100644
index 000000000..3a219bd4b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.144
@@ -0,0 +1,78 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.144
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.144
+Problem: When 't_Co' is set to the value it already had the color scheme is
+ reloaded anyway.
+Solution: Only load the colorscheme when the t_Co value changes. (Dominique
+ Pelle)
+Files: src/option.c
+
+
+*** ../vim-7.2.143/src/option.c Wed Mar 4 04:11:56 2009
+--- src/option.c Wed Mar 18 12:00:28 2009
+***************
+*** 6022,6036 ****
+ /* ":set t_Co=0" and ":set t_Co=1" do ":set t_Co=" */
+ if (varp == &T_CCO)
+ {
+! t_colors = atoi((char *)T_CCO);
+! if (t_colors <= 1)
+ {
+! if (new_value_alloced)
+! vim_free(T_CCO);
+! T_CCO = empty_option;
+ }
+- /* We now have a different color setup, initialize it again. */
+- init_highlight(TRUE, FALSE);
+ }
+ ttest(FALSE);
+ if (varp == &T_ME)
+--- 6022,6044 ----
+ /* ":set t_Co=0" and ":set t_Co=1" do ":set t_Co=" */
+ if (varp == &T_CCO)
+ {
+! int colors = atoi((char *)T_CCO);
+!
+! /* Only reinitialize colors if t_Co value has really changed to
+! * avoid expensive reload of colorscheme if t_Co is set to the
+! * same value multiple times. */
+! if (colors != t_colors)
+ {
+! t_colors = colors;
+! if (t_colors <= 1)
+! {
+! if (new_value_alloced)
+! vim_free(T_CCO);
+! T_CCO = empty_option;
+! }
+! /* We now have a different color setup, initialize it again. */
+! init_highlight(TRUE, FALSE);
+ }
+ }
+ ttest(FALSE);
+ if (varp == &T_ME)
+*** ../vim-7.2.143/src/version.c Wed Mar 18 12:50:58 2009
+--- src/version.c Wed Mar 18 14:16:48 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 144,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+235. You start naming your kids Pascal, COBOL, Algol and Fortran.
+
+ /// 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.145 b/source/ap/vim/patches/7.2.145
new file mode 100644
index 000000000..0f328170f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.145
@@ -0,0 +1,125 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.145
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.145
+Problem: White space in ":cscope find" is not ignored.
+Solution: Ignore the white space, but not when the leading white space is
+ useful for the argument.
+Files: runtime/doc/if_cscop.txt, src/if_cscope.c
+
+
+*** ../vim-7.2.144/runtime/doc/if_cscop.txt Sat Aug 9 19:36:48 2008
+--- runtime/doc/if_cscop.txt Wed Mar 18 14:30:09 2009
+***************
+*** 1,4 ****
+! *if_cscop.txt* For Vim version 7.2. Last change: 2005 Mar 29
+
+
+ VIM REFERENCE MANUAL by Andy Kahn
+--- 1,4 ----
+! *if_cscop.txt* For Vim version 7.2. Last change: 2009 Mar 18
+
+
+ VIM REFERENCE MANUAL by Andy Kahn
+***************
+*** 131,141 ****
+ 7 or f: Find this file
+ 8 or i: Find files #including this file
+
+ EXAMPLES >
+ :cscope find c vim_free
+! :cscope find 3 vim_free
+ <
+! These two examples perform the same query. >
+
+ :cscope find 0 DEFAULT_TERM
+ <
+--- 131,152 ----
+ 7 or f: Find this file
+ 8 or i: Find files #including this file
+
++ For all types, except 4 and 6, leading white space for {name} is
++ removed. For 4 and 6 there is exactly one space between {querytype}
++ and {name}. Further white space is included in {name}.
++
+ EXAMPLES >
+ :cscope find c vim_free
+! :cscope find 3 vim_free
+! <
+! These two examples perform the same query: functions calling
+! "vim_free". >
+!
+! :cscope find t initOnce
+! :cscope find t initOnce
+ <
+! The first one searches for the text "initOnce", the second one for
+! " initOnce". >
+
+ :cscope find 0 DEFAULT_TERM
+ <
+*** ../vim-7.2.144/src/if_cscope.c Wed Mar 18 12:50:58 2009
+--- src/if_cscope.c Wed Mar 18 13:23:53 2009
+***************
+*** 764,769 ****
+--- 764,770 ----
+ {
+ char *cmd;
+ short search;
++ char *pat;
+
+ switch (csoption[0])
+ {
+***************
+*** 797,806 ****
+ return NULL;
+ }
+
+! if ((cmd = (char *)alloc((unsigned)(strlen(pattern) + 2))) == NULL)
+ return NULL;
+
+! (void)sprintf(cmd, "%d%s", search, pattern);
+
+ return cmd;
+ } /* cs_create_cmd */
+--- 798,814 ----
+ return NULL;
+ }
+
+! /* Skip white space before the patter, except for text and pattern search,
+! * they may want to use the leading white space. */
+! pat = pattern;
+! if (search != 4 && search != 6)
+! while vim_iswhite(*pat)
+! ++pat;
+!
+! if ((cmd = (char *)alloc((unsigned)(strlen(pat) + 2))) == NULL)
+ return NULL;
+
+! (void)sprintf(cmd, "%d%s", search, pat);
+
+ return cmd;
+ } /* cs_create_cmd */
+*** ../vim-7.2.144/src/version.c Wed Mar 18 14:19:28 2009
+--- src/version.c Wed Mar 18 14:28:46 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 145,
+ /**/
+
+--
+Google is kind of like Dr. Who's Tardis; it's weirder on the
+inside than on the outside...
+
+ /// 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.146 b/source/ap/vim/patches/7.2.146
new file mode 100644
index 000000000..96852fbef
--- /dev/null
+++ b/source/ap/vim/patches/7.2.146
@@ -0,0 +1,110 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.146
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.146
+Problem: v:warningmsg isn't used for all warnings.
+Solution: Set v:warningmsg for relevant warnings. (Ingo Karkat)
+Files: src/fileio.c, src/misc1.c, src/option.c
+
+
+*** ../vim-7.2.145/src/fileio.c Wed Mar 11 13:09:30 2009
+--- src/fileio.c Wed Mar 18 15:03:46 2009
+***************
+*** 6647,6652 ****
+--- 6647,6657 ----
+ tbuf = alloc((unsigned)(STRLEN(path) + STRLEN(mesg)
+ + STRLEN(mesg2) + 2));
+ sprintf((char *)tbuf, mesg, path);
++ #ifdef FEAT_EVAL
++ /* Set warningmsg here, before the unimportant and output-specific
++ * mesg2 has been appended. */
++ set_vim_var_string(VV_WARNINGMSG, tbuf, -1);
++ #endif
+ #if defined(FEAT_CON_DIALOG) || defined(FEAT_GUI_DIALOG)
+ if (can_reload)
+ {
+*** ../vim-7.2.145/src/misc1.c Thu Nov 20 17:09:09 2008
+--- src/misc1.c Wed Mar 18 15:06:59 2009
+***************
+*** 2955,2960 ****
+--- 2955,2962 ----
+ int col; /* column for message; non-zero when in insert
+ mode and 'showmode' is on */
+ {
++ static char *w_readonly = N_("W10: Warning: Changing a readonly file");
++
+ if (curbuf->b_did_warn == FALSE
+ && curbufIsChanged() == 0
+ #ifdef FEAT_AUTOCMD
+***************
+*** 2977,2984 ****
+ if (msg_row == Rows - 1)
+ msg_col = col;
+ msg_source(hl_attr(HLF_W));
+! MSG_PUTS_ATTR(_("W10: Warning: Changing a readonly file"),
+! hl_attr(HLF_W) | MSG_HIST);
+ msg_clr_eos();
+ (void)msg_end();
+ if (msg_silent == 0 && !silent_mode)
+--- 2979,2988 ----
+ if (msg_row == Rows - 1)
+ msg_col = col;
+ msg_source(hl_attr(HLF_W));
+! MSG_PUTS_ATTR(_(w_readonly), hl_attr(HLF_W) | MSG_HIST);
+! #ifdef FEAT_EVAL
+! set_vim_var_string(VV_WARNINGMSG, (char_u *)_(w_readonly), -1);
+! #endif
+ msg_clr_eos();
+ (void)msg_end();
+ if (msg_silent == 0 && !silent_mode)
+*** ../vim-7.2.145/src/option.c Wed Mar 18 14:19:28 2009
+--- src/option.c Wed Mar 18 15:06:11 2009
+***************
+*** 7563,7571 ****
+ * set. */
+ if (STRCMP(p_enc, "utf-8") != 0)
+ {
+ msg_source(hl_attr(HLF_W));
+! MSG_ATTR(_("W17: Arabic requires UTF-8, do ':set encoding=utf-8'"),
+! hl_attr(HLF_W));
+ }
+
+ # ifdef FEAT_MBYTE
+--- 7563,7575 ----
+ * set. */
+ if (STRCMP(p_enc, "utf-8") != 0)
+ {
++ static char *w_arabic = N_("W17: Arabic requires UTF-8, do ':set encoding=utf-8'");
++
+ msg_source(hl_attr(HLF_W));
+! MSG_ATTR(_(w_arabic), hl_attr(HLF_W));
+! #ifdef FEAT_EVAL
+! set_vim_var_string(VV_WARNINGMSG, (char_u *)_(w_arabic), -1);
+! #endif
+ }
+
+ # ifdef FEAT_MBYTE
+*** ../vim-7.2.145/src/version.c Wed Mar 18 14:30:46 2009
+--- src/version.c Wed Mar 18 15:38:27 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 146,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+238. You think faxes are old-fashioned.
+
+ /// 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.147 b/source/ap/vim/patches/7.2.147
new file mode 100644
index 000000000..82a43eeaa
--- /dev/null
+++ b/source/ap/vim/patches/7.2.147
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.147
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.147
+Problem: When compiled as small version and 'number' is on the cursor is
+ displayed in the wrong position after a tab. (James Vega)
+Solution: Don't increment vcol when still displaying the line number.
+Files: src/screen.c
+
+
+*** ../vim-7.2.146/src/screen.c Wed Mar 11 17:57:05 2009
+--- src/screen.c Wed Mar 18 16:18:00 2009
+***************
+*** 4665,4671 ****
+ --n_skip;
+
+ /* Only advance the "vcol" when after the 'number' column. */
+! if (draw_state >= WL_SBR
+ #ifdef FEAT_DIFF
+ && filler_todo <= 0
+ #endif
+--- 4665,4671 ----
+ --n_skip;
+
+ /* Only advance the "vcol" when after the 'number' column. */
+! if (draw_state > WL_NR
+ #ifdef FEAT_DIFF
+ && filler_todo <= 0
+ #endif
+*** ../vim-7.2.146/src/version.c Wed Mar 18 15:40:03 2009
+--- src/version.c Wed Mar 18 16:26:00 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 147,
+ /**/
+
+--
+You can tune a file system, but you can't tuna fish
+ -- man tunefs
+
+ /// 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.148 b/source/ap/vim/patches/7.2.148
new file mode 100644
index 000000000..32504997c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.148
@@ -0,0 +1,145 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.148
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.148
+Problem: When searching for "$" while 'hlsearch' is set, highlighting the
+ character after the line does not work in the cursor column.
+ Also highlighting for Visual mode after the line end when this
+ isn't needed. (Markus Heidelberg)
+Solution: Only compare the cursor column in the cursor line. Only highlight
+ for Visual selection after the last character when it's needed to
+ see where the Visual selection ends.
+Files: src/screen.c
+
+
+*** ../vim-7.2.147/src/screen.c Wed Mar 18 16:26:31 2009
+--- src/screen.c Wed Mar 18 17:24:56 2009
+***************
+*** 2889,2896 ****
+ }
+ else
+ tocol = MAXCOL;
+! if (fromcol == tocol) /* do at least one character */
+! tocol = fromcol + 1; /* happens when past end of line */
+ area_highlighting = TRUE;
+ attr = hl_attr(HLF_I);
+ }
+--- 2889,2897 ----
+ }
+ else
+ tocol = MAXCOL;
+! /* do at least one character; happens when past end of line */
+! if (fromcol == tocol)
+! tocol = fromcol + 1;
+ area_highlighting = TRUE;
+ attr = hl_attr(HLF_I);
+ }
+***************
+*** 4118,4123 ****
+--- 4119,4125 ----
+ # endif
+ (col < W_WIDTH(wp)))
+ && !(noinvcur
++ && lnum == wp->w_cursor.lnum
+ && (colnr_T)vcol == wp->w_virtcol)))
+ && lcs_eol_one >= 0)
+ {
+***************
+*** 4259,4265 ****
+ * preedit_changed and commit. Thus Vim can't set "im_is_active", use
+ * im_is_preediting() here. */
+ if (xic != NULL
+! && lnum == curwin->w_cursor.lnum
+ && (State & INSERT)
+ && !p_imdisable
+ && im_is_preediting()
+--- 4261,4267 ----
+ * preedit_changed and commit. Thus Vim can't set "im_is_active", use
+ * im_is_preediting() here. */
+ if (xic != NULL
+! && lnum == wp->w_cursor.lnum
+ && (State & INSERT)
+ && !p_imdisable
+ && im_is_preediting()
+***************
+*** 4268,4274 ****
+ colnr_T tcol;
+
+ if (preedit_end_col == MAXCOL)
+! getvcol(curwin, &(curwin->w_cursor), &tcol, NULL, NULL);
+ else
+ tcol = preedit_end_col;
+ if ((long)preedit_start_col <= vcol && vcol < (long)tcol)
+--- 4270,4276 ----
+ colnr_T tcol;
+
+ if (preedit_end_col == MAXCOL)
+! getvcol(curwin, &(wp->w_cursor), &tcol, NULL, NULL);
+ else
+ tcol = preedit_end_col;
+ if ((long)preedit_start_col <= vcol && vcol < (long)tcol)
+***************
+*** 4365,4371 ****
+ }
+ #endif
+ if (lcs_eol == lcs_eol_one
+! && ((area_attr != 0 && vcol == fromcol && c == NUL)
+ #ifdef FEAT_SEARCH_EXTRA
+ /* highlight 'hlsearch' match at end of line */
+ || (prevcol_hl_flag == TRUE
+--- 4367,4379 ----
+ }
+ #endif
+ if (lcs_eol == lcs_eol_one
+! && ((area_attr != 0 && vcol == fromcol
+! #ifdef FEAT_VISUAL
+! && (VIsual_mode != Ctrl_V
+! || lnum == VIsual.lnum
+! || lnum == curwin->w_cursor.lnum)
+! #endif
+! && c == NUL)
+ #ifdef FEAT_SEARCH_EXTRA
+ /* highlight 'hlsearch' match at end of line */
+ || (prevcol_hl_flag == TRUE
+***************
+*** 4459,4465 ****
+ if (c == NUL)
+ {
+ #ifdef FEAT_SYN_HL
+! if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol)
+ {
+ /* highlight last char after line */
+ --col;
+--- 4467,4474 ----
+ if (c == NUL)
+ {
+ #ifdef FEAT_SYN_HL
+! if (eol_hl_off > 0 && vcol - eol_hl_off == (long)wp->w_virtcol
+! && lnum == wp->w_cursor.lnum)
+ {
+ /* highlight last char after line */
+ --col;
+*** ../vim-7.2.147/src/version.c Wed Mar 18 16:26:31 2009
+--- src/version.c Wed Mar 18 19:05:37 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 148,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+239. You think "surfing" is something you do on dry land.
+
+ /// 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.149 b/source/ap/vim/patches/7.2.149
new file mode 100644
index 000000000..7b51a571e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.149
@@ -0,0 +1,672 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.149
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.149
+Problem: Using return value of function that doesn't return a value results
+ in reading uninitialized memory.
+Solution: Set the default to return zero. Make cursor() return -1 on
+ failure. Let complete() return an empty string in case of an
+ error. (partly by Dominique Pelle)
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.2.148/runtime/doc/eval.txt Tue Dec 9 10:56:50 2008
+--- runtime/doc/eval.txt Sun Mar 22 14:28:49 2009
+***************
+*** 2414,2419 ****
+--- 2419,2425 ----
+ When 'virtualedit' is used {off} specifies the offset in
+ screen columns from the start of the character. E.g., a
+ position within a <Tab> or after the last character.
++ Returns 0 when the position could be set, -1 otherwise.
+
+
+ deepcopy({expr}[, {noref}]) *deepcopy()* *E698*
+***************
+*** 4516,4521 ****
+--- 4526,4532 ----
+ should also work to move files across file systems. The
+ result is a Number, which is 0 if the file was renamed
+ successfully, and non-zero when the renaming failed.
++ NOTE: If {to} exists it is overwritten without warning.
+ This function is not available in the |sandbox|.
+
+ repeat({expr}, {count}) *repeat()*
+*** ../vim-7.2.148/src/eval.c Wed Feb 4 16:25:53 2009
+--- src/eval.c Sun Mar 22 20:45:18 2009
+***************
+*** 1285,1291 ****
+--- 1285,1293 ----
+ typval_T tv;
+ char_u *retval;
+ garray_T ga;
++ #ifdef FEAT_FLOAT
+ char_u numbuf[NUMBUFLEN];
++ #endif
+
+ if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
+ retval = NULL;
+***************
+*** 8018,8024 ****
+ /* execute the function if no errors detected and executing */
+ if (evaluate && error == ERROR_NONE)
+ {
+! rettv->v_type = VAR_NUMBER; /* default is number rettv */
+ error = ERROR_UNKNOWN;
+
+ if (!builtin_function(fname))
+--- 8020,8027 ----
+ /* execute the function if no errors detected and executing */
+ if (evaluate && error == ERROR_NONE)
+ {
+! rettv->v_type = VAR_NUMBER; /* default rettv is number zero */
+! rettv->vval.v_number = 0;
+ error = ERROR_UNKNOWN;
+
+ if (!builtin_function(fname))
+***************
+*** 8268,8274 ****
+ return;
+ li = l->lv_first;
+ }
+- rettv->vval.v_number = 0; /* Default: Success */
+ for (;;)
+ {
+ if (l == NULL)
+--- 8271,8276 ----
+***************
+*** 8728,8734 ****
+ int dummy;
+ dict_T *selfdict = NULL;
+
+- rettv->vval.v_number = 0;
+ if (argvars[1].v_type != VAR_LIST)
+ {
+ EMSG(_(e_listreq));
+--- 8730,8735 ----
+***************
+*** 9036,9048 ****
+ if (buttons == NULL || *buttons == NUL)
+ buttons = (char_u *)_("&Ok");
+
+! if (error)
+! rettv->vval.v_number = 0;
+! else
+ rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
+ def, NULL);
+- #else
+- rettv->vval.v_number = 0;
+ #endif
+ }
+
+--- 9037,9045 ----
+ if (buttons == NULL || *buttons == NUL)
+ buttons = (char_u *)_("&Ok");
+
+! if (!error)
+ rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
+ def, NULL);
+ #endif
+ }
+
+***************
+*** 9181,9195 ****
+ }
+
+ rettv->vval.v_number = cs_connection(num, dbpath, prepend);
+- #else
+- rettv->vval.v_number = 0;
+ #endif
+ }
+
+ /*
+ * "cursor(lnum, col)" function
+ *
+! * Moves the cursor to the specified line and column
+ */
+ /*ARGSUSED*/
+ static void
+--- 9178,9191 ----
+ }
+
+ rettv->vval.v_number = cs_connection(num, dbpath, prepend);
+ #endif
+ }
+
+ /*
+ * "cursor(lnum, col)" function
+ *
+! * Moves the cursor to the specified line and column.
+! * Returns 0 when the position could be set, -1 otherwise.
+ */
+ /*ARGSUSED*/
+ static void
+***************
+*** 9202,9207 ****
+--- 9198,9204 ----
+ long coladd = 0;
+ #endif
+
++ rettv->vval.v_number = -1;
+ if (argvars[1].v_type == VAR_UNKNOWN)
+ {
+ pos_T pos;
+***************
+*** 9246,9251 ****
+--- 9243,9249 ----
+ #endif
+
+ curwin->w_set_curswant = TRUE;
++ rettv->vval.v_number = 0;
+ }
+
+ /*
+***************
+*** 9291,9298 ****
+ {
+ #ifdef FEAT_AUTOCMD
+ rettv->vval.v_number = did_filetype;
+- #else
+- rettv->vval.v_number = 0;
+ #endif
+ }
+
+--- 9289,9294 ----
+***************
+*** 9605,9611 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type == VAR_LIST && argvars[1].v_type == VAR_LIST)
+ {
+ list_T *l1, *l2;
+--- 9601,9606 ----
+***************
+*** 9733,9739 ****
+ if (check_secure())
+ return;
+
+- rettv->vval.v_number = 0;
+ keys = get_tv_string(&argvars[0]);
+ if (*keys != NUL)
+ {
+--- 9728,9733 ----
+***************
+*** 9901,9907 ****
+ char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+ int save_did_emsg;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type == VAR_LIST)
+ {
+ if ((l = argvars[0].vval.v_list) == NULL
+--- 9895,9900 ----
+***************
+*** 10084,10091 ****
+ else
+ rettv->vval.v_number = (varnumber_T)f;
+ }
+- else
+- rettv->vval.v_number = 0;
+ }
+
+ /*
+--- 10077,10082 ----
+***************
+*** 10219,10227 ****
+ lnum = get_tv_lnum(argvars);
+ if (lnum >= 1 && lnum <= curbuf->b_ml.ml_line_count)
+ rettv->vval.v_number = foldLevel(lnum);
+- else
+ #endif
+- rettv->vval.v_number = 0;
+ }
+
+ /*
+--- 10210,10216 ----
+***************
+*** 10337,10343 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+- rettv->vval.v_number = 0;
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+ gui_mch_set_foreground();
+--- 10326,10331 ----
+***************
+*** 10359,10365 ****
+ {
+ char_u *s;
+
+- rettv->vval.v_number = 0;
+ s = get_tv_string(&argvars[0]);
+ if (s == NULL || *s == NUL || VIM_ISDIGIT(*s))
+ EMSG2(_(e_invarg2), s);
+--- 10347,10352 ----
+***************
+*** 10429,10437 ****
+
+ if (tv == NULL)
+ {
+! if (argvars[2].v_type == VAR_UNKNOWN)
+! rettv->vval.v_number = 0;
+! else
+ copy_tv(&argvars[2], rettv);
+ }
+ else
+--- 10416,10422 ----
+
+ if (tv == NULL)
+ {
+! if (argvars[2].v_type != VAR_UNKNOWN)
+ copy_tv(&argvars[2], rettv);
+ }
+ else
+***************
+*** 10456,10468 ****
+ {
+ char_u *p;
+
+! if (retlist)
+! {
+! if (rettv_list_alloc(rettv) == FAIL)
+! return;
+! }
+! else
+! rettv->vval.v_number = 0;
+
+ if (buf == NULL || buf->b_ml.ml_mfp == NULL || start < 0)
+ return;
+--- 10441,10448 ----
+ {
+ char_u *p;
+
+! if (retlist && rettv_list_alloc(rettv) == FAIL)
+! return;
+
+ if (buf == NULL || buf->b_ml.ml_mfp == NULL || start < 0)
+ return;
+***************
+*** 11009,11016 ****
+ dict_T *dict;
+ matchitem_T *cur = curwin->w_match_head;
+
+- rettv->vval.v_number = 0;
+-
+ if (rettv_list_alloc(rettv) == OK)
+ {
+ while (cur != NULL)
+--- 10989,10994 ----
+***************
+*** 11089,11095 ****
+ win_T *wp;
+ #endif
+
+- rettv->vval.v_number = 0;
+ #ifdef FEAT_QUICKFIX
+ if (rettv_list_alloc(rettv) == OK)
+ {
+--- 11067,11072 ----
+***************
+*** 11935,11941 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type != VAR_DICT)
+ {
+ EMSG(_(e_dictreq));
+--- 11912,11917 ----
+***************
+*** 12052,12059 ****
+ n = del_history_entry(get_histtype(str),
+ get_tv_string_buf(&argvars[1], buf));
+ rettv->vval.v_number = n;
+- #else
+- rettv->vval.v_number = 0;
+ #endif
+ }
+
+--- 12028,12033 ----
+***************
+*** 12415,12421 ****
+ int selected;
+ int mouse_used;
+
+- rettv->vval.v_number = 0;
+ #ifdef NO_CONSOLE_INPUT
+ /* While starting up, there is no place to enter text. */
+ if (no_console_input())
+--- 12389,12394 ----
+***************
+*** 12464,12470 ****
+ --ga_userinput.ga_len;
+ restore_typeahead((tasave_T *)(ga_userinput.ga_data)
+ + ga_userinput.ga_len);
+! rettv->vval.v_number = 0; /* OK */
+ }
+ else if (p_verbose > 1)
+ {
+--- 12437,12443 ----
+ --ga_userinput.ga_len;
+ restore_typeahead((tasave_T *)(ga_userinput.ga_data)
+ + ga_userinput.ga_len);
+! /* default return is zero == OK */
+ }
+ else if (p_verbose > 1)
+ {
+***************
+*** 12488,12494 ****
+ save_typeahead((tasave_T *)(ga_userinput.ga_data)
+ + ga_userinput.ga_len);
+ ++ga_userinput.ga_len;
+! rettv->vval.v_number = 0; /* OK */
+ }
+ else
+ rettv->vval.v_number = 1; /* Failed */
+--- 12461,12467 ----
+ save_typeahead((tasave_T *)(ga_userinput.ga_data)
+ + ga_userinput.ga_len);
+ ++ga_userinput.ga_len;
+! /* default return is zero == OK */
+ }
+ else
+ rettv->vval.v_number = 1; /* Failed */
+***************
+*** 12522,12528 ****
+ list_T *l;
+ int error = FALSE;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "insert()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+--- 12495,12500 ----
+***************
+*** 12641,12647 ****
+ dict_T *d;
+ int todo;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type != VAR_DICT)
+ {
+ EMSG(_(e_dictreq));
+--- 12613,12618 ----
+***************
+*** 12729,12735 ****
+ garray_T ga;
+ char_u *sep;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type != VAR_LIST)
+ {
+ EMSG(_(e_listreq));
+--- 12700,12705 ----
+***************
+*** 12827,12835 ****
+ #endif
+
+ rettv->v_type = type;
+! if (type == VAR_NUMBER)
+! rettv->vval.v_number = 0;
+! else
+ rettv->vval.v_string = NULL;
+
+ if (check_restricted() || check_secure())
+--- 12797,12803 ----
+ #endif
+
+ rettv->v_type = type;
+! if (type != VAR_NUMBER)
+ rettv->vval.v_string = NULL;
+
+ if (check_restricted() || check_secure())
+***************
+*** 13770,13776 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+- rettv->vval.v_number = 0;
+ #ifdef FEAT_INS_EXPAND
+ if (pum_visible())
+ rettv->vval.v_number = 1;
+--- 13738,13743 ----
+***************
+*** 13804,13810 ****
+ stride = get_tv_number_chk(&argvars[2], &error);
+ }
+
+- rettv->vval.v_number = 0;
+ if (error)
+ return; /* type error; errmsg already given */
+ if (stride == 0)
+--- 13771,13776 ----
+***************
+*** 14193,14199 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+- rettv->vval.v_number = 0;
+ #ifdef FEAT_CLIENTSERVER
+ # ifdef WIN32
+ /* On Win32 it's done in this application. */
+--- 14159,14164 ----
+***************
+*** 14249,14255 ****
+ rettv->vval.v_number = (s != NULL);
+ }
+ # else
+- rettv->vval.v_number = 0;
+ if (check_connection() == FAIL)
+ return;
+
+--- 14214,14219 ----
+***************
+*** 14338,14344 ****
+ dict_T *d;
+ dictitem_T *di;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type == VAR_DICT)
+ {
+ if (argvars[2].v_type != VAR_UNKNOWN)
+--- 14302,14307 ----
+***************
+*** 14696,14702 ****
+ list_T *l;
+ listitem_T *li, *ni;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "reverse()");
+ else if ((l = argvars[0].vval.v_list) != NULL
+--- 14659,14664 ----
+***************
+*** 15048,15055 ****
+ int lnum = 0;
+ int col = 0;
+
+- rettv->vval.v_number = 0;
+-
+ if (rettv_list_alloc(rettv) == FAIL)
+ return;
+
+--- 15010,15015 ----
+***************
+*** 15236,15243 ****
+ int n;
+ int flags = 0;
+
+- rettv->vval.v_number = 0;
+-
+ if (rettv_list_alloc(rettv) == FAIL)
+ return;
+
+--- 15196,15201 ----
+***************
+*** 15323,15330 ****
+ typval_T *varp;
+ char_u nbuf[NUMBUFLEN];
+
+- rettv->vval.v_number = 0;
+-
+ if (check_restricted() || check_secure())
+ return;
+ (void)get_tv_number(&argvars[0]); /* issue errmsg if type error */
+--- 15281,15286 ----
+***************
+*** 15404,15410 ****
+ else
+ line = get_tv_string_chk(&argvars[1]);
+
+! rettv->vval.v_number = 0; /* OK */
+ for (;;)
+ {
+ if (l != NULL)
+--- 15360,15366 ----
+ else
+ line = get_tv_string_chk(&argvars[1]);
+
+! /* default result is zero == OK */
+ for (;;)
+ {
+ if (l != NULL)
+***************
+*** 15717,15722 ****
+--- 15673,15679 ----
+ /*
+ * "setwinvar()" and "settabwinvar()" functions
+ */
++ /*ARGSUSED*/
+ static void
+ setwinvar(argvars, rettv, off)
+ typval_T *argvars;
+***************
+*** 15733,15740 ****
+ char_u nbuf[NUMBUFLEN];
+ tabpage_T *tp;
+
+- rettv->vval.v_number = 0;
+-
+ if (check_restricted() || check_secure())
+ return;
+
+--- 15690,15695 ----
+***************
+*** 15947,15953 ****
+ long len;
+ long i;
+
+- rettv->vval.v_number = 0;
+ if (argvars[0].v_type != VAR_LIST)
+ EMSG2(_(e_listarg), "sort()");
+ else
+--- 15902,15907 ----
+***************
+*** 16870,16878 ****
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+! #ifndef FEAT_WINDOWS
+! rettv->vval.v_number = 0;
+! #else
+ tabpage_T *tp;
+ win_T *wp = NULL;
+
+--- 16824,16830 ----
+ typval_T *argvars;
+ typval_T *rettv;
+ {
+! #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+ win_T *wp = NULL;
+
+***************
+*** 16884,16902 ****
+ if (tp != NULL)
+ wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
+ }
+! if (wp == NULL)
+! rettv->vval.v_number = 0;
+! else
+ {
+! if (rettv_list_alloc(rettv) == FAIL)
+! rettv->vval.v_number = 0;
+! else
+! {
+! for (; wp != NULL; wp = wp->w_next)
+! if (list_append_number(rettv->vval.v_list,
+ wp->w_buffer->b_fnum) == FAIL)
+! break;
+! }
+ }
+ #endif
+ }
+--- 16836,16847 ----
+ if (tp != NULL)
+ wp = (tp == curtab) ? firstwin : tp->tp_firstwin;
+ }
+! if (wp != NULL && rettv_list_alloc(rettv) != FAIL)
+ {
+! for (; wp != NULL; wp = wp->w_next)
+! if (list_append_number(rettv->vval.v_list,
+ wp->w_buffer->b_fnum) == FAIL)
+! break;
+ }
+ #endif
+ }
+***************
+*** 17024,17033 ****
+ int first;
+
+ if (rettv_list_alloc(rettv) == FAIL)
+- {
+- rettv->vval.v_number = 0;
+ return;
+- }
+
+ for (first = TRUE; ; first = FALSE)
+ if (get_tagfname(&tn, first, fname) == FAIL
+--- 16969,16975 ----
+***************
+*** 17401,17408 ****
+ /* A non-zero number or non-empty string argument: reset mode. */
+ if (non_zero_arg(&argvars[0]))
+ curbuf->b_visual_mode_eval = NUL;
+- #else
+- rettv->vval.v_number = 0; /* return anything, it won't work anyway */
+ #endif
+ }
+
+--- 17343,17348 ----
+*** ../vim-7.2.148/src/version.c Wed Mar 18 19:07:09 2009
+--- src/version.c Wed Apr 22 12:44:05 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 149,
+ /**/
+
+
+--
+WOMAN: Well, 'ow did you become king then?
+ARTHUR: The Lady of the Lake, [angels sing] her arm clad in the purest
+ shimmering samite, held aloft Excalibur from the bosom of the water
+ signifying by Divine Providence that I, Arthur, was to carry
+ Excalibur. [singing stops] That is why 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.150 b/source/ap/vim/patches/7.2.150
new file mode 100644
index 000000000..f2b1174ee
--- /dev/null
+++ b/source/ap/vim/patches/7.2.150
@@ -0,0 +1,1325 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.150 (extra)
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Note: I haven't tested this myself, since I don't have a compiler that
+works for this code.
+
+Patch 7.2.150 (extra)
+Problem: Can't use tab pages from VisVim.
+Solution: Add tab page support to VisVim. (Adam Slater)
+Files: src/VisVim/Commands.cpp, src/VisVim/Resource.h,
+ src/VisVim/VisVim.rc
+
+
+*** ../vim-7.2.149/src/VisVim/Commands.cpp Thu May 10 20:45:34 2007
+--- src/VisVim/Commands.cpp Mon Mar 2 00:52:15 2009
+***************
+*** 20,39 ****
+
+ static BOOL g_bEnableVim = TRUE; // Vim enabled
+ static BOOL g_bDevStudioEditor = FALSE; // Open file in Dev Studio editor simultaneously
+ static int g_ChangeDir = CD_NONE; // CD after file open?
+
+! static void VimSetEnableState (BOOL bEnableState);
+! static BOOL VimOpenFile (BSTR& FileName, long LineNr);
+! static DISPID VimGetDispatchId (COleAutomationControl& VimOle, char* Method);
+! static void VimErrDiag (COleAutomationControl& VimOle);
+! static void VimChangeDir (COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName);
+! static void DebugMsg (char* Msg, char* Arg = NULL);
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ // CCommands
+
+! CCommands::CCommands ()
+ {
+ // m_pApplication == NULL; M$ Code generation bug!!!
+ m_pApplication = NULL;
+--- 20,40 ----
+
+ static BOOL g_bEnableVim = TRUE; // Vim enabled
+ static BOOL g_bDevStudioEditor = FALSE; // Open file in Dev Studio editor simultaneously
++ static BOOL g_bNewTabs = FALSE;
+ static int g_ChangeDir = CD_NONE; // CD after file open?
+
+! static void VimSetEnableState(BOOL bEnableState);
+! static BOOL VimOpenFile(BSTR& FileName, long LineNr);
+! static DISPID VimGetDispatchId(COleAutomationControl& VimOle, char* Method);
+! static void VimErrDiag(COleAutomationControl& VimOle);
+! static void VimChangeDir(COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName);
+! static void DebugMsg(char* Msg, char* Arg = NULL);
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ // CCommands
+
+! CCommands::CCommands()
+ {
+ // m_pApplication == NULL; M$ Code generation bug!!!
+ m_pApplication = NULL;
+***************
+*** 41,57 ****
+ m_pDebuggerEventsObj = NULL;
+ }
+
+! CCommands::~CCommands ()
+ {
+! ASSERT (m_pApplication != NULL);
+ if (m_pApplication)
+ {
+! m_pApplication->Release ();
+ m_pApplication = NULL;
+ }
+ }
+
+! void CCommands::SetApplicationObject (IApplication * pApplication)
+ {
+ // This function assumes pApplication has already been AddRef'd
+ // for us, which CDSAddIn did in it's QueryInterface call
+--- 42,58 ----
+ m_pDebuggerEventsObj = NULL;
+ }
+
+! CCommands::~CCommands()
+ {
+! ASSERT(m_pApplication != NULL);
+ if (m_pApplication)
+ {
+! m_pApplication->Release();
+ m_pApplication = NULL;
+ }
+ }
+
+! void CCommands::SetApplicationObject(IApplication * pApplication)
+ {
+ // This function assumes pApplication has already been AddRef'd
+ // for us, which CDSAddIn did in it's QueryInterface call
+***************
+*** 61,115 ****
+ return;
+
+ // Create Application event handlers
+! XApplicationEventsObj::CreateInstance (&m_pApplicationEventsObj);
+ if (! m_pApplicationEventsObj)
+ {
+! ReportInternalError ("XApplicationEventsObj::CreateInstance");
+ return;
+ }
+! m_pApplicationEventsObj->AddRef ();
+! m_pApplicationEventsObj->Connect (m_pApplication);
+ m_pApplicationEventsObj->m_pCommands = this;
+
+ #ifdef NEVER
+ // Create Debugger event handler
+ CComPtr < IDispatch > pDebugger;
+! if (SUCCEEDED (m_pApplication->get_Debugger (&pDebugger))
+ && pDebugger != NULL)
+ {
+! XDebuggerEventsObj::CreateInstance (&m_pDebuggerEventsObj);
+! m_pDebuggerEventsObj->AddRef ();
+! m_pDebuggerEventsObj->Connect (pDebugger);
+ m_pDebuggerEventsObj->m_pCommands = this;
+ }
+ #endif
+
+ // Get settings from registry HKEY_CURRENT_USER\Software\Vim\VisVim
+! HKEY hAppKey = GetAppKey ("Vim");
+ if (hAppKey)
+ {
+! HKEY hSectionKey = GetSectionKey (hAppKey, "VisVim");
+ if (hSectionKey)
+ {
+! g_bEnableVim = GetRegistryInt (hSectionKey, "EnableVim",
+ g_bEnableVim);
+! g_bDevStudioEditor = GetRegistryInt(hSectionKey,"DevStudioEditor",
+! g_bDevStudioEditor);
+! g_ChangeDir = GetRegistryInt (hSectionKey, "ChangeDir",
+ g_ChangeDir);
+! RegCloseKey (hSectionKey);
+ }
+! RegCloseKey (hAppKey);
+ }
+ }
+
+! void CCommands::UnadviseFromEvents ()
+ {
+! ASSERT (m_pApplicationEventsObj != NULL);
+ if (m_pApplicationEventsObj)
+ {
+! m_pApplicationEventsObj->Disconnect (m_pApplication);
+! m_pApplicationEventsObj->Release ();
+ m_pApplicationEventsObj = NULL;
+ }
+
+--- 62,118 ----
+ return;
+
+ // Create Application event handlers
+! XApplicationEventsObj::CreateInstance(&m_pApplicationEventsObj);
+ if (! m_pApplicationEventsObj)
+ {
+! ReportInternalError("XApplicationEventsObj::CreateInstance");
+ return;
+ }
+! m_pApplicationEventsObj->AddRef();
+! m_pApplicationEventsObj->Connect(m_pApplication);
+ m_pApplicationEventsObj->m_pCommands = this;
+
+ #ifdef NEVER
+ // Create Debugger event handler
+ CComPtr < IDispatch > pDebugger;
+! if (SUCCEEDED(m_pApplication->get_Debugger(&pDebugger))
+ && pDebugger != NULL)
+ {
+! XDebuggerEventsObj::CreateInstance(&m_pDebuggerEventsObj);
+! m_pDebuggerEventsObj->AddRef();
+! m_pDebuggerEventsObj->Connect(pDebugger);
+ m_pDebuggerEventsObj->m_pCommands = this;
+ }
+ #endif
+
+ // Get settings from registry HKEY_CURRENT_USER\Software\Vim\VisVim
+! HKEY hAppKey = GetAppKey("Vim");
+ if (hAppKey)
+ {
+! HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim");
+ if (hSectionKey)
+ {
+! g_bEnableVim = GetRegistryInt(hSectionKey, "EnableVim",
+ g_bEnableVim);
+! g_bDevStudioEditor = GetRegistryInt(hSectionKey,
+! "DevStudioEditor", g_bDevStudioEditor);
+! g_bNewTabs = GetRegistryInt(hSectionKey, "NewTabs",
+! g_bNewTabs);
+! g_ChangeDir = GetRegistryInt(hSectionKey, "ChangeDir",
+ g_ChangeDir);
+! RegCloseKey(hSectionKey);
+ }
+! RegCloseKey(hAppKey);
+ }
+ }
+
+! void CCommands::UnadviseFromEvents()
+ {
+! ASSERT(m_pApplicationEventsObj != NULL);
+ if (m_pApplicationEventsObj)
+ {
+! m_pApplicationEventsObj->Disconnect(m_pApplication);
+! m_pApplicationEventsObj->Release();
+ m_pApplicationEventsObj = NULL;
+ }
+
+***************
+*** 121,130 ****
+ // unadvise from its events (thus the VERIFY_OK below--see
+ // stdafx.h).
+ CComPtr < IDispatch > pDebugger;
+! VERIFY_OK (m_pApplication->get_Debugger (&pDebugger));
+! ASSERT (pDebugger != NULL);
+! m_pDebuggerEventsObj->Disconnect (pDebugger);
+! m_pDebuggerEventsObj->Release ();
+ m_pDebuggerEventsObj = NULL;
+ }
+ #endif
+--- 124,133 ----
+ // unadvise from its events (thus the VERIFY_OK below--see
+ // stdafx.h).
+ CComPtr < IDispatch > pDebugger;
+! VERIFY_OK(m_pApplication->get_Debugger(&pDebugger));
+! ASSERT(pDebugger != NULL);
+! m_pDebuggerEventsObj->Disconnect(pDebugger);
+! m_pDebuggerEventsObj->Release();
+ m_pDebuggerEventsObj = NULL;
+ }
+ #endif
+***************
+*** 136,156 ****
+
+ // Application events
+
+! HRESULT CCommands::XApplicationEvents::BeforeBuildStart ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::BuildFinish (long nNumErrors, long nNumWarnings)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::BeforeApplicationShutDown ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+--- 139,159 ----
+
+ // Application events
+
+! HRESULT CCommands::XApplicationEvents::BeforeBuildStart()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::BuildFinish(long nNumErrors, long nNumWarnings)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::BeforeApplicationShutDown()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+***************
+*** 158,166 ****
+ // is done.
+ // Vim gets called from here.
+ //
+! HRESULT CCommands::XApplicationEvents::DocumentOpen (IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+
+ if (! g_bEnableVim)
+ // Vim not enabled or empty command line entered
+--- 161,169 ----
+ // is done.
+ // Vim gets called from here.
+ //
+! HRESULT CCommands::XApplicationEvents::DocumentOpen(IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+ if (! g_bEnableVim)
+ // Vim not enabled or empty command line entered
+***************
+*** 169,175 ****
+ // First get the current file name and line number
+
+ // Get the document object
+! CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc (theDocument);
+ if (! pDoc)
+ return S_OK;
+
+--- 172,178 ----
+ // First get the current file name and line number
+
+ // Get the document object
+! CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(theDocument);
+ if (! pDoc)
+ return S_OK;
+
+***************
+*** 177,202 ****
+ long LineNr = -1;
+
+ // Get the document name
+! if (FAILED (pDoc->get_FullName (&FileName)))
+ return S_OK;
+
+ LPDISPATCH pDispSel;
+
+ // Get a selection object dispatch pointer
+! if (SUCCEEDED (pDoc->get_Selection (&pDispSel)))
+ {
+ // Get the selection object
+! CComQIPtr < ITextSelection, &IID_ITextSelection > pSel (pDispSel);
+
+ if (pSel)
+ // Get the selection line number
+! pSel->get_CurrentLine (&LineNr);
+
+! pDispSel->Release ();
+ }
+
+ // Open the file in Vim and position to the current line
+! if (VimOpenFile (FileName, LineNr))
+ {
+ if (! g_bDevStudioEditor)
+ {
+--- 180,205 ----
+ long LineNr = -1;
+
+ // Get the document name
+! if (FAILED(pDoc->get_FullName(&FileName)))
+ return S_OK;
+
+ LPDISPATCH pDispSel;
+
+ // Get a selection object dispatch pointer
+! if (SUCCEEDED(pDoc->get_Selection(&pDispSel)))
+ {
+ // Get the selection object
+! CComQIPtr < ITextSelection, &IID_ITextSelection > pSel(pDispSel);
+
+ if (pSel)
+ // Get the selection line number
+! pSel->get_CurrentLine(&LineNr);
+
+! pDispSel->Release();
+ }
+
+ // Open the file in Vim and position to the current line
+! if (VimOpenFile(FileName, LineNr))
+ {
+ if (! g_bDevStudioEditor)
+ {
+***************
+*** 204,233 ****
+ CComVariant vSaveChanges = dsSaveChangesPrompt;
+ DsSaveStatus Saved;
+
+! pDoc->Close (vSaveChanges, &Saved);
+ }
+ }
+
+ // We're done here
+! SysFreeString (FileName);
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::BeforeDocumentClose (IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::DocumentSave (IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::NewDocument (IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+
+ if (! g_bEnableVim)
+ // Vim not enabled or empty command line entered
+--- 207,236 ----
+ CComVariant vSaveChanges = dsSaveChangesPrompt;
+ DsSaveStatus Saved;
+
+! pDoc->Close(vSaveChanges, &Saved);
+ }
+ }
+
+ // We're done here
+! SysFreeString(FileName);
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::BeforeDocumentClose(IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::DocumentSave(IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::NewDocument(IDispatch * theDocument)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+ if (! g_bEnableVim)
+ // Vim not enabled or empty command line entered
+***************
+*** 235,253 ****
+
+ // First get the current file name and line number
+
+! CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc (theDocument);
+ if (! pDoc)
+ return S_OK;
+
+ BSTR FileName;
+ HRESULT hr;
+
+! hr = pDoc->get_FullName (&FileName);
+! if (FAILED (hr))
+ return S_OK;
+
+ // Open the file in Vim and position to the current line
+! if (VimOpenFile (FileName, 0))
+ {
+ if (! g_bDevStudioEditor)
+ {
+--- 238,256 ----
+
+ // First get the current file name and line number
+
+! CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(theDocument);
+ if (! pDoc)
+ return S_OK;
+
+ BSTR FileName;
+ HRESULT hr;
+
+! hr = pDoc->get_FullName(&FileName);
+! if (FAILED(hr))
+ return S_OK;
+
+ // Open the file in Vim and position to the current line
+! if (VimOpenFile(FileName, 0))
+ {
+ if (! g_bDevStudioEditor)
+ {
+***************
+*** 255,303 ****
+ CComVariant vSaveChanges = dsSaveChangesPrompt;
+ DsSaveStatus Saved;
+
+! pDoc->Close (vSaveChanges, &Saved);
+ }
+ }
+
+! SysFreeString (FileName);
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WindowActivate (IDispatch * theWindow)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WindowDeactivate (IDispatch * theWindow)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WorkspaceOpen ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WorkspaceClose ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::NewWorkspace ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+ // Debugger event
+
+! HRESULT CCommands::XDebuggerEvents::BreakpointHit (IDispatch * pBreakpoint)
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+ return S_OK;
+ }
+
+--- 258,306 ----
+ CComVariant vSaveChanges = dsSaveChangesPrompt;
+ DsSaveStatus Saved;
+
+! pDoc->Close(vSaveChanges, &Saved);
+ }
+ }
+
+! SysFreeString(FileName);
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WindowActivate(IDispatch * theWindow)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WindowDeactivate(IDispatch * theWindow)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WorkspaceOpen()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::WorkspaceClose()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+! HRESULT CCommands::XApplicationEvents::NewWorkspace()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+ // Debugger event
+
+! HRESULT CCommands::XDebuggerEvents::BreakpointHit(IDispatch * pBreakpoint)
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+ return S_OK;
+ }
+
+***************
+*** 308,324 ****
+ class CMainDialog : public CDialog
+ {
+ public:
+! CMainDialog (CWnd * pParent = NULL); // Standard constructor
+
+ //{{AFX_DATA(CMainDialog)
+ enum { IDD = IDD_ADDINMAIN };
+ int m_ChangeDir;
+ BOOL m_bDevStudioEditor;
+ //}}AFX_DATA
+
+ //{{AFX_VIRTUAL(CMainDialog)
+ protected:
+! virtual void DoDataExchange (CDataExchange * pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+ protected:
+--- 311,328 ----
+ class CMainDialog : public CDialog
+ {
+ public:
+! CMainDialog(CWnd * pParent = NULL); // Standard constructor
+
+ //{{AFX_DATA(CMainDialog)
+ enum { IDD = IDD_ADDINMAIN };
+ int m_ChangeDir;
+ BOOL m_bDevStudioEditor;
++ BOOL m_bNewTabs;
+ //}}AFX_DATA
+
+ //{{AFX_VIRTUAL(CMainDialog)
+ protected:
+! virtual void DoDataExchange(CDataExchange * pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+ protected:
+***************
+*** 326,425 ****
+ afx_msg void OnEnable();
+ afx_msg void OnDisable();
+ //}}AFX_MSG
+! DECLARE_MESSAGE_MAP ()
+ };
+
+! CMainDialog::CMainDialog (CWnd * pParent /* =NULL */ )
+! : CDialog (CMainDialog::IDD, pParent)
+ {
+ //{{AFX_DATA_INIT(CMainDialog)
+ m_ChangeDir = -1;
+ m_bDevStudioEditor = FALSE;
+ //}}AFX_DATA_INIT
+ }
+
+! void CMainDialog::DoDataExchange (CDataExchange * pDX)
+ {
+! CDialog::DoDataExchange (pDX);
+ //{{AFX_DATA_MAP(CMainDialog)
+ DDX_Radio(pDX, IDC_CD_SOURCE_PATH, m_ChangeDir);
+! DDX_Check (pDX, IDC_DEVSTUDIO_EDITOR, m_bDevStudioEditor);
+ //}}AFX_DATA_MAP
+ }
+
+! BEGIN_MESSAGE_MAP (CMainDialog, CDialog)
+ //{{AFX_MSG_MAP(CMainDialog)
+ //}}AFX_MSG_MAP
+! END_MESSAGE_MAP ()
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ // CCommands methods
+
+! STDMETHODIMP CCommands::VisVimDialog ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+
+ // Use m_pApplication to access the Developer Studio Application
+ // object,
+ // and VERIFY_OK to see error strings in DEBUG builds of your add-in
+ // (see stdafx.h)
+
+! VERIFY_OK (m_pApplication->EnableModeless (VARIANT_FALSE));
+
+ CMainDialog Dlg;
+
+ Dlg.m_bDevStudioEditor = g_bDevStudioEditor;
+ Dlg.m_ChangeDir = g_ChangeDir;
+! if (Dlg.DoModal () == IDOK)
+ {
+ g_bDevStudioEditor = Dlg.m_bDevStudioEditor;
+ g_ChangeDir = Dlg.m_ChangeDir;
+
+ // Save settings to registry HKEY_CURRENT_USER\Software\Vim\VisVim
+! HKEY hAppKey = GetAppKey ("Vim");
+ if (hAppKey)
+ {
+! HKEY hSectionKey = GetSectionKey (hAppKey, "VisVim");
+ if (hSectionKey)
+ {
+! WriteRegistryInt (hSectionKey, "DevStudioEditor",
+ g_bDevStudioEditor);
+! WriteRegistryInt (hSectionKey, "ChangeDir", g_ChangeDir);
+! RegCloseKey (hSectionKey);
+ }
+! RegCloseKey (hAppKey);
+ }
+ }
+
+! VERIFY_OK (m_pApplication->EnableModeless (VARIANT_TRUE));
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimEnable ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+! VimSetEnableState (true);
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimDisable ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+! VimSetEnableState (false);
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimToggle ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+! VimSetEnableState (! g_bEnableVim);
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimLoad ()
+ {
+! AFX_MANAGE_STATE (AfxGetStaticModuleState ());
+
+ // Use m_pApplication to access the Developer Studio Application object,
+ // and VERIFY_OK to see error strings in DEBUG builds of your add-in
+--- 330,435 ----
+ afx_msg void OnEnable();
+ afx_msg void OnDisable();
+ //}}AFX_MSG
+! DECLARE_MESSAGE_MAP()
+ };
+
+! CMainDialog::CMainDialog(CWnd * pParent /* =NULL */ )
+! : CDialog(CMainDialog::IDD, pParent)
+ {
+ //{{AFX_DATA_INIT(CMainDialog)
+ m_ChangeDir = -1;
+ m_bDevStudioEditor = FALSE;
++ m_bNewTabs = FALSE;
+ //}}AFX_DATA_INIT
+ }
+
+! void CMainDialog::DoDataExchange(CDataExchange * pDX)
+ {
+! CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CMainDialog)
+ DDX_Radio(pDX, IDC_CD_SOURCE_PATH, m_ChangeDir);
+! DDX_Check(pDX, IDC_DEVSTUDIO_EDITOR, m_bDevStudioEditor);
+! DDX_Check(pDX, IDC_NEW_TABS, m_bNewTabs);
+ //}}AFX_DATA_MAP
+ }
+
+! BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
+ //{{AFX_MSG_MAP(CMainDialog)
+ //}}AFX_MSG_MAP
+! END_MESSAGE_MAP()
+
+
+ /////////////////////////////////////////////////////////////////////////////
+ // CCommands methods
+
+! STDMETHODIMP CCommands::VisVimDialog()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+ // Use m_pApplication to access the Developer Studio Application
+ // object,
+ // and VERIFY_OK to see error strings in DEBUG builds of your add-in
+ // (see stdafx.h)
+
+! VERIFY_OK(m_pApplication->EnableModeless(VARIANT_FALSE));
+
+ CMainDialog Dlg;
+
+ Dlg.m_bDevStudioEditor = g_bDevStudioEditor;
++ Dlg.m_bNewTabs = g_bNewTabs;
+ Dlg.m_ChangeDir = g_ChangeDir;
+! if (Dlg.DoModal() == IDOK)
+ {
+ g_bDevStudioEditor = Dlg.m_bDevStudioEditor;
++ g_bNewTabs = Dlg.m_bNewTabs;
+ g_ChangeDir = Dlg.m_ChangeDir;
+
+ // Save settings to registry HKEY_CURRENT_USER\Software\Vim\VisVim
+! HKEY hAppKey = GetAppKey("Vim");
+ if (hAppKey)
+ {
+! HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim");
+ if (hSectionKey)
+ {
+! WriteRegistryInt(hSectionKey, "DevStudioEditor",
+ g_bDevStudioEditor);
+! WriteRegistryInt(hSectionKey, "NewTabs",
+! g_bNewTabs);
+! WriteRegistryInt(hSectionKey, "ChangeDir", g_ChangeDir);
+! RegCloseKey(hSectionKey);
+ }
+! RegCloseKey(hAppKey);
+ }
+ }
+
+! VERIFY_OK(m_pApplication->EnableModeless(VARIANT_TRUE));
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimEnable()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+! VimSetEnableState(true);
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimDisable()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+! VimSetEnableState(false);
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimToggle()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+! VimSetEnableState(! g_bEnableVim);
+ return S_OK;
+ }
+
+! STDMETHODIMP CCommands::VisVimLoad()
+ {
+! AFX_MANAGE_STATE(AfxGetStaticModuleState());
+
+ // Use m_pApplication to access the Developer Studio Application object,
+ // and VERIFY_OK to see error strings in DEBUG builds of your add-in
+***************
+*** 430,436 ****
+ CComPtr < IDispatch > pDispDoc, pDispSel;
+
+ // Get a document object dispatch pointer
+! VERIFY_OK (m_pApplication->get_ActiveDocument (&pDispDoc));
+ if (! pDispDoc)
+ return S_OK;
+
+--- 440,446 ----
+ CComPtr < IDispatch > pDispDoc, pDispSel;
+
+ // Get a document object dispatch pointer
+! VERIFY_OK(m_pApplication->get_ActiveDocument(&pDispDoc));
+ if (! pDispDoc)
+ return S_OK;
+
+***************
+*** 438,467 ****
+ long LineNr = -1;
+
+ // Get the document object
+! CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc (pDispDoc);
+
+ if (! pDoc)
+ return S_OK;
+
+ // Get the document name
+! if (FAILED (pDoc->get_FullName (&FileName)))
+ return S_OK;
+
+ // Get a selection object dispatch pointer
+! if (SUCCEEDED (pDoc->get_Selection (&pDispSel)))
+ {
+ // Get the selection object
+! CComQIPtr < ITextSelection, &IID_ITextSelection > pSel (pDispSel);
+
+ if (pSel)
+ // Get the selection line number
+! pSel->get_CurrentLine (&LineNr);
+ }
+
+ // Open the file in Vim
+! VimOpenFile (FileName, LineNr);
+
+! SysFreeString (FileName);
+ return S_OK;
+ }
+
+--- 448,477 ----
+ long LineNr = -1;
+
+ // Get the document object
+! CComQIPtr < ITextDocument, &IID_ITextDocument > pDoc(pDispDoc);
+
+ if (! pDoc)
+ return S_OK;
+
+ // Get the document name
+! if (FAILED(pDoc->get_FullName(&FileName)))
+ return S_OK;
+
+ // Get a selection object dispatch pointer
+! if (SUCCEEDED(pDoc->get_Selection(&pDispSel)))
+ {
+ // Get the selection object
+! CComQIPtr < ITextSelection, &IID_ITextSelection > pSel(pDispSel);
+
+ if (pSel)
+ // Get the selection line number
+! pSel->get_CurrentLine(&LineNr);
+ }
+
+ // Open the file in Vim
+! VimOpenFile(FileName, LineNr);
+
+! SysFreeString(FileName);
+ return S_OK;
+ }
+
+***************
+*** 472,487 ****
+
+ // Set the enable state and save to registry
+ //
+! static void VimSetEnableState (BOOL bEnableState)
+ {
+ g_bEnableVim = bEnableState;
+! HKEY hAppKey = GetAppKey ("Vim");
+ if (hAppKey)
+ {
+! HKEY hSectionKey = GetSectionKey (hAppKey, "VisVim");
+ if (hSectionKey)
+! WriteRegistryInt (hSectionKey, "EnableVim", g_bEnableVim);
+! RegCloseKey (hAppKey);
+ }
+ }
+
+--- 482,497 ----
+
+ // Set the enable state and save to registry
+ //
+! static void VimSetEnableState(BOOL bEnableState)
+ {
+ g_bEnableVim = bEnableState;
+! HKEY hAppKey = GetAppKey("Vim");
+ if (hAppKey)
+ {
+! HKEY hSectionKey = GetSectionKey(hAppKey, "VisVim");
+ if (hSectionKey)
+! WriteRegistryInt(hSectionKey, "EnableVim", g_bEnableVim);
+! RegCloseKey(hAppKey);
+ }
+ }
+
+***************
+*** 490,496 ****
+ // letter.
+ // 'LineNr' must contain a valid line number or 0, e. g. for a new file
+ //
+! static BOOL VimOpenFile (BSTR& FileName, long LineNr)
+ {
+
+ // OLE automation object for com. with Vim
+--- 500,506 ----
+ // letter.
+ // 'LineNr' must contain a valid line number or 0, e. g. for a new file
+ //
+! static BOOL VimOpenFile(BSTR& FileName, long LineNr)
+ {
+
+ // OLE automation object for com. with Vim
+***************
+*** 507,513 ****
+ // Get a dispatch id for the SendKeys method of Vim;
+ // enables connection to Vim if necessary
+ DISPID DispatchId;
+! DispatchId = VimGetDispatchId (VimOle, "SendKeys");
+ if (! DispatchId)
+ // OLE error, can't obtain dispatch id
+ goto OleError;
+--- 517,523 ----
+ // Get a dispatch id for the SendKeys method of Vim;
+ // enables connection to Vim if necessary
+ DISPID DispatchId;
+! DispatchId = VimGetDispatchId(VimOle, "SendKeys");
+ if (! DispatchId)
+ // OLE error, can't obtain dispatch id
+ goto OleError;
+***************
+*** 525,544 ****
+ #ifdef SINGLE_WINDOW
+ // Update the current file in Vim if it has been modified.
+ // Disabled, because it could write the file when you don't want to.
+! sprintf (VimCmd + 2, ":up\n");
+ #endif
+! if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+ goto OleError;
+
+ // Change Vim working directory to where the file is if desired
+ if (g_ChangeDir != CD_NONE)
+! VimChangeDir (VimOle, DispatchId, FileName);
+
+ // Make Vim open the file.
+ // In the filename convert all \ to /, put a \ before a space.
+! sprintf(VimCmd, ":drop ");
+ sprintf(FileNameTmp, "%S", (char *)FileName);
+- s = VimCmd + 6;
+ for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
+ ++p)
+ if (*p == '\\')
+--- 535,562 ----
+ #ifdef SINGLE_WINDOW
+ // Update the current file in Vim if it has been modified.
+ // Disabled, because it could write the file when you don't want to.
+! sprintf(VimCmd + 2, ":up\n");
+ #endif
+! if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)))
+ goto OleError;
+
+ // Change Vim working directory to where the file is if desired
+ if (g_ChangeDir != CD_NONE)
+! VimChangeDir(VimOle, DispatchId, FileName);
+
+ // Make Vim open the file.
+ // In the filename convert all \ to /, put a \ before a space.
+! if (g_bNewTabs)
+! {
+! sprintf(VimCmd, ":tab drop ");
+! s = VimCmd + 11;
+! }
+! else
+! {
+! sprintf(VimCmd, ":drop ");
+! s = VimCmd + 6;
+! }
+ sprintf(FileNameTmp, "%S", (char *)FileName);
+ for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
+ ++p)
+ if (*p == '\\')
+***************
+*** 552,571 ****
+ *s++ = '\n';
+ *s = '\0';
+
+! if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+ goto OleError;
+
+ if (LineNr > 0)
+ {
+ // Goto line
+! sprintf (VimCmd, ":%d\n", LineNr);
+! if (! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf)))
+ goto OleError;
+ }
+
+ // Make Vim come to the foreground
+! if (! VimOle.Method ("SetForeground"))
+! VimOle.ErrDiag ();
+
+ // We're done
+ return true;
+--- 570,589 ----
+ *s++ = '\n';
+ *s = '\0';
+
+! if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)))
+ goto OleError;
+
+ if (LineNr > 0)
+ {
+ // Goto line
+! sprintf(VimCmd, ":%d\n", LineNr);
+! if (! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf)))
+ goto OleError;
+ }
+
+ // Make Vim come to the foreground
+! if (! VimOle.Method("SetForeground"))
+! VimOle.ErrDiag();
+
+ // We're done
+ return true;
+***************
+*** 573,579 ****
+ OleError:
+ // There was an OLE error
+ // Check if it's the "unknown class string" error
+! VimErrDiag (VimOle);
+ return false;
+ }
+
+--- 591,597 ----
+ OleError:
+ // There was an OLE error
+ // Check if it's the "unknown class string" error
+! VimErrDiag(VimOle);
+ return false;
+ }
+
+***************
+*** 581,598 ****
+ // Create the Vim OLE object if necessary
+ // Returns a valid dispatch id or null on error
+ //
+! static DISPID VimGetDispatchId (COleAutomationControl& VimOle, char* Method)
+ {
+ // Initialize Vim OLE connection if not already done
+! if (! VimOle.IsCreated ())
+ {
+! if (! VimOle.CreateObject ("Vim.Application"))
+ return NULL;
+ }
+
+ // Get the dispatch id for the SendKeys method.
+ // By doing this, we are checking if Vim is still there...
+! DISPID DispatchId = VimOle.GetDispatchId ("SendKeys");
+ if (! DispatchId)
+ {
+ // We can't get a dispatch id.
+--- 599,616 ----
+ // Create the Vim OLE object if necessary
+ // Returns a valid dispatch id or null on error
+ //
+! static DISPID VimGetDispatchId(COleAutomationControl& VimOle, char* Method)
+ {
+ // Initialize Vim OLE connection if not already done
+! if (! VimOle.IsCreated())
+ {
+! if (! VimOle.CreateObject("Vim.Application"))
+ return NULL;
+ }
+
+ // Get the dispatch id for the SendKeys method.
+ // By doing this, we are checking if Vim is still there...
+! DISPID DispatchId = VimOle.GetDispatchId("SendKeys");
+ if (! DispatchId)
+ {
+ // We can't get a dispatch id.
+***************
+*** 604,615 ****
+ // should not be kept long enough to allow the user to terminate Vim
+ // to avoid memory corruption (why the heck is there no system garbage
+ // collection for those damned OLE memory chunks???).
+! VimOle.DeleteObject ();
+! if (! VimOle.CreateObject ("Vim.Application"))
+ // If this create fails, it's time for an error msg
+ return NULL;
+
+! if (! (DispatchId = VimOle.GetDispatchId ("SendKeys")))
+ // There is something wrong...
+ return NULL;
+ }
+--- 622,633 ----
+ // should not be kept long enough to allow the user to terminate Vim
+ // to avoid memory corruption (why the heck is there no system garbage
+ // collection for those damned OLE memory chunks???).
+! VimOle.DeleteObject();
+! if (! VimOle.CreateObject("Vim.Application"))
+ // If this create fails, it's time for an error msg
+ return NULL;
+
+! if (! (DispatchId = VimOle.GetDispatchId("SendKeys")))
+ // There is something wrong...
+ return NULL;
+ }
+***************
+*** 620,639 ****
+ // Output an error message for an OLE error
+ // Check on the classstring error, which probably means Vim wasn't registered.
+ //
+! static void VimErrDiag (COleAutomationControl& VimOle)
+ {
+! SCODE sc = GetScode (VimOle.GetResult ());
+ if (sc == CO_E_CLASSSTRING)
+ {
+ char Buf[256];
+! sprintf (Buf, "There is no registered OLE automation server named "
+ "\"Vim.Application\".\n"
+ "Use the OLE-enabled version of Vim with VisVim and "
+ "make sure to register Vim by running \"vim -register\".");
+! MessageBox (NULL, Buf, "OLE Error", MB_OK);
+ }
+ else
+! VimOle.ErrDiag ();
+ }
+
+ // Change directory to the directory the file 'FileName' is in or it's parent
+--- 638,657 ----
+ // Output an error message for an OLE error
+ // Check on the classstring error, which probably means Vim wasn't registered.
+ //
+! static void VimErrDiag(COleAutomationControl& VimOle)
+ {
+! SCODE sc = GetScode(VimOle.GetResult());
+ if (sc == CO_E_CLASSSTRING)
+ {
+ char Buf[256];
+! sprintf(Buf, "There is no registered OLE automation server named "
+ "\"Vim.Application\".\n"
+ "Use the OLE-enabled version of Vim with VisVim and "
+ "make sure to register Vim by running \"vim -register\".");
+! MessageBox(NULL, Buf, "OLE Error", MB_OK);
+ }
+ else
+! VimOle.ErrDiag();
+ }
+
+ // Change directory to the directory the file 'FileName' is in or it's parent
+***************
+*** 644,650 ****
+ // CD_SOURCE_PATH
+ // CD_SOURCE_PARENT
+ //
+! static void VimChangeDir (COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName)
+ {
+ // Do a :cd first
+
+--- 662,668 ----
+ // CD_SOURCE_PATH
+ // CD_SOURCE_PARENT
+ //
+! static void VimChangeDir(COleAutomationControl& VimOle, DISPID DispatchId, BSTR& FileName)
+ {
+ // Do a :cd first
+
+***************
+*** 655,661 ****
+ char DirUnix[_MAX_DIR * 2];
+ char *s, *t;
+
+! _splitpath (StrFileName, Drive, Dir, NULL, NULL);
+
+ // Convert to Unix path name format, escape spaces.
+ t = DirUnix;
+--- 673,679 ----
+ char DirUnix[_MAX_DIR * 2];
+ char *s, *t;
+
+! _splitpath(StrFileName, Drive, Dir, NULL, NULL);
+
+ // Convert to Unix path name format, escape spaces.
+ t = DirUnix;
+***************
+*** 676,694 ****
+ OLECHAR Buf[MAX_OLE_STR];
+ char VimCmd[MAX_OLE_STR];
+
+! sprintf (VimCmd, ":cd %s%s%s\n", Drive, DirUnix,
+ g_ChangeDir == CD_SOURCE_PARENT && DirUnix[1] ? ".." : "");
+! VimOle.Method (DispatchId, "s", TO_OLE_STR_BUF (VimCmd, Buf));
+ }
+
+ #ifdef _DEBUG
+ // Print out a debug message
+ //
+! static void DebugMsg (char* Msg, char* Arg)
+ {
+ char Buf[400];
+! sprintf (Buf, Msg, Arg);
+! AfxMessageBox (Buf);
+ }
+ #endif
+-
+--- 694,711 ----
+ OLECHAR Buf[MAX_OLE_STR];
+ char VimCmd[MAX_OLE_STR];
+
+! sprintf(VimCmd, ":cd %s%s%s\n", Drive, DirUnix,
+ g_ChangeDir == CD_SOURCE_PARENT && DirUnix[1] ? ".." : "");
+! VimOle.Method(DispatchId, "s", TO_OLE_STR_BUF(VimCmd, Buf));
+ }
+
+ #ifdef _DEBUG
+ // Print out a debug message
+ //
+! static void DebugMsg(char* Msg, char* Arg)
+ {
+ char Buf[400];
+! sprintf(Buf, Msg, Arg);
+! AfxMessageBox(Buf);
+ }
+ #endif
+*** ../vim-7.2.149/src/VisVim/Resource.h Sun Jun 13 19:17:32 2004
+--- src/VisVim/Resource.h Mon Mar 2 00:39:21 2009
+***************
+*** 16,21 ****
+--- 16,22 ----
+ #define IDC_CD_SOURCE_PATH 1001
+ #define IDC_CD_SOURCE_PARENT 1002
+ #define IDC_CD_NONE 1003
++ #define IDC_NEW_TABS 1004
+
+ // Next default values for new objects
+ //
+*** ../vim-7.2.149/src/VisVim/VisVim.rc Sun Jun 13 19:38:03 2004
+--- src/VisVim/VisVim.rc Mon Mar 2 00:40:19 2009
+***************
+*** 122,127 ****
+--- 122,130 ----
+ CONTROL "&Open file in DevStudio editor simultaneously",
+ IDC_DEVSTUDIO_EDITOR,"Button",BS_AUTOCHECKBOX | WS_GROUP |
+ WS_TABSTOP,7,7,153,10
++ CONTROL "Open files in new tabs",
++ IDC_NEW_TABS,"Button",BS_AUTOCHECKBOX | WS_GROUP |
++ WS_TABSTOP,7,21,153,10
+ GROUPBOX "Current directory",IDC_STATIC,7,35,164,58,WS_GROUP
+ CONTROL "Set to &source file path",IDC_CD_SOURCE_PATH,"Button",
+ BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,17,49,85,10
+*** ../vim-7.2.149/src/version.c Wed Apr 22 12:53:31 2009
+--- src/version.c Wed Apr 22 13:04:32 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 150,
+ /**/
+
+--
+A poem: read aloud:
+
+<> !*''# Waka waka bang splat tick tick hash,
+^"`$$- Caret quote back-tick dollar dollar dash,
+!*=@$_ Bang splat equal at dollar under-score,
+%*<> ~#4 Percent splat waka waka tilde number four,
+&[]../ Ampersand bracket bracket dot dot slash,
+|{,,SYSTEM HALTED Vertical-bar curly-bracket comma comma CRASH.
+
+Fred Bremmer and Steve Kroese (Calvin College & Seminary of Grand Rapids, MI.)
+
+ /// 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.151 b/source/ap/vim/patches/7.2.151
new file mode 100644
index 000000000..214b76091
--- /dev/null
+++ b/source/ap/vim/patches/7.2.151
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.151
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.151
+Problem: ":hist a" doesn't work like ":hist all" as the docs suggest.
+Solution: Make ":hist a" and ":hist al" work. (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.150/src/ex_getln.c Wed Mar 18 12:50:58 2009
+--- src/ex_getln.c Sun Apr 12 13:36:06 2009
+***************
+*** 5686,5692 ****
+ histype1 = get_histtype(arg);
+ if (histype1 == -1)
+ {
+! if (STRICMP(arg, "all") == 0)
+ {
+ histype1 = 0;
+ histype2 = HIST_COUNT-1;
+--- 5686,5692 ----
+ histype1 = get_histtype(arg);
+ if (histype1 == -1)
+ {
+! if (STRNICMP(arg, "all", STRLEN(arg)) == 0)
+ {
+ histype1 = 0;
+ histype2 = HIST_COUNT-1;
+*** ../vim-7.2.150/src/version.c Wed Apr 22 13:06:11 2009
+--- src/version.c Wed Apr 22 13:49:41 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 151,
+ /**/
+
+--
+I'm sure that I asked CBuilder to do a "full" install. Looks like I got
+a "fool" install, instead. Charles E Campbell, Jr, PhD
+
+
+ /// 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.152 b/source/ap/vim/patches/7.2.152
new file mode 100644
index 000000000..107a0a4bf
--- /dev/null
+++ b/source/ap/vim/patches/7.2.152
@@ -0,0 +1,104 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.152
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.152
+Problem: When using "silent echo x" inside ":redir" a next echo may start
+ halfway the line. (Tony Mechelynck, Dennis Benzinger)
+Solution: Reset msg_col after redirecting silently.
+Files: src/ex_docmd.c, src/message.c, src/proto/message.pro
+
+
+*** ../vim-7.2.151/src/ex_docmd.c Wed Mar 18 12:50:58 2009
+--- src/ex_docmd.c Wed Apr 22 11:57:49 2009
+***************
+*** 2699,2704 ****
+--- 2699,2709 ----
+ /* Restore msg_scroll, it's set by file I/O commands, even when no
+ * message is actually displayed. */
+ msg_scroll = save_msg_scroll;
++
++ /* "silent reg" or "silent echo x" inside "redir" leaves msg_col
++ * somewhere in the line. Put it back in the first column. */
++ if (redirecting())
++ msg_col = 0;
+ }
+
+ #ifdef HAVE_SANDBOX
+*** ../vim-7.2.151/src/message.c Tue Feb 24 04:36:50 2009
+--- src/message.c Sun Apr 12 14:08:25 2009
+***************
+*** 3023,3033 ****
+ if (*p_vfile != NUL)
+ verbose_write(s, maxlen);
+
+! if (redir_fd != NULL
+! #ifdef FEAT_EVAL
+! || redir_reg || redir_vname
+! #endif
+! )
+ {
+ /* If the string doesn't start with CR or NL, go to msg_col */
+ if (*s != '\n' && *s != '\r')
+--- 3023,3029 ----
+ if (*p_vfile != NUL)
+ verbose_write(s, maxlen);
+
+! if (redirecting())
+ {
+ /* If the string doesn't start with CR or NL, go to msg_col */
+ if (*s != '\n' && *s != '\r')
+***************
+*** 3074,3079 ****
+--- 3070,3085 ----
+ }
+ }
+
++ int
++ redirecting()
++ {
++ return redir_fd != NULL
++ #ifdef FEAT_EVAL
++ || redir_reg || redir_vname
++ #endif
++ ;
++ }
++
+ /*
+ * Before giving verbose message.
+ * Must always be called paired with verbose_leave()!
+*** ../vim-7.2.151/src/proto/message.pro Sat May 5 19:35:34 2007
+--- src/proto/message.pro Sun Apr 12 14:08:50 2009
+***************
+*** 54,59 ****
+--- 54,60 ----
+ void msg_clr_cmdline __ARGS((void));
+ int msg_end __ARGS((void));
+ void msg_check __ARGS((void));
++ int redirecting __ARGS((void));
+ void verbose_enter __ARGS((void));
+ void verbose_leave __ARGS((void));
+ void verbose_enter_scroll __ARGS((void));
+*** ../vim-7.2.151/src/version.c Wed Apr 22 13:50:14 2009
+--- src/version.c Wed Apr 22 14:40:22 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 152,
+ /**/
+
+--
+Q: How does a UNIX Guru pick up a girl?
+A: look; grep; which; eval; nice; uname; talk; date;
+
+ /// 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.153 b/source/ap/vim/patches/7.2.153
new file mode 100644
index 000000000..79b2a0778
--- /dev/null
+++ b/source/ap/vim/patches/7.2.153
@@ -0,0 +1,97 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.153
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.153
+Problem: Memory leak for ":recover empty_dir/".
+Solution: Free files[] when it becomes empty. (Dominique Pelle)
+Files: src/memline.c
+
+
+*** ../vim-7.2.152/src/memline.c Sun Jul 13 19:40:43 2008
+--- src/memline.c Wed Apr 22 11:48:35 2009
+***************
+*** 1554,1563 ****
+ for (i = 0; i < num_files; ++i)
+ if (fullpathcmp(p, files[i], TRUE) & FPC_SAME)
+ {
+ vim_free(files[i]);
+! --num_files;
+! for ( ; i < num_files; ++i)
+! files[i] = files[i + 1];
+ }
+ }
+ if (nr > 0)
+--- 1554,1568 ----
+ for (i = 0; i < num_files; ++i)
+ if (fullpathcmp(p, files[i], TRUE) & FPC_SAME)
+ {
++ /* Remove the name from files[i]. Move further entries
++ * down. When the array becomes empty free it here, since
++ * FreeWild() won't be called below. */
+ vim_free(files[i]);
+! if (--num_files == 0)
+! vim_free(files);
+! else
+! for ( ; i < num_files; ++i)
+! files[i] = files[i + 1];
+ }
+ }
+ if (nr > 0)
+***************
+*** 3522,3528 ****
+ if (errno == EINVAL || errno == ENOENT)
+ {
+ /* Found non-symlink or not existing file, stop here.
+! * When at the first level use the unmodifed name, skip the
+ * call to vim_FullName(). */
+ if (depth == 1)
+ return FAIL;
+--- 3527,3533 ----
+ if (errno == EINVAL || errno == ENOENT)
+ {
+ /* Found non-symlink or not existing file, stop here.
+! * When at the first level use the unmodified name, skip the
+ * call to vim_FullName(). */
+ if (depth == 1)
+ return FAIL;
+***************
+*** 4560,4566 ****
+ buf->b_ml.ml_chunksize + curix,
+ (buf->b_ml.ml_usedchunks - curix) *
+ sizeof(chunksize_T));
+! /* Compute length of first half of lines in the splitted chunk */
+ size = 0;
+ linecnt = 0;
+ while (curline < buf->b_ml.ml_line_count
+--- 4568,4574 ----
+ buf->b_ml.ml_chunksize + curix,
+ (buf->b_ml.ml_usedchunks - curix) *
+ sizeof(chunksize_T));
+! /* Compute length of first half of lines in the split chunk */
+ size = 0;
+ linecnt = 0;
+ while (curline < buf->b_ml.ml_line_count
+*** ../vim-7.2.152/src/version.c Wed Apr 22 14:42:26 2009
+--- src/version.c Wed Apr 22 15:34:18 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 153,
+ /**/
+
+--
+Windows
+M!uqoms
+
+ /// 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.154 b/source/ap/vim/patches/7.2.154
new file mode 100644
index 000000000..732890327
--- /dev/null
+++ b/source/ap/vim/patches/7.2.154
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.154
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.154 (after 7.2.132)
+Problem: ":cd" is still possible in a SwapExists autocmd.
+Solution: Set allbuf_lock in do_swapexists().
+Files: src/memline.c
+
+
+*** ../vim-7.2.153/src/memline.c Wed Apr 22 15:37:12 2009
+--- src/memline.c Wed Apr 22 15:54:48 2009
+***************
+*** 3771,3778 ****
+ set_vim_var_string(VV_SWAPCHOICE, NULL, -1);
+
+ /* Trigger SwapExists autocommands with <afile> set to the file being
+! * edited. */
+ apply_autocmds(EVENT_SWAPEXISTS, buf->b_fname, NULL, FALSE, NULL);
+
+ set_vim_var_string(VV_SWAPNAME, NULL, -1);
+
+--- 3771,3780 ----
+ set_vim_var_string(VV_SWAPCHOICE, NULL, -1);
+
+ /* Trigger SwapExists autocommands with <afile> set to the file being
+! * edited. Disallow changing directory here. */
+! ++allbuf_lock;
+ apply_autocmds(EVENT_SWAPEXISTS, buf->b_fname, NULL, FALSE, NULL);
++ --allbuf_lock;
+
+ set_vim_var_string(VV_SWAPNAME, NULL, -1);
+
+***************
+*** 3798,3803 ****
+--- 3800,3806 ----
+ *
+ * Note: If BASENAMELEN is not correct, you will get error messages for
+ * not being able to open the swapfile
++ * Note: May trigger SwapExists autocmd, pointers may change!
+ */
+ static char_u *
+ findswapname(buf, dirp, old_fname)
+*** ../vim-7.2.153/src/version.c Wed Apr 22 15:37:12 2009
+--- src/version.c Wed Apr 22 15:55:48 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 154,
+ /**/
+
+--
+ARTHUR: Be quiet!
+DENNIS: Well you can't expect to wield supreme executive power just 'cause
+ some watery tart threw a sword at you!
+ARTHUR: Shut up!
+DENNIS: I mean, if I went around sayin' I was an empereror just because some
+ moistened bint had lobbed a scimitar at me they'd put me away!
+ 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.155 b/source/ap/vim/patches/7.2.155
new file mode 100644
index 000000000..00b294df5
--- /dev/null
+++ b/source/ap/vim/patches/7.2.155
@@ -0,0 +1,45 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.155
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.155
+Problem: Memory leak in ":function /pat".
+Solution: Free the memory. (Dominique Pelle)
+Files: src/eval.c
+
+
+*** ../vim-7.2.154/src/eval.c Wed Apr 22 12:53:31 2009
+--- src/eval.c Wed Apr 22 16:04:34 2009
+***************
+*** 19720,19725 ****
+--- 19720,19726 ----
+ list_func_head(fp, FALSE);
+ }
+ }
++ vim_free(regmatch.regprog);
+ }
+ }
+ if (*p == '/')
+*** ../vim-7.2.154/src/version.c Wed Apr 22 15:56:27 2009
+--- src/version.c Wed Apr 22 16:07:27 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 155,
+ /**/
+
+--
+Q: How many hardware engineers does it take to change a lightbulb?
+A: None. We'll fix it in software.
+
+ /// 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.156 b/source/ap/vim/patches/7.2.156
new file mode 100644
index 000000000..59bb2e9e1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.156
@@ -0,0 +1,181 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.156
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.156 (after 7.2.143)
+Problem: No completion for :scscope and :lcscope commands.
+Solution: Implement the completion. (Dominique Pelle)
+Files: src/if_cscope.c, src/ex_docmd.c, src/proto/if_cscope.pro
+
+
+*** ../vim-7.2.155/src/if_cscope.c Wed Mar 18 14:30:46 2009
+--- src/if_cscope.c Wed Apr 22 11:57:49 2009
+***************
+*** 98,103 ****
+--- 98,104 ----
+ static enum
+ {
+ EXP_CSCOPE_SUBCMD, /* expand ":cscope" sub-commands */
++ EXP_SCSCOPE_SUBCMD, /* expand ":scscope" sub-commands */
+ EXP_CSCOPE_FIND, /* expand ":cscope find" arguments */
+ EXP_CSCOPE_KILL /* expand ":cscope kill" arguments */
+ } expand_what;
+***************
+*** 112,123 ****
+--- 113,135 ----
+ expand_T *xp;
+ int idx;
+ {
++ int current_idx;
++ int i;
++
+ switch (expand_what)
+ {
+ case EXP_CSCOPE_SUBCMD:
+ /* Complete with sub-commands of ":cscope":
+ * add, find, help, kill, reset, show */
+ return (char_u *)cs_cmds[idx].name;
++ case EXP_SCSCOPE_SUBCMD:
++ /* Complete with sub-commands of ":scscope": same sub-commands as
++ * ":cscope" but skip commands which don't support split windows */
++ for (i = 0, current_idx = 0; cs_cmds[i].name != NULL; i++)
++ if (cs_cmds[i].cansplit)
++ if (current_idx++ == idx)
++ break;
++ return (char_u *)cs_cmds[i].name;
+ case EXP_CSCOPE_FIND:
+ {
+ const char *query_type[] =
+***************
+*** 133,147 ****
+ }
+ case EXP_CSCOPE_KILL:
+ {
+- int i;
+- int current_idx = 0;
+ static char_u connection[2];
+
+ /* ":cscope kill" accepts connection numbers or partial names of
+ * the pathname of the cscope database as argument. Only complete
+ * with connection numbers. -1 can also be used to kill all
+ * connections. */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+--- 145,157 ----
+ }
+ case EXP_CSCOPE_KILL:
+ {
+ static char_u connection[2];
+
+ /* ":cscope kill" accepts connection numbers or partial names of
+ * the pathname of the cscope database as argument. Only complete
+ * with connection numbers. -1 can also be used to kill all
+ * connections. */
+! for (i = 0, current_idx = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+***************
+*** 165,180 ****
+ * Handle command line completion for :cscope command.
+ */
+ void
+! set_context_in_cscope_cmd(xp, arg)
+ expand_T *xp;
+ char_u *arg;
+ {
+ char_u *p;
+
+ /* Default: expand subcommands */
+ xp->xp_context = EXPAND_CSCOPE;
+- expand_what = EXP_CSCOPE_SUBCMD;
+ xp->xp_pattern = arg;
+
+ /* (part of) subcommand already typed */
+ if (*arg != NUL)
+--- 175,192 ----
+ * Handle command line completion for :cscope command.
+ */
+ void
+! set_context_in_cscope_cmd(xp, arg, cmdidx)
+ expand_T *xp;
+ char_u *arg;
++ cmdidx_T cmdidx;
+ {
+ char_u *p;
+
+ /* Default: expand subcommands */
+ xp->xp_context = EXPAND_CSCOPE;
+ xp->xp_pattern = arg;
++ expand_what = (cmdidx == CMD_scscope)
++ ? EXP_SCSCOPE_SUBCMD : EXP_CSCOPE_SUBCMD;
+
+ /* (part of) subcommand already typed */
+ if (*arg != NUL)
+*** ../vim-7.2.155/src/ex_docmd.c Wed Apr 22 14:42:26 2009
+--- src/ex_docmd.c Wed Apr 22 11:57:49 2009
+***************
+*** 3690,3696 ****
+ break;
+ #ifdef FEAT_CSCOPE
+ case CMD_cscope:
+! set_context_in_cscope_cmd(xp, arg);
+ break;
+ #endif
+ #ifdef FEAT_LISTCMDS
+--- 3690,3698 ----
+ break;
+ #ifdef FEAT_CSCOPE
+ case CMD_cscope:
+! case CMD_lcscope:
+! case CMD_scscope:
+! set_context_in_cscope_cmd(xp, arg, ea.cmdidx);
+ break;
+ #endif
+ #ifdef FEAT_LISTCMDS
+*** ../vim-7.2.155/src/proto/if_cscope.pro Wed Mar 18 12:50:58 2009
+--- src/proto/if_cscope.pro Wed Apr 22 11:57:49 2009
+***************
+*** 1,6 ****
+ /* if_cscope.c */
+ char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
+! void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg));
+ void do_cscope __ARGS((exarg_T *eap));
+ void do_scscope __ARGS((exarg_T *eap));
+ void do_cstag __ARGS((exarg_T *eap));
+--- 1,6 ----
+ /* if_cscope.c */
+ char_u *get_cscope_name __ARGS((expand_T *xp, int idx));
+! void set_context_in_cscope_cmd __ARGS((expand_T *xp, char_u *arg, cmdidx_T cmdidx));
+ void do_cscope __ARGS((exarg_T *eap));
+ void do_scscope __ARGS((exarg_T *eap));
+ void do_cstag __ARGS((exarg_T *eap));
+*** ../vim-7.2.155/src/version.c Wed Apr 22 16:07:57 2009
+--- src/version.c Wed Apr 22 16:21:43 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 156,
+ /**/
+
+--
+ARTHUR: Shut up! Will you shut up!
+DENNIS: Ah, now we see the violence inherent in the system.
+ARTHUR: Shut up!
+DENNIS: Oh! Come and see the violence inherent in the system!
+ HELP! HELP! I'm being repressed!
+ 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.157 b/source/ap/vim/patches/7.2.157
new file mode 100644
index 000000000..238431452
--- /dev/null
+++ b/source/ap/vim/patches/7.2.157
@@ -0,0 +1,144 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.157
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.157
+Problem: Illegal memory access when searching in path.
+Solution: Avoid looking at a byte after end of a string. (Dominique Pelle)
+Files: src/search.c
+
+
+*** ../vim-7.2.156/src/search.c Fri Jul 18 12:05:58 2008
+--- src/search.c Wed Apr 22 12:26:19 2009
+***************
+*** 2327,2334 ****
+ for (col = pos.col; check_prevcol(linep, col, '\\', &col);)
+ bslcnt++;
+ }
+! /* Only accept a match when 'M' is in 'cpo' or when ecaping is
+! * what we expect. */
+ if (cpo_bsl || (bslcnt & 1) == match_escaped)
+ {
+ if (c == initc)
+--- 2336,2343 ----
+ for (col = pos.col; check_prevcol(linep, col, '\\', &col);)
+ bslcnt++;
+ }
+! /* Only accept a match when 'M' is in 'cpo' or when escaping
+! * is what we expect. */
+ if (cpo_bsl || (bslcnt & 1) == match_escaped)
+ {
+ if (c == initc)
+***************
+*** 4663,4669 ****
+ msg_putchar('\n'); /* cursor below last one */
+ if (!got_int) /* don't display if 'q'
+ typed at "--more--"
+! mesage */
+ {
+ msg_home_replace_hl(new_fname);
+ MSG_PUTS(_(" (includes previously listed match)"));
+--- 4672,4678 ----
+ msg_putchar('\n'); /* cursor below last one */
+ if (!got_int) /* don't display if 'q'
+ typed at "--more--"
+! message */
+ {
+ msg_home_replace_hl(new_fname);
+ MSG_PUTS(_(" (includes previously listed match)"));
+***************
+*** 4975,4981 ****
+ || IObuff[i-2] == '!'))))
+ IObuff[i++] = ' ';
+ }
+! /* copy as much as posible of the new word */
+ if (p - aux >= IOSIZE - i)
+ p = aux + IOSIZE - i - 1;
+ STRNCPY(IObuff + i, aux, p - aux);
+--- 4984,4990 ----
+ || IObuff[i-2] == '!'))))
+ IObuff[i++] = ' ';
+ }
+! /* copy as much as possible of the new word */
+ if (p - aux >= IOSIZE - i)
+ p = aux + IOSIZE - i - 1;
+ STRNCPY(IObuff + i, aux, p - aux);
+***************
+*** 5010,5016 ****
+ if (did_show)
+ msg_putchar('\n'); /* cursor below last one */
+ if (!got_int) /* don't display if 'q' typed
+! at "--more--" mesage */
+ msg_home_replace_hl(curr_fname);
+ prev_fname = curr_fname;
+ }
+--- 5019,5025 ----
+ if (did_show)
+ msg_putchar('\n'); /* cursor below last one */
+ if (!got_int) /* don't display if 'q' typed
+! at "--more--" message */
+ msg_home_replace_hl(curr_fname);
+ prev_fname = curr_fname;
+ }
+***************
+*** 5092,5098 ****
+ }
+ if (action != ACTION_SHOW)
+ {
+! curwin->w_cursor.col = (colnr_T) (startp - line);
+ curwin->w_set_curswant = TRUE;
+ }
+
+--- 5101,5107 ----
+ }
+ if (action != ACTION_SHOW)
+ {
+! curwin->w_cursor.col = (colnr_T)(startp - line);
+ curwin->w_set_curswant = TRUE;
+ }
+
+***************
+*** 5119,5125 ****
+ && action == ACTION_EXPAND
+ && !(compl_cont_status & CONT_SOL)
+ #endif
+! && *(p = startp + 1))
+ goto search_line;
+ }
+ line_breakcheck();
+--- 5128,5135 ----
+ && action == ACTION_EXPAND
+ && !(compl_cont_status & CONT_SOL)
+ #endif
+! && *startp != NUL
+! && *(p = startp + 1) != NUL)
+ goto search_line;
+ }
+ line_breakcheck();
+*** ../vim-7.2.156/src/version.c Wed Apr 22 16:22:44 2009
+--- src/version.c Wed Apr 22 16:39:59 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 157,
+ /**/
+
+
+--
+ARTHUR: Bloody peasant!
+DENNIS: Oh, what a give away. Did you hear that, did you hear that, eh?
+ That's what I'm on about -- did you see him repressing me, you saw it
+ didn't you?
+ 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.158 b/source/ap/vim/patches/7.2.158
new file mode 100644
index 000000000..87daf24df
--- /dev/null
+++ b/source/ap/vim/patches/7.2.158
@@ -0,0 +1,63 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.158
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.158
+Problem: Warnings from VisualC compiler.
+Solution: Add type casts. (George Reilly)
+Files: src/ops.c
+
+
+*** ../vim-7.2.157/src/ops.c Wed Mar 11 16:26:01 2009
+--- src/ops.c Wed Apr 22 13:01:46 2009
+***************
+*** 495,504 ****
+ block_space_width = non_white_col - oap->start_vcol;
+ /* We will shift by "total" or "block_space_width", whichever is less.
+ */
+! shift_amount = (block_space_width < total? block_space_width: total);
+
+ /* The column to which we will shift the text. */
+! destination_col = non_white_col - shift_amount;
+
+ /* Now let's find out how much of the beginning of the line we can
+ * reuse without modification. */
+--- 495,505 ----
+ block_space_width = non_white_col - oap->start_vcol;
+ /* We will shift by "total" or "block_space_width", whichever is less.
+ */
+! shift_amount = (block_space_width < (size_t)total
+! ? block_space_width : (size_t)total);
+
+ /* The column to which we will shift the text. */
+! destination_col = (colnr_T)(non_white_col - shift_amount);
+
+ /* Now let's find out how much of the beginning of the line we can
+ * reuse without modification. */
+*** ../vim-7.2.157/src/version.c Wed Apr 22 16:42:24 2009
+--- src/version.c Wed Apr 22 17:42:19 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 158,
+ /**/
+
+--
+ARTHUR: What?
+BLACK KNIGHT: None shall pass.
+ARTHUR: I have no quarrel with you, good Sir knight, but I must cross
+ this bridge.
+BLACK KNIGHT: Then you shall die.
+ 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.159 b/source/ap/vim/patches/7.2.159
new file mode 100644
index 000000000..8d496ad87
--- /dev/null
+++ b/source/ap/vim/patches/7.2.159
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.159
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.159
+Problem: When $x_includes ends up being "NONE" configure fails.
+Solution: Check for $x_includes not to be "NONE" (Rainer)
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.158/src/auto/configure Mon Mar 2 02:44:54 2009
+--- src/auto/configure Wed Apr 22 14:37:24 2009
+***************
+*** 15519,15525 ****
+ if test "$enable_multibyte" = "yes"; then
+ cflags_save=$CFLAGS
+ ldflags_save=$LDFLAGS
+! if test -n "$x_includes" ; then
+ CFLAGS="$CFLAGS -I$x_includes"
+ LDFLAGS="$X_LIBS $LDFLAGS -lX11"
+ { $as_echo "$as_me:$LINENO: checking whether X_LOCALE needed" >&5
+--- 15519,15525 ----
+ if test "$enable_multibyte" = "yes"; then
+ cflags_save=$CFLAGS
+ ldflags_save=$LDFLAGS
+! if test "x$x_includes" != "xNONE" ; then
+ CFLAGS="$CFLAGS -I$x_includes"
+ LDFLAGS="$X_LIBS $LDFLAGS -lX11"
+ { $as_echo "$as_me:$LINENO: checking whether X_LOCALE needed" >&5
+*** ../vim-7.2.158/src/configure.in Mon Mar 2 02:44:54 2009
+--- src/configure.in Wed Apr 22 14:35:57 2009
+***************
+*** 2952,2958 ****
+ if test "$enable_multibyte" = "yes"; then
+ cflags_save=$CFLAGS
+ ldflags_save=$LDFLAGS
+! if test -n "$x_includes" ; then
+ CFLAGS="$CFLAGS -I$x_includes"
+ LDFLAGS="$X_LIBS $LDFLAGS -lX11"
+ AC_MSG_CHECKING(whether X_LOCALE needed)
+--- 2952,2958 ----
+ if test "$enable_multibyte" = "yes"; then
+ cflags_save=$CFLAGS
+ ldflags_save=$LDFLAGS
+! if test "x$x_includes" != "xNONE" ; then
+ CFLAGS="$CFLAGS -I$x_includes"
+ LDFLAGS="$X_LIBS $LDFLAGS -lX11"
+ AC_MSG_CHECKING(whether X_LOCALE needed)
+*** ../vim-7.2.158/src/version.c Wed Apr 22 17:42:53 2009
+--- src/version.c Wed Apr 22 17:49:50 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 159,
+ /**/
+
+--
+"Hegel was right when he said that we learn from history that man can
+never learn anything from history." (George Bernard Shaw)
+
+ /// 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.160 b/source/ap/vim/patches/7.2.160
new file mode 100644
index 000000000..9ef197d4e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.160
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.160
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.160
+Problem: Search pattern not freed on exit when 'rightleft' set.
+Solution: Free mr_pattern_alloced.
+Files: src/search.c
+
+
+*** ../vim-7.2.159/src/search.c Wed Apr 22 16:42:24 2009
+--- src/search.c Wed Apr 22 12:26:19 2009
+***************
+*** 345,350 ****
+--- 345,359 ----
+ {
+ vim_free(spats[0].pat);
+ vim_free(spats[1].pat);
++
++ # ifdef FEAT_RIGHTLEFT
++ if (mr_pattern_alloced)
++ {
++ vim_free(mr_pattern);
++ mr_pattern_alloced = FALSE;
++ mr_pattern = NULL;
++ }
++ # endif
+ }
+ #endif
+
+*** ../vim-7.2.159/src/version.c Wed Apr 22 17:50:53 2009
+--- src/version.c Wed Apr 22 18:42:25 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 160,
+ /**/
+
+--
+ f y cn rd ths thn y cn hv grt jb n cmptr prgrmmng
+
+ /// 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.161 b/source/ap/vim/patches/7.2.161
new file mode 100644
index 000000000..576a03da9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.161
@@ -0,0 +1,205 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.161
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.161
+Problem: Folds messed up in other tab page. (Vlad Irnov)
+Solution: Instead of going over all windows in current tab page go over all
+ windows in all tab pages. Also free memory for location lists in
+ other tab pages when exiting. (Lech Lorens)
+Files: src/fileio.c, src/mark.c, src/misc1.c, src/misc2.c
+
+
+*** ../vim-7.2.160/src/fileio.c Wed Mar 18 15:40:03 2009
+--- src/fileio.c Wed Apr 22 15:46:35 2009
+***************
+*** 6846,6855 ****
+ #endif
+ #ifdef FEAT_FOLDING
+ {
+! win_T *wp;
+
+ /* Update folds unless they are defined manually. */
+! FOR_ALL_WINDOWS(wp)
+ if (wp->w_buffer == curwin->w_buffer
+ && !foldmethodIsManual(wp))
+ foldUpdateAll(wp);
+--- 6846,6856 ----
+ #endif
+ #ifdef FEAT_FOLDING
+ {
+! win_T *wp;
+! tabpage_T *tp;
+
+ /* Update folds unless they are defined manually. */
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+ if (wp->w_buffer == curwin->w_buffer
+ && !foldmethodIsManual(wp))
+ foldUpdateAll(wp);
+*** ../vim-7.2.160/src/mark.c Sun Nov 9 13:43:25 2008
+--- src/mark.c Wed Apr 22 17:32:29 2009
+***************
+*** 1023,1028 ****
+--- 1023,1031 ----
+ int fnum = curbuf->b_fnum;
+ linenr_T *lp;
+ win_T *win;
++ #ifdef FEAT_WINDOWS
++ tabpage_T *tab;
++ #endif
+
+ if (line2 < line1 && amount_after == 0L) /* nothing to do */
+ return;
+***************
+*** 1064,1070 ****
+ /* quickfix marks */
+ qf_mark_adjust(NULL, line1, line2, amount, amount_after);
+ /* location lists */
+! FOR_ALL_WINDOWS(win)
+ qf_mark_adjust(win, line1, line2, amount, amount_after);
+ #endif
+
+--- 1067,1073 ----
+ /* quickfix marks */
+ qf_mark_adjust(NULL, line1, line2, amount, amount_after);
+ /* location lists */
+! FOR_ALL_TAB_WINDOWS(tab, win)
+ qf_mark_adjust(win, line1, line2, amount, amount_after);
+ #endif
+
+***************
+*** 1086,1092 ****
+ /*
+ * Adjust items in all windows related to the current buffer.
+ */
+! FOR_ALL_WINDOWS(win)
+ {
+ #ifdef FEAT_JUMPLIST
+ if (!cmdmod.lockmarks)
+--- 1089,1095 ----
+ /*
+ * Adjust items in all windows related to the current buffer.
+ */
+! FOR_ALL_TAB_WINDOWS(tab, win)
+ {
+ #ifdef FEAT_JUMPLIST
+ if (!cmdmod.lockmarks)
+*** ../vim-7.2.160/src/misc1.c Wed Mar 18 15:40:03 2009
+--- src/misc1.c Wed Apr 22 17:32:46 2009
+***************
+*** 2717,2722 ****
+--- 2717,2725 ----
+ long xtra;
+ {
+ win_T *wp;
++ #ifdef FEAT_WINDOWS
++ tabpage_T *tp;
++ #endif
+ int i;
+ #ifdef FEAT_JUMPLIST
+ int cols;
+***************
+*** 2769,2775 ****
+ curbuf->b_changelistlen = JUMPLISTSIZE - 1;
+ mch_memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
+ sizeof(pos_T) * (JUMPLISTSIZE - 1));
+! FOR_ALL_WINDOWS(wp)
+ {
+ /* Correct position in changelist for other windows on
+ * this buffer. */
+--- 2772,2778 ----
+ curbuf->b_changelistlen = JUMPLISTSIZE - 1;
+ mch_memmove(curbuf->b_changelist, curbuf->b_changelist + 1,
+ sizeof(pos_T) * (JUMPLISTSIZE - 1));
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+ {
+ /* Correct position in changelist for other windows on
+ * this buffer. */
+***************
+*** 2777,2783 ****
+ --wp->w_changelistidx;
+ }
+ }
+! FOR_ALL_WINDOWS(wp)
+ {
+ /* For other windows, if the position in the changelist is
+ * at the end it stays at the end. */
+--- 2780,2786 ----
+ --wp->w_changelistidx;
+ }
+ }
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+ {
+ /* For other windows, if the position in the changelist is
+ * at the end it stays at the end. */
+***************
+*** 2796,2802 ****
+ #endif
+ }
+
+! FOR_ALL_WINDOWS(wp)
+ {
+ if (wp->w_buffer == curbuf)
+ {
+--- 2799,2805 ----
+ #endif
+ }
+
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+ {
+ if (wp->w_buffer == curbuf)
+ {
+*** ../vim-7.2.160/src/misc2.c Wed Mar 11 17:27:46 2009
+--- src/misc2.c Wed Apr 22 15:46:35 2009
+***************
+*** 1075,1085 ****
+
+ #ifdef FEAT_QUICKFIX
+ {
+! win_T *win;
+
+ qf_free_all(NULL);
+ /* Free all location lists */
+! FOR_ALL_WINDOWS(win)
+ qf_free_all(win);
+ }
+ #endif
+--- 1075,1086 ----
+
+ #ifdef FEAT_QUICKFIX
+ {
+! win_T *win;
+! tabpage_T *tab;
+
+ qf_free_all(NULL);
+ /* Free all location lists */
+! FOR_ALL_TAB_WINDOWS(tab, win)
+ qf_free_all(win);
+ }
+ #endif
+*** ../vim-7.2.160/src/version.c Wed Apr 22 18:43:06 2009
+--- src/version.c Wed Apr 29 10:59:01 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 161,
+ /**/
+
+--
+CONCORDE: Quickly, sir, come this way!
+LAUNCELOT: No! It's not right for my idiom. I must escape more ... more ...
+CONCORDE: Dramatically, sir?
+LAUNCELOT: Dramatically.
+ "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.162 b/source/ap/vim/patches/7.2.162
new file mode 100644
index 000000000..f04d6e1b3
--- /dev/null
+++ b/source/ap/vim/patches/7.2.162
@@ -0,0 +1,75 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.162
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.162
+Problem: The quickfix window may get wrong filetype.
+Solution: Do not detect the filetype for the quickfix window. (Lech Lorens)
+Files: src/quickfix.c
+
+
+*** ../vim-7.2.161/src/quickfix.c Sun Feb 22 02:36:36 2009
+--- src/quickfix.c Wed Apr 22 17:34:57 2009
+***************
+*** 2346,2352 ****
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+ OPT_LOCAL);
+ set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
+! set_option_value((char_u *)"diff", 0L, NULL, OPT_LOCAL);
+ }
+
+ /* Only set the height when still in the same tab page and there is no
+--- 2346,2358 ----
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+ OPT_LOCAL);
+ set_option_value((char_u *)"bh", 0L, (char_u *)"wipe", OPT_LOCAL);
+! #ifdef FEAT_DIFF
+! curwin->w_p_diff = FALSE;
+! #endif
+! #ifdef FEAT_FOLDING
+! set_option_value((char_u *)"fdm", 0L, (char_u *)"manual",
+! OPT_LOCAL);
+! #endif
+ }
+
+ /* Only set the height when still in the same tab page and there is no
+***************
+*** 2607,2616 ****
+--- 2613,2624 ----
+ curbuf->b_p_ma = FALSE;
+
+ #ifdef FEAT_AUTOCMD
++ keep_filetype = TRUE; /* don't detect 'filetype' */
+ apply_autocmds(EVENT_BUFREADPOST, (char_u *)"quickfix", NULL,
+ FALSE, curbuf);
+ apply_autocmds(EVENT_BUFWINENTER, (char_u *)"quickfix", NULL,
+ FALSE, curbuf);
++ keep_filetype = FALSE;
+ #endif
+
+ /* make sure it will be redrawn */
+*** ../vim-7.2.161/src/version.c Wed Apr 29 11:00:09 2009
+--- src/version.c Wed Apr 29 11:49:09 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 162,
+ /**/
+
+--
+Yesterday is history.
+Tomorrow is a mystery.
+Today is a gift.
+That's why it is called 'present'.
+
+ /// 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.163 b/source/ap/vim/patches/7.2.163
new file mode 100644
index 000000000..6db9f0986
--- /dev/null
+++ b/source/ap/vim/patches/7.2.163
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.163
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.163
+Problem: The command line window may get folding.
+Solution: Default to no/manual folding. (Lech Lorens)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.162/src/ex_getln.c Wed Apr 22 13:50:14 2009
+--- src/ex_getln.c Wed Apr 22 16:12:54 2009
+***************
+*** 6073,6078 ****
+--- 6073,6081 ----
+ set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+ curbuf->b_p_ma = TRUE;
++ #ifdef FEAT_FOLDING
++ curwin->w_p_fen = FALSE;
++ #endif
+ # ifdef FEAT_RIGHTLEFT
+ curwin->w_p_rl = cmdmsg_rl;
+ cmdmsg_rl = FALSE;
+*** ../vim-7.2.162/src/version.c Wed Apr 29 11:49:57 2009
+--- src/version.c Wed Apr 29 12:02:56 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 163,
+ /**/
+
+--
+ [SIR LAUNCELOT runs back up the stairs, grabs a rope
+ of the wall and swings out over the heads of the CROWD in a
+ swashbuckling manner towards a large window. He stops just short
+ of the window and is left swing pathetically back and forth.]
+LAUNCELOT: Excuse me ... could somebody give me a push ...
+ "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.164 b/source/ap/vim/patches/7.2.164
new file mode 100644
index 000000000..f10bd210f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.164
@@ -0,0 +1,139 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.164
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.164
+Problem: When 'showbreak' is set the size of the Visual block may be
+ reported wrong. (Eduardo Daudt Flach)
+Solution: Temporarily make 'sbr' empty.
+Files: src/normal.c, src/ops.c
+
+
+*** ../vim-7.2.163/src/normal.c Sat Feb 21 20:27:00 2009
+--- src/normal.c Wed Apr 22 18:30:20 2009
+***************
+*** 3709,3721 ****
+ #ifdef FEAT_VISUAL
+ if (VIsual_active && !char_avail())
+ {
+! int i = lt(VIsual, curwin->w_cursor);
+ long lines;
+ colnr_T leftcol, rightcol;
+ linenr_T top, bot;
+
+ /* Show the size of the Visual area. */
+! if (i)
+ {
+ top = VIsual.lnum;
+ bot = curwin->w_cursor.lnum;
+--- 3709,3721 ----
+ #ifdef FEAT_VISUAL
+ if (VIsual_active && !char_avail())
+ {
+! int cursor_bot = lt(VIsual, curwin->w_cursor);
+ long lines;
+ colnr_T leftcol, rightcol;
+ linenr_T top, bot;
+
+ /* Show the size of the Visual area. */
+! if (cursor_bot)
+ {
+ top = VIsual.lnum;
+ bot = curwin->w_cursor.lnum;
+***************
+*** 3734,3747 ****
+
+ if (VIsual_mode == Ctrl_V)
+ {
+ getvcols(curwin, &curwin->w_cursor, &VIsual, &leftcol, &rightcol);
+ sprintf((char *)showcmd_buf, "%ldx%ld", lines,
+ (long)(rightcol - leftcol + 1));
+ }
+ else if (VIsual_mode == 'V' || VIsual.lnum != curwin->w_cursor.lnum)
+ sprintf((char *)showcmd_buf, "%ld", lines);
+ else
+! sprintf((char *)showcmd_buf, "%ld", (long)(i
+ ? curwin->w_cursor.col - VIsual.col
+ : VIsual.col - curwin->w_cursor.col) + (*p_sel != 'e'));
+ showcmd_buf[SHOWCMD_COLS] = NUL; /* truncate */
+--- 3734,3756 ----
+
+ if (VIsual_mode == Ctrl_V)
+ {
++ #ifdef FEAT_LINEBREAK
++ char_u *saved_sbr = p_sbr;
++
++ /* Make 'sbr' empty for a moment to get the correct size. */
++ p_sbr = empty_option;
++ #endif
+ getvcols(curwin, &curwin->w_cursor, &VIsual, &leftcol, &rightcol);
++ #ifdef FEAT_LINEBREAK
++ p_sbr = saved_sbr;
++ #endif
+ sprintf((char *)showcmd_buf, "%ldx%ld", lines,
+ (long)(rightcol - leftcol + 1));
+ }
+ else if (VIsual_mode == 'V' || VIsual.lnum != curwin->w_cursor.lnum)
+ sprintf((char *)showcmd_buf, "%ld", lines);
+ else
+! sprintf((char *)showcmd_buf, "%ld", (long)(cursor_bot
+ ? curwin->w_cursor.col - VIsual.col
+ : VIsual.col - curwin->w_cursor.col) + (*p_sel != 'e'));
+ showcmd_buf[SHOWCMD_COLS] = NUL; /* truncate */
+*** ../vim-7.2.163/src/ops.c Wed Apr 22 17:42:53 2009
+--- src/ops.c Wed Apr 22 18:30:07 2009
+***************
+*** 392,398 ****
+ colnr_T ws_vcol;
+ int i = 0, j = 0;
+ int len;
+-
+ #ifdef FEAT_RIGHTLEFT
+ int old_p_ri = p_ri;
+
+--- 392,397 ----
+***************
+*** 6284,6294 ****
+--- 6283,6302 ----
+
+ if (VIsual_mode == Ctrl_V)
+ {
++ #ifdef FEAT_LINEBREAK
++ char_u * saved_sbr = p_sbr;
++
++ /* Make 'sbr' empty for a moment to get the correct size. */
++ p_sbr = empty_option;
++ #endif
+ oparg.is_VIsual = 1;
+ oparg.block_mode = TRUE;
+ oparg.op_type = OP_NOP;
+ getvcols(curwin, &min_pos, &max_pos,
+ &oparg.start_vcol, &oparg.end_vcol);
++ #ifdef FEAT_LINEBREAK
++ p_sbr = saved_sbr;
++ #endif
+ if (curwin->w_curswant == MAXCOL)
+ oparg.end_vcol = MAXCOL;
+ /* Swap the start, end vcol if needed */
+*** ../vim-7.2.163/src/version.c Wed Apr 29 12:03:35 2009
+--- src/version.c Wed Apr 29 17:38:05 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 164,
+ /**/
+
+--
+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.165 b/source/ap/vim/patches/7.2.165
new file mode 100644
index 000000000..aeded0a0f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.165
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.165
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.165
+Problem: The argument for the FuncUndefined autocmd event is expanded like
+ a file name.
+Solution: Don't try expanding it. (Wang Xu)
+Files: src/fileio.c
+
+
+*** ../vim-7.2.164/src/fileio.c Wed Apr 29 11:00:09 2009
+--- src/fileio.c Wed Apr 29 18:01:06 2009
+***************
+*** 8785,8793 ****
+ else
+ {
+ sfname = vim_strsave(fname);
+! /* Don't try expanding FileType, Syntax, WindowID or QuickFixCmd* */
+ if (event == EVENT_FILETYPE
+ || event == EVENT_SYNTAX
+ || event == EVENT_REMOTEREPLY
+ || event == EVENT_SPELLFILEMISSING
+ || event == EVENT_QUICKFIXCMDPRE
+--- 8785,8795 ----
+ else
+ {
+ sfname = vim_strsave(fname);
+! /* Don't try expanding FileType, Syntax, FuncUndefined, WindowID or
+! * QuickFixCmd* */
+ if (event == EVENT_FILETYPE
+ || event == EVENT_SYNTAX
++ || event == EVENT_FUNCUNDEFINED
+ || event == EVENT_REMOTEREPLY
+ || event == EVENT_SPELLFILEMISSING
+ || event == EVENT_QUICKFIXCMDPRE
+*** ../vim-7.2.164/src/version.c Wed Apr 29 17:39:17 2009
+--- src/version.c Wed Apr 29 18:00:43 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 165,
+ /**/
+
+--
+Be nice to your kids... they'll be the ones choosing your nursing home.
+
+ /// 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.166 b/source/ap/vim/patches/7.2.166
new file mode 100644
index 000000000..0461b31dd
--- /dev/null
+++ b/source/ap/vim/patches/7.2.166
@@ -0,0 +1,425 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.166
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.166
+Problem: No completion for ":sign" command.
+Solution: Add ":sign" completion. (Dominique Pelle)
+Files: src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/vim.h,
+ src/proto/ex_cmds.pro
+
+
+*** ../vim-7.2.165/src/ex_cmds.c Tue Feb 24 04:28:40 2009
+--- src/ex_cmds.c Wed Apr 29 17:08:27 2009
+***************
+*** 6543,6562 ****
+ static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+! /*
+! * ":sign" command
+! */
+! void
+! ex_sign(eap)
+! exarg_T *eap;
+! {
+! char_u *arg = eap->arg;
+! char_u *p;
+! int idx;
+! sign_T *sp;
+! sign_T *sp_prev;
+! buf_T *buf;
+! static char *cmds[] = {
+ "define",
+ #define SIGNCMD_DEFINE 0
+ "undefine",
+--- 6543,6549 ----
+ static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+! static char *cmds[] = {
+ "define",
+ #define SIGNCMD_DEFINE 0
+ "undefine",
+***************
+*** 6569,6590 ****
+ #define SIGNCMD_UNPLACE 4
+ "jump",
+ #define SIGNCMD_JUMP 5
+ #define SIGNCMD_LAST 6
+! };
+
+ /* Parse the subcommand. */
+ p = skiptowhite(arg);
+! if (*p != NUL)
+! *p++ = NUL;
+! for (idx = 0; ; ++idx)
+ {
+! if (idx == SIGNCMD_LAST)
+! {
+! EMSG2(_("E160: Unknown sign command: %s"), arg);
+! return;
+! }
+! if (STRCMP(arg, cmds[idx]) == 0)
+! break;
+ }
+ arg = skipwhite(p);
+
+--- 6556,6606 ----
+ #define SIGNCMD_UNPLACE 4
+ "jump",
+ #define SIGNCMD_JUMP 5
++ NULL
+ #define SIGNCMD_LAST 6
+! };
+!
+! /*
+! * Find index of a ":sign" subcmd from its name.
+! * "*end_cmd" must be writable.
+! */
+! static int
+! sign_cmd_idx(begin_cmd, end_cmd)
+! char *begin_cmd; /* begin of sign subcmd */
+! char *end_cmd; /* just after sign subcmd */
+! {
+! int idx;
+! char save = *end_cmd;
+!
+! *end_cmd = NUL;
+! for (idx = 0; ; ++idx)
+! if (cmds[idx] == NULL || STRCMP(begin_cmd, cmds[idx]) == 0)
+! break;
+! *end_cmd = save;
+! return idx;
+! }
+!
+! /*
+! * ":sign" command
+! */
+! void
+! ex_sign(eap)
+! exarg_T *eap;
+! {
+! char_u *arg = eap->arg;
+! char_u *p;
+! int idx;
+! sign_T *sp;
+! sign_T *sp_prev;
+! buf_T *buf;
+
+ /* Parse the subcommand. */
+ p = skiptowhite(arg);
+! idx = sign_cmd_idx(arg, p);
+! if (idx == SIGNCMD_LAST)
+ {
+! EMSG2(_("E160: Unknown sign command: %s"), arg);
+! return;
+ }
+ arg = skipwhite(p);
+
+***************
+*** 7110,7115 ****
+--- 7126,7311 ----
+ }
+ #endif
+
++ #if defined(FEAT_CMDL_COMPL) || defined(PROTO)
++ static enum
++ {
++ EXP_SUBCMD, /* expand :sign sub-commands */
++ EXP_DEFINE, /* expand :sign define {name} args */
++ EXP_PLACE, /* expand :sign place {id} args */
++ EXP_UNPLACE, /* expand :sign unplace" */
++ EXP_SIGN_NAMES /* expand with name of placed signs */
++ } expand_what;
++
++ /*
++ * Function given to ExpandGeneric() to obtain the sign command
++ * expansion.
++ */
++ /*ARGSUSED*/
++ char_u *
++ get_sign_name(xp, idx)
++ expand_T *xp;
++ int idx;
++ {
++ sign_T *sp;
++ int current_idx;
++
++ switch (expand_what)
++ {
++ case EXP_SUBCMD:
++ return (char_u *)cmds[idx];
++ case EXP_DEFINE:
++ {
++ char *define_arg[] =
++ {
++ "icon=", "linehl=", "text=", "texthl=", NULL
++ };
++ return (char_u *)define_arg[idx];
++ }
++ case EXP_PLACE:
++ {
++ char *place_arg[] =
++ {
++ "line=", "name=", "file=", "buffer=", NULL
++ };
++ return (char_u *)place_arg[idx];
++ }
++ case EXP_UNPLACE:
++ {
++ char *unplace_arg[] = { "file=", "buffer=", NULL };
++ return (char_u *)unplace_arg[idx];
++ }
++ case EXP_SIGN_NAMES:
++ /* Complete with name of signs already defined */
++ current_idx = 0;
++ for (sp = first_sign; sp != NULL; sp = sp->sn_next)
++ if (current_idx++ == idx)
++ return sp->sn_name;
++ return NULL;
++ default:
++ return NULL;
++ }
++ }
++
++ /*
++ * Handle command line completion for :sign command.
++ */
++ void
++ set_context_in_sign_cmd(xp, arg)
++ expand_T *xp;
++ char_u *arg;
++ {
++ char_u *p;
++ char_u *end_subcmd;
++ char_u *last;
++ int cmd_idx;
++ char_u *begin_subcmd_args;
++
++ /* Default: expand subcommands. */
++ xp->xp_context = EXPAND_SIGN;
++ expand_what = EXP_SUBCMD;
++ xp->xp_pattern = arg;
++
++ end_subcmd = skiptowhite(arg);
++ if (*end_subcmd == NUL)
++ /* expand subcmd name
++ * :sign {subcmd}<CTRL-D>*/
++ return;
++
++ cmd_idx = sign_cmd_idx(arg, end_subcmd);
++
++ /* :sign {subcmd} {subcmd_args}
++ * |
++ * begin_subcmd_args */
++ begin_subcmd_args = skipwhite(end_subcmd);
++ p = skiptowhite(begin_subcmd_args);
++ if (*p == NUL)
++ {
++ /*
++ * Expand first argument of subcmd when possible.
++ * For ":jump {id}" and ":unplace {id}", we could
++ * possibly expand the ids of all signs already placed.
++ */
++ xp->xp_pattern = begin_subcmd_args;
++ switch (cmd_idx)
++ {
++ case SIGNCMD_LIST:
++ case SIGNCMD_UNDEFINE:
++ /* :sign list <CTRL-D>
++ * :sign undefine <CTRL-D> */
++ expand_what = EXP_SIGN_NAMES;
++ break;
++ default:
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ return;
++ }
++
++ /* expand last argument of subcmd */
++
++ /* :sign define {name} {args}...
++ * |
++ * p */
++
++ /* Loop until reaching last argument. */
++ do
++ {
++ p = skipwhite(p);
++ last = p;
++ p = skiptowhite(p);
++ } while (*p != NUL);
++
++ p = vim_strchr(last, '=');
++
++ /* :sign define {name} {args}... {last}=
++ * | |
++ * last p */
++ if (p == NUL)
++ {
++ /* Expand last argument name (before equal sign). */
++ xp->xp_pattern = last;
++ switch (cmd_idx)
++ {
++ case SIGNCMD_DEFINE:
++ expand_what = EXP_DEFINE;
++ break;
++ case SIGNCMD_PLACE:
++ expand_what = EXP_PLACE;
++ break;
++ case SIGNCMD_JUMP:
++ case SIGNCMD_UNPLACE:
++ expand_what = EXP_UNPLACE;
++ break;
++ default:
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ }
++ else
++ {
++ /* Expand last argument value (after equal sign). */
++ xp->xp_pattern = p + 1;
++ switch (cmd_idx)
++ {
++ case SIGNCMD_DEFINE:
++ if (STRNCMP(last, "texthl", p - last) == 0 ||
++ STRNCMP(last, "linehl", p - last) == 0)
++ xp->xp_context = EXPAND_HIGHLIGHT;
++ else if (STRNCMP(last, "icon", p - last) == 0)
++ xp->xp_context = EXPAND_FILES;
++ else
++ xp->xp_context = EXPAND_NOTHING;
++ break;
++ case SIGNCMD_PLACE:
++ if (STRNCMP(last, "name", p - last) == 0)
++ expand_what = EXP_SIGN_NAMES;
++ else
++ xp->xp_context = EXPAND_NOTHING;
++ break;
++ default:
++ xp->xp_context = EXPAND_NOTHING;
++ }
++ }
++ }
++ #endif
+ #endif
+
+ #if defined(FEAT_GUI) || defined(FEAT_CLIENTSERVER) || defined(PROTO)
+*** ../vim-7.2.165/src/ex_docmd.c Wed Apr 22 16:22:44 2009
+--- src/ex_docmd.c Wed Apr 29 17:05:23 2009
+***************
+*** 3695,3700 ****
+--- 3695,3705 ----
+ set_context_in_cscope_cmd(xp, arg, ea.cmdidx);
+ break;
+ #endif
++ #ifdef FEAT_SIGNS
++ case CMD_sign:
++ set_context_in_sign_cmd(xp, arg);
++ break;
++ #endif
+ #ifdef FEAT_LISTCMDS
+ case CMD_bdelete:
+ case CMD_bwipeout:
+***************
+*** 5218,5223 ****
+--- 5223,5231 ----
+ {EXPAND_MENUS, "menu"},
+ {EXPAND_SETTINGS, "option"},
+ {EXPAND_SHELLCMD, "shellcmd"},
++ #if defined(FEAT_SIGNS)
++ {EXPAND_SIGN, "sign"},
++ #endif
+ {EXPAND_TAGS, "tag"},
+ {EXPAND_TAGS_LISTFILES, "tag_listfiles"},
+ {EXPAND_USER_VARS, "var"},
+*** ../vim-7.2.165/src/ex_getln.c Wed Apr 29 12:03:35 2009
+--- src/ex_getln.c Wed Apr 29 12:51:42 2009
+***************
+*** 325,331 ****
+ #endif
+
+ #ifdef FEAT_DIGRAPHS
+! do_digraph(-1); /* init digraph typahead */
+ #endif
+
+ /*
+--- 325,331 ----
+ #endif
+
+ #ifdef FEAT_DIGRAPHS
+! do_digraph(-1); /* init digraph typeahead */
+ #endif
+
+ /*
+***************
+*** 4521,4526 ****
+--- 4521,4529 ----
+ #ifdef FEAT_CSCOPE
+ {EXPAND_CSCOPE, get_cscope_name, TRUE},
+ #endif
++ #ifdef FEAT_SIGNS
++ {EXPAND_SIGN, get_sign_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.165/src/vim.h Wed Mar 18 12:50:58 2009
+--- src/vim.h Wed Apr 29 12:51:42 2009
+***************
+*** 709,714 ****
+--- 709,715 ----
+ #define EXPAND_USER_LIST 31
+ #define EXPAND_SHELLCMD 32
+ #define EXPAND_CSCOPE 33
++ #define EXPAND_SIGN 34
+
+ /* Values for exmode_active (0 is no exmode) */
+ #define EXMODE_NORMAL 1
+*** ../vim-7.2.165/src/proto/ex_cmds.pro Tue Feb 24 04:28:40 2009
+--- src/proto/ex_cmds.pro Wed Apr 29 17:10:29 2009
+***************
+*** 40,46 ****
+ int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+ void write_viminfo_sub_string __ARGS((FILE *fp));
+ void free_old_sub __ARGS((void));
+- void free_signs __ARGS((void));
+ int prepare_tagpreview __ARGS((int undo_sync));
+ void ex_help __ARGS((exarg_T *eap));
+ char_u *check_help_lang __ARGS((char_u *arg));
+--- 40,45 ----
+***************
+*** 56,60 ****
+--- 55,62 ----
+ char_u *sign_get_text __ARGS((int typenr));
+ void *sign_get_image __ARGS((int typenr));
+ char_u *sign_typenr2name __ARGS((int typenr));
++ void free_signs __ARGS((void));
++ char_u *get_sign_name __ARGS((expand_T *xp, int idx));
++ void set_context_in_sign_cmd __ARGS((expand_T *xp, char_u *arg));
+ void ex_drop __ARGS((exarg_T *eap));
+ /* vim: set ft=c : */
+*** ../vim-7.2.165/src/version.c Wed Apr 29 18:01:23 2009
+--- src/version.c Wed Apr 29 18:43:14 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 166,
+ /**/
+
+--
+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.167 b/source/ap/vim/patches/7.2.167
new file mode 100644
index 000000000..9bf08e625
--- /dev/null
+++ b/source/ap/vim/patches/7.2.167
@@ -0,0 +1,1873 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.167
+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.167
+Problem: Splint doesn't work well for checking the code.
+Solution: Add splint arguments in the Makefile. Exclude some code from
+ splint that it can't handle. Tune splint arguments to give
+ reasonable errors. Add a filter for removing false warnings from
+ splint output. Many small changes to avoid warnings. More to
+ follow...
+Files: Filelist, src/Makefile, src/buffer.c, src/charset.c,
+ src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c,
+ src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h,
+ src/proto/buffer.pro, src/proto/edit.pro, src/screen.c,
+ src/structs.h
+
+*** ../vim-7.2.166/Filelist 2008-09-20 16:26:10.000000000 +0200
+--- Filelist 2009-05-05 21:45:49.000000000 +0200
+***************
+*** 139,144 ****
+--- 139,145 ----
+ src/INSTALL \
+ src/INSTALLx.txt \
+ src/Makefile \
++ src/cleanlint.vim \
+ src/auto/configure \
+ src/config.aap.in \
+ src/config.h.in \
+***************
+*** 683,691 ****
+ runtime/spell/??/main.aap \
+ runtime/spell/yi/README.txt \
+ runtime/spell/main.aap \
+- runtime/spell/cleanadd.vim \
+ runtime/spell/*.vim \
+- runtime/spell/fixdup \
+
+ # generic language files, binary
+ LANG_GEN_BIN = \
+--- 684,690 ----
+*** ../vim-7.2.166/src/Makefile 2009-04-29 18:44:45.000000000 +0200
+--- src/Makefile 2009-05-06 00:23:15.000000000 +0200
+***************
+*** 551,557 ****
+ # }}}
+
+ # LINT - for running lint
+! LINT_OPTIONS = -beprxzF
+
+ # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+ # Might not work with GUI or Perl.
+--- 551,562 ----
+ # }}}
+
+ # LINT - for running lint
+! # For standard lint
+! #LINT = lint
+! #LINT_OPTIONS = -beprxzF
+! # For splint (see cleanlint.vim for filtering the output)
+! LINT = splint
+! LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
+
+ # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+ # Might not work with GUI or Perl.
+***************
+*** 1259,1274 ****
+ # This is for cproto 3 patchlevel 8 or below
+ # __inline, __attribute__ and __extension__ are not recognized by cproto
+ # G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h.
+! NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \
+! -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \
+! -D__extension__= -D__restrict="" \
+! -D__gnuc_va_list=char -D__builtin_va_list=char
+
+ #
+! # This is for cproto 3 patchlevel 9 or above (currently 4.6)
+ # __inline and __attribute__ are now recognized by cproto
+ # -D"foo()=" is not supported by all compilers so do not use it
+! # NO_ATTR=
+ #
+ # maybe the "/usr/bin/cc -E" has to be adjusted for some systems
+ # This is for cproto 3.5 patchlevel 3:
+--- 1264,1279 ----
+ # This is for cproto 3 patchlevel 8 or below
+ # __inline, __attribute__ and __extension__ are not recognized by cproto
+ # G_IMPLEMENT_INLINES is to avoid functions defined in glib/gutils.h.
+! #NO_ATTR = -D__inline= -D__inline__= -DG_IMPLEMENT_INLINES \
+! # -D"__attribute__\\(x\\)=" -D"__asm__\\(x\\)=" \
+! # -D__extension__= -D__restrict="" \
+! # -D__gnuc_va_list=char -D__builtin_va_list=char
+
+ #
+! # This is for cproto 3 patchlevel 9 or above (currently 4.6, 4.7g)
+ # __inline and __attribute__ are now recognized by cproto
+ # -D"foo()=" is not supported by all compilers so do not use it
+! NO_ATTR=
+ #
+ # maybe the "/usr/bin/cc -E" has to be adjusted for some systems
+ # This is for cproto 3.5 patchlevel 3:
+***************
+*** 1432,1437 ****
+--- 1437,1443 ----
+ $(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC) $(NETBEANS_SRC)
+ #LINT_SRC = $(SRC)
+ #LINT_SRC = $(ALL_SRC)
++ #LINT_SRC = $(BASIC_SRC)
+
+ OBJ = \
+ objects/buffer.o \
+***************
+*** 2272,2283 ****
+
+ # Run lint. Clean up the *.ln files that are sometimes left behind.
+ lint:
+! lint $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
+ -rm -f *.ln
+
+ # Check dosinst.c with lint.
+ lintinstall:
+! lint $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
+ -rm -f dosinst.ln
+
+ ###########################################################################
+--- 2279,2290 ----
+
+ # Run lint. Clean up the *.ln files that are sometimes left behind.
+ lint:
+! $(LINT) $(LINT_OPTIONS) $(LINT_CFLAGS) $(LINT_EXTRA) $(LINT_SRC)
+ -rm -f *.ln
+
+ # Check dosinst.c with lint.
+ lintinstall:
+! $(LINT) $(LINT_OPTIONS) -DWIN32 -DUNIX_LINT dosinst.c
+ -rm -f dosinst.ln
+
+ ###########################################################################
+*** ../vim-7.2.166/src/buffer.c 2009-02-22 00:01:42.000000000 +0100
+--- src/buffer.c 2009-05-13 12:25:29.000000000 +0200
+***************
+*** 44,49 ****
+--- 44,50 ----
+ #ifdef FEAT_TITLE
+ static int ti_change __ARGS((char_u *str, char_u **last));
+ #endif
++ static int append_arg_number __ARGS((win_T *wp, char_u *buf, int buflen, int add_file));
+ static void free_buffer __ARGS((buf_T *));
+ static void free_buffer_stuff __ARGS((buf_T *buf, int free_options));
+ static void clear_wininfo __ARGS((buf_T *buf));
+***************
+*** 1453,1465 ****
+
+ #ifdef FEAT_KEYMAP
+ if (curbuf->b_kmap_state & KEYMAP_INIT)
+! keymap_init();
+ #endif
+ #ifdef FEAT_SPELL
+ /* May need to set the spell language. Can only do this after the buffer
+ * has been properly setup. */
+ if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
+! did_set_spelllang(curbuf);
+ #endif
+
+ redraw_later(NOT_VALID);
+--- 1454,1466 ----
+
+ #ifdef FEAT_KEYMAP
+ if (curbuf->b_kmap_state & KEYMAP_INIT)
+! (void)keymap_init();
+ #endif
+ #ifdef FEAT_SPELL
+ /* May need to set the spell language. Can only do this after the buffer
+ * has been properly setup. */
+ if (!curbuf->b_help && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
+! (void)did_set_spelllang(curbuf);
+ #endif
+
+ redraw_later(NOT_VALID);
+***************
+*** 2516,2522 ****
+ buf_T *buf;
+ {
+ wininfo_T *wip;
+! static pos_T no_position = {1, 0};
+
+ wip = find_wininfo(buf, FALSE);
+ if (wip != NULL)
+--- 2517,2523 ----
+ buf_T *buf;
+ {
+ wininfo_T *wip;
+! static pos_T no_position = INIT_POS_T(1, 0, 0);
+
+ wip = find_wininfo(buf, FALSE);
+ if (wip != NULL)
+***************
+*** 2577,2584 ****
+ {
+ IObuff[len++] = ' ';
+ } while (--i > 0 && len < IOSIZE - 18);
+! vim_snprintf((char *)IObuff + len, IOSIZE - len, _("line %ld"),
+! buf == curbuf ? curwin->w_cursor.lnum
+ : (long)buflist_findlnum(buf));
+ msg_outtrans(IObuff);
+ out_flush(); /* output one line at a time */
+--- 2578,2585 ----
+ {
+ IObuff[len++] = ' ';
+ } while (--i > 0 && len < IOSIZE - 18);
+! vim_snprintf((char *)IObuff + len, (size_t)(IOSIZE - len),
+! _("line %ld"), buf == curbuf ? curwin->w_cursor.lnum
+ : (long)buflist_findlnum(buf));
+ msg_outtrans(IObuff);
+ out_flush(); /* output one line at a time */
+***************
+*** 2967,2973 ****
+
+ if (fullname > 1) /* 2 CTRL-G: include buffer number */
+ {
+! sprintf((char *)buffer, "buf %d: ", curbuf->b_fnum);
+ p = buffer + STRLEN(buffer);
+ }
+ else
+--- 2968,2974 ----
+
+ if (fullname > 1) /* 2 CTRL-G: include buffer number */
+ {
+! vim_snprintf((char *)buffer, IOSIZE, "buf %d: ", curbuf->b_fnum);
+ p = buffer + STRLEN(buffer);
+ }
+ else
+***************
+*** 3041,3051 ****
+ (long)curbuf->b_ml.ml_line_count,
+ n);
+ validate_virtcol();
+! col_print(buffer + STRLEN(buffer),
+ (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
+ }
+
+! (void)append_arg_number(curwin, buffer, !shortmess(SHM_FILE), IOSIZE);
+
+ if (dont_truncate)
+ {
+--- 3042,3053 ----
+ (long)curbuf->b_ml.ml_line_count,
+ n);
+ validate_virtcol();
+! len = STRLEN(buffer);
+! col_print(buffer + len, IOSIZE - len,
+ (int)curwin->w_cursor.col + 1, (int)curwin->w_virtcol + 1);
+ }
+
+! (void)append_arg_number(curwin, buffer, IOSIZE, !shortmess(SHM_FILE));
+
+ if (dont_truncate)
+ {
+***************
+*** 3073,3087 ****
+ }
+
+ void
+! col_print(buf, col, vcol)
+ char_u *buf;
+ int col;
+ int vcol;
+ {
+ if (col == vcol)
+! sprintf((char *)buf, "%d", col);
+ else
+! sprintf((char *)buf, "%d-%d", col, vcol);
+ }
+
+ #if defined(FEAT_TITLE) || defined(PROTO)
+--- 3075,3090 ----
+ }
+
+ void
+! col_print(buf, buflen, col, vcol)
+ char_u *buf;
++ size_t buflen;
+ int col;
+ int vcol;
+ {
+ if (col == vcol)
+! vim_snprintf((char *)buf, buflen, "%d", col);
+ else
+! vim_snprintf((char *)buf, buflen, "%d-%d", col, vcol);
+ }
+
+ #if defined(FEAT_TITLE) || defined(PROTO)
+***************
+*** 3194,3211 ****
+ if (p == buf + off)
+ /* must be a help buffer */
+ vim_strncpy(buf + off, (char_u *)_("help"),
+! IOSIZE - off - 1);
+ else
+ *p = NUL;
+
+ /* translate unprintable chars */
+ p = transstr(buf + off);
+! vim_strncpy(buf + off, p, IOSIZE - off - 1);
+ vim_free(p);
+ STRCAT(buf, ")");
+ }
+
+! append_arg_number(curwin, buf, FALSE, IOSIZE);
+
+ #if defined(FEAT_CLIENTSERVER)
+ if (serverName != NULL)
+--- 3197,3214 ----
+ if (p == buf + off)
+ /* must be a help buffer */
+ vim_strncpy(buf + off, (char_u *)_("help"),
+! (size_t)(IOSIZE - off - 1));
+ else
+ *p = NUL;
+
+ /* translate unprintable chars */
+ p = transstr(buf + off);
+! vim_strncpy(buf + off, p, (size_t)(IOSIZE - off - 1));
+ vim_free(p);
+ STRCAT(buf, ")");
+ }
+
+! append_arg_number(curwin, buf, IOSIZE, FALSE);
+
+ #if defined(FEAT_CLIENTSERVER)
+ if (serverName != NULL)
+***************
+*** 3520,3526 ****
+ n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
+
+ *t = '<';
+! mch_memmove(t + 1, t + n, p - (t + n));
+ p = p - n + 1;
+ #ifdef FEAT_MBYTE
+ /* Fill up space left over by half a double-wide char. */
+--- 3523,3529 ----
+ n = (long)(p - t) - item[groupitem[groupdepth]].maxwid + 1;
+
+ *t = '<';
+! mch_memmove(t + 1, t + n, (size_t)(p - (t + n)));
+ p = p - n + 1;
+ #ifdef FEAT_MBYTE
+ /* Fill up space left over by half a double-wide char. */
+***************
+*** 3550,3556 ****
+ else
+ {
+ /* fill by inserting characters */
+! mch_memmove(t + n - l, t, p - t);
+ l = n - l;
+ if (p + l >= out + outlen)
+ l = (long)((out + outlen) - p - 1);
+--- 3553,3559 ----
+ else
+ {
+ /* fill by inserting characters */
+! mch_memmove(t + n - l, t, (size_t)(p - t));
+ l = n - l;
+ if (p + l >= out + outlen)
+ l = (long)((out + outlen) - p - 1);
+***************
+*** 3686,3692 ****
+ p = t;
+
+ #ifdef FEAT_EVAL
+! sprintf((char *)tmp, "%d", curbuf->b_fnum);
+ set_internal_string_var((char_u *)"actual_curbuf", tmp);
+
+ o_curbuf = curbuf;
+--- 3689,3695 ----
+ p = t;
+
+ #ifdef FEAT_EVAL
+! vim_snprintf((char *)tmp, sizeof(tmp), "%d", curbuf->b_fnum);
+ set_internal_string_var((char_u *)"actual_curbuf", tmp);
+
+ o_curbuf = curbuf;
+***************
+*** 3753,3765 ****
+
+ case STL_ALTPERCENT:
+ str = tmp;
+! get_rel_pos(wp, str);
+ break;
+
+ case STL_ARGLISTSTAT:
+ fillable = FALSE;
+ tmp[0] = 0;
+! if (append_arg_number(wp, tmp, FALSE, (int)sizeof(tmp)))
+ str = tmp;
+ break;
+
+--- 3756,3768 ----
+
+ case STL_ALTPERCENT:
+ str = tmp;
+! get_rel_pos(wp, str, TMPLEN);
+ break;
+
+ case STL_ARGLISTSTAT:
+ fillable = FALSE;
+ tmp[0] = 0;
+! if (append_arg_number(wp, tmp, (int)sizeof(tmp), FALSE))
+ str = tmp;
+ break;
+
+***************
+*** 3794,3800 ****
+ case STL_BYTEVAL_X:
+ base = 'X';
+ case STL_BYTEVAL:
+! if (wp->w_cursor.col > STRLEN(linecont))
+ num = 0;
+ else
+ {
+--- 3797,3803 ----
+ case STL_BYTEVAL_X:
+ base = 'X';
+ case STL_BYTEVAL:
+! if (wp->w_cursor.col > (colnr_T)STRLEN(linecont))
+ num = 0;
+ else
+ {
+***************
+*** 3967,3973 ****
+ if (zeropad)
+ *t++ = '0';
+ *t++ = '*';
+! *t++ = nbase == 16 ? base : (nbase == 8 ? 'o' : 'd');
+ *t = 0;
+
+ for (n = num, l = 1; n >= nbase; n /= nbase)
+--- 3970,3976 ----
+ if (zeropad)
+ *t++ = '0';
+ *t++ = '*';
+! *t++ = nbase == 16 ? base : (char_u)(nbase == 8 ? 'o' : 'd');
+ *t = 0;
+
+ for (n = num, l = 1; n >= nbase; n /= nbase)
+***************
+*** 4160,4172 ****
+ #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
+ || defined(FEAT_GUI_TABLINE) || defined(PROTO)
+ /*
+! * Get relative cursor position in window into "str[]", in the form 99%, using
+! * "Top", "Bot" or "All" when appropriate.
+ */
+ void
+! get_rel_pos(wp, str)
+ win_T *wp;
+! char_u *str;
+ {
+ long above; /* number of lines above window */
+ long below; /* number of lines below window */
+--- 4163,4176 ----
+ #if defined(FEAT_STL_OPT) || defined(FEAT_CMDL_INFO) \
+ || defined(FEAT_GUI_TABLINE) || defined(PROTO)
+ /*
+! * Get relative cursor position in window into "buf[buflen]", in the form 99%,
+! * using "Top", "Bot" or "All" when appropriate.
+ */
+ void
+! get_rel_pos(wp, buf, buflen)
+ win_T *wp;
+! char_u *buf;
+! int buflen;
+ {
+ long above; /* number of lines above window */
+ long below; /* number of lines below window */
+***************
+*** 4177,4210 ****
+ #endif
+ below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
+ if (below <= 0)
+! STRCPY(str, above == 0 ? _("All") : _("Bot"));
+ else if (above <= 0)
+! STRCPY(str, _("Top"));
+ else
+! sprintf((char *)str, "%2d%%", above > 1000000L
+ ? (int)(above / ((above + below) / 100L))
+ : (int)(above * 100L / (above + below)));
+ }
+ #endif
+
+ /*
+! * Append (file 2 of 8) to 'buf', if editing more than one file.
+ * Return TRUE if it was appended.
+ */
+! int
+! append_arg_number(wp, buf, add_file, maxlen)
+ win_T *wp;
+ char_u *buf;
+ int add_file; /* Add "file" before the arg number */
+- int maxlen; /* maximum nr of chars in buf or zero*/
+ {
+ char_u *p;
+
+ if (ARGCOUNT <= 1) /* nothing to do */
+ return FALSE;
+
+! p = buf + STRLEN(buf); /* go to the end of the buffer */
+! if (maxlen && p - buf + 35 >= maxlen) /* getting too long */
+ return FALSE;
+ *p++ = ' ';
+ *p++ = '(';
+--- 4181,4215 ----
+ #endif
+ below = wp->w_buffer->b_ml.ml_line_count - wp->w_botline + 1;
+ if (below <= 0)
+! vim_strncpy(buf, (char_u *)(above == 0 ? _("All") : _("Bot")),
+! (size_t)(buflen - 1));
+ else if (above <= 0)
+! vim_strncpy(buf, (char_u *)_("Top"), (size_t)(buflen - 1));
+ else
+! vim_snprintf((char *)buf, (size_t)buflen, "%2d%%", above > 1000000L
+ ? (int)(above / ((above + below) / 100L))
+ : (int)(above * 100L / (above + below)));
+ }
+ #endif
+
+ /*
+! * Append (file 2 of 8) to "buf[buflen]", if editing more than one file.
+ * Return TRUE if it was appended.
+ */
+! static int
+! append_arg_number(wp, buf, buflen, add_file)
+ win_T *wp;
+ char_u *buf;
++ int buflen;
+ int add_file; /* Add "file" before the arg number */
+ {
+ char_u *p;
+
+ if (ARGCOUNT <= 1) /* nothing to do */
+ return FALSE;
+
+! p = buf + STRLEN(buf); /* go to the end of the buffer */
+! if (p - buf + 35 >= buflen) /* getting too long */
+ return FALSE;
+ *p++ = ' ';
+ *p++ = '(';
+***************
+*** 4213,4219 ****
+ STRCPY(p, "file ");
+ p += 5;
+ }
+! sprintf((char *)p, wp->w_arg_idx_invalid ? "(%d) of %d)"
+ : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
+ return TRUE;
+ }
+--- 4218,4225 ----
+ STRCPY(p, "file ");
+ p += 5;
+ }
+! vim_snprintf((char *)p, (size_t)(buflen - (p - buf)),
+! wp->w_arg_idx_invalid ? "(%d) of %d)"
+ : "%d of %d)", wp->w_arg_idx + 1, ARGCOUNT);
+ return TRUE;
+ }
+***************
+*** 4996,5002 ****
+ if (tab != NULL)
+ {
+ *tab++ = '\0';
+! col = atoi((char *)tab);
+ tab = vim_strrchr(xline, '\t');
+ if (tab != NULL)
+ {
+--- 5002,5008 ----
+ if (tab != NULL)
+ {
+ *tab++ = '\0';
+! col = (colnr_T)atoi((char *)tab);
+ tab = vim_strrchr(xline, '\t');
+ if (tab != NULL)
+ {
+***************
+*** 5034,5039 ****
+--- 5040,5046 ----
+ #endif
+ char_u *line;
+ int max_buffers;
++ size_t len;
+
+ if (find_viminfo_parameter('%') == NULL)
+ return;
+***************
+*** 5042,5048 ****
+ max_buffers = get_viminfo_parameter('%');
+
+ /* Allocate room for the file name, lnum and col. */
+! line = alloc(MAXPATHL + 40);
+ if (line == NULL)
+ return;
+
+--- 5049,5056 ----
+ max_buffers = get_viminfo_parameter('%');
+
+ /* Allocate room for the file name, lnum and col. */
+! #define LINE_BUF_LEN (MAXPATHL + 40)
+! line = alloc(LINE_BUF_LEN);
+ if (line == NULL)
+ return;
+
+***************
+*** 5068,5074 ****
+ break;
+ putc('%', fp);
+ home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
+! sprintf((char *)line + STRLEN(line), "\t%ld\t%d",
+ (long)buf->b_last_cursor.lnum,
+ buf->b_last_cursor.col);
+ viminfo_writestring(fp, line);
+--- 5076,5083 ----
+ break;
+ putc('%', fp);
+ home_replace(NULL, buf->b_ffname, line, MAXPATHL, TRUE);
+! len = STRLEN(line);
+! vim_snprintf((char *)line + len, len - LINE_BUF_LEN, "\t%ld\t%d",
+ (long)buf->b_last_cursor.lnum,
+ buf->b_last_cursor.col);
+ viminfo_writestring(fp, line);
+***************
+*** 5226,5232 ****
+ return;
+ }
+
+! int
+ buf_change_sign_type(buf, markId, typenr)
+ buf_T *buf; /* buffer to store sign in */
+ int markId; /* sign ID */
+--- 5235,5241 ----
+ return;
+ }
+
+! linenr_T
+ buf_change_sign_type(buf, markId, typenr)
+ buf_T *buf; /* buffer to store sign in */
+ int markId; /* sign ID */
+***************
+*** 5243,5252 ****
+ }
+ }
+
+! return 0;
+ }
+
+! int_u
+ buf_getsigntype(buf, lnum, type)
+ buf_T *buf;
+ linenr_T lnum;
+--- 5252,5261 ----
+ }
+ }
+
+! return (linenr_T)0;
+ }
+
+! int
+ buf_getsigntype(buf, lnum, type)
+ buf_T *buf;
+ linenr_T lnum;
+*** ../vim-7.2.166/src/charset.c 2008-07-24 21:30:44.000000000 +0200
+--- src/charset.c 2009-05-05 18:17:11.000000000 +0200
+***************
+*** 17,23 ****
+ static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
+ #endif
+
+! static int nr2hex __ARGS((int c));
+
+ static int chartab_initialized = FALSE;
+
+--- 17,23 ----
+ static int win_nolbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
+ #endif
+
+! static unsigned nr2hex __ARGS((unsigned c));
+
+ static int chartab_initialized = FALSE;
+
+***************
+*** 664,670 ****
+ }
+ #endif
+ buf[++i] = nr2hex((unsigned)c >> 4);
+! buf[++i] = nr2hex(c);
+ buf[++i] = '>';
+ buf[++i] = NUL;
+ }
+--- 664,670 ----
+ }
+ #endif
+ buf[++i] = nr2hex((unsigned)c >> 4);
+! buf[++i] = nr2hex((unsigned)c);
+ buf[++i] = '>';
+ buf[++i] = NUL;
+ }
+***************
+*** 674,682 ****
+ * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
+ * function key 1.
+ */
+! static int
+ nr2hex(c)
+! int c;
+ {
+ if ((c & 0xf) <= 9)
+ return (c & 0xf) + '0';
+--- 674,682 ----
+ * Lower case letters are used to avoid the confusion of <F1> being 0xf1 or
+ * function key 1.
+ */
+! static unsigned
+ nr2hex(c)
+! unsigned c;
+ {
+ if ((c & 0xf) <= 9)
+ return (c & 0xf) + '0';
+***************
+*** 884,890 ****
+ if (c >= 0x100)
+ {
+ if (enc_dbcs != 0)
+! return dbcs_class((unsigned)c >> 8, c & 0xff) >= 2;
+ if (enc_utf8)
+ return utf_class(c) >= 2;
+ }
+--- 884,890 ----
+ if (c >= 0x100)
+ {
+ if (enc_dbcs != 0)
+! return dbcs_class((unsigned)c >> 8, (unsigned)(c & 0xff)) >= 2;
+ if (enc_utf8)
+ return utf_class(c) >= 2;
+ }
+***************
+*** 1090,1096 ****
+ */
+ numberextra = win_col_off(wp);
+ col2 = col;
+! colmax = W_WIDTH(wp) - numberextra;
+ if (col >= colmax)
+ {
+ n = colmax + win_col_off2(wp);
+--- 1090,1096 ----
+ */
+ numberextra = win_col_off(wp);
+ col2 = col;
+! colmax = (colnr_T)(W_WIDTH(wp) - numberextra);
+ if (col >= colmax)
+ {
+ n = colmax + win_col_off2(wp);
+***************
+*** 1201,1217 ****
+ win_T *wp;
+ colnr_T vcol;
+ {
+! colnr_T width1; /* width of first line (after line number) */
+! colnr_T width2; /* width of further lines */
+
+ #ifdef FEAT_VERTSPLIT
+ if (wp->w_width == 0) /* there is no border */
+ return FALSE;
+ #endif
+ width1 = W_WIDTH(wp) - win_col_off(wp);
+! if (vcol < width1 - 1)
+ return FALSE;
+! if (vcol == width1 - 1)
+ return TRUE;
+ width2 = width1 + win_col_off2(wp);
+ return ((vcol - width1) % width2 == width2 - 1);
+--- 1201,1217 ----
+ win_T *wp;
+ colnr_T vcol;
+ {
+! int width1; /* width of first line (after line number) */
+! int width2; /* width of further lines */
+
+ #ifdef FEAT_VERTSPLIT
+ if (wp->w_width == 0) /* there is no border */
+ return FALSE;
+ #endif
+ width1 = W_WIDTH(wp) - win_col_off(wp);
+! if ((int)vcol < width1 - 1)
+ return FALSE;
+! if ((int)vcol == width1 - 1)
+ return TRUE;
+ width2 = width1 + win_col_off2(wp);
+ return ((vcol - width1) % width2 == width2 - 1);
+***************
+*** 1396,1408 ****
+ # ifdef FEAT_MBYTE
+ /* Cannot put the cursor on part of a wide character. */
+ ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
+! if (pos->col < STRLEN(ptr))
+ {
+ int c = (*mb_ptr2char)(ptr + pos->col);
+
+ if (c != TAB && vim_isprintc(c))
+ {
+! endadd = char2cells(c) - 1;
+ if (coladd > endadd) /* past end of line */
+ endadd = 0;
+ else
+--- 1396,1408 ----
+ # ifdef FEAT_MBYTE
+ /* Cannot put the cursor on part of a wide character. */
+ ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
+! if (pos->col < (colnr_T)STRLEN(ptr))
+ {
+ int c = (*mb_ptr2char)(ptr + pos->col);
+
+ if (c != TAB && vim_isprintc(c))
+ {
+! endadd = (colnr_T)(char2cells(c) - 1);
+ if (coladd > endadd) /* past end of line */
+ endadd = 0;
+ else
+*** ../vim-7.2.166/src/cleanlint.vim 2009-05-13 12:08:12.000000000 +0200
+--- src/cleanlint.vim 2009-05-05 21:34:01.000000000 +0200
+***************
+*** 0 ****
+--- 1,27 ----
++ " Vim tool: Filter output of splint
++ "
++ " Maintainer: Bram Moolenaar <Bram@vim.org>
++ " Last Change: 2009 May 05
++
++ " Usage: redirect output of "make lint" to a file, edit that file with Vim and
++ " :call CleanLint()
++ " This deletes irrelevant messages. What remains might be valid warnings.
++
++ fun! CleanLint()
++ g/^ Types are incompatible/lockmarks d
++ g/Assignment of dev_t to __dev_t:/lockmarks d
++ g/Assignment of __dev_t to dev_t:/lockmarks d
++ g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
++ g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
++ g/Assignment of char to char_u: /lockmarks d
++ g/Assignment of unsigned int to int: /lockmarks d
++ g/Assignment of colnr_T to int: /lockmarks d
++ g/Assignment of int to char_u: /lockmarks d
++ g/Function .* expects arg . to be wint_t gets int: /lockmarks d
++ g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
++ g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
++ g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
++ g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
++ g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
++ g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
++ endfun
+*** ../vim-7.2.166/src/digraph.c 2008-06-25 00:26:41.000000000 +0200
+--- src/digraph.c 2009-05-05 20:32:43.000000000 +0200
+***************
+*** 32,38 ****
+ static void printdigraph __ARGS((digr_T *));
+
+ /* digraphs added by the user */
+! static garray_T user_digraphs = {0, 0, sizeof(digr_T), 10, NULL};
+
+ /*
+ * Note: Characters marked with XX are not included literally, because some
+--- 32,38 ----
+ static void printdigraph __ARGS((digr_T *));
+
+ /* digraphs added by the user */
+! static garray_T user_digraphs = {0, 0, (int)sizeof(digr_T), 10, NULL};
+
+ /*
+ * Note: Characters marked with XX are not included literally, because some
+***************
+*** 2371,2380 ****
+ }
+ else
+ #endif
+! *p++ = dp->result;
+ if (char2cells(dp->result) == 1)
+ *p++ = ' ';
+! sprintf((char *)p, " %3d", dp->result);
+ msg_outtrans(buf);
+ }
+ }
+--- 2371,2380 ----
+ }
+ else
+ #endif
+! *p++ = (char_u)dp->result;
+ if (char2cells(dp->result) == 1)
+ *p++ = ' ';
+! vim_snprintf((char *)p, sizeof(buf) - (p - buf), " %3d", dp->result);
+ msg_outtrans(buf);
+ }
+ }
+***************
+*** 2395,2401 ****
+ static void keymap_unload __ARGS((void));
+
+ /*
+! * Set up key mapping tables for the 'keymap' option
+ */
+ char_u *
+ keymap_init()
+--- 2395,2404 ----
+ static void keymap_unload __ARGS((void));
+
+ /*
+! * Set up key mapping tables for the 'keymap' option.
+! * Returns NULL if OK, an error message for failure. This only needs to be
+! * used when setting the option, not later when the value has already been
+! * checked.
+ */
+ char_u *
+ keymap_init()
+***************
+*** 2412,2436 ****
+ else
+ {
+ char_u *buf;
+
+ /* Source the keymap file. It will contain a ":loadkeymap" command
+ * which will call ex_loadkeymap() below. */
+! buf = alloc((unsigned)(STRLEN(curbuf->b_p_keymap)
+ # ifdef FEAT_MBYTE
+! + STRLEN(p_enc)
+ # endif
+! + 14));
+ if (buf == NULL)
+ return e_outofmem;
+
+ # ifdef FEAT_MBYTE
+ /* try finding "keymap/'keymap'_'encoding'.vim" in 'runtimepath' */
+! sprintf((char *)buf, "keymap/%s_%s.vim", curbuf->b_p_keymap, p_enc);
+ if (source_runtime(buf, FALSE) == FAIL)
+ # endif
+ {
+ /* try finding "keymap/'keymap'.vim" in 'runtimepath' */
+! sprintf((char *)buf, "keymap/%s.vim", curbuf->b_p_keymap);
+ if (source_runtime(buf, FALSE) == FAIL)
+ {
+ vim_free(buf);
+--- 2415,2443 ----
+ else
+ {
+ char_u *buf;
++ size_t buflen;
+
+ /* Source the keymap file. It will contain a ":loadkeymap" command
+ * which will call ex_loadkeymap() below. */
+! buflen = STRLEN(curbuf->b_p_keymap)
+ # ifdef FEAT_MBYTE
+! + STRLEN(p_enc)
+ # endif
+! + 14;
+! buf = alloc((unsigned)buflen);
+ if (buf == NULL)
+ return e_outofmem;
+
+ # ifdef FEAT_MBYTE
+ /* try finding "keymap/'keymap'_'encoding'.vim" in 'runtimepath' */
+! vim_snprintf((char *)buf, buflen, "keymap/%s_%s.vim",
+! curbuf->b_p_keymap, p_enc);
+ if (source_runtime(buf, FALSE) == FAIL)
+ # endif
+ {
+ /* try finding "keymap/'keymap'.vim" in 'runtimepath' */
+! vim_snprintf((char *)buf, buflen, "keymap/%s.vim",
+! curbuf->b_p_keymap);
+ if (source_runtime(buf, FALSE) == FAIL)
+ {
+ vim_free(buf);
+*** ../vim-7.2.166/src/edit.c 2009-02-21 20:27:00.000000000 +0100
+--- src/edit.c 2009-05-05 21:14:50.000000000 +0200
+***************
+*** 57,63 ****
+ N_(" Keyword Local completion (^N^P)"),
+ };
+
+! static char_u e_hitend[] = N_("Hit end of paragraph");
+
+ /*
+ * Structure used to store one match for insert completion.
+--- 57,63 ----
+ N_(" Keyword Local completion (^N^P)"),
+ };
+
+! static char e_hitend[] = N_("Hit end of paragraph");
+
+ /*
+ * Structure used to store one match for insert completion.
+***************
+*** 69,75 ****
+--- 69,79 ----
+ compl_T *cp_prev;
+ char_u *cp_str; /* matched text */
+ char cp_icase; /* TRUE or FALSE: ignore case */
++ #ifdef S_SPLINT_S /* splint can't handle array of pointers */
++ char_u **cp_text; /* text for the menu */
++ #else
+ char_u *(cp_text[CPT_COUNT]); /* text for the menu */
++ #endif
+ char_u *cp_fname; /* file containing the match, allocated when
+ * cp_flags has FREE_FNAME */
+ int cp_flags; /* ORIGINAL_TEXT, CONT_S_IPOS or FREE_FNAME */
+***************
+*** 306,312 ****
+ int c = 0;
+ char_u *ptr;
+ int lastc;
+! colnr_T mincol;
+ static linenr_T o_lnum = 0;
+ int i;
+ int did_backspace = TRUE; /* previous char was backspace */
+--- 310,316 ----
+ int c = 0;
+ char_u *ptr;
+ int lastc;
+! int mincol;
+ static linenr_T o_lnum = 0;
+ int i;
+ int did_backspace = TRUE; /* previous char was backspace */
+***************
+*** 387,393 ****
+ if (startln)
+ Insstart.col = 0;
+ }
+! Insstart_textlen = linetabsize(ml_get_curline());
+ Insstart_blank_vcol = MAXCOL;
+ if (!did_ai)
+ ai_col = 0;
+--- 391,397 ----
+ if (startln)
+ Insstart.col = 0;
+ }
+! Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
+ Insstart_blank_vcol = MAXCOL;
+ if (!did_ai)
+ ai_col = 0;
+***************
+*** 653,659 ****
+ mincol = curwin->w_wcol;
+ validate_cursor_col();
+
+! if ((int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts
+ && curwin->w_wrow == W_WINROW(curwin)
+ + curwin->w_height - 1 - p_so
+ && (curwin->w_cursor.lnum != curwin->w_topline
+--- 657,663 ----
+ mincol = curwin->w_wcol;
+ validate_cursor_col();
+
+! if ((int)curwin->w_wcol < mincol - curbuf->b_p_ts
+ && curwin->w_wrow == W_WINROW(curwin)
+ + curwin->w_height - 1 - p_so
+ && (curwin->w_cursor.lnum != curwin->w_topline
+***************
+*** 1773,1779 ****
+ * Compute the screen column where the cursor should be.
+ */
+ vcol = get_indent() - vcol;
+! curwin->w_virtcol = (vcol < 0) ? 0 : vcol;
+
+ /*
+ * Advance the cursor until we reach the right screen column.
+--- 1777,1783 ----
+ * Compute the screen column where the cursor should be.
+ */
+ vcol = get_indent() - vcol;
+! curwin->w_virtcol = (colnr_T)((vcol < 0) ? 0 : vcol);
+
+ /*
+ * Advance the cursor until we reach the right screen column.
+***************
+*** 1800,1808 ****
+ */
+ if (vcol != (int)curwin->w_virtcol)
+ {
+! curwin->w_cursor.col = new_cursor_col;
+ i = (int)curwin->w_virtcol - vcol;
+! ptr = alloc(i + 1);
+ if (ptr != NULL)
+ {
+ new_cursor_col += i;
+--- 1804,1812 ----
+ */
+ if (vcol != (int)curwin->w_virtcol)
+ {
+! curwin->w_cursor.col = (colnr_T)new_cursor_col;
+ i = (int)curwin->w_virtcol - vcol;
+! ptr = alloc((unsigned)(i + 1));
+ if (ptr != NULL)
+ {
+ new_cursor_col += i;
+***************
+*** 1826,1832 ****
+ if (new_cursor_col <= 0)
+ curwin->w_cursor.col = 0;
+ else
+! curwin->w_cursor.col = new_cursor_col;
+ curwin->w_set_curswant = TRUE;
+ changed_cline_bef_curs();
+
+--- 1830,1836 ----
+ if (new_cursor_col <= 0)
+ curwin->w_cursor.col = 0;
+ else
+! curwin->w_cursor.col = (colnr_T)new_cursor_col;
+ curwin->w_set_curswant = TRUE;
+ changed_cline_bef_curs();
+
+***************
+*** 1966,1972 ****
+ #ifdef FEAT_MBYTE
+ if (enc_utf8 && limit_col >= 0)
+ {
+! int ecol = curwin->w_cursor.col + 1;
+
+ /* Make sure the cursor is at the start of a character, but
+ * skip forward again when going too far back because of a
+--- 1970,1976 ----
+ #ifdef FEAT_MBYTE
+ if (enc_utf8 && limit_col >= 0)
+ {
+! colnr_T ecol = curwin->w_cursor.col + 1;
+
+ /* Make sure the cursor is at the start of a character, but
+ * skip forward again when going too far back because of a
+***************
+*** 1982,1988 ****
+ }
+ if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
+ return FALSE;
+! del_bytes((long)(ecol - curwin->w_cursor.col), FALSE, TRUE);
+ }
+ else
+ #endif
+--- 1986,1992 ----
+ }
+ if (*ml_get_cursor() == NUL || curwin->w_cursor.col == ecol)
+ return FALSE;
+! del_bytes((long)((int)ecol - curwin->w_cursor.col), FALSE, TRUE);
+ }
+ else
+ #endif
+***************
+*** 2201,2207 ****
+ actual_compl_length = compl_length;
+
+ /* Allocate wide character array for the completion and fill it. */
+! wca = (int *)alloc(actual_len * sizeof(int));
+ if (wca != NULL)
+ {
+ p = str;
+--- 2205,2211 ----
+ actual_compl_length = compl_length;
+
+ /* Allocate wide character array for the completion and fill it. */
+! wca = (int *)alloc((unsigned)(actual_len * sizeof(int)));
+ if (wca != NULL)
+ {
+ p = str;
+***************
+*** 2580,2586 ****
+ */
+ void
+ set_completion(startcol, list)
+! int startcol;
+ list_T *list;
+ {
+ /* If already doing completions stop it. */
+--- 2584,2590 ----
+ */
+ void
+ set_completion(startcol, list)
+! colnr_T startcol;
+ list_T *list;
+ {
+ /* If already doing completions stop it. */
+***************
+*** 2591,2600 ****
+ if (stop_arrow() == FAIL)
+ return;
+
+! if (startcol > (int)curwin->w_cursor.col)
+ startcol = curwin->w_cursor.col;
+ compl_col = startcol;
+! compl_length = curwin->w_cursor.col - startcol;
+ /* compl_pattern doesn't need to be set */
+ compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
+ if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
+--- 2595,2604 ----
+ if (stop_arrow() == FAIL)
+ return;
+
+! if (startcol > curwin->w_cursor.col)
+ startcol = curwin->w_cursor.col;
+ compl_col = startcol;
+! compl_length = (int)curwin->w_cursor.col - (int)startcol;
+ /* compl_pattern doesn't need to be set */
+ compl_orig_text = vim_strnsave(ml_get_curline() + compl_col, compl_length);
+ if (compl_orig_text == NULL || ins_compl_add(compl_orig_text,
+***************
+*** 2860,2866 ****
+ regmatch_T regmatch;
+ char_u **files;
+ int count;
+- int i;
+ int save_p_scs;
+ int dir = compl_direction;
+
+--- 2864,2869 ----
+***************
+*** 2892,2908 ****
+ if (ctrl_x_mode == CTRL_X_WHOLE_LINE)
+ {
+ char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
+
+ if (pat_esc == NULL)
+ goto theend;
+! i = (int)STRLEN(pat_esc) + 10;
+! ptr = alloc(i);
+ if (ptr == NULL)
+ {
+ vim_free(pat_esc);
+ goto theend;
+ }
+! vim_snprintf((char *)ptr, i, "^\\s*\\zs\\V%s", pat_esc);
+ regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
+ vim_free(pat_esc);
+ vim_free(ptr);
+--- 2895,2912 ----
+ if (ctrl_x_mode == CTRL_X_WHOLE_LINE)
+ {
+ char_u *pat_esc = vim_strsave_escaped(pat, (char_u *)"\\");
++ size_t len;
+
+ if (pat_esc == NULL)
+ goto theend;
+! len = STRLEN(pat_esc) + 10;
+! ptr = alloc((unsigned)len);
+ if (ptr == NULL)
+ {
+ vim_free(pat_esc);
+ goto theend;
+ }
+! vim_snprintf((char *)ptr, len, "^\\s*\\zs\\V%s", pat_esc);
+ regmatch.regprog = vim_regcomp(ptr, RE_MAGIC);
+ vim_free(pat_esc);
+ vim_free(ptr);
+***************
+*** 2993,2999 ****
+ {
+ vim_snprintf((char *)IObuff, IOSIZE,
+ _("Scanning dictionary: %s"), (char *)files[i]);
+! msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+
+ if (fp != NULL)
+--- 2997,3003 ----
+ {
+ vim_snprintf((char *)IObuff, IOSIZE,
+ _("Scanning dictionary: %s"), (char *)files[i]);
+! (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+
+ if (fp != NULL)
+***************
+*** 3311,3317 ****
+ static int
+ ins_compl_len()
+ {
+! int off = curwin->w_cursor.col - compl_col;
+
+ if (off < 0)
+ return 0;
+--- 3315,3321 ----
+ static int
+ ins_compl_len()
+ {
+! int off = (int)curwin->w_cursor.col - (int)compl_col;
+
+ if (off < 0)
+ return 0;
+***************
+*** 3347,3353 ****
+
+ vim_free(compl_leader);
+ compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+! curwin->w_cursor.col - compl_col);
+ if (compl_leader != NULL)
+ ins_compl_new_leader();
+ }
+--- 3351,3357 ----
+
+ vim_free(compl_leader);
+ compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+! (int)(curwin->w_cursor.col - compl_col));
+ if (compl_leader != NULL)
+ ins_compl_new_leader();
+ }
+***************
+*** 3395,3401 ****
+ ins_compl_addfrommatch()
+ {
+ char_u *p;
+! int len = curwin->w_cursor.col - compl_col;
+ int c;
+ compl_T *cp;
+
+--- 3399,3405 ----
+ ins_compl_addfrommatch()
+ {
+ char_u *p;
+! int len = (int)curwin->w_cursor.col - (int)compl_col;
+ int c;
+ compl_T *cp;
+
+***************
+*** 3961,3967 ****
+ : ins_buf->b_sfname == NULL
+ ? (char *)ins_buf->b_fname
+ : (char *)ins_buf->b_sfname);
+! msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else if (*e_cpt == NUL)
+ break;
+--- 3965,3971 ----
+ : ins_buf->b_sfname == NULL
+ ? (char *)ins_buf->b_fname
+ : (char *)ins_buf->b_sfname);
+! (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else if (*e_cpt == NUL)
+ break;
+***************
+*** 3991,3997 ****
+ {
+ type = CTRL_X_TAGS;
+ sprintf((char*)IObuff, _("Scanning tags."));
+! msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else
+ type = -1;
+--- 3995,4001 ----
+ {
+ type = CTRL_X_TAGS;
+ sprintf((char*)IObuff, _("Scanning tags."));
+! (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else
+ type = -1;
+***************
+*** 6320,6326 ****
+ ins_need_undo = FALSE;
+ }
+ Insstart = curwin->w_cursor; /* new insertion starts here */
+! Insstart_textlen = linetabsize(ml_get_curline());
+ ai_col = 0;
+ #ifdef FEAT_VREPLACE
+ if (State & VREPLACE_FLAG)
+--- 6324,6330 ----
+ ins_need_undo = FALSE;
+ }
+ Insstart = curwin->w_cursor; /* new insertion starts here */
+! Insstart_textlen = (colnr_T)linetabsize(ml_get_curline());
+ ai_col = 0;
+ #ifdef FEAT_VREPLACE
+ if (State & VREPLACE_FLAG)
+*** ../vim-7.2.166/src/ex_cmds.c 2009-04-29 18:44:38.000000000 +0200
+--- src/ex_cmds.c 2009-05-05 17:55:40.000000000 +0200
+***************
+*** 1789,1795 ****
+ * overwrite a user's viminfo file after a "su root", with a
+ * viminfo file that the user can't read.
+ */
+! st_old.st_dev = 0;
+ st_old.st_ino = 0;
+ st_old.st_mode = 0600;
+ if (mch_stat((char *)fname, &st_old) == 0
+--- 1789,1795 ----
+ * overwrite a user's viminfo file after a "su root", with a
+ * viminfo file that the user can't read.
+ */
+! st_old.st_dev = (dev_t)0;
+ st_old.st_ino = 0;
+ st_old.st_mode = 0600;
+ if (mch_stat((char *)fname, &st_old) == 0
+***************
+*** 3715,3721 ****
+ /* If the window options were changed may need to set the spell language.
+ * Can only do this after the buffer has been properly setup. */
+ if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
+! did_set_spelllang(curbuf);
+ #endif
+
+ if (command == NULL)
+--- 3715,3721 ----
+ /* If the window options were changed may need to set the spell language.
+ * Can only do this after the buffer has been properly setup. */
+ if (did_get_winopts && curwin->w_p_spell && *curbuf->b_p_spl != NUL)
+! (void)did_set_spelllang(curbuf);
+ #endif
+
+ if (command == NULL)
+***************
+*** 3788,3794 ****
+
+ #ifdef FEAT_KEYMAP
+ if (curbuf->b_kmap_state & KEYMAP_INIT)
+! keymap_init();
+ #endif
+
+ --RedrawingDisabled;
+--- 3788,3794 ----
+
+ #ifdef FEAT_KEYMAP
+ if (curbuf->b_kmap_state & KEYMAP_INIT)
+! (void)keymap_init();
+ #endif
+
+ --RedrawingDisabled;
+*** ../vim-7.2.166/src/globals.h 2009-03-05 03:13:51.000000000 +0100
+--- src/globals.h 2009-05-09 21:14:49.000000000 +0200
+***************
+*** 524,530 ****
+ EXTERN win_T *prevwin INIT(= NULL); /* previous window */
+ # define W_NEXT(wp) ((wp)->w_next)
+ # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
+! #define FOR_ALL_TAB_WINDOWS(tp, wp) \
+ for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
+ for ((wp) = ((tp) == curtab) \
+ ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
+--- 524,530 ----
+ EXTERN win_T *prevwin INIT(= NULL); /* previous window */
+ # define W_NEXT(wp) ((wp)->w_next)
+ # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
+! # define FOR_ALL_TAB_WINDOWS(tp, wp) \
+ for ((tp) = first_tabpage; (tp) != NULL; (tp) = (tp)->tp_next) \
+ for ((wp) = ((tp) == curtab) \
+ ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
+***************
+*** 718,724 ****
+
+ EXTERN pos_T saved_cursor /* w_cursor before formatting text. */
+ # ifdef DO_INIT
+! = INIT_POS_T
+ # endif
+ ;
+
+--- 718,724 ----
+
+ EXTERN pos_T saved_cursor /* w_cursor before formatting text. */
+ # ifdef DO_INIT
+! = INIT_POS_T(0, 0, 0)
+ # endif
+ ;
+
+***************
+*** 1039,1045 ****
+ EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
+ EXTERN pos_T last_cursormoved /* for CursorMoved event */
+ # ifdef DO_INIT
+! = INIT_POS_T
+ # endif
+ ;
+ #endif
+--- 1039,1045 ----
+ EXTERN int did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
+ EXTERN pos_T last_cursormoved /* for CursorMoved event */
+ # ifdef DO_INIT
+! = INIT_POS_T(0, 0, 0)
+ # endif
+ ;
+ #endif
+*** ../vim-7.2.166/src/ops.c 2009-04-29 17:39:17.000000000 +0200
+--- src/ops.c 2009-05-13 12:41:02.000000000 +0200
+***************
+*** 6400,6406 ****
+ {
+ getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
+ &max_pos.col);
+! sprintf((char *)buf1, _("%ld Cols; "),
+ (long)(oparg.end_vcol - oparg.start_vcol + 1));
+ }
+ else
+--- 6400,6406 ----
+ {
+ getvcols(curwin, &min_pos, &max_pos, &min_pos.col,
+ &max_pos.col);
+! vim_snprintf((char *)buf1, sizeof(buf1), _("%ld Cols; "),
+ (long)(oparg.end_vcol - oparg.start_vcol + 1));
+ }
+ else
+***************
+*** 6408,6420 ****
+
+ if (char_count_cursor == byte_count_cursor
+ && char_count == byte_count)
+! sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"),
+ buf1, line_count_selected,
+ (long)curbuf->b_ml.ml_line_count,
+ word_count_cursor, word_count,
+ byte_count_cursor, byte_count);
+ else
+! sprintf((char *)IObuff, _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
+ buf1, line_count_selected,
+ (long)curbuf->b_ml.ml_line_count,
+ word_count_cursor, word_count,
+--- 6408,6422 ----
+
+ if (char_count_cursor == byte_count_cursor
+ && char_count == byte_count)
+! vim_snprintf((char *)IObuff, IOSIZE,
+! _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"),
+ buf1, line_count_selected,
+ (long)curbuf->b_ml.ml_line_count,
+ word_count_cursor, word_count,
+ byte_count_cursor, byte_count);
+ else
+! vim_snprintf((char *)IObuff, IOSIZE,
+! _("Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld Bytes"),
+ buf1, line_count_selected,
+ (long)curbuf->b_ml.ml_line_count,
+ word_count_cursor, word_count,
+***************
+*** 6426,6445 ****
+ {
+ p = ml_get_curline();
+ validate_virtcol();
+! col_print(buf1, (int)curwin->w_cursor.col + 1,
+ (int)curwin->w_virtcol + 1);
+! col_print(buf2, (int)STRLEN(p), linetabsize(p));
+
+ if (char_count_cursor == byte_count_cursor
+ && char_count == byte_count)
+! sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"),
+ (char *)buf1, (char *)buf2,
+ (long)curwin->w_cursor.lnum,
+ (long)curbuf->b_ml.ml_line_count,
+ word_count_cursor, word_count,
+ byte_count_cursor, byte_count);
+ else
+! sprintf((char *)IObuff, _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
+ (char *)buf1, (char *)buf2,
+ (long)curwin->w_cursor.lnum,
+ (long)curbuf->b_ml.ml_line_count,
+--- 6428,6449 ----
+ {
+ p = ml_get_curline();
+ validate_virtcol();
+! col_print(buf1, sizeof(buf1), (int)curwin->w_cursor.col + 1,
+ (int)curwin->w_virtcol + 1);
+! col_print(buf2, sizeof(buf2), (int)STRLEN(p), linetabsize(p));
+
+ if (char_count_cursor == byte_count_cursor
+ && char_count == byte_count)
+! vim_snprintf((char *)IObuff, IOSIZE,
+! _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"),
+ (char *)buf1, (char *)buf2,
+ (long)curwin->w_cursor.lnum,
+ (long)curbuf->b_ml.ml_line_count,
+ word_count_cursor, word_count,
+ byte_count_cursor, byte_count);
+ else
+! vim_snprintf((char *)IObuff, IOSIZE,
+! _("Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of %ld"),
+ (char *)buf1, (char *)buf2,
+ (long)curwin->w_cursor.lnum,
+ (long)curbuf->b_ml.ml_line_count,
+*** ../vim-7.2.166/src/os_unix.c 2009-03-02 02:44:54.000000000 +0100
+--- src/os_unix.c 2009-05-05 17:35:58.000000000 +0200
+***************
+*** 199,205 ****
+ #endif
+
+ #ifndef SIG_ERR
+! # define SIG_ERR ((RETSIGTYPE (*)())-1)
+ #endif
+
+ /* volatile because it is used in signal handler sig_winch(). */
+--- 199,207 ----
+ #endif
+
+ #ifndef SIG_ERR
+! # ifndef S_SPLINT_S
+! # define SIG_ERR ((RETSIGTYPE (*)())-1)
+! # endif
+ #endif
+
+ /* volatile because it is used in signal handler sig_winch(). */
+***************
+*** 441,447 ****
+
+ #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
+ # ifdef HAVE_SYS_RESOURCE_H
+! # include <sys/resource.h>
+ # endif
+ # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
+ # include <sys/sysctl.h>
+--- 443,451 ----
+
+ #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
+ # ifdef HAVE_SYS_RESOURCE_H
+! # ifndef S_SPLINT_S /* splint crashes on bits/resource.h */
+! # include <sys/resource.h>
+! # endif
+ # endif
+ # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
+ # include <sys/sysctl.h>
+*** ../vim-7.2.166/src/os_unix.h 2008-06-20 18:06:36.000000000 +0200
+--- src/os_unix.h 2009-05-05 17:07:45.000000000 +0200
+***************
+*** 53,59 ****
+ #endif
+
+ #ifdef HAVE_UNISTD_H
+! # include <unistd.h>
+ #endif
+
+ #ifdef HAVE_LIBC_H
+--- 53,61 ----
+ #endif
+
+ #ifdef HAVE_UNISTD_H
+! # ifndef S_SPLINT_S /* splint crashes on bits/confname.h */
+! # include <unistd.h>
+! # endif
+ #endif
+
+ #ifdef HAVE_LIBC_H
+*** ../vim-7.2.166/src/proto/buffer.pro 2008-11-15 14:10:23.000000000 +0100
+--- src/proto/buffer.pro 2009-05-13 12:23:41.000000000 +0200
+***************
+*** 37,49 ****
+ int otherfile __ARGS((char_u *ffname));
+ void buf_setino __ARGS((buf_T *buf));
+ void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+! void col_print __ARGS((char_u *buf, int col, int vcol));
+ void maketitle __ARGS((void));
+ void resettitle __ARGS((void));
+ void free_titles __ARGS((void));
+ int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
+! void get_rel_pos __ARGS((win_T *wp, char_u *str));
+! int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
+ char_u *fix_fname __ARGS((char_u *fname));
+ void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
+ char_u *alist_name __ARGS((aentry_T *aep));
+--- 37,48 ----
+ int otherfile __ARGS((char_u *ffname));
+ void buf_setino __ARGS((buf_T *buf));
+ void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+! void col_print __ARGS((char_u *buf, size_t buflen, int col, int vcol));
+ void maketitle __ARGS((void));
+ void resettitle __ARGS((void));
+ void free_titles __ARGS((void));
+ int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
+! void get_rel_pos __ARGS((win_T *wp, char_u *buf, int buflen));
+ char_u *fix_fname __ARGS((char_u *fname));
+ void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
+ char_u *alist_name __ARGS((aentry_T *aep));
+***************
+*** 54,61 ****
+ void write_viminfo_bufferlist __ARGS((FILE *fp));
+ char *buf_spname __ARGS((buf_T *buf));
+ void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
+! int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
+! int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
+ linenr_T buf_delsign __ARGS((buf_T *buf, int id));
+ int buf_findsign __ARGS((buf_T *buf, int id));
+ int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
+--- 53,60 ----
+ void write_viminfo_bufferlist __ARGS((FILE *fp));
+ char *buf_spname __ARGS((buf_T *buf));
+ void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
+! linenr_T buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
+! int buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
+ linenr_T buf_delsign __ARGS((buf_T *buf, int id));
+ int buf_findsign __ARGS((buf_T *buf, int id));
+ int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
+*** ../vim-7.2.166/src/proto/edit.pro 2008-01-16 20:03:13.000000000 +0100
+--- src/proto/edit.pro 2009-05-05 20:51:56.000000000 +0200
+***************
+*** 8,14 ****
+ void backspace_until_column __ARGS((int col));
+ int vim_is_ctrl_x_key __ARGS((int c));
+ int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
+! void set_completion __ARGS((int startcol, list_T *list));
+ void ins_compl_show_pum __ARGS((void));
+ char_u *find_word_start __ARGS((char_u *ptr));
+ char_u *find_word_end __ARGS((char_u *ptr));
+--- 8,14 ----
+ void backspace_until_column __ARGS((int col));
+ int vim_is_ctrl_x_key __ARGS((int c));
+ int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
+! void set_completion __ARGS((colnr_T startcol, list_T *list));
+ void ins_compl_show_pum __ARGS((void));
+ char_u *find_word_start __ARGS((char_u *ptr));
+ char_u *find_word_end __ARGS((char_u *ptr));
+*** ../vim-7.2.166/src/screen.c 2009-03-18 19:07:09.000000000 +0100
+--- src/screen.c 2009-05-05 17:42:45.000000000 +0200
+***************
+*** 9481,9493 ****
+ win_T *wp;
+ int always;
+ {
+! char_u buffer[70];
+ int row;
+ int fillchar;
+ int attr;
+ int empty_line = FALSE;
+ colnr_T virtcol;
+ int i;
+ int o;
+ #ifdef FEAT_VERTSPLIT
+ int this_ru_col;
+--- 9481,9495 ----
+ win_T *wp;
+ int always;
+ {
+! #define RULER_BUF_LEN 70
+! char_u buffer[RULER_BUF_LEN];
+ int row;
+ int fillchar;
+ int attr;
+ int empty_line = FALSE;
+ colnr_T virtcol;
+ int i;
++ size_t len;
+ int o;
+ #ifdef FEAT_VERTSPLIT
+ int this_ru_col;
+***************
+*** 9602,9612 ****
+ * Some sprintfs return the length, some return a pointer.
+ * To avoid portability problems we use strlen() here.
+ */
+! sprintf((char *)buffer, "%ld,",
+ (wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
+ ? 0L
+ : (long)(wp->w_cursor.lnum));
+! col_print(buffer + STRLEN(buffer),
+ empty_line ? 0 : (int)wp->w_cursor.col + 1,
+ (int)virtcol + 1);
+
+--- 9604,9615 ----
+ * Some sprintfs return the length, some return a pointer.
+ * To avoid portability problems we use strlen() here.
+ */
+! vim_snprintf((char *)buffer, RULER_BUF_LEN, "%ld,",
+ (wp->w_buffer->b_ml.ml_flags & ML_EMPTY)
+ ? 0L
+ : (long)(wp->w_cursor.lnum));
+! len = STRLEN(buffer);
+! col_print(buffer + len, RULER_BUF_LEN - len,
+ empty_line ? 0 : (int)wp->w_cursor.col + 1,
+ (int)virtcol + 1);
+
+***************
+*** 9616,9622 ****
+ * screen up on some terminals).
+ */
+ i = (int)STRLEN(buffer);
+! get_rel_pos(wp, buffer + i + 1);
+ o = i + vim_strsize(buffer + i + 1);
+ #ifdef FEAT_WINDOWS
+ if (wp->w_status_height == 0) /* can't use last char of screen */
+--- 9619,9625 ----
+ * screen up on some terminals).
+ */
+ i = (int)STRLEN(buffer);
+! get_rel_pos(wp, buffer + i + 1, RULER_BUF_LEN - i - 1);
+ o = i + vim_strsize(buffer + i + 1);
+ #ifdef FEAT_WINDOWS
+ if (wp->w_status_height == 0) /* can't use last char of screen */
+***************
+*** 9643,9649 ****
+ buffer[i++] = fillchar;
+ ++o;
+ }
+! get_rel_pos(wp, buffer + i);
+ }
+ /* Truncate at window boundary. */
+ #ifdef FEAT_MBYTE
+--- 9646,9652 ----
+ buffer[i++] = fillchar;
+ ++o;
+ }
+! get_rel_pos(wp, buffer + i, RULER_BUF_LEN - i);
+ }
+ /* Truncate at window boundary. */
+ #ifdef FEAT_MBYTE
+*** ../vim-7.2.166/src/structs.h 2008-11-15 16:05:30.000000000 +0100
+--- src/structs.h 2009-05-05 18:20:36.000000000 +0200
+***************
+*** 33,41 ****
+ } pos_T;
+
+ #ifdef FEAT_VIRTUALEDIT
+! # define INIT_POS_T {0, 0, 0}
+ #else
+! # define INIT_POS_T {0, 0}
+ #endif
+
+ /*
+--- 33,41 ----
+ } pos_T;
+
+ #ifdef FEAT_VIRTUALEDIT
+! # define INIT_POS_T(l, c, ca) {l, c, ca}
+ #else
+! # define INIT_POS_T(l, c, ca) {l, c}
+ #endif
+
+ /*
+***************
+*** 1166,1172 ****
+ char_u *b_fname; /* current file name */
+
+ #ifdef UNIX
+! int b_dev; /* device number (-1 if not set) */
+ ino_t b_ino; /* inode number */
+ #endif
+ #ifdef FEAT_CW_EDITOR
+--- 1166,1172 ----
+ char_u *b_fname; /* current file name */
+
+ #ifdef UNIX
+! dev_t b_dev; /* device number (-1 if not set) */
+ ino_t b_ino; /* inode number */
+ #endif
+ #ifdef FEAT_CW_EDITOR
+***************
+*** 1645,1651 ****
+--- 1645,1655 ----
+ #endif
+ #ifdef FEAT_DIFF
+ diff_T *tp_first_diff;
++ # ifdef S_SPLINT_S /* splint doesn't understand the array of pointers */
++ buf_T **tp_diffbuf;
++ # else
+ buf_T *(tp_diffbuf[DB_COUNT]);
++ # endif
+ int tp_diff_invalid; /* list of diffs is outdated */
+ #endif
+ frame_T *tp_snapshot; /* window layout snapshot */
+*** ../vim-7.2.166/src/version.c 2009-04-29 18:44:38.000000000 +0200
+--- src/version.c 2009-05-13 12:06:36.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 167,
+ /**/
+
+--
+Snoring is prohibited unless all bedroom windows are closed and securely
+locked.
+ [real standing law in Massachusetts, 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.168 b/source/ap/vim/patches/7.2.168
new file mode 100644
index 000000000..29cafb613
--- /dev/null
+++ b/source/ap/vim/patches/7.2.168
@@ -0,0 +1,74 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.168
+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.168
+Problem: When no ctags program can be found, "make tags" attempts to
+ execute the first C file.
+Solution: Default to "ctags" when no ctags program can be found.
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.2.167/src/configure.in 2009-04-22 17:50:53.000000000 +0200
+--- src/configure.in 2009-05-05 17:46:45.000000000 +0200
+***************
+*** 2968,2974 ****
+ dnl Link with xpg4, it is said to make Korean locale working
+ AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
+
+! dnl Check how we can run ctags
+ dnl --version for Exuberant ctags (preferred)
+ dnl Add --fields=+S to get function signatures for omni completion.
+ dnl -t for typedefs (many ctags have this)
+--- 2968,2974 ----
+ dnl Link with xpg4, it is said to make Korean locale working
+ AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
+
+! dnl Check how we can run ctags. Default to "ctags" when nothing works.
+ dnl --version for Exuberant ctags (preferred)
+ dnl Add --fields=+S to get function signatures for omni completion.
+ dnl -t for typedefs (many ctags have this)
+***************
+*** 2980,2985 ****
+--- 2980,2986 ----
+ if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
++ TAGPRG="ctags"
+ (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
+ (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
+ (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
+*** ../vim-7.2.167/src/auto/configure 2009-04-22 17:50:53.000000000 +0200
+--- src/auto/configure 2009-05-13 14:38:10.000000000 +0200
+***************
+*** 15707,15712 ****
+--- 15723,15729 ----
+ if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
+ TAGPRG="ctags -I INIT+ --fields=+S"
+ else
++ TAGPRG="ctags"
+ (eval etags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags"
+ (eval etags -c /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="etags -c"
+ (eval ctags /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="ctags"
+*** ../vim-7.2.167/src/version.c 2009-05-13 12:46:36.000000000 +0200
+--- src/version.c 2009-05-13 14:46:35.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 168,
+ /**/
+
+--
+Zen Microsystems: we're the om in .commmmmmmmm
+
+ /// 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.169 b/source/ap/vim/patches/7.2.169
new file mode 100644
index 000000000..4ae90a51e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.169
@@ -0,0 +1,1214 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.169
+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.169
+Problem: Splint complains about a lot of things.
+Solution: Add type casts, #ifdefs and other changes to avoid warnings.
+ Change colnr_T from unsigned to int. Avoids mistakes with
+ subtracting columns.
+Files: src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c,
+ src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro,
+ src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h,
+ src/term.h, src/vim.h
+
+
+*** ../vim-7.2.168/src/cleanlint.vim 2009-05-13 12:46:36.000000000 +0200
+--- src/cleanlint.vim 2009-05-13 18:03:11.000000000 +0200
+***************
+*** 1,27 ****
+ " Vim tool: Filter output of splint
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2009 May 05
+
+ " Usage: redirect output of "make lint" to a file, edit that file with Vim and
+ " :call CleanLint()
+ " This deletes irrelevant messages. What remains might be valid warnings.
+
+ fun! CleanLint()
+- g/^ Types are incompatible/lockmarks d
+ g/Assignment of dev_t to __dev_t:/lockmarks d
+ g/Assignment of __dev_t to dev_t:/lockmarks d
+ g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
+! g/Operands of == have incompatible types (unsigned int, int): /lockmarks d
+ g/Assignment of char to char_u: /lockmarks d
+ g/Assignment of unsigned int to int: /lockmarks d
+! g/Assignment of colnr_T to int: /lockmarks d
+ g/Assignment of int to char_u: /lockmarks d
+ g/Function .* expects arg . to be wint_t gets int: /lockmarks d
+! g/^digraph.c.*digraphdefault.*is type char, expects char_u:/lockmarks d
+ g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
+ g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
+ g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
+ g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
+ g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
+ endfun
+--- 1,32 ----
+ " Vim tool: Filter output of splint
+ "
+ " Maintainer: Bram Moolenaar <Bram@vim.org>
+! " Last Change: 2009 May 13
+
+ " Usage: redirect output of "make lint" to a file, edit that file with Vim and
+ " :call CleanLint()
+ " This deletes irrelevant messages. What remains might be valid warnings.
+
+ fun! CleanLint()
+ g/Assignment of dev_t to __dev_t:/lockmarks d
+ g/Assignment of __dev_t to dev_t:/lockmarks d
+ g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
+! g/Operands of == have incompatible types (char_u, int): /lockmarks d
+ g/Assignment of char to char_u: /lockmarks d
+ g/Assignment of unsigned int to int: /lockmarks d
+! g/Assignment of int to unsigned int: /lockmarks d
+! g/Assignment of unsigned int to long int: /lockmarks d
+ g/Assignment of int to char_u: /lockmarks d
+ g/Function .* expects arg . to be wint_t gets int: /lockmarks d
+! g/Function .* expects arg . to be size_t gets int: /lockmarks d
+! g/Initial value of .* is type char, expects char_u: /lockmarks d
+! g/^ex_cmds.h:.* Function types are inconsistent. Parameter 1 is implicitly temp, but unqualified in assigned function:/lockmarks d
+! g/^ex_docmd.c:.* nospec_str/lockmarks d
+ g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
+ g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
++ g/^ Types are incompatible/lockmarks d
+ g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
+ g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
+ g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
++ g+ A variable is declared but never used. Use /.@unused@./ in front of declaration to suppress message.+lockmarks d
+ endfun
+*** ../vim-7.2.168/src/diff.c 2009-03-11 12:45:44.000000000 +0100
+--- src/diff.c 2009-05-13 16:16:11.000000000 +0200
+***************
+*** 827,832 ****
+--- 827,833 ----
+ char_u *tmp_diff;
+ {
+ char_u *cmd;
++ size_t len;
+
+ #ifdef FEAT_EVAL
+ if (*p_dex != NUL)
+***************
+*** 835,842 ****
+ else
+ #endif
+ {
+! cmd = alloc((unsigned)(STRLEN(tmp_orig) + STRLEN(tmp_new)
+! + STRLEN(tmp_diff) + STRLEN(p_srr) + 27));
+ if (cmd != NULL)
+ {
+ /* We don't want $DIFF_OPTIONS to get in the way. */
+--- 836,844 ----
+ else
+ #endif
+ {
+! len = STRLEN(tmp_orig) + STRLEN(tmp_new)
+! + STRLEN(tmp_diff) + STRLEN(p_srr) + 27;
+! cmd = alloc((unsigned)len);
+ if (cmd != NULL)
+ {
+ /* We don't want $DIFF_OPTIONS to get in the way. */
+***************
+*** 846,852 ****
+ /* Build the diff command and execute it. Always use -a, binary
+ * differences are of no use. Ignore errors, diff returns
+ * non-zero when differences have been found. */
+! sprintf((char *)cmd, "diff %s%s%s%s%s %s",
+ diff_a_works == FALSE ? "" : "-a ",
+ #if defined(MSWIN) || defined(MSDOS)
+ diff_bin_works == TRUE ? "--binary " : "",
+--- 848,854 ----
+ /* Build the diff command and execute it. Always use -a, binary
+ * differences are of no use. Ignore errors, diff returns
+ * non-zero when differences have been found. */
+! vim_snprintf((char *)cmd, len, "diff %s%s%s%s%s %s",
+ diff_a_works == FALSE ? "" : "-a ",
+ #if defined(MSWIN) || defined(MSDOS)
+ diff_bin_works == TRUE ? "--binary " : "",
+***************
+*** 856,862 ****
+ (diff_flags & DIFF_IWHITE) ? "-b " : "",
+ (diff_flags & DIFF_ICASE) ? "-i " : "",
+ tmp_orig, tmp_new);
+! append_redir(cmd, p_srr, tmp_diff);
+ #ifdef FEAT_AUTOCMD
+ block_autocmds(); /* Avoid ShellCmdPost stuff */
+ #endif
+--- 858,864 ----
+ (diff_flags & DIFF_IWHITE) ? "-b " : "",
+ (diff_flags & DIFF_ICASE) ? "-i " : "",
+ tmp_orig, tmp_new);
+! append_redir(cmd, (int)len, p_srr, tmp_diff);
+ #ifdef FEAT_AUTOCMD
+ block_autocmds(); /* Avoid ShellCmdPost stuff */
+ #endif
+***************
+*** 881,886 ****
+--- 883,889 ----
+ char_u *tmp_orig; /* name of original temp file */
+ char_u *tmp_new; /* name of patched temp file */
+ char_u *buf = NULL;
++ size_t buflen;
+ win_T *old_curwin = curwin;
+ char_u *newname = NULL; /* name of patched file buffer */
+ #ifdef UNIX
+***************
+*** 920,930 ****
+ /* Get the absolute path of the patchfile, changing directory below. */
+ fullname = FullName_save(eap->arg, FALSE);
+ #endif
+! buf = alloc((unsigned)(STRLEN(tmp_orig) + (
+ # ifdef UNIX
+ fullname != NULL ? STRLEN(fullname) :
+ # endif
+! STRLEN(eap->arg)) + STRLEN(tmp_new) + 16));
+ if (buf == NULL)
+ goto theend;
+
+--- 923,934 ----
+ /* Get the absolute path of the patchfile, changing directory below. */
+ fullname = FullName_save(eap->arg, FALSE);
+ #endif
+! buflen = STRLEN(tmp_orig) + (
+ # ifdef UNIX
+ fullname != NULL ? STRLEN(fullname) :
+ # endif
+! STRLEN(eap->arg)) + STRLEN(tmp_new) + 16;
+! buf = alloc((unsigned)buflen);
+ if (buf == NULL)
+ goto theend;
+
+***************
+*** 961,967 ****
+ {
+ /* Build the patch command and execute it. Ignore errors. Switch to
+ * cooked mode to allow the user to respond to prompts. */
+! sprintf((char *)buf, "patch -o %s %s < \"%s\"", tmp_new, tmp_orig,
+ # ifdef UNIX
+ fullname != NULL ? fullname :
+ # endif
+--- 965,972 ----
+ {
+ /* Build the patch command and execute it. Ignore errors. Switch to
+ * cooked mode to allow the user to respond to prompts. */
+! vim_snprintf((char *)buf, buflen, "patch -o %s %s < \"%s\"",
+! tmp_new, tmp_orig,
+ # ifdef UNIX
+ fullname != NULL ? fullname :
+ # endif
+*** ../vim-7.2.168/src/edit.c 2009-05-13 12:46:36.000000000 +0200
+--- src/edit.c 2009-05-13 18:29:21.000000000 +0200
+***************
+*** 169,175 ****
+ static int ins_compl_key2count __ARGS((int c));
+ static int ins_compl_use_match __ARGS((int c));
+ static int ins_complete __ARGS((int c));
+! static int quote_meta __ARGS((char_u *dest, char_u *str, int len));
+ #endif /* FEAT_INS_EXPAND */
+
+ #define BACKSPACE_CHAR 1
+--- 169,175 ----
+ static int ins_compl_key2count __ARGS((int c));
+ static int ins_compl_use_match __ARGS((int c));
+ static int ins_complete __ARGS((int c));
+! static unsigned quote_meta __ARGS((char_u *dest, char_u *str, int len));
+ #endif /* FEAT_INS_EXPAND */
+
+ #define BACKSPACE_CHAR 1
+***************
+*** 757,763 ****
+ * there is nothing to add, CTRL-L works like CTRL-P then. */
+ if (c == Ctrl_L
+ && (ctrl_x_mode != CTRL_X_WHOLE_LINE
+! || STRLEN(compl_shown_match->cp_str)
+ > curwin->w_cursor.col - compl_col))
+ {
+ ins_compl_addfrommatch();
+--- 757,763 ----
+ * there is nothing to add, CTRL-L works like CTRL-P then. */
+ if (c == Ctrl_L
+ && (ctrl_x_mode != CTRL_X_WHOLE_LINE
+! || (int)STRLEN(compl_shown_match->cp_str)
+ > curwin->w_cursor.col - compl_col))
+ {
+ ins_compl_addfrommatch();
+***************
+*** 3837,3843 ****
+--- 3837,3847 ----
+ char_u *word;
+ int icase = FALSE;
+ int adup = FALSE;
++ #ifdef S_SPLINT_S /* splint doesn't parse array of pointers correctly */
++ char_u **cptext;
++ #else
+ char_u *(cptext[CPT_COUNT]);
++ #endif
+
+ if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
+ {
+***************
+*** 3994,4000 ****
+ else if (*e_cpt == ']' || *e_cpt == 't')
+ {
+ type = CTRL_X_TAGS;
+! sprintf((char*)IObuff, _("Scanning tags."));
+ (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else
+--- 3998,4004 ----
+ else if (*e_cpt == ']' || *e_cpt == 't')
+ {
+ type = CTRL_X_TAGS;
+! vim_snprintf((char *)IObuff, IOSIZE, _("Scanning tags."));
+ (void)msg_trunc_attr(IObuff, TRUE, hl_attr(HLF_R));
+ }
+ else
+***************
+*** 4093,4099 ****
+ case CTRL_X_SPELL:
+ #ifdef FEAT_SPELL
+ num_matches = expand_spelling(first_match_pos.lnum,
+! first_match_pos.col, compl_pattern, &matches);
+ if (num_matches > 0)
+ ins_compl_add_matches(num_matches, matches, p_ic);
+ #endif
+--- 4097,4103 ----
+ case CTRL_X_SPELL:
+ #ifdef FEAT_SPELL
+ num_matches = expand_spelling(first_match_pos.lnum,
+! compl_pattern, &matches);
+ if (num_matches > 0)
+ ins_compl_add_matches(num_matches, matches, p_ic);
+ #endif
+***************
+*** 4803,4812 ****
+ {
+ char_u *prefix = (char_u *)"\\<";
+
+! /* we need 3 extra chars, 1 for the NUL and
+! * 2 >= strlen(prefix) -- Acevedo */
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 3);
+ if (compl_pattern == NULL)
+ return FAIL;
+ if (!vim_iswordp(line + compl_col)
+--- 4807,4815 ----
+ {
+ char_u *prefix = (char_u *)"\\<";
+
+! /* we need up to 2 extra chars for the prefix */
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 2);
+ if (compl_pattern == NULL)
+ return FAIL;
+ if (!vim_iswordp(line + compl_col)
+***************
+*** 4881,4887 ****
+ else
+ {
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 3);
+ if (compl_pattern == NULL)
+ return FAIL;
+ STRCPY((char *)compl_pattern, "\\<");
+--- 4884,4890 ----
+ else
+ {
+ compl_pattern = alloc(quote_meta(NULL, line + compl_col,
+! compl_length) + 2);
+ if (compl_pattern == NULL)
+ return FAIL;
+ STRCPY((char *)compl_pattern, "\\<");
+***************
+*** 4963,4969 ****
+ if (col < 0)
+ col = curs_col;
+ compl_col = col;
+! if ((colnr_T)compl_col > curs_col)
+ compl_col = curs_col;
+
+ /* Setup variables for completion. Need to obtain "line" again,
+--- 4966,4972 ----
+ if (col < 0)
+ col = curs_col;
+ compl_col = col;
+! if (compl_col > curs_col)
+ compl_col = curs_col;
+
+ /* Setup variables for completion. Need to obtain "line" again,
+***************
+*** 5236,5250 ****
+ * a backslash) the metachars, and dest would be NUL terminated.
+ * Returns the length (needed) of dest
+ */
+! static int
+ quote_meta(dest, src, len)
+ char_u *dest;
+ char_u *src;
+ int len;
+ {
+! int m;
+
+! for (m = len; --len >= 0; src++)
+ {
+ switch (*src)
+ {
+--- 5239,5253 ----
+ * a backslash) the metachars, and dest would be NUL terminated.
+ * Returns the length (needed) of dest
+ */
+! static unsigned
+ quote_meta(dest, src, len)
+ char_u *dest;
+ char_u *src;
+ int len;
+ {
+! unsigned m = (unsigned)len + 1; /* one extra for the NUL */
+
+! for ( ; --len >= 0; src++)
+ {
+ switch (*src)
+ {
+***************
+*** 6073,6079 ****
+ * in 'formatoptions' and there is a single character before the cursor.
+ * Otherwise the line would be broken and when typing another non-white
+ * next they are not joined back together. */
+! wasatend = (pos.col == STRLEN(old));
+ if (*old != NUL && !trailblank && wasatend)
+ {
+ dec_cursor();
+--- 6076,6082 ----
+ * in 'formatoptions' and there is a single character before the cursor.
+ * Otherwise the line would be broken and when typing another non-white
+ * next they are not joined back together. */
+! wasatend = (pos.col == (colnr_T)STRLEN(old));
+ if (*old != NUL && !trailblank && wasatend)
+ {
+ dec_cursor();
+***************
+*** 6250,6256 ****
+ * three digits. */
+ if (VIM_ISDIGIT(c))
+ {
+! sprintf((char *)buf, "%03d", c);
+ AppendToRedobuff(buf);
+ }
+ else
+--- 6253,6259 ----
+ * three digits. */
+ if (VIM_ISDIGIT(c))
+ {
+! vim_snprintf((char *)buf, sizeof(buf), "%03d", c);
+ AppendToRedobuff(buf);
+ }
+ else
+***************
+*** 6453,6462 ****
+ * deleted characters. */
+ if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
+ {
+! cc = (int)STRLEN(ml_get_curline());
+! if (VIsual.col > (colnr_T)cc)
+ {
+! VIsual.col = cc;
+ # ifdef FEAT_VIRTUALEDIT
+ VIsual.coladd = 0;
+ # endif
+--- 6457,6467 ----
+ * deleted characters. */
+ if (VIsual_active && VIsual.lnum == curwin->w_cursor.lnum)
+ {
+! int len = (int)STRLEN(ml_get_curline());
+!
+! if (VIsual.col > len)
+ {
+! VIsual.col = len;
+ # ifdef FEAT_VIRTUALEDIT
+ VIsual.coladd = 0;
+ # endif
+***************
+*** 8315,8320 ****
+--- 8320,8326 ----
+ linenr_T lnum;
+ int cc;
+ int temp = 0; /* init for GCC */
++ colnr_T save_col;
+ colnr_T mincol;
+ int did_backspace = FALSE;
+ int in_indent;
+***************
+*** 8472,8484 ****
+ */
+ while (cc > 0)
+ {
+! temp = curwin->w_cursor.col;
+ #ifdef FEAT_MBYTE
+ mb_replace_pop_ins(cc);
+ #else
+ ins_char(cc);
+ #endif
+! curwin->w_cursor.col = temp;
+ cc = replace_pop();
+ }
+ /* restore the characters that NL replaced */
+--- 8478,8490 ----
+ */
+ while (cc > 0)
+ {
+! save_col = curwin->w_cursor.col;
+ #ifdef FEAT_MBYTE
+ mb_replace_pop_ins(cc);
+ #else
+ ins_char(cc);
+ #endif
+! curwin->w_cursor.col = save_col;
+ cc = replace_pop();
+ }
+ /* restore the characters that NL replaced */
+***************
+*** 8510,8520 ****
+ #endif
+ )
+ {
+! temp = curwin->w_cursor.col;
+ beginline(BL_WHITE);
+ if (curwin->w_cursor.col < (colnr_T)temp)
+ mincol = curwin->w_cursor.col;
+! curwin->w_cursor.col = temp;
+ }
+
+ /*
+--- 8516,8526 ----
+ #endif
+ )
+ {
+! 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;
+ }
+
+ /*
+*** ../vim-7.2.168/src/ex_cmds.c 2009-05-13 12:46:36.000000000 +0200
+--- src/ex_cmds.c 2009-05-13 18:24:18.000000000 +0200
+***************
+*** 87,99 ****
+ ))
+ {
+ transchar_nonprint(buf3, c);
+! sprintf(buf1, " <%s>", (char *)buf3);
+ }
+ else
+ buf1[0] = NUL;
+ #ifndef EBCDIC
+ if (c >= 0x80)
+! sprintf(buf2, " <M-%s>", transchar(c & 0x7f));
+ else
+ #endif
+ buf2[0] = NUL;
+--- 87,100 ----
+ ))
+ {
+ transchar_nonprint(buf3, c);
+! vim_snprintf(buf1, sizeof(buf1), " <%s>", (char *)buf3);
+ }
+ else
+ buf1[0] = NUL;
+ #ifndef EBCDIC
+ if (c >= 0x80)
+! vim_snprintf(buf2, sizeof(buf2), " <M-%s>",
+! (char *)transchar(c & 0x7f));
+ else
+ #endif
+ buf2[0] = NUL;
+***************
+*** 358,364 ****
+ linenr_T lnum;
+ long maxlen = 0;
+ sorti_T *nrs;
+! size_t count = eap->line2 - eap->line1 + 1;
+ size_t i;
+ char_u *p;
+ char_u *s;
+--- 359,365 ----
+ linenr_T lnum;
+ long maxlen = 0;
+ sorti_T *nrs;
+! size_t count = (size_t)(eap->line2 - eap->line1 + 1);
+ size_t i;
+ char_u *p;
+ char_u *s;
+***************
+*** 957,963 ****
+ }
+ len += (int)STRLEN(prevcmd);
+ }
+! if ((t = alloc(len)) == NULL)
+ {
+ vim_free(newcmd);
+ return;
+--- 958,964 ----
+ }
+ len += (int)STRLEN(prevcmd);
+ }
+! if ((t = alloc((unsigned)len)) == NULL)
+ {
+ vim_free(newcmd);
+ return;
+***************
+*** 1548,1554 ****
+ * redirecting input and/or output.
+ */
+ if (itmp != NULL || otmp != NULL)
+! sprintf((char *)buf, "(%s)", (char *)cmd);
+ else
+ STRCPY(buf, cmd);
+ if (itmp != NULL)
+--- 1549,1555 ----
+ * redirecting input and/or output.
+ */
+ if (itmp != NULL || otmp != NULL)
+! vim_snprintf((char *)buf, len, "(%s)", (char *)cmd);
+ else
+ STRCPY(buf, cmd);
+ if (itmp != NULL)
+***************
+*** 1597,1633 ****
+ }
+ #endif
+ if (otmp != NULL)
+! append_redir(buf, p_srr, otmp);
+
+ return buf;
+ }
+
+ /*
+! * Append output redirection for file "fname" to the end of string buffer "buf"
+ * Works with the 'shellredir' and 'shellpipe' options.
+ * The caller should make sure that there is enough room:
+ * STRLEN(opt) + STRLEN(fname) + 3
+ */
+ void
+! append_redir(buf, opt, fname)
+ char_u *buf;
+ char_u *opt;
+ char_u *fname;
+ {
+ char_u *p;
+
+! buf += STRLEN(buf);
+ /* find "%s", skipping "%%" */
+ for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
+ if (p[1] == 's')
+ break;
+ if (p != NULL)
+ {
+! *buf = ' '; /* not really needed? Not with sh, ksh or bash */
+! sprintf((char *)buf + 1, (char *)opt, (char *)fname);
+ }
+ else
+! sprintf((char *)buf,
+ #ifdef FEAT_QUICKFIX
+ # ifndef RISCOS
+ opt != p_sp ? " %s%s" :
+--- 1598,1638 ----
+ }
+ #endif
+ if (otmp != NULL)
+! append_redir(buf, (int)len, p_srr, otmp);
+
+ return buf;
+ }
+
+ /*
+! * Append output redirection for file "fname" to the end of string buffer
+! * "buf[buflen]"
+ * Works with the 'shellredir' and 'shellpipe' options.
+ * The caller should make sure that there is enough room:
+ * STRLEN(opt) + STRLEN(fname) + 3
+ */
+ void
+! append_redir(buf, buflen, opt, fname)
+ char_u *buf;
++ int buflen;
+ char_u *opt;
+ char_u *fname;
+ {
+ char_u *p;
++ char_u *end;
+
+! end = buf + STRLEN(buf);
+ /* find "%s", skipping "%%" */
+ for (p = opt; (p = vim_strchr(p, '%')) != NULL; ++p)
+ if (p[1] == 's')
+ break;
+ if (p != NULL)
+ {
+! *end = ' '; /* not really needed? Not with sh, ksh or bash */
+! vim_snprintf((char *)end + 1, (size_t)(buflen - (end + 1 - buf)),
+! (char *)opt, (char *)fname);
+ }
+ else
+! vim_snprintf((char *)end, (size_t)(buflen - (end - buf)),
+ #ifdef FEAT_QUICKFIX
+ # ifndef RISCOS
+ opt != p_sp ? " %s%s" :
+***************
+*** 2390,2396 ****
+
+ if (curwin->w_p_nu || use_number)
+ {
+! sprintf((char *)numbuf, "%*ld ", number_width(curwin), (long)lnum);
+ msg_puts_attr(numbuf, hl_attr(HLF_N)); /* Highlight line nrs */
+ }
+ msg_prt_line(ml_get(lnum), list);
+--- 2395,2402 ----
+
+ if (curwin->w_p_nu || use_number)
+ {
+! vim_snprintf((char *)numbuf, sizeof(numbuf),
+! "%*ld ", number_width(curwin), (long)lnum);
+ msg_puts_attr(numbuf, hl_attr(HLF_N)); /* Highlight line nrs */
+ }
+ msg_prt_line(ml_get(lnum), list);
+***************
+*** 4486,4492 ****
+ char_u *p1;
+ int did_sub = FALSE;
+ int lastone;
+! unsigned len, needed_len;
+ long nmatch_tl = 0; /* nr of lines matched below lnum */
+ int do_again; /* do it again after joining lines */
+ int skip_match = FALSE;
+--- 4492,4498 ----
+ char_u *p1;
+ int did_sub = FALSE;
+ int lastone;
+! int len, copy_len, needed_len;
+ long nmatch_tl = 0; /* nr of lines matched below lnum */
+ int do_again; /* do it again after joining lines */
+ int skip_match = FALSE;
+***************
+*** 4631,4636 ****
+--- 4637,4644 ----
+
+ if (do_ask)
+ {
++ int typed;
++
+ /* change State to CONFIRM, so that the mouse works
+ * properly */
+ save_State = State;
+***************
+*** 4669,4675 ****
+ resp = getexmodeline('?', NULL, 0);
+ if (resp != NULL)
+ {
+! i = *resp;
+ vim_free(resp);
+ }
+ }
+--- 4677,4683 ----
+ resp = getexmodeline('?', NULL, 0);
+ if (resp != NULL)
+ {
+! typed = *resp;
+ vim_free(resp);
+ }
+ }
+***************
+*** 4721,4727 ****
+ #endif
+ ++no_mapping; /* don't map this key */
+ ++allow_keys; /* allow special keys */
+! i = plain_vgetc();
+ --allow_keys;
+ --no_mapping;
+
+--- 4729,4735 ----
+ #endif
+ ++no_mapping; /* don't map this key */
+ ++allow_keys; /* allow special keys */
+! typed = plain_vgetc();
+ --allow_keys;
+ --no_mapping;
+
+***************
+*** 4732,4766 ****
+ }
+
+ need_wait_return = FALSE; /* no hit-return prompt */
+! if (i == 'q' || i == ESC || i == Ctrl_C
+ #ifdef UNIX
+! || i == intr_char
+ #endif
+ )
+ {
+ got_quit = TRUE;
+ break;
+ }
+! if (i == 'n')
+ break;
+! if (i == 'y')
+ break;
+! if (i == 'l')
+ {
+ /* last: replace and then stop */
+ do_all = FALSE;
+ line2 = lnum;
+ break;
+ }
+! if (i == 'a')
+ {
+ do_ask = FALSE;
+ break;
+ }
+ #ifdef FEAT_INS_EXPAND
+! if (i == Ctrl_E)
+ scrollup_clamp();
+! else if (i == Ctrl_Y)
+ scrolldown_clamp();
+ #endif
+ }
+--- 4740,4774 ----
+ }
+
+ need_wait_return = FALSE; /* no hit-return prompt */
+! if (typed == 'q' || typed == ESC || typed == Ctrl_C
+ #ifdef UNIX
+! || typed == intr_char
+ #endif
+ )
+ {
+ got_quit = TRUE;
+ break;
+ }
+! if (typed == 'n')
+ break;
+! if (typed == 'y')
+ break;
+! if (typed == 'l')
+ {
+ /* last: replace and then stop */
+ do_all = FALSE;
+ line2 = lnum;
+ break;
+ }
+! if (typed == 'a')
+ {
+ do_ask = FALSE;
+ break;
+ }
+ #ifdef FEAT_INS_EXPAND
+! if (typed == Ctrl_E)
+ scrollup_clamp();
+! else if (typed == Ctrl_Y)
+ scrolldown_clamp();
+ #endif
+ }
+***************
+*** 4771,4777 ****
+ if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
+ --no_u_sync;
+
+! if (i == 'n')
+ {
+ /* For a multi-line match, put matchcol at the NUL at
+ * the end of the line and set nmatch to one, so that
+--- 4779,4785 ----
+ if (vim_strchr(p_cpo, CPO_UNDO) != NULL)
+ --no_u_sync;
+
+! if (typed == 'n')
+ {
+ /* For a multi-line match, put matchcol at the NUL at
+ * the end of the line and set nmatch to one, so that
+***************
+*** 4822,4830 ****
+ p1 = ml_get(sub_firstlnum + nmatch - 1);
+ nmatch_tl += nmatch - 1;
+ }
+! i = regmatch.startpos[0].col - copycol;
+! needed_len = i + ((unsigned)STRLEN(p1) - regmatch.endpos[0].col)
+! + sublen + 1;
+ if (new_start == NULL)
+ {
+ /*
+--- 4830,4838 ----
+ p1 = ml_get(sub_firstlnum + nmatch - 1);
+ nmatch_tl += nmatch - 1;
+ }
+! copy_len = regmatch.startpos[0].col - copycol;
+! needed_len = copy_len + ((unsigned)STRLEN(p1)
+! - regmatch.endpos[0].col) + sublen + 1;
+ if (new_start == NULL)
+ {
+ /*
+***************
+*** 4847,4853 ****
+ */
+ len = (unsigned)STRLEN(new_start);
+ needed_len += len;
+! if (needed_len > new_start_len)
+ {
+ new_start_len = needed_len + 50;
+ if ((p1 = alloc_check(new_start_len)) == NULL)
+--- 4855,4861 ----
+ */
+ len = (unsigned)STRLEN(new_start);
+ needed_len += len;
+! if (needed_len > (int)new_start_len)
+ {
+ new_start_len = needed_len + 50;
+ if ((p1 = alloc_check(new_start_len)) == NULL)
+***************
+*** 4865,4872 ****
+ /*
+ * copy the text up to the part that matched
+ */
+! mch_memmove(new_end, sub_firstline + copycol, (size_t)i);
+! new_end += i;
+
+ (void)vim_regsub_multi(&regmatch,
+ sub_firstlnum - regmatch.startpos[0].lnum,
+--- 4873,4880 ----
+ /*
+ * copy the text up to the part that matched
+ */
+! mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
+! new_end += copy_len;
+
+ (void)vim_regsub_multi(&regmatch,
+ sub_firstlnum - regmatch.startpos[0].lnum,
+***************
+*** 5768,5773 ****
+--- 5776,5785 ----
+ {
+ char_u *s, *d;
+ int i;
++ #ifdef S_SPLINT_S /* splint doesn't understand array of pointers */
++ static char **mtable;
++ static char **rtable;
++ #else
+ static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
+ "/*", "/\\*", "\"*", "**",
+ "/\\(\\)",
+***************
+*** 5782,5787 ****
+--- 5794,5800 ----
+ "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
+ "\\[count]", "\\[quotex]", "\\[range]",
+ "\\[pattern]", "\\\\bar", "/\\\\%\\$"};
++ #endif
+ int flags;
+
+ d = IObuff; /* assume IObuff is long enough! */
+***************
+*** 5790,5796 ****
+ * Recognize a few exceptions to the rule. Some strings that contain '*'
+ * with "star". Otherwise '*' is recognized as a wildcard.
+ */
+! for (i = sizeof(mtable) / sizeof(char *); --i >= 0; )
+ if (STRCMP(arg, mtable[i]) == 0)
+ {
+ STRCPY(d, rtable[i]);
+--- 5803,5809 ----
+ * Recognize a few exceptions to the rule. Some strings that contain '*'
+ * with "star". Otherwise '*' is recognized as a wildcard.
+ */
+! for (i = (int)(sizeof(mtable) / sizeof(char *)); --i >= 0; )
+ if (STRCMP(arg, mtable[i]) == 0)
+ {
+ STRCPY(d, rtable[i]);
+*** ../vim-7.2.168/src/ex_cmds2.c 2009-02-05 20:47:14.000000000 +0100
+--- src/ex_cmds2.c 2009-05-13 16:22:33.000000000 +0200
+***************
+*** 3373,3379 ****
+ p = skipwhite(sp->nextline);
+ if (*p != '\\')
+ break;
+! s = alloc((int)(STRLEN(line) + STRLEN(p)));
+ if (s == NULL) /* out of memory */
+ break;
+ STRCPY(s, line);
+--- 3373,3379 ----
+ p = skipwhite(sp->nextline);
+ if (*p != '\\')
+ break;
+! s = alloc((unsigned)(STRLEN(line) + STRLEN(p)));
+ if (s == NULL) /* out of memory */
+ break;
+ STRCPY(s, line);
+*** ../vim-7.2.168/src/ex_docmd.c 2009-04-29 18:44:38.000000000 +0200
+--- src/ex_docmd.c 2009-05-13 17:56:44.000000000 +0200
+***************
+*** 2737,2743 ****
+ int i;
+
+ for (i = 0; cmd[i] != NUL; ++i)
+! if (cmd[i] != (*pp)[i])
+ break;
+ if (i >= len && !isalpha((*pp)[i]))
+ {
+--- 2737,2743 ----
+ int i;
+
+ for (i = 0; cmd[i] != NUL; ++i)
+! if (((char_u *)cmd)[i] != (*pp)[i])
+ break;
+ if (i >= len && !isalpha((*pp)[i]))
+ {
+***************
+*** 2803,2809 ****
+ /* Check for ":dl", ":dell", etc. to ":deletel": that's
+ * :delete with the 'l' flag. Same for 'p'. */
+ for (i = 0; i < len; ++i)
+! if (eap->cmd[i] != "delete"[i])
+ break;
+ if (i == len - 1)
+ {
+--- 2803,2809 ----
+ /* Check for ":dl", ":dell", etc. to ":deletel": that's
+ * :delete with the 'l' flag. Same for 'p'. */
+ for (i = 0; i < len; ++i)
+! if (eap->cmd[i] != ((char_u *)"delete")[i])
+ break;
+ if (i == len - 1)
+ {
+***************
+*** 3823,3829 ****
+ char_u *cmd;
+ int *ctx; /* pointer to xp_context or NULL */
+ {
+! int delim;
+
+ while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
+ {
+--- 3823,3829 ----
+ char_u *cmd;
+ int *ctx; /* pointer to xp_context or NULL */
+ {
+! unsigned delim;
+
+ while (vim_strchr((char_u *)" \t0123456789.$%'/?-+,;", *cmd) != NULL)
+ {
+***************
+*** 9417,9423 ****
+ {
+ int len;
+ int i;
+! static char *(spec_str[]) = {
+ "%",
+ #define SPEC_PERC 0
+ "#",
+--- 9417,9429 ----
+ {
+ int len;
+ int i;
+! #ifdef S_SPLINT_S /* splint can't handle array of pointers */
+! static char **spec_str;
+! static char *(nospec_str[])
+! #else
+! static char *(spec_str[])
+! #endif
+! = {
+ "%",
+ #define SPEC_PERC 0
+ "#",
+***************
+*** 9443,9451 ****
+ # define SPEC_CLIENT 9
+ #endif
+ };
+- #define SPEC_COUNT (sizeof(spec_str) / sizeof(char *))
+
+! for (i = 0; i < SPEC_COUNT; ++i)
+ {
+ len = (int)STRLEN(spec_str[i]);
+ if (STRNCMP(src, spec_str[i], len) == 0)
+--- 9449,9456 ----
+ # define SPEC_CLIENT 9
+ #endif
+ };
+
+! for (i = 0; i < (int)(sizeof(spec_str) / sizeof(char *)); ++i)
+ {
+ len = (int)STRLEN(spec_str[i]);
+ if (STRNCMP(src, spec_str[i], len) == 0)
+***************
+*** 9796,9802 ****
+ }
+
+ /* allocate memory */
+! retval = alloc(len + 1);
+ if (retval == NULL)
+ break;
+ }
+--- 9801,9807 ----
+ }
+
+ /* allocate memory */
+! retval = alloc((unsigned)len + 1);
+ if (retval == NULL)
+ break;
+ }
+*** ../vim-7.2.168/src/proto/ex_cmds.pro 2009-04-29 18:44:38.000000000 +0200
+--- src/proto/ex_cmds.pro 2009-05-13 15:53:39.000000000 +0200
+***************
+*** 9,15 ****
+ void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+ void do_shell __ARGS((char_u *cmd, int flags));
+ char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+! void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+ int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+ int read_viminfo __ARGS((char_u *file, int flags));
+ void write_viminfo __ARGS((char_u *file, int forceit));
+--- 9,15 ----
+ void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+ void do_shell __ARGS((char_u *cmd, int flags));
+ char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+! void append_redir __ARGS((char_u *buf, int buflen, char_u *opt, char_u *fname));
+ int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+ int read_viminfo __ARGS((char_u *file, int flags));
+ void write_viminfo __ARGS((char_u *file, int forceit));
+*** ../vim-7.2.168/src/proto/spell.pro 2007-05-05 19:19:19.000000000 +0200
+--- src/proto/spell.pro 2009-05-13 16:43:13.000000000 +0200
+***************
+*** 22,26 ****
+ char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
+ int spell_word_start __ARGS((int startcol));
+ void spell_expand_check_cap __ARGS((colnr_T col));
+! int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
+ /* vim: set ft=c : */
+--- 22,26 ----
+ char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
+ int spell_word_start __ARGS((int startcol));
+ void spell_expand_check_cap __ARGS((colnr_T col));
+! int expand_spelling __ARGS((linenr_T lnum, char_u *pat, char_u ***matchp));
+ /* vim: set ft=c : */
+*** ../vim-7.2.168/src/quickfix.c 2009-04-29 11:49:57.000000000 +0200
+--- src/quickfix.c 2009-05-13 15:53:18.000000000 +0200
+***************
+*** 2774,2780 ****
+ sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
+ (char *)p_shq);
+ if (*p_sp != NUL)
+! append_redir(cmd, p_sp, fname);
+ /*
+ * Output a newline if there's something else than the :make command that
+ * was typed (in which case the cursor is in column 0).
+--- 2774,2780 ----
+ sprintf((char *)cmd, "%s%s%s", (char *)p_shq, (char *)eap->arg,
+ (char *)p_shq);
+ if (*p_sp != NUL)
+! append_redir(cmd, len, p_sp, fname);
+ /*
+ * Output a newline if there's something else than the :make command that
+ * was typed (in which case the cursor is in column 0).
+*** ../vim-7.2.168/src/spell.c 2009-02-11 17:57:43.000000000 +0100
+--- src/spell.c 2009-05-13 16:31:15.000000000 +0200
+***************
+*** 16151,16161 ****
+ * Returns the number of matches. The matches are in "matchp[]", array of
+ * allocated strings.
+ */
+- /*ARGSUSED*/
+ int
+! expand_spelling(lnum, col, pat, matchp)
+ linenr_T lnum;
+- int col;
+ char_u *pat;
+ char_u ***matchp;
+ {
+--- 16151,16159 ----
+ * Returns the number of matches. The matches are in "matchp[]", array of
+ * allocated strings.
+ */
+ int
+! expand_spelling(lnum, pat, matchp)
+ linenr_T lnum;
+ char_u *pat;
+ char_u ***matchp;
+ {
+*** ../vim-7.2.168/src/structs.h 2009-05-13 12:46:36.000000000 +0200
+--- src/structs.h 2009-05-13 16:45:51.000000000 +0200
+***************
+*** 16,22 ****
+ */
+ #if defined(SASC) && SASC < 658
+ typedef long linenr_T;
+! typedef unsigned colnr_T;
+ typedef unsigned short short_u;
+ #endif
+
+--- 16,22 ----
+ */
+ #if defined(SASC) && SASC < 658
+ typedef long linenr_T;
+! typedef int colnr_T;
+ typedef unsigned short short_u;
+ #endif
+
+*** ../vim-7.2.168/src/term.h 2005-03-16 10:53:56.000000000 +0100
+--- src/term.h 2009-05-13 17:27:41.000000000 +0200
+***************
+*** 96,102 ****
+--- 96,106 ----
+ * - there should be code in term.c to obtain the value from the termcap
+ */
+
++ #ifdef S_SPLINT_S /* splint doesn't understand array of pointers */
++ extern char_u **term_strings; /* current terminal strings */
++ #else
+ extern char_u *(term_strings[]); /* current terminal strings */
++ #endif
+
+ /*
+ * strings used for terminal
+*** ../vim-7.2.168/src/vim.h 2009-04-29 18:44:38.000000000 +0200
+--- src/vim.h 2009-05-13 16:45:39.000000000 +0200
+***************
+*** 1460,1467 ****
+ # define PERROR(msg) perror(msg)
+ #endif
+
+! typedef long linenr_T; /* line number type */
+! typedef unsigned colnr_T; /* column number type */
+ typedef unsigned short disptick_T; /* display tick type */
+
+ #define MAXLNUM (0x7fffffffL) /* maximum (invalid) line number */
+--- 1460,1467 ----
+ # define PERROR(msg) perror(msg)
+ #endif
+
+! typedef long linenr_T; /* line number type */
+! typedef int colnr_T; /* column number type */
+ typedef unsigned short disptick_T; /* display tick type */
+
+ #define MAXLNUM (0x7fffffffL) /* maximum (invalid) line number */
+*** ../vim-7.2.168/src/version.c 2009-05-13 14:48:55.000000000 +0200
+--- src/version.c 2009-05-13 18:44:28.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 169,
+ /**/
+
+--
+Females are strictly forbidden to appear unshaven in public.
+ [real standing law in New Mexico, 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.170 b/source/ap/vim/patches/7.2.170
new file mode 100644
index 000000000..6790be14a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.170
@@ -0,0 +1,179 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.170
+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.170
+Problem: Using b_dev while it was not set. (Dominique Pelle)
+Solution: Add the b_dev_valid flag.
+Files: src/buffer.c, src/fileio.c, src/structs.h
+
+
+*** ../vim-7.2.169/src/buffer.c 2009-05-13 12:46:36.000000000 +0200
+--- src/buffer.c 2009-05-13 20:23:51.000000000 +0200
+***************
+*** 1678,1686 ****
+ buf->b_fname = buf->b_sfname;
+ #ifdef UNIX
+ if (st.st_dev == (dev_T)-1)
+! buf->b_dev = -1;
+ else
+ {
+ buf->b_dev = st.st_dev;
+ buf->b_ino = st.st_ino;
+ }
+--- 1678,1687 ----
+ buf->b_fname = buf->b_sfname;
+ #ifdef UNIX
+ if (st.st_dev == (dev_T)-1)
+! buf->b_dev_valid = FALSE;
+ else
+ {
++ buf->b_dev_valid = TRUE;
+ buf->b_dev = st.st_dev;
+ buf->b_ino = st.st_ino;
+ }
+***************
+*** 2693,2701 ****
+ buf->b_fname = buf->b_sfname;
+ #ifdef UNIX
+ if (st.st_dev == (dev_T)-1)
+! buf->b_dev = -1;
+ else
+ {
+ buf->b_dev = st.st_dev;
+ buf->b_ino = st.st_ino;
+ }
+--- 2694,2703 ----
+ buf->b_fname = buf->b_sfname;
+ #ifdef UNIX
+ if (st.st_dev == (dev_T)-1)
+! buf->b_dev_valid = FALSE;
+ else
+ {
++ buf->b_dev_valid = TRUE;
+ buf->b_dev = st.st_dev;
+ buf->b_ino = st.st_ino;
+ }
+***************
+*** 2889,2895 ****
+ /* If no struct stat given, get it now */
+ if (stp == NULL)
+ {
+! if (buf->b_dev < 0 || mch_stat((char *)ffname, &st) < 0)
+ st.st_dev = (dev_T)-1;
+ stp = &st;
+ }
+--- 2891,2897 ----
+ /* If no struct stat given, get it now */
+ if (stp == NULL)
+ {
+! if (!buf->b_dev_valid || mch_stat((char *)ffname, &st) < 0)
+ st.st_dev = (dev_T)-1;
+ stp = &st;
+ }
+***************
+*** 2926,2936 ****
+
+ if (buf->b_fname != NULL && mch_stat((char *)buf->b_fname, &st) >= 0)
+ {
+ buf->b_dev = st.st_dev;
+ buf->b_ino = st.st_ino;
+ }
+ else
+! buf->b_dev = -1;
+ }
+
+ /*
+--- 2928,2939 ----
+
+ if (buf->b_fname != NULL && mch_stat((char *)buf->b_fname, &st) >= 0)
+ {
++ buf->b_dev_valid = TRUE;
+ buf->b_dev = st.st_dev;
+ buf->b_ino = st.st_ino;
+ }
+ else
+! buf->b_dev_valid = FALSE;
+ }
+
+ /*
+***************
+*** 2941,2947 ****
+ buf_T *buf;
+ struct stat *stp;
+ {
+! return (buf->b_dev >= 0
+ && stp->st_dev == buf->b_dev
+ && stp->st_ino == buf->b_ino);
+ }
+--- 2944,2950 ----
+ buf_T *buf;
+ struct stat *stp;
+ {
+! return (buf->b_dev_valid
+ && stp->st_dev == buf->b_dev
+ && stp->st_ino == buf->b_ino);
+ }
+*** ../vim-7.2.169/src/fileio.c 2009-04-29 18:01:23.000000000 +0200
+--- src/fileio.c 2009-05-13 20:24:08.000000000 +0200
+***************
+*** 4416,4422 ****
+ # endif
+ buf_setino(buf);
+ }
+! else if (buf->b_dev < 0)
+ /* Set the inode when creating a new file. */
+ buf_setino(buf);
+ #endif
+--- 4416,4422 ----
+ # endif
+ buf_setino(buf);
+ }
+! else if (!buf->b_dev_valid)
+ /* Set the inode when creating a new file. */
+ buf_setino(buf);
+ #endif
+*** ../vim-7.2.169/src/structs.h 2009-05-13 18:54:14.000000000 +0200
+--- src/structs.h 2009-05-13 20:24:54.000000000 +0200
+***************
+*** 1166,1172 ****
+ char_u *b_fname; /* current file name */
+
+ #ifdef UNIX
+! dev_t b_dev; /* device number (-1 if not set) */
+ ino_t b_ino; /* inode number */
+ #endif
+ #ifdef FEAT_CW_EDITOR
+--- 1166,1173 ----
+ char_u *b_fname; /* current file name */
+
+ #ifdef UNIX
+! int b_dev_valid; /* TRUE when b_dev has a valid number */
+! dev_t b_dev; /* device number */
+ ino_t b_ino; /* inode number */
+ #endif
+ #ifdef FEAT_CW_EDITOR
+*** ../vim-7.2.169/src/version.c 2009-05-13 18:54:14.000000000 +0200
+--- src/version.c 2009-05-13 20:43:22.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 170,
+ /**/
+
+--
+A special cleaning ordinance bans housewives from hiding dirt and dust under a
+rug in a dwelling.
+ [real standing law in Pennsylvania, 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.171 b/source/ap/vim/patches/7.2.171
new file mode 100644
index 000000000..7d1b8a861
--- /dev/null
+++ b/source/ap/vim/patches/7.2.171
@@ -0,0 +1,80 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.171
+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.171 (after 7.2.169)
+Problem: Compiler warnings. (Tony Mechelynck)
+Solution: Add function prototype. (Patrick Texier) Init variable.
+Files: src/ex_cmds.c
+
+
+*** ../vim-7.2.170/src/ex_cmds.c 2009-05-13 18:54:14.000000000 +0200
+--- src/ex_cmds.c 2009-05-14 21:11:01.000000000 +0200
+***************
+*** 4637,4643 ****
+
+ if (do_ask)
+ {
+! int typed;
+
+ /* change State to CONFIRM, so that the mouse works
+ * properly */
+--- 4635,4641 ----
+
+ if (do_ask)
+ {
+! int typed = 0;
+
+ /* change State to CONFIRM, so that the mouse works
+ * properly */
+***************
+*** 6553,6558 ****
+--- 6549,6555 ----
+ static sign_T *first_sign = NULL;
+ static int last_sign_typenr = MAX_TYPENR; /* is decremented */
+
++ static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd));
+ static void sign_list_defined __ARGS((sign_T *sp));
+ static void sign_undefine __ARGS((sign_T *sp, sign_T *sp_prev));
+
+***************
+*** 6579,6586 ****
+ */
+ static int
+ sign_cmd_idx(begin_cmd, end_cmd)
+! char *begin_cmd; /* begin of sign subcmd */
+! char *end_cmd; /* just after sign subcmd */
+ {
+ int idx;
+ char save = *end_cmd;
+--- 6576,6583 ----
+ */
+ static int
+ sign_cmd_idx(begin_cmd, end_cmd)
+! char_u *begin_cmd; /* begin of sign subcmd */
+! char_u *end_cmd; /* just after sign subcmd */
+ {
+ int idx;
+ char save = *end_cmd;
+*** ../vim-7.2.170/src/version.c 2009-05-13 20:47:07.000000000 +0200
+--- src/version.c 2009-05-14 21:49:22.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 171,
+ /**/
+
+--
+Living on Earth includes an annual free trip around 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.172 b/source/ap/vim/patches/7.2.172
new file mode 100644
index 000000000..1ba814d32
--- /dev/null
+++ b/source/ap/vim/patches/7.2.172
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.172 (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.172 (extra)
+Problem: Compiler warning.
+Solution: Adjust function prototype. (Patrick Texier)
+Files: src/os_mswin.c
+
+
+*** ../vim-7.2.171/src/os_mswin.c 2009-01-22 21:49:21.000000000 +0100
+--- src/os_mswin.c 2009-05-14 20:54:32.000000000 +0200
+***************
+*** 1227,1234 ****
+ * Wait for another process to Close the Clipboard.
+ * Returns TRUE for success.
+ */
+! int
+! vim_open_clipboard()
+ {
+ int delay = 10;
+
+--- 1227,1234 ----
+ * Wait for another process to Close the Clipboard.
+ * Returns TRUE for success.
+ */
+! static int
+! vim_open_clipboard(void)
+ {
+ int delay = 10;
+
+*** ../vim-7.2.171/src/version.c 2009-05-14 21:51:06.000000000 +0200
+--- src/version.c 2009-05-14 21:59:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 172,
+ /**/
+
+--
+FROG: How you English say: I one more time, mac, I unclog my nose towards
+ you, sons of a window-dresser, so, you think you could out-clever us
+ French fellows with your silly knees-bent creeping about advancing
+ behaviour. (blows a raspberry) I wave my private parts at your aunties,
+ you brightly-coloured, mealy-templed, cranberry-smelling, electric
+ donkey-bottom biters.
+ "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.173 b/source/ap/vim/patches/7.2.173
new file mode 100644
index 000000000..331a6e849
--- /dev/null
+++ b/source/ap/vim/patches/7.2.173
@@ -0,0 +1,719 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.173
+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.173
+Problem: Without lint there is no check for unused function arguments.
+Solution: Use gcc -Wunused-parameter instead of lint. For a few files add
+ attributes to arguments that are known not to be used.
+Files: src/auto/configure, src/buffer.c, src/charset.c, src/diff.c,
+ src/configure.in, src/config.h.in, src/edit.c, src/ex_cmds.c,
+ src/ex_cmds2.c, src/version.c, src/vim.h
+
+
+*** ../vim-7.2.172/src/auto/configure 2009-05-13 14:48:55.000000000 +0200
+--- src/auto/configure 2009-05-14 22:08:12.000000000 +0200
+***************
+*** 10362,10367 ****
+--- 10372,10427 ----
+
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
++ { $as_echo "$as_me:$LINENO: checking whether __attribute__((unused)) is allowed" >&5
++ $as_echo_n "checking whether __attribute__((unused)) is allowed... " >&6; }
++ cat >conftest.$ac_ext <<_ACEOF
++ /* confdefs.h. */
++ _ACEOF
++ cat confdefs.h >>conftest.$ac_ext
++ cat >>conftest.$ac_ext <<_ACEOF
++ /* end confdefs.h. */
++ #include <stdio.h>
++ int
++ main ()
++ {
++ int x __attribute__((unused));
++ ;
++ 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_ATTRIBUTE_UNUSED 1
++ _ACEOF
++
++ else
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ { $as_echo "$as_me:$LINENO: result: no" >&5
++ $as_echo "no" >&6; }
++ fi
++
++ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++
+ if test "${ac_cv_header_elf_h+set}" = set; then
+ { $as_echo "$as_me:$LINENO: checking for elf.h" >&5
+ $as_echo_n "checking for elf.h... " >&6; }
+*** ../vim-7.2.172/src/buffer.c 2009-05-13 20:47:07.000000000 +0200
+--- src/buffer.c 2009-05-14 21:34:06.000000000 +0200
+***************
+*** 512,523 ****
+ * buf_freeall() - free all things allocated for a buffer that are related to
+ * the file.
+ */
+- /*ARGSUSED*/
+ void
+ buf_freeall(buf, del_buf, wipe_buf)
+ buf_T *buf;
+! int del_buf; /* buffer is going to be deleted */
+! int wipe_buf; /* buffer is going to be wiped out */
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf = (buf == curbuf);
+--- 512,522 ----
+ * buf_freeall() - free all things allocated for a buffer that are related to
+ * the file.
+ */
+ void
+ buf_freeall(buf, del_buf, wipe_buf)
+ buf_T *buf;
+! int del_buf UNUSED; /* buffer is going to be deleted */
+! int wipe_buf UNUSED; /* buffer is going to be wiped out */
+ {
+ #ifdef FEAT_AUTOCMD
+ int is_curbuf = (buf == curbuf);
+***************
+*** 2437,2447 ****
+ * another tab page.
+ * Returns NULL when there isn't any info.
+ */
+- /*ARGSUSED*/
+ static wininfo_T *
+ find_wininfo(buf, skip_diff_buffer)
+ buf_T *buf;
+! int skip_diff_buffer;
+ {
+ wininfo_T *wip;
+
+--- 2436,2445 ----
+ * another tab page.
+ * Returns NULL when there isn't any info.
+ */
+ static wininfo_T *
+ find_wininfo(buf, skip_diff_buffer)
+ buf_T *buf;
+! int skip_diff_buffer UNUSED;
+ {
+ wininfo_T *wip;
+
+***************
+*** 4278,4287 ****
+ * Make "ffname" a full file name, set "sfname" to "ffname" if not NULL.
+ * "ffname" becomes a pointer to allocated memory (or NULL).
+ */
+- /*ARGSUSED*/
+ void
+ fname_expand(buf, ffname, sfname)
+! buf_T *buf;
+ char_u **ffname;
+ char_u **sfname;
+ {
+--- 4276,4284 ----
+ * Make "ffname" a full file name, set "sfname" to "ffname" if not NULL.
+ * "ffname" becomes a pointer to allocated memory (or NULL).
+ */
+ void
+ fname_expand(buf, ffname, sfname)
+! buf_T *buf UNUSED;
+ char_u **ffname;
+ char_u **sfname;
+ {
+***************
+*** 5577,5587 ****
+ * this buffer. Call this to wipe out a temp buffer that does not contain any
+ * marks.
+ */
+- /*ARGSUSED*/
+ void
+ wipe_buffer(buf, aucmd)
+ buf_T *buf;
+! int aucmd; /* When TRUE trigger autocommands. */
+ {
+ if (buf->b_fnum == top_file_num - 1)
+ --top_file_num;
+--- 5574,5583 ----
+ * this buffer. Call this to wipe out a temp buffer that does not contain any
+ * marks.
+ */
+ void
+ wipe_buffer(buf, aucmd)
+ buf_T *buf;
+! int aucmd UNUSED; /* When TRUE trigger autocommands. */
+ {
+ if (buf->b_fnum == top_file_num - 1)
+ --top_file_num;
+*** ../vim-7.2.172/src/charset.c 2009-05-13 14:10:46.000000000 +0200
+--- src/charset.c 2009-05-14 21:34:30.000000000 +0200
+***************
+*** 1026,1038 ****
+ * string at start of line. Warning: *headp is only set if it's a non-zero
+ * value, init to 0 before calling.
+ */
+- /*ARGSUSED*/
+ int
+ win_lbr_chartabsize(wp, s, col, headp)
+ win_T *wp;
+ char_u *s;
+ colnr_T col;
+! int *headp;
+ {
+ #ifdef FEAT_LINEBREAK
+ int c;
+--- 1026,1037 ----
+ * string at start of line. Warning: *headp is only set if it's a non-zero
+ * value, init to 0 before calling.
+ */
+ int
+ win_lbr_chartabsize(wp, s, col, headp)
+ win_T *wp;
+ char_u *s;
+ colnr_T col;
+! int *headp UNUSED;
+ {
+ #ifdef FEAT_LINEBREAK
+ int c;
+*** ../vim-7.2.172/src/diff.c 2009-05-13 18:54:14.000000000 +0200
+--- src/diff.c 2009-05-14 21:24:59.000000000 +0200
+***************
+*** 652,661 ****
+ * The buffers are written to a file, also for unmodified buffers (the file
+ * could have been produced by autocommands, e.g. the netrw plugin).
+ */
+- /*ARGSUSED*/
+ void
+ ex_diffupdate(eap)
+! exarg_T *eap; /* can be NULL, it's not used */
+ {
+ buf_T *buf;
+ int idx_orig;
+--- 652,660 ----
+ * The buffers are written to a file, also for unmodified buffers (the file
+ * could have been produced by autocommands, e.g. the netrw plugin).
+ */
+ void
+ ex_diffupdate(eap)
+! exarg_T *eap UNUSED; /* can be NULL */
+ {
+ buf_T *buf;
+ int idx_orig;
+***************
+*** 1094,1103 ****
+ /*
+ * Set options to show difs for the current window.
+ */
+- /*ARGSUSED*/
+ void
+ ex_diffthis(eap)
+! exarg_T *eap;
+ {
+ /* Set 'diff', 'scrollbind' on and 'wrap' off. */
+ diff_win_options(curwin, TRUE);
+--- 1093,1101 ----
+ /*
+ * Set options to show difs for the current window.
+ */
+ void
+ ex_diffthis(eap)
+! exarg_T *eap UNUSED;
+ {
+ /* Set 'diff', 'scrollbind' on and 'wrap' off. */
+ diff_win_options(curwin, TRUE);
+*** ../vim-7.2.172/src/configure.in 2009-05-13 14:48:55.000000000 +0200
+--- src/configure.in 2009-05-14 22:08:06.000000000 +0200
+***************
+*** 2067,2072 ****
+--- 2067,2077 ----
+ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
+ AC_MSG_RESULT(no))
+
++ AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
++ AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
++ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
++ AC_MSG_RESULT(no))
++
+ dnl Checks for header files.
+ AC_CHECK_HEADER(elf.h, HAS_ELF=1)
+ dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
+*** ../vim-7.2.172/src/config.h.in 2009-03-02 02:44:54.000000000 +0100
+--- src/config.h.in 2009-05-14 21:15:02.000000000 +0200
+***************
+*** 30,35 ****
+--- 30,38 ----
+ /* Define when __DATE__ " " __TIME__ can be used */
+ #undef HAVE_DATE_TIME
+
++ /* Define when __attribute__((unused)) can be used */
++ #undef HAVE_ATTRIBUTE_UNUSED
++
+ /* defined always when using configure */
+ #undef UNIX
+
+*** ../vim-7.2.172/src/edit.c 2009-05-13 18:54:14.000000000 +0200
+--- src/edit.c 2009-05-14 21:35:08.000000000 +0200
+***************
+*** 1447,1456 ****
+ * Only redraw when there are no characters available. This speeds up
+ * inserting sequences of characters (e.g., for CTRL-R).
+ */
+- /*ARGSUSED*/
+ static void
+ ins_redraw(ready)
+! int ready; /* not busy with something */
+ {
+ if (!char_avail())
+ {
+--- 1447,1455 ----
+ * Only redraw when there are no characters available. This speeds up
+ * inserting sequences of characters (e.g., for CTRL-R).
+ */
+ static void
+ ins_redraw(ready)
+! int ready UNUSED; /* not busy with something */
+ {
+ if (!char_avail())
+ {
+***************
+*** 1962,1971 ****
+ * Only matters when there are composing characters.
+ * Return TRUE when something was deleted.
+ */
+- /*ARGSUSED*/
+ static int
+ del_char_after_col(limit_col)
+! int limit_col;
+ {
+ #ifdef FEAT_MBYTE
+ if (enc_utf8 && limit_col >= 0)
+--- 1961,1969 ----
+ * Only matters when there are composing characters.
+ * Return TRUE when something was deleted.
+ */
+ static int
+ del_char_after_col(limit_col)
+! int limit_col UNUSED;
+ {
+ #ifdef FEAT_MBYTE
+ if (enc_utf8 && limit_col >= 0)
+*** ../vim-7.2.172/src/ex_cmds.c 2009-05-14 21:51:06.000000000 +0200
+--- src/ex_cmds.c 2009-05-14 21:11:01.000000000 +0200
+***************
+*** 43,52 ****
+ /*
+ * ":ascii" and "ga".
+ */
+- /*ARGSUSED*/
+ void
+ do_ascii(eap)
+! exarg_T *eap;
+ {
+ int c;
+ int cval;
+--- 43,51 ----
+ /*
+ * ":ascii" and "ga".
+ */
+ void
+ do_ascii(eap)
+! exarg_T *eap UNUSED;
+ {
+ int c;
+ int cval;
+***************
+*** 2373,2382 ****
+ * ^? ^H
+ * not ^? ^?
+ */
+- /*ARGSUSED*/
+ void
+ do_fixdel(eap)
+! exarg_T *eap;
+ {
+ char_u *p;
+
+--- 2372,2380 ----
+ * ^? ^H
+ * not ^? ^?
+ */
+ void
+ do_fixdel(eap)
+! exarg_T *eap UNUSED;
+ {
+ char_u *p;
+
+***************
+*** 6127,6136 ****
+ /*
+ * ":exusage"
+ */
+- /*ARGSUSED*/
+ void
+ ex_exusage(eap)
+! exarg_T *eap;
+ {
+ do_cmdline_cmd((char_u *)"help ex-cmd-index");
+ }
+--- 6125,6133 ----
+ /*
+ * ":exusage"
+ */
+ void
+ ex_exusage(eap)
+! exarg_T *eap UNUSED;
+ {
+ do_cmdline_cmd((char_u *)"help ex-cmd-index");
+ }
+***************
+*** 6138,6147 ****
+ /*
+ * ":viusage"
+ */
+- /*ARGSUSED*/
+ void
+ ex_viusage(eap)
+! exarg_T *eap;
+ {
+ do_cmdline_cmd((char_u *)"help normal-index");
+ }
+--- 6135,6143 ----
+ /*
+ * ":viusage"
+ */
+ void
+ ex_viusage(eap)
+! exarg_T *eap UNUSED;
+ {
+ do_cmdline_cmd((char_u *)"help normal-index");
+ }
+***************
+*** 7154,7163 ****
+ * Function given to ExpandGeneric() to obtain the sign command
+ * expansion.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_sign_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ sign_T *sp;
+--- 7150,7158 ----
+ * Function given to ExpandGeneric() to obtain the sign command
+ * expansion.
+ */
+ char_u *
+ get_sign_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ sign_T *sp;
+*** ../vim-7.2.172/src/ex_cmds2.c 2009-05-13 18:54:14.000000000 +0200
+--- src/ex_cmds2.c 2009-05-14 21:35:40.000000000 +0200
+***************
+*** 680,689 ****
+ /*
+ * ":breaklist".
+ */
+- /*ARGSUSED*/
+ void
+ ex_breaklist(eap)
+! exarg_T *eap;
+ {
+ struct debuggy *bp;
+ int i;
+--- 680,688 ----
+ /*
+ * ":breaklist".
+ */
+ void
+ ex_breaklist(eap)
+! exarg_T *eap UNUSED;
+ {
+ struct debuggy *bp;
+ int i;
+***************
+*** 1342,1355 ****
+ /*
+ * return TRUE if buffer was changed and cannot be abandoned.
+ */
+- /*ARGSUSED*/
+ int
+ check_changed(buf, checkaw, mult_win, forceit, allbuf)
+ buf_T *buf;
+ int checkaw; /* do autowrite if buffer was changed */
+ int mult_win; /* check also when several wins for the buf */
+ int forceit;
+! int allbuf; /* may write all buffers */
+ {
+ if ( !forceit
+ && bufIsChanged(buf)
+--- 1341,1353 ----
+ /*
+ * return TRUE if buffer was changed and cannot be abandoned.
+ */
+ int
+ check_changed(buf, checkaw, mult_win, forceit, allbuf)
+ buf_T *buf;
+ int checkaw; /* do autowrite if buffer was changed */
+ int mult_win; /* check also when several wins for the buf */
+ int forceit;
+! int allbuf UNUSED; /* may write all buffers */
+ {
+ if ( !forceit
+ && bufIsChanged(buf)
+***************
+*** 1759,1770 ****
+ *
+ * Return FAIL for failure, OK otherwise.
+ */
+- /*ARGSUSED*/
+ static int
+ do_arglist(str, what, after)
+ char_u *str;
+! int what;
+! int after; /* 0 means before first one */
+ {
+ garray_T new_ga;
+ int exp_count;
+--- 1757,1767 ----
+ *
+ * Return FAIL for failure, OK otherwise.
+ */
+ static int
+ do_arglist(str, what, after)
+ char_u *str;
+! int what UNUSED;
+! int after UNUSED; /* 0 means before first one */
+ {
+ garray_T new_ga;
+ int exp_count;
+***************
+*** 2549,2559 ****
+
+ static void source_callback __ARGS((char_u *fname, void *cookie));
+
+- /*ARGSUSED*/
+ static void
+ source_callback(fname, cookie)
+ char_u *fname;
+! void *cookie;
+ {
+ (void)do_source(fname, FALSE, DOSO_NONE);
+ }
+--- 2546,2555 ----
+
+ static void source_callback __ARGS((char_u *fname, void *cookie));
+
+ static void
+ source_callback(fname, cookie)
+ char_u *fname;
+! void *cookie UNUSED;
+ {
+ (void)do_source(fname, FALSE, DOSO_NONE);
+ }
+***************
+*** 2680,2689 ****
+ /*
+ * ":options"
+ */
+- /*ARGSUSED*/
+ void
+ ex_options(eap)
+! exarg_T *eap;
+ {
+ cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
+ }
+--- 2676,2684 ----
+ /*
+ * ":options"
+ */
+ void
+ ex_options(eap)
+! exarg_T *eap UNUSED;
+ {
+ cmd_source((char_u *)SYS_OPTWIN_FILE, NULL);
+ }
+***************
+*** 3190,3199 ****
+ /*
+ * ":scriptnames"
+ */
+- /*ARGSUSED*/
+ void
+ ex_scriptnames(eap)
+! exarg_T *eap;
+ {
+ int i;
+
+--- 3185,3193 ----
+ /*
+ * ":scriptnames"
+ */
+ void
+ ex_scriptnames(eap)
+! exarg_T *eap UNUSED;
+ {
+ int i;
+
+***************
+*** 3317,3328 ****
+ * Return a pointer to the line in allocated memory.
+ * Return NULL for end-of-file or some error.
+ */
+- /* ARGSUSED */
+ char_u *
+ getsourceline(c, cookie, indent)
+! int c; /* not used */
+ void *cookie;
+! int indent; /* not used */
+ {
+ struct source_cookie *sp = (struct source_cookie *)cookie;
+ char_u *line;
+--- 3311,3321 ----
+ * Return a pointer to the line in allocated memory.
+ * Return NULL for end-of-file or some error.
+ */
+ char_u *
+ getsourceline(c, cookie, indent)
+! int c UNUSED;
+ void *cookie;
+! int indent UNUSED;
+ {
+ struct source_cookie *sp = (struct source_cookie *)cookie;
+ char_u *line;
+***************
+*** 3649,3658 ****
+ * ":scriptencoding": Set encoding conversion for a sourced script.
+ * Without the multi-byte feature it's simply ignored.
+ */
+- /*ARGSUSED*/
+ void
+ ex_scriptencoding(eap)
+! exarg_T *eap;
+ {
+ #ifdef FEAT_MBYTE
+ struct source_cookie *sp;
+--- 3642,3650 ----
+ * ":scriptencoding": Set encoding conversion for a sourced script.
+ * Without the multi-byte feature it's simply ignored.
+ */
+ void
+ ex_scriptencoding(eap)
+! exarg_T *eap UNUSED;
+ {
+ #ifdef FEAT_MBYTE
+ struct source_cookie *sp;
+***************
+*** 4101,4110 ****
+ * Function given to ExpandGeneric() to obtain the possible arguments of the
+ * ":language" command.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_lang_arg(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ if (idx == 0)
+--- 4093,4101 ----
+ * Function given to ExpandGeneric() to obtain the possible arguments of the
+ * ":language" command.
+ */
+ char_u *
+ get_lang_arg(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ if (idx == 0)
+*** ../vim-7.2.172/src/version.c 2009-05-14 22:00:37.000000000 +0200
+--- src/version.c 2009-05-14 22:14:51.000000000 +0200
+***************
+*** 1623,1632 ****
+ /*
+ * ":intro": clear screen, display intro screen and wait for return.
+ */
+- /*ARGSUSED*/
+ void
+ ex_intro(eap)
+! exarg_T *eap;
+ {
+ screenclear();
+ intro_message(TRUE);
+--- 1625,1633 ----
+ /*
+ * ":intro": clear screen, display intro screen and wait for return.
+ */
+ void
+ ex_intro(eap)
+! exarg_T *eap UNUSED;
+ {
+ screenclear();
+ intro_message(TRUE);
+*** ../vim-7.2.172/src/vim.h 2009-05-13 18:54:14.000000000 +0200
+--- src/vim.h 2009-05-14 21:17:51.000000000 +0200
+***************
+*** 262,267 ****
+--- 262,275 ----
+ # define __PARMS(x) __ARGS(x)
+ #endif
+
++ /* Mark unused function arguments with UNUSED, so that gcc -Wunused-parameter
++ * can be used to check for mistakes. */
++ #ifdef HAVE_ATTRIBUTE_UNUSED
++ # define UNUSED __attribute__((unused))
++ #else
++ # define UNUSED
++ #endif
++
+ /* if we're compiling in C++ (currently only KVim), the system
+ * headers must have the correct prototypes or nothing will build.
+ * conversely, our prototypes might clash due to throw() specifiers and
+*** ../vim-7.2.172/src/version.c 2009-05-14 22:00:37.000000000 +0200
+--- src/version.c 2009-05-14 22:14:51.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 173,
+ /**/
+
+--
+SIGIRO -- irony detected (iron 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.174 b/source/ap/vim/patches/7.2.174
new file mode 100644
index 000000000..5f8ccd3a0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.174
@@ -0,0 +1,1718 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.174
+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.174
+Problem: Too many warnings from gcc -Wextra.
+Solution: Change initializer. Add UNUSED. Add type casts.
+Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c,
+ src/ex_getln.c, src/fileio.c, getchar.c, globals.h, main.c,
+ memline.c, message.c, src/misc1.c, src/move.c, src/normal.c,
+ src/option.c, src/os_unix.c, src/os_unix.h, src/regexp.c,
+ src/search.c, src/tag.c
+
+
+*** ../vim-7.2.173/src/edit.c 2009-05-14 22:19:19.000000000 +0200
+--- src/edit.c 2009-05-15 21:06:07.000000000 +0200
+***************
+*** 8991,8997 ****
+ foldOpenCursor();
+ #endif
+ undisplay_dollar();
+! if (gchar_cursor() != NUL || virtual_active()
+ )
+ {
+ start_arrow(&curwin->w_cursor);
+--- 8992,9001 ----
+ foldOpenCursor();
+ #endif
+ undisplay_dollar();
+! if (gchar_cursor() != NUL
+! #ifdef FEAT_VIRTUALEDIT
+! || virtual_active()
+! #endif
+ )
+ {
+ start_arrow(&curwin->w_cursor);
+*** ../vim-7.2.173/src/eval.c 2009-04-22 16:07:57.000000000 +0200
+--- src/eval.c 2009-05-15 21:18:08.000000000 +0200
+***************
+*** 8303,8312 ****
+ /*
+ * "argc()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_argc(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = ARGCOUNT;
+--- 8303,8311 ----
+ /*
+ * "argc()" function
+ */
+ static void
+ f_argc(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = ARGCOUNT;
+***************
+*** 8315,8324 ****
+ /*
+ * "argidx()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_argidx(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = curwin->w_arg_idx;
+--- 8314,8322 ----
+ /*
+ * "argidx()" function
+ */
+ static void
+ f_argidx(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = curwin->w_arg_idx;
+***************
+*** 8396,8405 ****
+ /*
+ * "browse(save, title, initdir, default)" function
+ */
+- /* ARGSUSED */
+ static void
+ f_browse(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_BROWSE
+--- 8394,8402 ----
+ /*
+ * "browse(save, title, initdir, default)" function
+ */
+ static void
+ f_browse(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_BROWSE
+***************
+*** 8431,8440 ****
+ /*
+ * "browsedir(title, initdir)" function
+ */
+- /* ARGSUSED */
+ static void
+ f_browsedir(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_BROWSE
+--- 8428,8436 ----
+ /*
+ * "browsedir(title, initdir)" function
+ */
+ static void
+ f_browsedir(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_BROWSE
+***************
+*** 8801,8810 ****
+ /*
+ * "changenr()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_changenr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = curbuf->b_u_seq_cur;
+--- 8797,8805 ----
+ /*
+ * "changenr()" function
+ */
+ static void
+ f_changenr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = curbuf->b_u_seq_cur;
+***************
+*** 8854,8863 ****
+ /*
+ * "clearmatches()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_clearmatches(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SEARCH_EXTRA
+--- 8849,8857 ----
+ /*
+ * "clearmatches()" function
+ */
+ static void
+ f_clearmatches(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SEARCH_EXTRA
+*** ../vim-7.2.173/src/ex_cmds.c 2009-05-14 22:19:19.000000000 +0200
+--- src/ex_cmds.c 2009-05-15 20:42:18.000000000 +0200
+***************
+*** 4040,4047 ****
+--- 4040,4049 ----
+ bigness = curwin->w_height;
+ else if (firstwin == lastwin)
+ bigness = curwin->w_p_scr * 2;
++ #ifdef FEAT_WINDOWS
+ else
+ bigness = curwin->w_height - 3;
++ #endif
+ if (bigness < 1)
+ bigness = 1;
+
+*** ../vim-7.2.173/src/ex_docmd.c 2009-05-13 18:54:14.000000000 +0200
+--- src/ex_docmd.c 2009-05-15 20:47:58.000000000 +0200
+***************
+*** 1578,1588 ****
+ * If "fgetline" is get_loop_line(), return TRUE if the getline it uses equals
+ * "func". * Otherwise return TRUE when "fgetline" equals "func".
+ */
+- /*ARGSUSED*/
+ int
+ getline_equal(fgetline, cookie, func)
+ char_u *(*fgetline) __ARGS((int, void *, int));
+! void *cookie; /* argument for fgetline() */
+ char_u *(*func) __ARGS((int, void *, int));
+ {
+ #ifdef FEAT_EVAL
+--- 1578,1587 ----
+ * If "fgetline" is get_loop_line(), return TRUE if the getline it uses equals
+ * "func". * Otherwise return TRUE when "fgetline" equals "func".
+ */
+ int
+ getline_equal(fgetline, cookie, func)
+ char_u *(*fgetline) __ARGS((int, void *, int));
+! void *cookie UNUSED; /* argument for fgetline() */
+ char_u *(*func) __ARGS((int, void *, int));
+ {
+ #ifdef FEAT_EVAL
+***************
+*** 1610,1619 ****
+ * If "fgetline" is get_loop_line(), return the cookie used by the original
+ * getline function. Otherwise return "cookie".
+ */
+- /*ARGSUSED*/
+ void *
+ getline_cookie(fgetline, cookie)
+! char_u *(*fgetline) __ARGS((int, void *, int));
+ void *cookie; /* argument for fgetline() */
+ {
+ # ifdef FEAT_EVAL
+--- 1609,1617 ----
+ * If "fgetline" is get_loop_line(), return the cookie used by the original
+ * getline function. Otherwise return "cookie".
+ */
+ void *
+ getline_cookie(fgetline, cookie)
+! char_u *(*fgetline) __ARGS((int, void *, int)) UNUSED;
+ void *cookie; /* argument for fgetline() */
+ {
+ # ifdef FEAT_EVAL
+***************
+*** 2754,2764 ****
+ * "full" is set to TRUE if the whole command name matched.
+ * Returns NULL for an ambiguous user command.
+ */
+- /*ARGSUSED*/
+ static char_u *
+ find_command(eap, full)
+ exarg_T *eap;
+! int *full;
+ {
+ int len;
+ char_u *p;
+--- 2752,2761 ----
+ * "full" is set to TRUE if the whole command name matched.
+ * Returns NULL for an ambiguous user command.
+ */
+ static char_u *
+ find_command(eap, full)
+ exarg_T *eap;
+! int *full UNUSED;
+ {
+ int len;
+ char_u *p;
+***************
+*** 5053,5062 ****
+ /*
+ * Function given to ExpandGeneric() to obtain the list of command names.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_command_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ if (idx >= (int)CMD_SIZE)
+--- 5050,5058 ----
+ /*
+ * Function given to ExpandGeneric() to obtain the list of command names.
+ */
+ char_u *
+ get_command_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ if (idx >= (int)CMD_SIZE)
+***************
+*** 5573,5582 ****
+ * ":comclear"
+ * Clear all user commands, global and for current buffer.
+ */
+- /*ARGSUSED*/
+ void
+ ex_comclear(eap)
+! exarg_T *eap;
+ {
+ uc_clear(&ucmds);
+ uc_clear(&curbuf->b_ucmds);
+--- 5569,5577 ----
+ * ":comclear"
+ * Clear all user commands, global and for current buffer.
+ */
+ void
+ ex_comclear(eap)
+! exarg_T *eap UNUSED;
+ {
+ uc_clear(&ucmds);
+ uc_clear(&curbuf->b_ucmds);
+***************
+*** 6072,6081 ****
+ /*
+ * Function given to ExpandGeneric() to obtain the list of user command names.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_user_commands(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ if (idx < curbuf->b_ucmds.ga_len)
+--- 6067,6075 ----
+ /*
+ * Function given to ExpandGeneric() to obtain the list of user command names.
+ */
+ char_u *
+ get_user_commands(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ if (idx < curbuf->b_ucmds.ga_len)
+***************
+*** 6090,6099 ****
+ * Function given to ExpandGeneric() to obtain the list of user command
+ * attributes.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_user_cmd_flags(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ static char *user_cmd_flags[] =
+--- 6084,6092 ----
+ * Function given to ExpandGeneric() to obtain the list of user command
+ * attributes.
+ */
+ char_u *
+ get_user_cmd_flags(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ static char *user_cmd_flags[] =
+***************
+*** 6108,6117 ****
+ /*
+ * Function given to ExpandGeneric() to obtain the list of values for -nargs.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_user_cmd_nargs(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ static char *user_cmd_nargs[] = {"0", "1", "*", "?", "+"};
+--- 6101,6109 ----
+ /*
+ * Function given to ExpandGeneric() to obtain the list of values for -nargs.
+ */
+ char_u *
+ get_user_cmd_nargs(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ static char *user_cmd_nargs[] = {"0", "1", "*", "?", "+"};
+***************
+*** 6124,6133 ****
+ /*
+ * Function given to ExpandGeneric() to obtain the list of values for -complete.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_user_cmd_complete(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ return (char_u *)command_complete[idx].name;
+--- 6116,6124 ----
+ /*
+ * Function given to ExpandGeneric() to obtain the list of values for -complete.
+ */
+ char_u *
+ get_user_cmd_complete(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ return (char_u *)command_complete[idx].name;
+***************
+*** 6305,6314 ****
+ /*
+ * ":cquit".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_cquit(eap)
+! exarg_T *eap;
+ {
+ getout(1); /* this does not always pass on the exit code to the Manx
+ compiler. why? */
+--- 6296,6304 ----
+ /*
+ * ":cquit".
+ */
+ static void
+ ex_cquit(eap)
+! exarg_T *eap UNUSED;
+ {
+ getout(1); /* this does not always pass on the exit code to the Manx
+ compiler. why? */
+***************
+*** 6750,6759 ****
+ /*
+ * ":shell".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_shell(eap)
+! exarg_T *eap;
+ {
+ do_shell(NULL, 0);
+ }
+--- 6740,6748 ----
+ /*
+ * ":shell".
+ */
+ static void
+ ex_shell(eap)
+! exarg_T *eap UNUSED;
+ {
+ do_shell(NULL, 0);
+ }
+***************
+*** 7057,7066 ****
+ /*
+ * ":preserve".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_preserve(eap)
+! exarg_T *eap;
+ {
+ curbuf->b_flags |= BF_PRESERVED;
+ ml_preserve(curbuf, TRUE);
+--- 7046,7054 ----
+ /*
+ * ":preserve".
+ */
+ static void
+ ex_preserve(eap)
+! exarg_T *eap UNUSED;
+ {
+ curbuf->b_flags |= BF_PRESERVED;
+ ml_preserve(curbuf, TRUE);
+***************
+*** 7292,7301 ****
+ /*
+ * :tabs command: List tabs and their contents.
+ */
+- /*ARGSUSED*/
+ static void
+ ex_tabs(eap)
+! exarg_T *eap;
+ {
+ tabpage_T *tp;
+ win_T *wp;
+--- 7280,7288 ----
+ /*
+ * :tabs command: List tabs and their contents.
+ */
+ static void
+ ex_tabs(eap)
+! exarg_T *eap UNUSED;
+ {
+ tabpage_T *tp;
+ win_T *wp;
+***************
+*** 7482,7488 ****
+ /*
+ * ":edit <file>" command and alikes.
+ */
+- /*ARGSUSED*/
+ void
+ do_exedit(eap, old_curwin)
+ exarg_T *eap;
+--- 7469,7474 ----
+***************
+*** 7694,7703 ****
+ }
+ #endif
+
+- /*ARGSUSED*/
+ static void
+ ex_swapname(eap)
+! exarg_T *eap;
+ {
+ if (curbuf->b_ml.ml_mfp == NULL || curbuf->b_ml.ml_mfp->mf_fname == NULL)
+ MSG(_("No swap file"));
+--- 7680,7688 ----
+ }
+ #endif
+
+ static void
+ ex_swapname(eap)
+! exarg_T *eap UNUSED;
+ {
+ if (curbuf->b_ml.ml_mfp == NULL || curbuf->b_ml.ml_mfp->mf_fname == NULL)
+ MSG(_("No swap file"));
+***************
+*** 7710,7719 ****
+ * offset.
+ * (1998-11-02 16:21:01 R. Edward Ralston <eralston@computer.org>)
+ */
+- /*ARGSUSED*/
+ static void
+ ex_syncbind(eap)
+! exarg_T *eap;
+ {
+ #ifdef FEAT_SCROLLBIND
+ win_T *wp;
+--- 7695,7703 ----
+ * offset.
+ * (1998-11-02 16:21:01 R. Edward Ralston <eralston@computer.org>)
+ */
+ static void
+ ex_syncbind(eap)
+! exarg_T *eap UNUSED;
+ {
+ #ifdef FEAT_SCROLLBIND
+ win_T *wp;
+***************
+*** 7983,7992 ****
+ /*
+ * ":pwd".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_pwd(eap)
+! exarg_T *eap;
+ {
+ if (mch_dirname(NameBuff, MAXPATHL) == OK)
+ {
+--- 7967,7975 ----
+ /*
+ * ":pwd".
+ */
+ static void
+ ex_pwd(eap)
+! exarg_T *eap UNUSED;
+ {
+ if (mch_dirname(NameBuff, MAXPATHL) == OK)
+ {
+***************
+*** 8417,8426 ****
+ /*
+ * ":undo".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_undo(eap)
+! exarg_T *eap;
+ {
+ if (eap->addr_count == 1) /* :undo 123 */
+ undo_time(eap->line2, FALSE, TRUE);
+--- 8400,8408 ----
+ /*
+ * ":undo".
+ */
+ static void
+ ex_undo(eap)
+! exarg_T *eap UNUSED;
+ {
+ if (eap->addr_count == 1) /* :undo 123 */
+ undo_time(eap->line2, FALSE, TRUE);
+***************
+*** 8431,8440 ****
+ /*
+ * ":redo".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_redo(eap)
+! exarg_T *eap;
+ {
+ u_redo(1);
+ }
+--- 8413,8421 ----
+ /*
+ * ":redo".
+ */
+ static void
+ ex_redo(eap)
+! exarg_T *eap UNUSED;
+ {
+ u_redo(1);
+ }
+***************
+*** 8442,8448 ****
+ /*
+ * ":earlier" and ":later".
+ */
+- /*ARGSUSED*/
+ static void
+ ex_later(eap)
+ exarg_T *eap;
+--- 8423,8428 ----
+***************
+*** 8627,8636 ****
+ /*
+ * ":redrawstatus": force redraw of status line(s)
+ */
+- /*ARGSUSED*/
+ static void
+ ex_redrawstatus(eap)
+! exarg_T *eap;
+ {
+ #if defined(FEAT_WINDOWS)
+ int r = RedrawingDisabled;
+--- 8607,8615 ----
+ /*
+ * ":redrawstatus": force redraw of status line(s)
+ */
+ static void
+ ex_redrawstatus(eap)
+! exarg_T *eap UNUSED;
+ {
+ #if defined(FEAT_WINDOWS)
+ int r = RedrawingDisabled;
+***************
+*** 8891,8901 ****
+
+ #if ((defined(FEAT_SESSION) || defined(FEAT_EVAL)) && defined(vim_mkdir)) \
+ || defined(PROTO)
+- /*ARGSUSED*/
+ int
+ vim_mkdir_emsg(name, prot)
+ char_u *name;
+! int prot;
+ {
+ if (vim_mkdir(name, prot) != 0)
+ {
+--- 8870,8879 ----
+
+ #if ((defined(FEAT_SESSION) || defined(FEAT_EVAL)) && defined(vim_mkdir)) \
+ || defined(PROTO)
+ int
+ vim_mkdir_emsg(name, prot)
+ char_u *name;
+! int prot UNUSED;
+ {
+ if (vim_mkdir(name, prot) != 0)
+ {
+***************
+*** 10968,10977 ****
+ }
+ #endif
+
+- /*ARGSUSED*/
+ static void
+ ex_digraphs(eap)
+! exarg_T *eap;
+ {
+ #ifdef FEAT_DIGRAPHS
+ if (*eap->arg != NUL)
+--- 10946,10954 ----
+ }
+ #endif
+
+ static void
+ ex_digraphs(eap)
+! exarg_T *eap UNUSED;
+ {
+ #ifdef FEAT_DIGRAPHS
+ if (*eap->arg != NUL)
+***************
+*** 11005,11014 ****
+ /*
+ * ":nohlsearch"
+ */
+- /*ARGSUSED*/
+ static void
+ ex_nohlsearch(eap)
+! exarg_T *eap;
+ {
+ no_hlsearch = TRUE;
+ redraw_all_later(SOME_VALID);
+--- 10982,10990 ----
+ /*
+ * ":nohlsearch"
+ */
+ static void
+ ex_nohlsearch(eap)
+! exarg_T *eap UNUSED;
+ {
+ no_hlsearch = TRUE;
+ redraw_all_later(SOME_VALID);
+***************
+*** 11087,11096 ****
+ /*
+ * ":X": Get crypt key
+ */
+- /*ARGSUSED*/
+ static void
+ ex_X(eap)
+! exarg_T *eap;
+ {
+ (void)get_crypt_key(TRUE, TRUE);
+ }
+--- 11063,11071 ----
+ /*
+ * ":X": Get crypt key
+ */
+ static void
+ ex_X(eap)
+! exarg_T *eap UNUSED;
+ {
+ (void)get_crypt_key(TRUE, TRUE);
+ }
+*** ../vim-7.2.173/src/ex_getln.c 2009-04-29 18:44:38.000000000 +0200
+--- src/ex_getln.c 2009-05-15 20:49:22.000000000 +0200
+***************
+*** 140,150 ****
+ * Return pointer to allocated string if there is a commandline, NULL
+ * otherwise.
+ */
+- /*ARGSUSED*/
+ char_u *
+ getcmdline(firstc, count, indent)
+ int firstc;
+! long count; /* only used for incremental search */
+ int indent; /* indent for inside conditionals */
+ {
+ int c;
+--- 140,149 ----
+ * Return pointer to allocated string if there is a commandline, NULL
+ * otherwise.
+ */
+ char_u *
+ getcmdline(firstc, count, indent)
+ int firstc;
+! long count UNUSED; /* only used for incremental search */
+ int indent; /* indent for inside conditionals */
+ {
+ int c;
+***************
+*** 2113,2123 ****
+ /*
+ * Get an Ex command line for the ":" command.
+ */
+- /* ARGSUSED */
+ char_u *
+! getexline(c, dummy, indent)
+ int c; /* normally ':', NUL for ":append" */
+! void *dummy; /* cookie not used */
+ int indent; /* indent for inside conditionals */
+ {
+ /* When executing a register, remove ':' that's in front of each line. */
+--- 2112,2121 ----
+ /*
+ * Get an Ex command line for the ":" command.
+ */
+ char_u *
+! getexline(c, cookie, indent)
+ int c; /* normally ':', NUL for ":append" */
+! void *cookie UNUSED;
+ int indent; /* indent for inside conditionals */
+ {
+ /* When executing a register, remove ':' that's in front of each line. */
+***************
+*** 2132,2143 ****
+ * mappings or abbreviations.
+ * Returns a string in allocated memory or NULL.
+ */
+- /* ARGSUSED */
+ char_u *
+! getexmodeline(promptc, dummy, indent)
+ int promptc; /* normally ':', NUL for ":append" and '?' for
+ :s prompt */
+! void *dummy; /* cookie not used */
+ int indent; /* indent for inside conditionals */
+ {
+ garray_T line_ga;
+--- 2130,2140 ----
+ * mappings or abbreviations.
+ * Returns a string in allocated memory or NULL.
+ */
+ char_u *
+! getexmodeline(promptc, cookie, indent)
+ int promptc; /* normally ':', NUL for ":append" and '?' for
+ :s prompt */
+! void *cookie UNUSED;
+ int indent; /* indent for inside conditionals */
+ {
+ garray_T line_ga;
+***************
+*** 3832,3842 ****
+ * Returns EXPAND_NOTHING when the character that triggered expansion should
+ * be inserted like a normal character.
+ */
+- /*ARGSUSED*/
+ static int
+ showmatches(xp, wildmenu)
+ expand_T *xp;
+! int wildmenu;
+ {
+ #define L_SHOWFILE(m) (showtail ? sm_gettail(files_found[m]) : files_found[m])
+ int num_files;
+--- 3829,3838 ----
+ * Returns EXPAND_NOTHING when the character that triggered expansion should
+ * be inserted like a normal character.
+ */
+ static int
+ showmatches(xp, wildmenu)
+ expand_T *xp;
+! int wildmenu UNUSED;
+ {
+ #define L_SHOWFILE(m) (showtail ? sm_gettail(files_found[m]) : files_found[m])
+ int num_files;
+*** ../vim-7.2.173/src/fileio.c 2009-05-13 20:47:07.000000000 +0200
+--- src/fileio.c 2009-05-15 20:52:40.000000000 +0200
+***************
+*** 3498,3504 ****
+ if (mch_stat((char *)IObuff, &st) < 0
+ || st.st_uid != st_old.st_uid
+ || st.st_gid != st_old.st_gid
+! || st.st_mode != perm)
+ backup_copy = TRUE;
+ # endif
+ /* Close the file before removing it, on MS-Windows we
+--- 3498,3504 ----
+ if (mch_stat((char *)IObuff, &st) < 0
+ || st.st_uid != st_old.st_uid
+ || st.st_gid != st_old.st_gid
+! || (long)st.st_mode != perm)
+ backup_copy = TRUE;
+ # endif
+ /* Close the file before removing it, on MS-Windows we
+***************
+*** 5963,5969 ****
+ else if (*ext == '.')
+ #endif
+ {
+! if (s - ptr > (size_t)8)
+ {
+ s = ptr + 8;
+ *s = '\0';
+--- 5971,5977 ----
+ else if (*ext == '.')
+ #endif
+ {
+! if ((size_t)(s - ptr) > (size_t)8)
+ {
+ s = ptr + 8;
+ *s = '\0';
+***************
+*** 6460,6470 ****
+ * return 2 if a message has been displayed.
+ * return 0 otherwise.
+ */
+- /*ARGSUSED*/
+ int
+ buf_check_timestamp(buf, focus)
+ buf_T *buf;
+! int focus; /* called for GUI focus event */
+ {
+ struct stat st;
+ int stat_res;
+--- 6468,6477 ----
+ * return 2 if a message has been displayed.
+ * return 0 otherwise.
+ */
+ int
+ buf_check_timestamp(buf, focus)
+ buf_T *buf;
+! int focus UNUSED; /* called for GUI focus event */
+ {
+ struct stat st;
+ int stat_res;
+***************
+*** 6868,6879 ****
+ /* Careful: autocommands may have made "buf" invalid! */
+ }
+
+- /*ARGSUSED*/
+ void
+ buf_store_time(buf, st, fname)
+ buf_T *buf;
+ struct stat *st;
+! char_u *fname;
+ {
+ buf->b_mtime = (long)st->st_mtime;
+ buf->b_orig_size = (size_t)st->st_size;
+--- 6875,6885 ----
+ /* Careful: autocommands may have made "buf" invalid! */
+ }
+
+ void
+ buf_store_time(buf, st, fname)
+ buf_T *buf;
+ struct stat *st;
+! char_u *fname UNUSED;
+ {
+ buf->b_mtime = (long)st->st_mtime;
+ buf->b_orig_size = (size_t)st->st_size;
+***************
+*** 6936,6945 ****
+ * The returned pointer is to allocated memory.
+ * The returned pointer is NULL if no valid name was found.
+ */
+- /*ARGSUSED*/
+ char_u *
+ vim_tempname(extra_char)
+! int extra_char; /* character to use in the name instead of '?' */
+ {
+ #ifdef USE_TMPNAM
+ char_u itmp[L_tmpnam]; /* use tmpnam() */
+--- 6942,6950 ----
+ * The returned pointer is to allocated memory.
+ * The returned pointer is NULL if no valid name was found.
+ */
+ char_u *
+ vim_tempname(extra_char)
+! int extra_char UNUSED; /* char to use in the name instead of '?' */
+ {
+ #ifdef USE_TMPNAM
+ char_u itmp[L_tmpnam]; /* use tmpnam() */
+***************
+*** 6968,6974 ****
+ /*
+ * Try the entries in TEMPDIRNAMES to create the temp directory.
+ */
+! for (i = 0; i < sizeof(tempdirs) / sizeof(char *); ++i)
+ {
+ /* expand $TMP, leave room for "/v1100000/999999999" */
+ expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
+--- 6973,6979 ----
+ /*
+ * Try the entries in TEMPDIRNAMES to create the temp directory.
+ */
+! for (i = 0; i < (int)(sizeof(tempdirs) / sizeof(char *)); ++i)
+ {
+ /* expand $TMP, leave room for "/v1100000/999999999" */
+ expand_env((char_u *)tempdirs[i], itmp, TEMPNAMELEN - 20);
+***************
+*** 9588,9600 ****
+ *
+ * Returns NULL when out of memory.
+ */
+- /*ARGSUSED*/
+ char_u *
+ file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash)
+ char_u *pat;
+ char_u *pat_end; /* first char after pattern or NULL */
+ char *allow_dirs; /* Result passed back out in here */
+! int no_bslash; /* Don't use a backward slash as pathsep */
+ {
+ int size;
+ char_u *endp;
+--- 9593,9604 ----
+ *
+ * Returns NULL when out of memory.
+ */
+ char_u *
+ file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash)
+ char_u *pat;
+ char_u *pat_end; /* first char after pattern or NULL */
+ char *allow_dirs; /* Result passed back out in here */
+! int no_bslash UNUSED; /* Don't use a backward slash as pathsep */
+ {
+ int size;
+ char_u *endp;
+*** ../vim-7.2.173/src/misc1.c 2009-04-29 11:00:09.000000000 +0200
+--- src/misc1.c 2009-05-15 20:59:08.000000000 +0200
+***************
+*** 2188,2199 ****
+ *
+ * return FAIL for failure, OK otherwise
+ */
+- /*ARGSUSED*/
+ int
+ del_bytes(count, fixpos_arg, use_delcombine)
+ long count;
+ int fixpos_arg;
+! int use_delcombine; /* 'delcombine' option applies */
+ {
+ char_u *oldp, *newp;
+ colnr_T oldlen;
+--- 2188,2198 ----
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+ del_bytes(count, fixpos_arg, use_delcombine)
+ long count;
+ int fixpos_arg;
+! int use_delcombine UNUSED; /* 'delcombine' option applies */
+ {
+ char_u *oldp, *newp;
+ colnr_T oldlen;
+*** ../vim-7.2.173/src/move.c 2008-11-15 16:05:30.000000000 +0100
+--- src/move.c 2009-05-15 21:00:06.000000000 +0200
+***************
+*** 1238,1248 ****
+ /*
+ * Scroll the current window down by "line_count" logical lines. "CTRL-Y"
+ */
+- /*ARGSUSED*/
+ void
+ scrolldown(line_count, byfold)
+ long line_count;
+! int byfold; /* TRUE: count a closed fold as one line */
+ {
+ long done = 0; /* total # of physical lines done */
+ int wrow;
+--- 1238,1247 ----
+ /*
+ * Scroll the current window down by "line_count" logical lines. "CTRL-Y"
+ */
+ void
+ scrolldown(line_count, byfold)
+ long line_count;
+! int byfold UNUSED; /* TRUE: count a closed fold as one line */
+ {
+ long done = 0; /* total # of physical lines done */
+ int wrow;
+***************
+*** 1349,1359 ****
+ /*
+ * Scroll the current window up by "line_count" logical lines. "CTRL-E"
+ */
+- /*ARGSUSED*/
+ void
+ scrollup(line_count, byfold)
+ long line_count;
+! int byfold; /* TRUE: count a closed fold as one line */
+ {
+ #if defined(FEAT_FOLDING) || defined(FEAT_DIFF)
+ linenr_T lnum;
+--- 1348,1357 ----
+ /*
+ * Scroll the current window up by "line_count" logical lines. "CTRL-E"
+ */
+ void
+ scrollup(line_count, byfold)
+ long line_count;
+! int byfold UNUSED; /* TRUE: count a closed fold as one line */
+ {
+ #if defined(FEAT_FOLDING) || defined(FEAT_DIFF)
+ linenr_T lnum;
+*** ../vim-7.2.173/src/normal.c 2009-04-29 17:39:17.000000000 +0200
+--- src/normal.c 2009-05-15 21:08:07.000000000 +0200
+***************
+*** 493,506 ****
+ int i;
+
+ /* Fill the index table with a one to one relation. */
+! for (i = 0; i < NV_CMDS_SIZE; ++i)
+ nv_cmd_idx[i] = i;
+
+ /* Sort the commands by the command character. */
+ qsort((void *)&nv_cmd_idx, (size_t)NV_CMDS_SIZE, sizeof(short), nv_compare);
+
+ /* Find the first entry that can't be indexed by the command character. */
+! for (i = 0; i < NV_CMDS_SIZE; ++i)
+ if (i != nv_cmds[nv_cmd_idx[i]].cmd_char)
+ break;
+ nv_max_linear = i - 1;
+--- 493,506 ----
+ int i;
+
+ /* Fill the index table with a one to one relation. */
+! for (i = 0; i < (int)NV_CMDS_SIZE; ++i)
+ nv_cmd_idx[i] = i;
+
+ /* Sort the commands by the command character. */
+ qsort((void *)&nv_cmd_idx, (size_t)NV_CMDS_SIZE, sizeof(short), nv_compare);
+
+ /* Find the first entry that can't be indexed by the command character. */
+! for (i = 0; i < (int)NV_CMDS_SIZE; ++i)
+ if (i != nv_cmds[nv_cmd_idx[i]].cmd_char)
+ break;
+ nv_max_linear = i - 1;
+***************
+*** 561,571 ****
+ /*
+ * Execute a command in Normal mode.
+ */
+- /*ARGSUSED*/
+ void
+ normal_cmd(oap, toplevel)
+ oparg_T *oap;
+! int toplevel; /* TRUE when called from main() */
+ {
+ cmdarg_T ca; /* command arguments */
+ int c;
+--- 561,570 ----
+ /*
+ * Execute a command in Normal mode.
+ */
+ void
+ normal_cmd(oap, toplevel)
+ oparg_T *oap;
+! int toplevel UNUSED; /* TRUE when called from main() */
+ {
+ cmdarg_T ca; /* command arguments */
+ int c;
+***************
+*** 2188,2197 ****
+ /*
+ * Handle the "g@" operator: call 'operatorfunc'.
+ */
+- /*ARGSUSED*/
+ static void
+ op_function(oap)
+! oparg_T *oap;
+ {
+ #ifdef FEAT_EVAL
+ char_u *(argv[1]);
+--- 2187,2195 ----
+ /*
+ * Handle the "g@" operator: call 'operatorfunc'.
+ */
+ static void
+ op_function(oap)
+! oparg_T *oap UNUSED;
+ {
+ #ifdef FEAT_EVAL
+ char_u *(argv[1]);
+***************
+*** 4100,4109 ****
+ * Command character that doesn't do anything, but unlike nv_ignore() does
+ * start edit(). Used for "startinsert" executed while starting up.
+ */
+- /*ARGSUSED */
+ static void
+ nv_nop(cap)
+! cmdarg_T *cap;
+ {
+ }
+
+--- 4098,4106 ----
+ * Command character that doesn't do anything, but unlike nv_ignore() does
+ * start edit(). Used for "startinsert" executed while starting up.
+ */
+ static void
+ nv_nop(cap)
+! cmdarg_T *cap UNUSED;
+ {
+ }
+
+***************
+*** 5241,5247 ****
+ if (cap->oap->op_type != OP_NOP
+ && (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
+ || cap->oap->start.col >
+! STRLEN(ml_get(cap->oap->start.lnum))))
+ clearopbeep(cap->oap);
+ }
+ }
+--- 5238,5244 ----
+ if (cap->oap->op_type != OP_NOP
+ && (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
+ || cap->oap->start.col >
+! (colnr_T)STRLEN(ml_get(cap->oap->start.lnum))))
+ clearopbeep(cap->oap);
+ }
+ }
+***************
+*** 5816,5822 ****
+ for (n = cap->count1; n > 0; --n)
+ {
+ if ((!PAST_LINE && oneright() == FAIL)
+! || (PAST_LINE && *ml_get_cursor() == NUL))
+ {
+ /*
+ * <Space> wraps to next line if 'whichwrap' has 's'.
+--- 5813,5822 ----
+ for (n = cap->count1; n > 0; --n)
+ {
+ if ((!PAST_LINE && oneright() == FAIL)
+! #ifdef FEAT_VISUAL
+! || (PAST_LINE && *ml_get_cursor() == NUL)
+! #endif
+! )
+ {
+ /*
+ * <Space> wraps to next line if 'whichwrap' has 's'.
+*** ../vim-7.2.173/src/option.c 2009-03-18 15:40:03.000000000 +0100
+--- src/option.c 2009-05-15 21:08:50.000000000 +0200
+***************
+*** 5302,5315 ****
+ * When "set_sid" is zero set the scriptID to current_SID. When "set_sid" is
+ * SID_NONE don't set the scriptID. Otherwise set the scriptID to "set_sid".
+ */
+- /*ARGSUSED*/
+ void
+ set_string_option_direct(name, opt_idx, val, opt_flags, set_sid)
+ char_u *name;
+ int opt_idx;
+ char_u *val;
+ int opt_flags; /* OPT_FREE, OPT_LOCAL and/or OPT_GLOBAL */
+! int set_sid;
+ {
+ char_u *s;
+ char_u **varp;
+--- 5302,5314 ----
+ * When "set_sid" is zero set the scriptID to current_SID. When "set_sid" is
+ * SID_NONE don't set the scriptID. Otherwise set the scriptID to "set_sid".
+ */
+ void
+ set_string_option_direct(name, opt_idx, val, opt_flags, set_sid)
+ char_u *name;
+ int opt_idx;
+ char_u *val;
+ int opt_flags; /* OPT_FREE, OPT_LOCAL and/or OPT_GLOBAL */
+! int set_sid UNUSED;
+ {
+ char_u *s;
+ char_u **varp;
+***************
+*** 9357,9366 ****
+ /*
+ * Check for NULL pointers in a winopt_T and replace them with empty_option.
+ */
+- /*ARGSUSED*/
+ void
+ check_winopt(wop)
+! winopt_T *wop;
+ {
+ #ifdef FEAT_FOLDING
+ check_string_option(&wop->wo_fdi);
+--- 9356,9364 ----
+ /*
+ * Check for NULL pointers in a winopt_T and replace them with empty_option.
+ */
+ void
+ check_winopt(wop)
+! winopt_T *wop UNUSED;
+ {
+ #ifdef FEAT_FOLDING
+ check_string_option(&wop->wo_fdi);
+***************
+*** 9382,9391 ****
+ /*
+ * Free the allocated memory inside a winopt_T.
+ */
+- /*ARGSUSED*/
+ void
+ clear_winopt(wop)
+! winopt_T *wop;
+ {
+ #ifdef FEAT_FOLDING
+ clear_string_option(&wop->wo_fdi);
+--- 9380,9388 ----
+ /*
+ * Free the allocated memory inside a winopt_T.
+ */
+ void
+ clear_winopt(wop)
+! winopt_T *wop UNUSED;
+ {
+ #ifdef FEAT_FOLDING
+ clear_string_option(&wop->wo_fdi);
+*** ../vim-7.2.173/src/os_unix.c 2009-05-13 12:46:36.000000000 +0200
+--- src/os_unix.c 2009-05-15 21:13:43.000000000 +0200
+***************
+*** 458,467 ****
+ * Return total amount of memory available in Kbyte.
+ * Doesn't change when memory has been allocated.
+ */
+- /* ARGSUSED */
+ long_u
+ mch_total_mem(special)
+! int special;
+ {
+ # ifdef __EMX__
+ return ulimit(3, 0L) >> 10; /* always 32MB? */
+--- 458,466 ----
+ * Return total amount of memory available in Kbyte.
+ * Doesn't change when memory has been allocated.
+ */
+ long_u
+ mch_total_mem(special)
+! int special UNUSED;
+ {
+ # ifdef __EMX__
+ return ulimit(3, 0L) >> 10; /* always 32MB? */
+***************
+*** 815,821 ****
+ * Let me try it with a few tricky defines from my own osdef.h (jw).
+ */
+ #if defined(SIGWINCH)
+- /* ARGSUSED */
+ static RETSIGTYPE
+ sig_winch SIGDEFARG(sigarg)
+ {
+--- 814,819 ----
+***************
+*** 1355,1365 ****
+ /*
+ * Check_win checks whether we have an interactive stdout.
+ */
+- /* ARGSUSED */
+ int
+ mch_check_win(argc, argv)
+! int argc;
+! char **argv;
+ {
+ #ifdef OS2
+ /*
+--- 1353,1362 ----
+ /*
+ * Check_win checks whether we have an interactive stdout.
+ */
+ int
+ mch_check_win(argc, argv)
+! int argc UNUSED;
+! char **argv UNUSED;
+ {
+ #ifdef OS2
+ /*
+***************
+*** 2467,2473 ****
+ }
+
+ /* Catch file names which are too long. */
+! if (retval == FAIL || STRLEN(buf) + STRLEN(fname) >= len)
+ return FAIL;
+
+ /* Do not append ".", "/dir/." is equal to "/dir". */
+--- 2464,2470 ----
+ }
+
+ /* Catch file names which are too long. */
+! if (retval == FAIL || (int)(STRLEN(buf) + STRLEN(fname)) >= len)
+ return FAIL;
+
+ /* Do not append ".", "/dir/." is equal to "/dir". */
+***************
+*** 2686,2692 ****
+ */
+ vim_acl_T
+ mch_get_acl(fname)
+! char_u *fname;
+ {
+ vim_acl_T ret = NULL;
+ #ifdef HAVE_POSIX_ACL
+--- 2683,2689 ----
+ */
+ vim_acl_T
+ mch_get_acl(fname)
+! char_u *fname UNUSED;
+ {
+ vim_acl_T ret = NULL;
+ #ifdef HAVE_POSIX_ACL
+***************
+*** 2746,2752 ****
+ */
+ void
+ mch_set_acl(fname, aclent)
+! char_u *fname;
+ vim_acl_T aclent;
+ {
+ if (aclent == NULL)
+--- 2743,2749 ----
+ */
+ void
+ mch_set_acl(fname, aclent)
+! char_u *fname UNUSED;
+ vim_acl_T aclent;
+ {
+ if (aclent == NULL)
+***************
+*** 2789,2798 ****
+ /*
+ * Set hidden flag for "name".
+ */
+- /* ARGSUSED */
+ void
+ mch_hide(name)
+! char_u *name;
+ {
+ /* can't hide a file */
+ }
+--- 2786,2794 ----
+ /*
+ * Set hidden flag for "name".
+ */
+ void
+ mch_hide(name)
+! char_u *name UNUSED;
+ {
+ /* can't hide a file */
+ }
+***************
+*** 3481,3490 ****
+ /*
+ * set screen mode, always fails.
+ */
+- /* ARGSUSED */
+ int
+ mch_screenmode(arg)
+! char_u *arg;
+ {
+ EMSG(_(e_screenmode));
+ return FAIL;
+--- 3477,3485 ----
+ /*
+ * set screen mode, always fails.
+ */
+ int
+ mch_screenmode(arg)
+! char_u *arg UNUSED;
+ {
+ EMSG(_(e_screenmode));
+ return FAIL;
+***************
+*** 4189,4197 ****
+ {
+ s = vim_strchr(lp + written, NL);
+ len = write(toshell_fd, (char *)lp + written,
+! s == NULL ? l : s - (lp + written));
+ }
+! if (len == l)
+ {
+ /* Finished a line, add a NL, unless this line
+ * should not have one. */
+--- 4184,4193 ----
+ {
+ s = vim_strchr(lp + written, NL);
+ len = write(toshell_fd, (char *)lp + written,
+! s == NULL ? l
+! : (size_t)(s - (lp + written)));
+ }
+! if (len == (int)l)
+ {
+ /* Finished a line, add a NL, unless this line
+ * should not have one. */
+***************
+*** 4746,4752 ****
+ * Returns also, when a request from Sniff is waiting -- toni.
+ * Or when a Linux GPM mouse event is waiting.
+ */
+- /* ARGSUSED */
+ #if defined(__BEOS__)
+ int
+ #else
+--- 4742,4747 ----
+***************
+*** 4755,4761 ****
+ RealWaitForChar(fd, msec, check_for_gpm)
+ int fd;
+ long msec;
+! int *check_for_gpm;
+ {
+ int ret;
+ #if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
+--- 4750,4756 ----
+ RealWaitForChar(fd, msec, check_for_gpm)
+ int fd;
+ long msec;
+! int *check_for_gpm UNUSED;
+ {
+ int ret;
+ #if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
+***************
+*** 5572,5578 ****
+ i = fread((char *)buffer, 1, len, fd);
+ fclose(fd);
+ mch_remove(tempname);
+! if (i != len)
+ {
+ /* unexpected read error */
+ EMSG2(_(e_notread), tempname);
+--- 5567,5573 ----
+ i = fread((char *)buffer, 1, len, fd);
+ fclose(fd);
+ mch_remove(tempname);
+! if (i != (int)len)
+ {
+ /* unexpected read error */
+ EMSG2(_(e_notread), tempname);
+***************
+*** 5633,5639 ****
+ if (shell_style == STYLE_PRINT && !did_find_nul)
+ {
+ /* If there is a NUL, set did_find_nul, else set check_spaces */
+! if (len && (int)STRLEN(buffer) < len - 1)
+ did_find_nul = TRUE;
+ else
+ check_spaces = TRUE;
+--- 5628,5634 ----
+ if (shell_style == STYLE_PRINT && !did_find_nul)
+ {
+ /* If there is a NUL, set did_find_nul, else set check_spaces */
+! if (len && (int)STRLEN(buffer) < (int)len - 1)
+ did_find_nul = TRUE;
+ else
+ check_spaces = TRUE;
+*** ../vim-7.2.173/src/os_unix.h 2009-05-13 12:46:36.000000000 +0200
+--- src/os_unix.h 2009-05-15 21:10:31.000000000 +0200
+***************
+*** 126,132 ****
+ # define SIGDUMMYARG 0, 0, (struct sigcontext *)0
+ # else
+ # define SIGPROTOARG (int)
+! # define SIGDEFARG(s) (s) int s;
+ # define SIGDUMMYARG 0
+ # endif
+ #else
+--- 126,132 ----
+ # define SIGDUMMYARG 0, 0, (struct sigcontext *)0
+ # else
+ # define SIGPROTOARG (int)
+! # define SIGDEFARG(s) (s) int s UNUSED;
+ # define SIGDUMMYARG 0
+ # endif
+ #else
+*** ../vim-7.2.173/src/regexp.c 2009-02-21 22:03:06.000000000 +0100
+--- src/regexp.c 2009-05-15 21:14:18.000000000 +0200
+***************
+*** 471,477 ****
+
+ if ((*pp)[1] == ':')
+ {
+! for (i = 0; i < sizeof(class_names) / sizeof(*class_names); ++i)
+ if (STRNCMP(*pp + 2, class_names[i], STRLEN(class_names[i])) == 0)
+ {
+ *pp += STRLEN(class_names[i]) + 2;
+--- 471,477 ----
+
+ if ((*pp)[1] == ':')
+ {
+! for (i = 0; i < (int)(sizeof(class_names) / sizeof(*class_names)); ++i)
+ if (STRNCMP(*pp + 2, class_names[i], STRLEN(class_names[i])) == 0)
+ {
+ *pp += STRLEN(class_names[i]) + 2;
+***************
+*** 3362,3373 ****
+ * Match a regexp against a string ("line" points to the string) or multiple
+ * lines ("line" is NULL, use reg_getline()).
+ */
+- /*ARGSUSED*/
+ static long
+ vim_regexec_both(line, col, tm)
+ char_u *line;
+ colnr_T col; /* column to start looking for match */
+! proftime_T *tm; /* timeout limit or NULL */
+ {
+ regprog_T *prog;
+ char_u *s;
+--- 3362,3372 ----
+ * Match a regexp against a string ("line" points to the string) or multiple
+ * lines ("line" is NULL, use reg_getline()).
+ */
+ static long
+ vim_regexec_both(line, col, tm)
+ char_u *line;
+ colnr_T col; /* column to start looking for match */
+! proftime_T *tm UNUSED; /* timeout limit or NULL */
+ {
+ regprog_T *prog;
+ char_u *s;
+*** ../vim-7.2.173/src/search.c 2009-04-22 18:43:06.000000000 +0200
+--- src/search.c 2009-05-15 21:16:36.000000000 +0200
+***************
+*** 522,528 ****
+ * When FEAT_EVAL is defined, returns the index of the first matching
+ * subpattern plus one; one if there was none.
+ */
+- /*ARGSUSED*/
+ int
+ searchit(win, buf, pos, dir, pat, count, options, pat_use, stop_lnum, tm)
+ win_T *win; /* window to search in; can be NULL for a
+--- 522,527 ----
+***************
+*** 535,541 ****
+ int options;
+ int pat_use; /* which pattern to use when "pat" is empty */
+ linenr_T stop_lnum; /* stop after this line number when != 0 */
+! proftime_T *tm; /* timeout limit or NULL */
+ {
+ int found;
+ linenr_T lnum; /* no init to shut up Apollo cc */
+--- 534,540 ----
+ int options;
+ int pat_use; /* which pattern to use when "pat" is empty */
+ linenr_T stop_lnum; /* stop after this line number when != 0 */
+! proftime_T *tm UNUSED; /* timeout limit or NULL */
+ {
+ int found;
+ linenr_T lnum; /* no init to shut up Apollo cc */
+***************
+*** 554,561 ****
+ int save_called_emsg = called_emsg;
+ #ifdef FEAT_SEARCH_EXTRA
+ int break_loop = FALSE;
+- #else
+- # define break_loop FALSE
+ #endif
+
+ if (search_regcomp(pat, RE_SEARCH, pat_use,
+--- 553,558 ----
+***************
+*** 940,946 ****
+ * twice.
+ */
+ if (!p_ws || stop_lnum != 0 || got_int || called_emsg
+! || break_loop || found || loop)
+ break;
+
+ /*
+--- 937,946 ----
+ * twice.
+ */
+ if (!p_ws || stop_lnum != 0 || got_int || called_emsg
+! #ifdef FEAT_SEARCH_EXTRA
+! || break_loop
+! #endif
+! || found || loop)
+ break;
+
+ /*
+***************
+*** 958,964 ****
+ give_warning((char_u *)_(dir == BACKWARD
+ ? top_bot_msg : bot_top_msg), TRUE);
+ }
+! if (got_int || called_emsg || break_loop)
+ break;
+ }
+ while (--count > 0 && found); /* stop after count matches or no match */
+--- 958,968 ----
+ give_warning((char_u *)_(dir == BACKWARD
+ ? top_bot_msg : bot_top_msg), TRUE);
+ }
+! if (got_int || called_emsg
+! #ifdef FEAT_SEARCH_EXTRA
+! || break_loop
+! #endif
+! )
+ break;
+ }
+ while (--count > 0 && found); /* stop after count matches or no match */
+*** ../vim-7.2.173/src/tag.c 2009-02-23 00:53:35.000000000 +0100
+--- src/tag.c 2009-05-15 21:16:59.000000000 +0200
+***************
+*** 1105,1114 ****
+ /*
+ * Print the tag stack
+ */
+- /*ARGSUSED*/
+ void
+ do_tags(eap)
+! exarg_T *eap;
+ {
+ int i;
+ char_u *name;
+--- 1105,1113 ----
+ /*
+ * Print the tag stack
+ */
+ void
+ do_tags(eap)
+! exarg_T *eap UNUSED;
+ {
+ int i;
+ char_u *name;
+***************
+*** 2530,2540 ****
+ * Callback function for finding all "tags" and "tags-??" files in
+ * 'runtimepath' doc directories.
+ */
+- /*ARGSUSED*/
+ static void
+ found_tagfile_cb(fname, cookie)
+ char_u *fname;
+! void *cookie;
+ {
+ if (ga_grow(&tag_fnames, 1) == OK)
+ ((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] =
+--- 2529,2538 ----
+ * Callback function for finding all "tags" and "tags-??" files in
+ * 'runtimepath' doc directories.
+ */
+ static void
+ found_tagfile_cb(fname, cookie)
+ char_u *fname;
+! void *cookie UNUSED;
+ {
+ if (ga_grow(&tag_fnames, 1) == OK)
+ ((char_u **)(tag_fnames.ga_data))[tag_fnames.ga_len++] =
+*** ../vim-7.2.173/src/version.c 2009-05-14 22:19:19.000000000 +0200
+--- src/version.c 2009-05-15 21:21:44.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 174,
+ /**/
+
+--
+TERRY GILLIAM PLAYED: PATSY (ARTHUR'S TRUSTY STEED), THE GREEN KNIGHT
+ SOOTHSAYER, BRIDGEKEEPER, SIR GAWAIN (THE FIRST TO BE
+ KILLED BY THE RABBIT)
+ "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.175 b/source/ap/vim/patches/7.2.175
new file mode 100644
index 000000000..4ba3a1587
--- /dev/null
+++ b/source/ap/vim/patches/7.2.175
@@ -0,0 +1,51 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.175
+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.175
+Problem: Compiler warning in OpenBSD.
+Solution: Add type cast for NULL. (Dasn)
+Files: src/if_cscope.c
+
+
+*** ../vim-7.2.174/src/if_cscope.c 2009-04-22 16:22:44.000000000 +0200
+--- src/if_cscope.c 2009-05-16 16:15:03.000000000 +0200
+***************
+*** 994,1000 ****
+ vim_free(ppath);
+
+ #if defined(UNIX)
+! if (execl("/bin/sh", "sh", "-c", cmd, NULL) == -1)
+ PERROR(_("cs_create_connection exec failed"));
+
+ exit(127);
+--- 994,1000 ----
+ vim_free(ppath);
+
+ #if defined(UNIX)
+! if (execl("/bin/sh", "sh", "-c", cmd, (char *)NULL) == -1)
+ PERROR(_("cs_create_connection exec failed"));
+
+ exit(127);
+*** ../vim-7.2.174/src/version.c 2009-05-15 21:31:11.000000000 +0200
+--- src/version.c 2009-05-16 16:13:15.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 175,
+ /**/
+
+--
+Every time I lose weight, it finds 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.176 b/source/ap/vim/patches/7.2.176
new file mode 100644
index 000000000..91c98afbc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.176
@@ -0,0 +1,207 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.176
+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.176
+Problem: Exceptions for splint are not useful.
+Solution: Remove the S_SPLINT_S ifdefs.
+Files: src/edit.c, src/ex_cmds.c, src/ex_docmd.c, src/os_unix.c,
+ src/os_unix.h, src/os_unixx.h, src/structs.h, src/term.h
+
+
+*** ../vim-7.2.175/src/edit.c 2009-05-15 21:31:11.000000000 +0200
+--- src/edit.c 2009-05-16 16:18:35.000000000 +0200
+***************
+*** 69,79 ****
+ compl_T *cp_prev;
+ char_u *cp_str; /* matched text */
+ char cp_icase; /* TRUE or FALSE: ignore case */
+- #ifdef S_SPLINT_S /* splint can't handle array of pointers */
+- char_u **cp_text; /* text for the menu */
+- #else
+ char_u *(cp_text[CPT_COUNT]); /* text for the menu */
+- #endif
+ char_u *cp_fname; /* file containing the match, allocated when
+ * cp_flags has FREE_FNAME */
+ int cp_flags; /* ORIGINAL_TEXT, CONT_S_IPOS or FREE_FNAME */
+--- 69,75 ----
+***************
+*** 3835,3845 ****
+ char_u *word;
+ int icase = FALSE;
+ int adup = FALSE;
+- #ifdef S_SPLINT_S /* splint doesn't parse array of pointers correctly */
+- char_u **cptext;
+- #else
+ char_u *(cptext[CPT_COUNT]);
+- #endif
+
+ if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
+ {
+--- 3831,3837 ----
+*** ../vim-7.2.175/src/ex_cmds.c 2009-05-15 21:31:11.000000000 +0200
+--- src/ex_cmds.c 2009-05-16 16:18:56.000000000 +0200
+***************
+*** 5776,5785 ****
+ {
+ char_u *s, *d;
+ int i;
+- #ifdef S_SPLINT_S /* splint doesn't understand array of pointers */
+- static char **mtable;
+- static char **rtable;
+- #else
+ static char *(mtable[]) = {"*", "g*", "[*", "]*", ":*",
+ "/*", "/\\*", "\"*", "**",
+ "/\\(\\)",
+--- 5776,5781 ----
+***************
+*** 5794,5800 ****
+ "/\\\\?", "/\\\\z(\\\\)", "\\\\=", ":s\\\\=",
+ "\\[count]", "\\[quotex]", "\\[range]",
+ "\\[pattern]", "\\\\bar", "/\\\\%\\$"};
+- #endif
+ int flags;
+
+ d = IObuff; /* assume IObuff is long enough! */
+--- 5790,5795 ----
+*** ../vim-7.2.175/src/ex_docmd.c 2009-05-15 21:31:11.000000000 +0200
+--- src/ex_docmd.c 2009-05-16 16:19:26.000000000 +0200
+***************
+*** 9395,9407 ****
+ {
+ int len;
+ int i;
+! #ifdef S_SPLINT_S /* splint can't handle array of pointers */
+! static char **spec_str;
+! static char *(nospec_str[])
+! #else
+! static char *(spec_str[])
+! #endif
+! = {
+ "%",
+ #define SPEC_PERC 0
+ "#",
+--- 9395,9401 ----
+ {
+ int len;
+ int i;
+! static char *(spec_str[]) = {
+ "%",
+ #define SPEC_PERC 0
+ "#",
+*** ../vim-7.2.175/src/os_unix.c 2009-05-15 21:31:11.000000000 +0200
+--- src/os_unix.c 2009-05-16 16:20:00.000000000 +0200
+***************
+*** 199,207 ****
+ #endif
+
+ #ifndef SIG_ERR
+! # ifndef S_SPLINT_S
+! # define SIG_ERR ((RETSIGTYPE (*)())-1)
+! # endif
+ #endif
+
+ /* volatile because it is used in signal handler sig_winch(). */
+--- 199,205 ----
+ #endif
+
+ #ifndef SIG_ERR
+! # define SIG_ERR ((RETSIGTYPE (*)())-1)
+ #endif
+
+ /* volatile because it is used in signal handler sig_winch(). */
+***************
+*** 443,451 ****
+
+ #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
+ # ifdef HAVE_SYS_RESOURCE_H
+! # ifndef S_SPLINT_S /* splint crashes on bits/resource.h */
+! # include <sys/resource.h>
+! # endif
+ # endif
+ # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
+ # include <sys/sysctl.h>
+--- 441,447 ----
+
+ #if defined(HAVE_TOTAL_MEM) || defined(PROTO)
+ # ifdef HAVE_SYS_RESOURCE_H
+! # include <sys/resource.h>
+ # endif
+ # if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL)
+ # include <sys/sysctl.h>
+*** ../vim-7.2.175/src/os_unix.h 2009-05-15 21:31:11.000000000 +0200
+--- src/os_unix.h 2009-05-16 16:17:22.000000000 +0200
+***************
+*** 53,61 ****
+ #endif
+
+ #ifdef HAVE_UNISTD_H
+! # ifndef S_SPLINT_S /* splint crashes on bits/confname.h */
+! # include <unistd.h>
+! # endif
+ #endif
+
+ #ifdef HAVE_LIBC_H
+--- 53,59 ----
+ #endif
+
+ #ifdef HAVE_UNISTD_H
+! # include <unistd.h>
+ #endif
+
+ #ifdef HAVE_LIBC_H
+*** ../vim-7.2.175/src/structs.h 2009-05-13 20:47:07.000000000 +0200
+--- src/structs.h 2009-05-16 16:17:51.000000000 +0200
+***************
+*** 1646,1656 ****
+ #endif
+ #ifdef FEAT_DIFF
+ diff_T *tp_first_diff;
+- # ifdef S_SPLINT_S /* splint doesn't understand the array of pointers */
+- buf_T **tp_diffbuf;
+- # else
+ buf_T *(tp_diffbuf[DB_COUNT]);
+- # endif
+ int tp_diff_invalid; /* list of diffs is outdated */
+ #endif
+ frame_T *tp_snapshot; /* window layout snapshot */
+--- 1646,1652 ----
+*** ../vim-7.2.175/src/term.h 2009-05-13 18:54:14.000000000 +0200
+--- src/term.h 2009-05-16 16:20:06.000000000 +0200
+***************
+*** 96,106 ****
+ * - there should be code in term.c to obtain the value from the termcap
+ */
+
+- #ifdef S_SPLINT_S /* splint doesn't understand array of pointers */
+- extern char_u **term_strings; /* current terminal strings */
+- #else
+ extern char_u *(term_strings[]); /* current terminal strings */
+- #endif
+
+ /*
+ * strings used for terminal
+--- 96,102 ----
+*** ../vim-7.2.175/src/version.c 2009-05-16 16:15:39.000000000 +0200
+--- src/version.c 2009-05-16 16:34:10.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 176,
+ /**/
+
+--
+Corn oil comes from corn and olive oil comes from olives, so where
+does baby oil come from?
+
+ /// 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.177 b/source/ap/vim/patches/7.2.177
new file mode 100644
index 000000000..65dc16c2f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.177
@@ -0,0 +1,2726 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.177
+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.177
+Problem: Compiler warnings when using -Wextra
+Solution: Add UNUSED and type casts.
+Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c,
+ src/fileio.c, src/hardcopy.c, src/if_cscope.c, src/if_xcmdsrv.c,
+ src/farsi.c, src/mark.c, src/menu.c
+
+
+*** ../vim-7.2.176/src/eval.c 2009-05-15 21:31:11.000000000 +0200
+--- src/eval.c 2009-05-16 16:58:30.000000000 +0200
+***************
+*** 3772,3778 ****
+ * Function given to ExpandGeneric() to obtain the list of user defined
+ * (global/buffer/window/built-in) variable names.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_user_var_name(xp, idx)
+ expand_T *xp;
+--- 3772,3777 ----
+***************
+*** 7787,7793 ****
+ * Function given to ExpandGeneric() to obtain the list of internal or
+ * user defined variable or function names.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_expr_name(xp, idx)
+ expand_T *xp;
+--- 7786,7791 ----
+***************
+*** 8655,8664 ****
+ /*
+ * "byte2line(byte)" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_byte2line(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifndef FEAT_BYTEOFF
+--- 8653,8661 ----
+ /*
+ * "byte2line(byte)" function
+ */
+ static void
+ f_byte2line(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifndef FEAT_BYTEOFF
+***************
+*** 8678,8684 ****
+ /*
+ * "byteidx()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_byteidx(argvars, rettv)
+ typval_T *argvars;
+--- 8675,8680 ----
+***************
+*** 8852,8858 ****
+ static void
+ f_clearmatches(argvars, rettv)
+ typval_T *argvars UNUSED;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_SEARCH_EXTRA
+ clear_matches(curwin);
+--- 8848,8854 ----
+ static void
+ f_clearmatches(argvars, rettv)
+ typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_SEARCH_EXTRA
+ clear_matches(curwin);
+***************
+*** 8916,8926 ****
+ /*
+ * "complete()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_complete(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv;
+ {
+ int startcol;
+
+--- 8912,8921 ----
+ /*
+ * "complete()" function
+ */
+ static void
+ f_complete(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv UNUSED;
+ {
+ int startcol;
+
+***************
+*** 8951,8957 ****
+ /*
+ * "complete_add()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_complete_add(argvars, rettv)
+ typval_T *argvars;
+--- 8946,8951 ----
+***************
+*** 8963,8972 ****
+ /*
+ * "complete_check()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_complete_check(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int saved = RedrawingDisabled;
+--- 8957,8965 ----
+ /*
+ * "complete_check()" function
+ */
+ static void
+ f_complete_check(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int saved = RedrawingDisabled;
+***************
+*** 8981,8991 ****
+ /*
+ * "confirm(message, buttons[, default [, type]])" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_confirm(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ char_u *message;
+--- 8974,8983 ----
+ /*
+ * "confirm(message, buttons[, default [, type]])" function
+ */
+ static void
+ f_confirm(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ char_u *message;
+***************
+*** 9150,9160 ****
+ *
+ * Checks the existence of a cscope connection.
+ */
+- /*ARGSUSED*/
+ static void
+ f_cscope_connection(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_CSCOPE
+ int num = 0;
+--- 9142,9151 ----
+ *
+ * Checks the existence of a cscope connection.
+ */
+ static void
+ f_cscope_connection(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_CSCOPE
+ int num = 0;
+***************
+*** 9181,9187 ****
+ * Moves the cursor to the specified line and column.
+ * Returns 0 when the position could be set, -1 otherwise.
+ */
+- /*ARGSUSED*/
+ static void
+ f_cursor(argvars, rettv)
+ typval_T *argvars;
+--- 9172,9177 ----
+***************
+*** 9275,9285 ****
+ /*
+ * "did_filetype()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_did_filetype(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_AUTOCMD
+ rettv->vval.v_number = did_filetype;
+--- 9265,9274 ----
+ /*
+ * "did_filetype()" function
+ */
+ static void
+ f_did_filetype(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_AUTOCMD
+ rettv->vval.v_number = did_filetype;
+***************
+*** 9289,9299 ****
+ /*
+ * "diff_filler()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_diff_filler(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_DIFF
+ rettv->vval.v_number = diff_check_fill(curwin, get_tv_lnum(argvars));
+--- 9278,9287 ----
+ /*
+ * "diff_filler()" function
+ */
+ static void
+ f_diff_filler(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_DIFF
+ rettv->vval.v_number = diff_check_fill(curwin, get_tv_lnum(argvars));
+***************
+*** 9303,9313 ****
+ /*
+ * "diff_hlID()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_diff_hlID(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_DIFF
+ linenr_T lnum = get_tv_lnum(argvars);
+--- 9291,9300 ----
+ /*
+ * "diff_hlID()" function
+ */
+ static void
+ f_diff_hlID(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_DIFF
+ linenr_T lnum = get_tv_lnum(argvars);
+***************
+*** 9420,9426 ****
+ /*
+ * "eval()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_eval(argvars, rettv)
+ typval_T *argvars;
+--- 9407,9412 ----
+***************
+*** 9444,9453 ****
+ /*
+ * "eventhandler()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_eventhandler(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = vgetc_busy;
+--- 9430,9438 ----
+ /*
+ * "eventhandler()" function
+ */
+ static void
+ f_eventhandler(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = vgetc_busy;
+***************
+*** 9704,9714 ****
+ /*
+ * "feedkeys()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_feedkeys(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv;
+ {
+ int remap = TRUE;
+ char_u *keys, *flags;
+--- 9689,9698 ----
+ /*
+ * "feedkeys()" function
+ */
+ static void
+ f_feedkeys(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv UNUSED;
+ {
+ int remap = TRUE;
+ char_u *keys, *flags;
+***************
+*** 10210,10219 ****
+ /*
+ * "foldtext()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_foldtext(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_FOLDING
+--- 10194,10202 ----
+ /*
+ * "foldtext()" function
+ */
+ static void
+ f_foldtext(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_FOLDING
+***************
+*** 10278,10287 ****
+ /*
+ * "foldtextresult(lnum)" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_foldtextresult(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_FOLDING
+--- 10261,10269 ----
+ /*
+ * "foldtextresult(lnum)" function
+ */
+ static void
+ f_foldtextresult(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_FOLDING
+***************
+*** 10314,10324 ****
+ /*
+ * "foreground()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_foreground(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+--- 10296,10305 ----
+ /*
+ * "foreground()" function
+ */
+ static void
+ f_foreground(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+***************
+*** 10333,10339 ****
+ /*
+ * "function()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_function(argvars, rettv)
+ typval_T *argvars;
+--- 10314,10319 ----
+***************
+*** 10357,10367 ****
+ /*
+ * "garbagecollect()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_garbagecollect(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv;
+ {
+ /* This is postponed until we are back at the toplevel, because we may be
+ * using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */
+--- 10337,10346 ----
+ /*
+ * "garbagecollect()" function
+ */
+ static void
+ f_garbagecollect(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv UNUSED;
+ {
+ /* This is postponed until we are back at the toplevel, because we may be
+ * using Lists and Dicts internally. E.g.: ":echo [garbagecollect()]". */
+***************
+*** 10664,10673 ****
+ /*
+ * "getcharmod()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getcharmod(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = mod_mask;
+--- 10643,10651 ----
+ /*
+ * "getcharmod()" function
+ */
+ static void
+ f_getcharmod(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = mod_mask;
+***************
+*** 10676,10685 ****
+ /*
+ * "getcmdline()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getcmdline(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+--- 10654,10662 ----
+ /*
+ * "getcmdline()" function
+ */
+ static void
+ f_getcmdline(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+***************
+*** 10689,10698 ****
+ /*
+ * "getcmdpos()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getcmdpos(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = get_cmdline_pos() + 1;
+--- 10666,10674 ----
+ /*
+ * "getcmdpos()" function
+ */
+ static void
+ f_getcmdpos(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = get_cmdline_pos() + 1;
+***************
+*** 10701,10710 ****
+ /*
+ * "getcmdtype()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getcmdtype(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+--- 10677,10685 ----
+ /*
+ * "getcmdtype()" function
+ */
+ static void
+ f_getcmdtype(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+***************
+*** 10719,10728 ****
+ /*
+ * "getcwd()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getcwd(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u cwd[MAXPATHL];
+--- 10694,10702 ----
+ /*
+ * "getcwd()" function
+ */
+ static void
+ f_getcwd(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u cwd[MAXPATHL];
+***************
+*** 10743,10752 ****
+ /*
+ * "getfontname()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getfontname(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+--- 10717,10725 ----
+ /*
+ * "getfontname()" function
+ */
+ static void
+ f_getfontname(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+***************
+*** 10973,10982 ****
+ /*
+ * "getmatches()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getmatches(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SEARCH_EXTRA
+--- 10946,10954 ----
+ /*
+ * "getmatches()" function
+ */
+ static void
+ f_getmatches(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SEARCH_EXTRA
+***************
+*** 11004,11013 ****
+ /*
+ * "getpid()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getpid(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = mch_get_pid();
+--- 10976,10984 ----
+ /*
+ * "getpid()" function
+ */
+ static void
+ f_getpid(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = mch_get_pid();
+***************
+*** 11051,11061 ****
+ /*
+ * "getqflist()" and "getloclist()" functions
+ */
+- /*ARGSUSED*/
+ static void
+ f_getqflist(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_QUICKFIX
+ win_T *wp;
+--- 11022,11031 ----
+ /*
+ * "getqflist()" and "getloclist()" functions
+ */
+ static void
+ f_getqflist(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_QUICKFIX
+ win_T *wp;
+***************
+*** 11170,11179 ****
+ /*
+ * "getwinposx()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getwinposx(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = -1;
+--- 11140,11148 ----
+ /*
+ * "getwinposx()" function
+ */
+ static void
+ f_getwinposx(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = -1;
+***************
+*** 11191,11200 ****
+ /*
+ * "getwinposy()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_getwinposy(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = -1;
+--- 11160,11168 ----
+ /*
+ * "getwinposy()" function
+ */
+ static void
+ f_getwinposy(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = -1;
+***************
+*** 11921,11930 ****
+ /*
+ * "haslocaldir()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_haslocaldir(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = (curwin->w_localdir != NULL);
+--- 11889,11897 ----
+ /*
+ * "haslocaldir()" function
+ */
+ static void
+ f_haslocaldir(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = (curwin->w_localdir != NULL);
+***************
+*** 11962,11971 ****
+ /*
+ * "histadd()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_histadd(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CMDHIST
+--- 11929,11937 ----
+ /*
+ * "histadd()" function
+ */
+ static void
+ f_histadd(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CMDHIST
+***************
+*** 11996,12006 ****
+ /*
+ * "histdel()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_histdel(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_CMDHIST
+ int n;
+--- 11962,11971 ----
+ /*
+ * "histdel()" function
+ */
+ static void
+ f_histdel(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_CMDHIST
+ int n;
+***************
+*** 12028,12037 ****
+ /*
+ * "histget()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_histget(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CMDHIST
+--- 11993,12001 ----
+ /*
+ * "histget()" function
+ */
+ static void
+ f_histget(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CMDHIST
+***************
+*** 12061,12070 ****
+ /*
+ * "histnr()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_histnr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int i;
+--- 12025,12033 ----
+ /*
+ * "histnr()" function
+ */
+ static void
+ f_histnr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int i;
+***************
+*** 12106,12115 ****
+ /*
+ * "hostname()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_hostname(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u hostname[256];
+--- 12069,12077 ----
+ /*
+ * "hostname()" function
+ */
+ static void
+ f_hostname(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u hostname[256];
+***************
+*** 12122,12131 ****
+ /*
+ * iconv() function
+ */
+- /*ARGSUSED*/
+ static void
+ f_iconv(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_MBYTE
+--- 12084,12092 ----
+ /*
+ * iconv() function
+ */
+ static void
+ f_iconv(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_MBYTE
+***************
+*** 12420,12429 ****
+ /*
+ * "inputrestore()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_inputrestore(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ if (ga_userinput.ga_len > 0)
+--- 12381,12389 ----
+ /*
+ * "inputrestore()" function
+ */
+ static void
+ f_inputrestore(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ if (ga_userinput.ga_len > 0)
+***************
+*** 12443,12452 ****
+ /*
+ * "inputsave()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_inputsave(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ /* Add an entry to the stack of typeahead storage. */
+--- 12403,12411 ----
+ /*
+ * "inputsave()" function
+ */
+ static void
+ f_inputsave(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ /* Add an entry to the stack of typeahead storage. */
+***************
+*** 12733,12742 ****
+ /*
+ * "last_buffer_nr()" function.
+ */
+- /*ARGSUSED*/
+ static void
+ f_last_buffer_nr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int n = 0;
+--- 12692,12700 ----
+ /*
+ * "last_buffer_nr()" function.
+ */
+ static void
+ f_last_buffer_nr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int n = 0;
+***************
+*** 12863,12872 ****
+ /*
+ * "line2byte(lnum)" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_line2byte(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifndef FEAT_BYTEOFF
+--- 12821,12829 ----
+ /*
+ * "line2byte(lnum)" function
+ */
+ static void
+ f_line2byte(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifndef FEAT_BYTEOFF
+***************
+*** 12912,12921 ****
+ /*
+ * "localtime()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_localtime(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = (varnumber_T)time(NULL);
+--- 12869,12877 ----
+ /*
+ * "localtime()" function
+ */
+ static void
+ f_localtime(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->vval.v_number = (varnumber_T)time(NULL);
+***************
+*** 13497,13503 ****
+ /*
+ * "mode()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_mode(argvars, rettv)
+ typval_T *argvars;
+--- 13453,13458 ----
+***************
+*** 13726,13736 ****
+ /*
+ * "pumvisible()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_pumvisible(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_INS_EXPAND
+ if (pum_visible())
+--- 13681,13690 ----
+ /*
+ * "pumvisible()" function
+ */
+ static void
+ f_pumvisible(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_INS_EXPAND
+ if (pum_visible())
+***************
+*** 14131,14140 ****
+ /*
+ * "remote_expr()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_remote_expr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+--- 14085,14093 ----
+ /*
+ * "remote_expr()" function
+ */
+ static void
+ f_remote_expr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+***************
+*** 14147,14157 ****
+ /*
+ * "remote_foreground()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_remote_foreground(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_CLIENTSERVER
+ # ifdef WIN32
+--- 14100,14109 ----
+ /*
+ * "remote_foreground()" function
+ */
+ static void
+ f_remote_foreground(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_CLIENTSERVER
+ # ifdef WIN32
+***************
+*** 14173,14182 ****
+ #endif
+ }
+
+- /*ARGSUSED*/
+ static void
+ f_remote_peek(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CLIENTSERVER
+--- 14125,14133 ----
+ #endif
+ }
+
+ static void
+ f_remote_peek(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CLIENTSERVER
+***************
+*** 14231,14240 ****
+ #endif
+ }
+
+- /*ARGSUSED*/
+ static void
+ f_remote_read(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u *r = NULL;
+--- 14182,14190 ----
+ #endif
+ }
+
+ static void
+ f_remote_read(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u *r = NULL;
+***************
+*** 14266,14275 ****
+ /*
+ * "remote_send()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_remote_send(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+--- 14216,14224 ----
+ /*
+ * "remote_send()" function
+ */
+ static void
+ f_remote_send(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ rettv->v_type = VAR_STRING;
+***************
+*** 14398,14404 ****
+ /*
+ * "repeat()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_repeat(argvars, rettv)
+ typval_T *argvars;
+--- 14347,14352 ----
+***************
+*** 15207,15216 ****
+ }
+
+
+- /*ARGSUSED*/
+ static void
+ f_server2client(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CLIENTSERVER
+--- 15155,15163 ----
+ }
+
+
+ static void
+ f_server2client(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_CLIENTSERVER
+***************
+*** 15239,15248 ****
+ #endif
+ }
+
+- /*ARGSUSED*/
+ static void
+ f_serverlist(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u *r = NULL;
+--- 15186,15194 ----
+ #endif
+ }
+
+ static void
+ f_serverlist(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u *r = NULL;
+***************
+*** 15263,15273 ****
+ /*
+ * "setbufvar()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_setbufvar(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv;
+ {
+ buf_T *buf;
+ aco_save_T aco;
+--- 15209,15218 ----
+ /*
+ * "setbufvar()" function
+ */
+ static void
+ f_setbufvar(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv UNUSED;
+ {
+ buf_T *buf;
+ aco_save_T aco;
+***************
+*** 15402,15413 ****
+ /*
+ * Used by "setqflist()" and "setloclist()" functions
+ */
+- /*ARGSUSED*/
+ static void
+ set_qf_ll_list(wp, list_arg, action_arg, rettv)
+! win_T *wp;
+! typval_T *list_arg;
+! typval_T *action_arg;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_QUICKFIX
+--- 15347,15357 ----
+ /*
+ * Used by "setqflist()" and "setloclist()" functions
+ */
+ static void
+ set_qf_ll_list(wp, list_arg, action_arg, rettv)
+! win_T *wp UNUSED;
+! typval_T *list_arg UNUSED;
+! typval_T *action_arg UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_QUICKFIX
+***************
+*** 15442,15448 ****
+ /*
+ * "setloclist()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_setloclist(argvars, rettv)
+ typval_T *argvars;
+--- 15386,15391 ----
+***************
+*** 15520,15526 ****
+ /*
+ * "setpos()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_setpos(argvars, rettv)
+ typval_T *argvars;
+--- 15463,15468 ----
+***************
+*** 15564,15570 ****
+ /*
+ * "setqflist()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_setqflist(argvars, rettv)
+ typval_T *argvars;
+--- 15506,15511 ----
+***************
+*** 15667,15677 ****
+ /*
+ * "setwinvar()" and "settabwinvar()" functions
+ */
+- /*ARGSUSED*/
+ static void
+ setwinvar(argvars, rettv, off)
+ typval_T *argvars;
+! typval_T *rettv;
+ int off;
+ {
+ win_T *win;
+--- 15608,15617 ----
+ /*
+ * "setwinvar()" and "settabwinvar()" functions
+ */
+ static void
+ setwinvar(argvars, rettv, off)
+ typval_T *argvars;
+! typval_T *rettv UNUSED;
+ int off;
+ {
+ win_T *win;
+***************
+*** 15987,15996 ****
+ /*
+ * "spellbadword()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_spellbadword(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u *word = (char_u *)"";
+--- 15927,15935 ----
+ /*
+ * "spellbadword()" function
+ */
+ static void
+ f_spellbadword(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u *word = (char_u *)"";
+***************
+*** 16042,16051 ****
+ /*
+ * "spellsuggest()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_spellsuggest(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SPELL
+--- 15981,15989 ----
+ /*
+ * "spellsuggest()" function
+ */
+ static void
+ f_spellsuggest(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SPELL
+***************
+*** 16528,16537 ****
+ /*
+ * "synID(lnum, col, trans)" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_synID(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int id = 0;
+--- 16466,16474 ----
+ /*
+ * "synID(lnum, col, trans)" function
+ */
+ static void
+ f_synID(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int id = 0;
+***************
+*** 16556,16565 ****
+ /*
+ * "synIDattr(id, what [, mode])" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_synIDattr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u *p = NULL;
+--- 16493,16501 ----
+ /*
+ * "synIDattr(id, what [, mode])" function
+ */
+ static void
+ f_synIDattr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u *p = NULL;
+***************
+*** 16652,16661 ****
+ /*
+ * "synIDtrans(id)" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_synIDtrans(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int id;
+--- 16588,16596 ----
+ /*
+ * "synIDtrans(id)" function
+ */
+ static void
+ f_synIDtrans(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int id;
+***************
+*** 16675,16684 ****
+ /*
+ * "synstack(lnum, col)" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_synstack(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SYN_HL
+--- 16610,16618 ----
+ /*
+ * "synstack(lnum, col)" function
+ */
+ static void
+ f_synstack(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_SYN_HL
+***************
+*** 16812,16822 ****
+ /*
+ * "tabpagebuflist()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_tabpagebuflist(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+--- 16746,16755 ----
+ /*
+ * "tabpagebuflist()" function
+ */
+ static void
+ f_tabpagebuflist(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+***************
+*** 16844,16853 ****
+ /*
+ * "tabpagenr()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_tabpagenr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int nr = 1;
+--- 16777,16785 ----
+ /*
+ * "tabpagenr()" function
+ */
+ static void
+ f_tabpagenr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int nr = 1;
+***************
+*** 16929,16938 ****
+ /*
+ * "tabpagewinnr()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_tabpagewinnr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int nr = 1;
+--- 16861,16869 ----
+ /*
+ * "tabpagewinnr()" function
+ */
+ static void
+ f_tabpagewinnr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int nr = 1;
+***************
+*** 16952,16961 ****
+ /*
+ * "tagfiles()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_tagfiles(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ char_u fname[MAXPATHL + 1];
+--- 16883,16891 ----
+ /*
+ * "tagfiles()" function
+ */
+ static void
+ f_tagfiles(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ char_u fname[MAXPATHL + 1];
+***************
+*** 16995,17004 ****
+ /*
+ * "tempname()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_tempname(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ static int x = 'A';
+--- 16925,16933 ----
+ /*
+ * "tempname()" function
+ */
+ static void
+ f_tempname(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ static int x = 'A';
+***************
+*** 17031,17041 ****
+ /*
+ * "test(list)" function: Just checking the walls...
+ */
+- /*ARGSUSED*/
+ static void
+ f_test(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ /* Used for unit testing. Change the code below to your liking. */
+ #if 0
+--- 16960,16969 ----
+ /*
+ * "test(list)" function: Just checking the walls...
+ */
+ static void
+ f_test(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ /* Used for unit testing. Change the code below to your liking. */
+ #if 0
+***************
+*** 17320,17330 ****
+ /*
+ * "visualmode()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_visualmode(argvars, rettv)
+! typval_T *argvars;
+! typval_T *rettv;
+ {
+ #ifdef FEAT_VISUAL
+ char_u str[2];
+--- 17248,17257 ----
+ /*
+ * "visualmode()" function
+ */
+ static void
+ f_visualmode(argvars, rettv)
+! typval_T *argvars UNUSED;
+! typval_T *rettv UNUSED;
+ {
+ #ifdef FEAT_VISUAL
+ char_u str[2];
+***************
+*** 17360,17369 ****
+ /*
+ * "wincol()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_wincol(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ validate_cursor();
+--- 17287,17295 ----
+ /*
+ * "wincol()" function
+ */
+ static void
+ f_wincol(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ validate_cursor();
+***************
+*** 17390,17399 ****
+ /*
+ * "winline()" function
+ */
+- /*ARGSUSED*/
+ static void
+ f_winline(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ validate_cursor();
+--- 17316,17324 ----
+ /*
+ * "winline()" function
+ */
+ static void
+ f_winline(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ validate_cursor();
+***************
+*** 17403,17412 ****
+ /*
+ * "winnr()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_winnr(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ int nr = 1;
+--- 17328,17336 ----
+ /*
+ * "winnr()" function
+ */
+ static void
+ f_winnr(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ int nr = 1;
+***************
+*** 17420,17429 ****
+ /*
+ * "winrestcmd()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_winrestcmd(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_WINDOWS
+--- 17344,17352 ----
+ /*
+ * "winrestcmd()" function
+ */
+ static void
+ f_winrestcmd(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ #ifdef FEAT_WINDOWS
+***************
+*** 17455,17465 ****
+ /*
+ * "winrestview()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_winrestview(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv;
+ {
+ dict_T *dict;
+
+--- 17378,17387 ----
+ /*
+ * "winrestview()" function
+ */
+ static void
+ f_winrestview(argvars, rettv)
+ typval_T *argvars;
+! typval_T *rettv UNUSED;
+ {
+ dict_T *dict;
+
+***************
+*** 17501,17510 ****
+ /*
+ * "winsaveview()" function
+ */
+- /* ARGSUSED */
+ static void
+ f_winsaveview(argvars, rettv)
+! typval_T *argvars;
+ typval_T *rettv;
+ {
+ dict_T *dict;
+--- 17423,17431 ----
+ /*
+ * "winsaveview()" function
+ */
+ static void
+ f_winsaveview(argvars, rettv)
+! typval_T *argvars UNUSED;
+ typval_T *rettv;
+ {
+ dict_T *dict;
+***************
+*** 21646,21657 ****
+ * Called by do_cmdline() to get the next line.
+ * Returns allocated string, or NULL for end of function.
+ */
+- /* ARGSUSED */
+ char_u *
+ get_func_line(c, cookie, indent)
+! int c; /* not used */
+ void *cookie;
+! int indent; /* not used */
+ {
+ funccall_T *fcp = (funccall_T *)cookie;
+ ufunc_T *fp = fcp->func;
+--- 21567,21577 ----
+ * Called by do_cmdline() to get the next line.
+ * Returns allocated string, or NULL for end of function.
+ */
+ char_u *
+ get_func_line(c, cookie, indent)
+! int c UNUSED;
+ void *cookie;
+! int indent UNUSED;
+ {
+ funccall_T *fcp = (funccall_T *)cookie;
+ ufunc_T *fp = fcp->func;
+***************
+*** 22023,22032 ****
+ /*
+ * List v:oldfiles in a nice way.
+ */
+- /*ARGSUSED*/
+ void
+ ex_oldfiles(eap)
+! exarg_T *eap;
+ {
+ list_T *l = vimvars[VV_OLDFILES].vv_list;
+ listitem_T *li;
+--- 21943,21951 ----
+ /*
+ * List v:oldfiles in a nice way.
+ */
+ void
+ ex_oldfiles(eap)
+! exarg_T *eap UNUSED;
+ {
+ list_T *l = vimvars[VV_OLDFILES].vv_list;
+ listitem_T *li;
+*** ../vim-7.2.176/src/ex_docmd.c 2009-05-16 16:36:25.000000000 +0200
+--- src/ex_docmd.c 2009-05-16 17:01:26.000000000 +0200
+***************
+*** 3004,3010 ****
+
+ if (VIM_ISDIGIT(*cmd))
+ p = skipwhite(skipdigits(cmd));
+! for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i)
+ {
+ for (j = 0; p[j] != NUL; ++j)
+ if (p[j] != cmdmods[i].name[j])
+--- 3004,3010 ----
+
+ if (VIM_ISDIGIT(*cmd))
+ p = skipwhite(skipdigits(cmd));
+! for (i = 0; i < (int)(sizeof(cmdmods) / sizeof(struct cmdmod)); ++i)
+ {
+ for (j = 0; p[j] != NUL; ++j)
+ if (p[j] != cmdmods[i].name[j])
+***************
+*** 3032,3038 ****
+ char_u *p;
+
+ /* Check command modifiers. */
+! for (i = 0; i < sizeof(cmdmods) / sizeof(struct cmdmod); ++i)
+ {
+ for (j = 0; name[j] != NUL; ++j)
+ if (name[j] != cmdmods[i].name[j])
+--- 3032,3038 ----
+ char_u *p;
+
+ /* Check command modifiers. */
+! for (i = 0; i < (int)(sizeof(cmdmods) / sizeof(struct cmdmod)); ++i)
+ {
+ for (j = 0; name[j] != NUL; ++j)
+ if (name[j] != cmdmods[i].name[j])
+***************
+*** 6093,6099 ****
+ {"bang", "bar", "buffer", "complete", "count",
+ "nargs", "range", "register"};
+
+! if (idx >= sizeof(user_cmd_flags) / sizeof(user_cmd_flags[0]))
+ return NULL;
+ return (char_u *)user_cmd_flags[idx];
+ }
+--- 6093,6099 ----
+ {"bang", "bar", "buffer", "complete", "count",
+ "nargs", "range", "register"};
+
+! if (idx >= (int)(sizeof(user_cmd_flags) / sizeof(user_cmd_flags[0])))
+ return NULL;
+ return (char_u *)user_cmd_flags[idx];
+ }
+***************
+*** 6108,6114 ****
+ {
+ static char *user_cmd_nargs[] = {"0", "1", "*", "?", "+"};
+
+! if (idx >= sizeof(user_cmd_nargs) / sizeof(user_cmd_nargs[0]))
+ return NULL;
+ return (char_u *)user_cmd_nargs[idx];
+ }
+--- 6108,6114 ----
+ {
+ static char *user_cmd_nargs[] = {"0", "1", "*", "?", "+"};
+
+! if (idx >= (int)(sizeof(user_cmd_nargs) / sizeof(user_cmd_nargs[0])))
+ return NULL;
+ return (char_u *)user_cmd_nargs[idx];
+ }
+***************
+*** 9144,9153 ****
+ /*
+ * ":stopinsert"
+ */
+- /*ARGSUSED*/
+ static void
+ ex_stopinsert(eap)
+! exarg_T *eap;
+ {
+ restart_edit = 0;
+ stop_insert_mode = TRUE;
+--- 9144,9152 ----
+ /*
+ * ":stopinsert"
+ */
+ static void
+ ex_stopinsert(eap)
+! exarg_T *eap UNUSED;
+ {
+ restart_edit = 0;
+ stop_insert_mode = TRUE;
+*** ../vim-7.2.176/src/ex_eval.c 2007-11-24 21:50:19.000000000 +0100
+--- src/ex_eval.c 2009-05-16 17:06:09.000000000 +0200
+***************
+*** 60,66 ****
+--- 60,68 ----
+ #else
+ /* Values used for the Vim release. */
+ # define THROW_ON_ERROR TRUE
++ # define THROW_ON_ERROR_TRUE
+ # define THROW_ON_INTERRUPT TRUE
++ # define THROW_ON_INTERRUPT_TRUE
+ #endif
+
+ static void catch_exception __ARGS((except_T *excp));
+***************
+*** 1320,1335 ****
+--- 1322,1341 ----
+ * and reset the did_emsg or got_int flag, so this won't happen again at
+ * the next surrounding try conditional.
+ */
++ #ifndef THROW_ON_ERROR_TRUE
+ if (did_emsg && !THROW_ON_ERROR)
+ {
+ inactivate_try = TRUE;
+ did_emsg = FALSE;
+ }
++ #endif
++ #ifndef THROW_ON_INTERRUPT_TRUE
+ if (got_int && !THROW_ON_INTERRUPT)
+ {
+ inactivate_try = TRUE;
+ got_int = FALSE;
+ }
++ #endif
+ idx = cleanup_conditionals(cstack, 0, inactivate_try);
+ if (idx >= 0)
+ {
+***************
+*** 2254,2263 ****
+ /*
+ * ":endfunction" when not after a ":function"
+ */
+- /*ARGSUSED*/
+ void
+ ex_endfunction(eap)
+! exarg_T *eap;
+ {
+ EMSG(_("E193: :endfunction not inside a function"));
+ }
+--- 2260,2268 ----
+ /*
+ * ":endfunction" when not after a ":function"
+ */
+ void
+ ex_endfunction(eap)
+! exarg_T *eap UNUSED;
+ {
+ EMSG(_("E193: :endfunction not inside a function"));
+ }
+*** ../vim-7.2.176/src/ex_getln.c 2009-05-15 21:31:11.000000000 +0200
+--- src/ex_getln.c 2009-05-16 17:06:55.000000000 +0200
+***************
+*** 4533,4539 ****
+ * right function to do the expansion.
+ */
+ ret = FAIL;
+! for (i = 0; i < sizeof(tab) / sizeof(struct expgen); ++i)
+ if (xp->xp_context == tab[i].context)
+ {
+ if (tab[i].ic)
+--- 4533,4539 ----
+ * right function to do the expansion.
+ */
+ ret = FAIL;
+! for (i = 0; i < (int)(sizeof(tab) / sizeof(struct expgen)); ++i)
+ if (xp->xp_context == tab[i].context)
+ {
+ if (tab[i].ic)
+*** ../vim-7.2.176/src/fileio.c 2009-05-15 21:31:11.000000000 +0200
+--- src/fileio.c 2009-05-16 17:07:35.000000000 +0200
+***************
+*** 9085,9096 ****
+ * Called by do_cmdline() to get the next line for ":if".
+ * Returns allocated string, or NULL for end of autocommands.
+ */
+- /* ARGSUSED */
+ static char_u *
+ getnextac(c, cookie, indent)
+! int c; /* not used */
+ void *cookie;
+! int indent; /* not used */
+ {
+ AutoPatCmd *acp = (AutoPatCmd *)cookie;
+ char_u *retval;
+--- 9093,9103 ----
+ * Called by do_cmdline() to get the next line for ":if".
+ * Returns allocated string, or NULL for end of autocommands.
+ */
+ static char_u *
+ getnextac(c, cookie, indent)
+! int c UNUSED;
+ void *cookie;
+! int indent UNUSED;
+ {
+ AutoPatCmd *acp = (AutoPatCmd *)cookie;
+ char_u *retval;
+***************
+*** 9201,9210 ****
+ * Function given to ExpandGeneric() to obtain the list of autocommand group
+ * names.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_augroup_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ if (idx == augroups.ga_len) /* add "END" add the end */
+--- 9208,9216 ----
+ * Function given to ExpandGeneric() to obtain the list of autocommand group
+ * names.
+ */
+ char_u *
+ get_augroup_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ if (idx == augroups.ga_len) /* add "END" add the end */
+***************
+*** 9270,9279 ****
+ /*
+ * Function given to ExpandGeneric() to obtain the list of event names.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_event_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ if (idx < augroups.ga_len) /* First list group names, if wanted */
+--- 9276,9284 ----
+ /*
+ * Function given to ExpandGeneric() to obtain the list of event names.
+ */
+ char_u *
+ get_event_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ if (idx < augroups.ga_len) /* First list group names, if wanted */
+*** ../vim-7.2.176/src/hardcopy.c 2008-01-12 16:46:41.000000000 +0100
+--- src/hardcopy.c 2009-05-16 17:18:27.000000000 +0200
+***************
+*** 442,453 ****
+ /*
+ * Print the page header.
+ */
+- /*ARGSUSED*/
+ static void
+ prt_header(psettings, pagenum, lnum)
+ prt_settings_T *psettings;
+ int pagenum;
+! linenr_T lnum;
+ {
+ int width = psettings->chars_per_line;
+ int page_line;
+--- 442,452 ----
+ /*
+ * Print the page header.
+ */
+ static void
+ prt_header(psettings, pagenum, lnum)
+ prt_settings_T *psettings;
+ int pagenum;
+! linenr_T lnum UNUSED;
+ {
+ int width = psettings->chars_per_line;
+ int page_line;
+***************
+*** 1881,1887 ****
+ return FALSE;
+
+ /* Find type of DSC comment */
+! for (comment = 0; comment < NUM_ELEMENTS(prt_dsc_table); comment++)
+ if (prt_resfile_strncmp(0, prt_dsc_table[comment].string,
+ prt_dsc_table[comment].len) == 0)
+ break;
+--- 1880,1886 ----
+ return FALSE;
+
+ /* Find type of DSC comment */
+! for (comment = 0; comment < (int)NUM_ELEMENTS(prt_dsc_table); comment++)
+ if (prt_resfile_strncmp(0, prt_dsc_table[comment].string,
+ prt_dsc_table[comment].len) == 0)
+ break;
+***************
+*** 2454,2465 ****
+ }
+ #endif
+
+- /*ARGSUSED*/
+ int
+ mch_print_init(psettings, jobname, forceit)
+ prt_settings_T *psettings;
+ char_u *jobname;
+! int forceit;
+ {
+ int i;
+ char *paper_name;
+--- 2453,2463 ----
+ }
+ #endif
+
+ int
+ mch_print_init(psettings, jobname, forceit)
+ prt_settings_T *psettings;
+ char_u *jobname;
+! int forceit UNUSED;
+ {
+ int i;
+ char *paper_name;
+***************
+*** 2514,2520 ****
+ if (!(props & ENC_8BIT) && ((*p_pmcs != NUL) || !(props & ENC_UNICODE)))
+ {
+ p_mbenc_first = NULL;
+! for (cmap = 0; cmap < NUM_ELEMENTS(prt_ps_mbfonts); cmap++)
+ if (prt_match_encoding((char *)p_encoding, &prt_ps_mbfonts[cmap],
+ &p_mbenc))
+ {
+--- 2512,2518 ----
+ if (!(props & ENC_8BIT) && ((*p_pmcs != NUL) || !(props & ENC_UNICODE)))
+ {
+ p_mbenc_first = NULL;
+! for (cmap = 0; cmap < (int)NUM_ELEMENTS(prt_ps_mbfonts); cmap++)
+ if (prt_match_encoding((char *)p_encoding, &prt_ps_mbfonts[cmap],
+ &p_mbenc))
+ {
+***************
+*** 2642,2648 ****
+ paper_name = "A4";
+ paper_strlen = 2;
+ }
+! for (i = 0; i < PRT_MEDIASIZE_LEN; ++i)
+ if (STRLEN(prt_mediasize[i].name) == (unsigned)paper_strlen
+ && STRNICMP(prt_mediasize[i].name, paper_name,
+ paper_strlen) == 0)
+--- 2640,2646 ----
+ paper_name = "A4";
+ paper_strlen = 2;
+ }
+! for (i = 0; i < (int)PRT_MEDIASIZE_LEN; ++i)
+ if (STRLEN(prt_mediasize[i].name) == (unsigned)paper_strlen
+ && STRNICMP(prt_mediasize[i].name, paper_name,
+ paper_strlen) == 0)
+***************
+*** 3308,3317 ****
+ return !prt_file_error;
+ }
+
+- /*ARGSUSED*/
+ int
+ mch_print_begin_page(str)
+! char_u *str;
+ {
+ int page_num[2];
+
+--- 3306,3314 ----
+ return !prt_file_error;
+ }
+
+ int
+ mch_print_begin_page(str)
+! char_u *str UNUSED;
+ {
+ int page_num[2];
+
+***************
+*** 3379,3389 ****
+ #endif
+ }
+
+- /*ARGSUSED*/
+ int
+ mch_print_text_out(p, len)
+ char_u *p;
+! int len;
+ {
+ int need_break;
+ char_u ch;
+--- 3376,3385 ----
+ #endif
+ }
+
+ int
+ mch_print_text_out(p, len)
+ char_u *p;
+! int len UNUSED;
+ {
+ int need_break;
+ char_u ch;
+*** ../vim-7.2.176/src/if_cscope.c 2009-05-16 16:15:39.000000000 +0200
+--- src/if_cscope.c 2009-05-16 17:19:30.000000000 +0200
+***************
+*** 83,89 ****
+ N_("Reinit all connections"), "reset", 0 },
+ { "show", cs_show,
+ N_("Show connections"), "show", 0 },
+! { NULL }
+ };
+
+ static void
+--- 83,89 ----
+ N_("Reinit all connections"), "reset", 0 },
+ { "show", cs_show,
+ N_("Show connections"), "show", 0 },
+! { NULL, NULL, NULL, NULL, 0 }
+ };
+
+ static void
+***************
+*** 107,116 ****
+ * Function given to ExpandGeneric() to obtain the cscope command
+ * expansion.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_cscope_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ int current_idx;
+--- 107,115 ----
+ * Function given to ExpandGeneric() to obtain the cscope command
+ * expansion.
+ */
+ char_u *
+ get_cscope_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ int current_idx;
+***************
+*** 496,505 ****
+ *
+ * MAXPATHL 256
+ */
+- /* ARGSUSED */
+ static int
+ cs_add(eap)
+! exarg_T *eap;
+ {
+ char *fname, *ppath, *flags = NULL;
+
+--- 495,503 ----
+ *
+ * MAXPATHL 256
+ */
+ static int
+ cs_add(eap)
+! exarg_T *eap UNUSED;
+ {
+ char *fname, *ppath, *flags = NULL;
+
+***************
+*** 1292,1301 ****
+ *
+ * print help
+ */
+- /* ARGSUSED */
+ static int
+ cs_help(eap)
+! exarg_T *eap;
+ {
+ cscmd_T *cmdp = cs_cmds;
+
+--- 1290,1298 ----
+ *
+ * print help
+ */
+ static int
+ cs_help(eap)
+! exarg_T *eap UNUSED;
+ {
+ cscmd_T *cmdp = cs_cmds;
+
+***************
+*** 1399,1411 ****
+ *
+ * insert a new cscope database filename into the filelist
+ */
+- /*ARGSUSED*/
+ static int
+ cs_insert_filelist(fname, ppath, flags, sb)
+ char *fname;
+ char *ppath;
+ char *flags;
+! struct stat *sb;
+ {
+ short i, j;
+ #ifndef UNIX
+--- 1396,1407 ----
+ *
+ * insert a new cscope database filename into the filelist
+ */
+ static int
+ cs_insert_filelist(fname, ppath, flags, sb)
+ char *fname;
+ char *ppath;
+ char *flags;
+! struct stat *sb UNUSED;
+ {
+ short i, j;
+ #ifndef UNIX
+***************
+*** 1561,1570 ****
+ *
+ * nuke em
+ */
+- /* ARGSUSED */
+ static int
+ cs_kill(eap)
+! exarg_T *eap;
+ {
+ char *stok;
+ short i;
+--- 1557,1565 ----
+ *
+ * nuke em
+ */
+ static int
+ cs_kill(eap)
+! exarg_T *eap UNUSED;
+ {
+ char *stok;
+ short i;
+***************
+*** 2241,2247 ****
+ /*
+ * Used to catch and ignore SIGALRM below.
+ */
+- /* ARGSUSED */
+ static RETSIGTYPE
+ sig_handler SIGDEFARG(sigarg)
+ {
+--- 2236,2241 ----
+***************
+*** 2381,2390 ****
+ *
+ * calls cs_kill on all cscope connections then reinits
+ */
+- /* ARGSUSED */
+ static int
+ cs_reset(eap)
+! exarg_T *eap;
+ {
+ char **dblist = NULL, **pplist = NULL, **fllist = NULL;
+ int i;
+--- 2375,2383 ----
+ *
+ * calls cs_kill on all cscope connections then reinits
+ */
+ static int
+ cs_reset(eap)
+! exarg_T *eap UNUSED;
+ {
+ char **dblist = NULL, **pplist = NULL, **fllist = NULL;
+ int i;
+***************
+*** 2497,2506 ****
+ *
+ * show all cscope connections
+ */
+- /* ARGSUSED */
+ static int
+ cs_show(eap)
+! exarg_T *eap;
+ {
+ short i;
+ if (cs_cnt_connections() == 0)
+--- 2490,2498 ----
+ *
+ * show all cscope connections
+ */
+ static int
+ cs_show(eap)
+! exarg_T *eap UNUSED;
+ {
+ short i;
+ if (cs_cnt_connections() == 0)
+*** ../vim-7.2.176/src/if_xcmdsrv.c 2008-11-12 14:52:11.000000000 +0100
+--- src/if_xcmdsrv.c 2009-05-16 17:12:32.000000000 +0200
+***************
+*** 682,688 ****
+ * Scan all of the names out of the property.
+ */
+ ga_init2(&ga, 1, 100);
+! for (p = regProp; (p - regProp) < numItems; p++)
+ {
+ entry = p;
+ while (*p != 0 && !isspace(*p))
+--- 682,688 ----
+ * Scan all of the names out of the property.
+ */
+ ga_init2(&ga, 1, 100);
+! for (p = regProp; (long_u)(p - regProp) < numItems; p++)
+ {
+ entry = p;
+ while (*p != 0 && !isspace(*p))
+***************
+*** 969,975 ****
+ */
+ returnValue = (int_u)None;
+ entry = NULL; /* Not needed, but eliminates compiler warning. */
+! for (p = regProp; (p - regProp) < numItems; )
+ {
+ entry = p;
+ while (*p != 0 && !isspace(*p))
+--- 969,975 ----
+ */
+ returnValue = (int_u)None;
+ entry = NULL; /* Not needed, but eliminates compiler warning. */
+! for (p = regProp; (long_u)(p - regProp) < numItems; )
+ {
+ entry = p;
+ while (*p != 0 && !isspace(*p))
+***************
+*** 986,992 ****
+
+ if (loose != NULL && returnValue == (int_u)None && !IsSerialName(name))
+ {
+! for (p = regProp; (p - regProp) < numItems; )
+ {
+ entry = p;
+ while (*p != 0 && !isspace(*p))
+--- 986,992 ----
+
+ if (loose != NULL && returnValue == (int_u)None && !IsSerialName(name))
+ {
+! for (p = regProp; (long_u)(p - regProp) < numItems; )
+ {
+ entry = p;
+ while (*p != 0 && !isspace(*p))
+***************
+*** 1056,1062 ****
+ return;
+
+ /* Scan the property for the window id. */
+! for (p = regProp; (p - regProp) < numItems; )
+ {
+ if (*p != 0)
+ {
+--- 1056,1062 ----
+ return;
+
+ /* Scan the property for the window id. */
+! for (p = regProp; (long_u)(p - regProp) < numItems; )
+ {
+ if (*p != 0)
+ {
+***************
+*** 1196,1202 ****
+ * one time; each iteration through the outer loop handles a
+ * single command or result.
+ */
+! for (p = propInfo; (p - propInfo) < numItems; )
+ {
+ /*
+ * Ignore leading NULs; each command or result starts with a
+--- 1196,1202 ----
+ * one time; each iteration through the outer loop handles a
+ * single command or result.
+ */
+! for (p = propInfo; (long_u)(p - propInfo) < numItems; )
+ {
+ /*
+ * Ignore leading NULs; each command or result starts with a
+***************
+*** 1230,1236 ****
+ serial = (char_u *)"";
+ script = NULL;
+ enc = NULL;
+! while (p - propInfo < numItems && *p == '-')
+ {
+ switch (p[1])
+ {
+--- 1230,1236 ----
+ serial = (char_u *)"";
+ script = NULL;
+ enc = NULL;
+! while ((long_u)(p - propInfo) < numItems && *p == '-')
+ {
+ switch (p[1])
+ {
+***************
+*** 1333,1339 ****
+ res = (char_u *)"";
+ code = 0;
+ enc = NULL;
+! while ((p-propInfo) < numItems && *p == '-')
+ {
+ switch (p[1])
+ {
+--- 1333,1339 ----
+ res = (char_u *)"";
+ code = 0;
+ enc = NULL;
+! while ((long_u)(p - propInfo) < numItems && *p == '-')
+ {
+ switch (p[1])
+ {
+***************
+*** 1401,1407 ****
+ gotWindow = 0;
+ str = (char_u *)"";
+ enc = NULL;
+! while ((p-propInfo) < numItems && *p == '-')
+ {
+ switch (p[1])
+ {
+--- 1401,1407 ----
+ gotWindow = 0;
+ str = (char_u *)"";
+ enc = NULL;
+! while ((long_u)(p - propInfo) < numItems && *p == '-')
+ {
+ switch (p[1])
+ {
+***************
+*** 1489,1499 ****
+ /*
+ * Another X Error handler, just used to check for errors.
+ */
+- /* ARGSUSED */
+ static int
+ x_error_check(dpy, error_event)
+! Display *dpy;
+! XErrorEvent *error_event;
+ {
+ got_x_error = TRUE;
+ return 0;
+--- 1489,1498 ----
+ /*
+ * Another X Error handler, just used to check for errors.
+ */
+ static int
+ x_error_check(dpy, error_event)
+! Display *dpy UNUSED;
+! XErrorEvent *error_event UNUSED;
+ {
+ got_x_error = TRUE;
+ return 0;
+*** ../vim-7.2.176/src/farsi.c 2008-06-25 00:25:17.000000000 +0200
+--- src/farsi.c 2009-05-16 17:14:41.000000000 +0200
+***************
+*** 103,109 ****
+ case F_HE:
+ tempc = _HE;
+
+! if (p_ri && (curwin->w_cursor.col+1 < STRLEN(ml_get_curline())))
+ {
+ inc_cursor();
+
+--- 103,110 ----
+ case F_HE:
+ tempc = _HE;
+
+! if (p_ri && (curwin->w_cursor.col + 1
+! < (colnr_T)STRLEN(ml_get_curline())))
+ {
+ inc_cursor();
+
+***************
+*** 344,350 ****
+ if (curwin->w_p_rl && p_ri)
+ return;
+
+! if ( (curwin->w_cursor.col < STRLEN(ml_get_curline())))
+ {
+ if ((p_ri && curwin->w_cursor.col) || !p_ri)
+ {
+--- 345,351 ----
+ if (curwin->w_p_rl && p_ri)
+ return;
+
+! if ((curwin->w_cursor.col < (colnr_T)STRLEN(ml_get_curline())))
+ {
+ if ((p_ri && curwin->w_cursor.col) || !p_ri)
+ {
+***************
+*** 565,571 ****
+
+ tempc = gchar_cursor();
+
+! if (curwin->w_cursor.col+1 < STRLEN(ml_get_curline()))
+ {
+ inc_cursor();
+
+--- 566,572 ----
+
+ tempc = gchar_cursor();
+
+! if (curwin->w_cursor.col + 1 < (colnr_T)STRLEN(ml_get_curline()))
+ {
+ inc_cursor();
+
+***************
+*** 594,601 ****
+ {
+ int tempc;
+
+! if (!curwin->w_cursor.col &&
+! (curwin->w_cursor.col+1 == STRLEN(ml_get_curline())))
+ return;
+
+ if (!curwin->w_cursor.col && p_ri)
+--- 595,602 ----
+ {
+ int tempc;
+
+! if (curwin->w_cursor.col != 0 &&
+! (curwin->w_cursor.col + 1 == (colnr_T)STRLEN(ml_get_curline())))
+ return;
+
+ if (!curwin->w_cursor.col && p_ri)
+***************
+*** 663,670 ****
+ {
+ int tempc;
+
+! if (!curwin->w_cursor.col &&
+! (curwin->w_cursor.col+1 == STRLEN(ml_get_curline())))
+ return;
+
+ if (!curwin->w_cursor.col && p_ri)
+--- 664,671 ----
+ {
+ int tempc;
+
+! if (curwin->w_cursor.col != 0 &&
+! (curwin->w_cursor.col + 1 == (colnr_T)STRLEN(ml_get_curline())))
+ return;
+
+ if (!curwin->w_cursor.col && p_ri)
+*** ../vim-7.2.176/src/mark.c 2009-04-29 11:00:09.000000000 +0200
+--- src/mark.c 2009-05-16 17:14:56.000000000 +0200
+***************
+*** 884,893 ****
+ /*
+ * print the jumplist
+ */
+- /*ARGSUSED*/
+ void
+ ex_jumps(eap)
+! exarg_T *eap;
+ {
+ int i;
+ char_u *name;
+--- 884,892 ----
+ /*
+ * print the jumplist
+ */
+ void
+ ex_jumps(eap)
+! exarg_T *eap UNUSED;
+ {
+ int i;
+ char_u *name;
+***************
+*** 933,942 ****
+ /*
+ * print the changelist
+ */
+- /*ARGSUSED*/
+ void
+ ex_changes(eap)
+! exarg_T *eap;
+ {
+ int i;
+ char_u *name;
+--- 932,940 ----
+ /*
+ * print the changelist
+ */
+ void
+ ex_changes(eap)
+! exarg_T *eap UNUSED;
+ {
+ int i;
+ char_u *name;
+*** ../vim-7.2.176/src/menu.c 2008-08-17 23:43:53.000000000 +0200
+--- src/menu.c 2009-05-16 17:19:57.000000000 +0200
+***************
+*** 231,237 ****
+ if (skipdigits(menu_path + 7) == p)
+ {
+ menuarg.iconidx = atoi((char *)menu_path + 7);
+! if (menuarg.iconidx >= TOOLBAR_NAME_COUNT)
+ menuarg.iconidx = -1;
+ else
+ menuarg.icon_builtin = TRUE;
+--- 231,237 ----
+ if (skipdigits(menu_path + 7) == p)
+ {
+ menuarg.iconidx = atoi((char *)menu_path + 7);
+! if (menuarg.iconidx >= (int)TOOLBAR_NAME_COUNT)
+ menuarg.iconidx = -1;
+ else
+ menuarg.icon_builtin = TRUE;
+***************
+*** 239,245 ****
+ }
+ else
+ {
+! for (i = 0; i < TOOLBAR_NAME_COUNT; ++i)
+ if (STRNCMP(toolbar_names[i], menu_path, p - menu_path)
+ == 0)
+ {
+--- 239,245 ----
+ }
+ else
+ {
+! for (i = 0; i < (int)TOOLBAR_NAME_COUNT; ++i)
+ if (STRNCMP(toolbar_names[i], menu_path, p - menu_path)
+ == 0)
+ {
+***************
+*** 1341,1350 ****
+ * Function given to ExpandGeneric() to obtain the list of (sub)menus (not
+ * entries).
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_menu_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ static vimmenu_T *menu = NULL;
+--- 1341,1349 ----
+ * Function given to ExpandGeneric() to obtain the list of (sub)menus (not
+ * entries).
+ */
+ char_u *
+ get_menu_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ static vimmenu_T *menu = NULL;
+***************
+*** 1378,1387 ****
+ * Function given to ExpandGeneric() to obtain the list of menus and menu
+ * entries.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_menu_names(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ static vimmenu_T *menu = NULL;
+--- 1377,1385 ----
+ * Function given to ExpandGeneric() to obtain the list of menus and menu
+ * entries.
+ */
+ char_u *
+ get_menu_names(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ static vimmenu_T *menu = NULL;
+***************
+*** 1739,1748 ****
+ /*
+ * Return TRUE if the menu is the tearoff menu.
+ */
+- /*ARGSUSED*/
+ static int
+ menu_is_tearoff(name)
+! char_u *name;
+ {
+ #ifdef FEAT_GUI
+ return (STRCMP(name, TEAR_STRING) == 0);
+--- 1737,1745 ----
+ /*
+ * Return TRUE if the menu is the tearoff menu.
+ */
+ static int
+ menu_is_tearoff(name)
+! char_u *name UNUSED;
+ {
+ #ifdef FEAT_GUI
+ return (STRCMP(name, TEAR_STRING) == 0);
+*** ../vim-7.2.176/src/version.c 2009-05-16 16:36:25.000000000 +0200
+--- src/version.c 2009-05-16 17:22:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 177,
+ /**/
+
+--
+(letter from Mark to Mike, about the film's probable certificate)
+ For an 'A' we would have to: Lose as many shits as possible; Take Jesus
+ Christ out, if possible; Loose "I fart in your general direction"; Lose
+ "the oral sex"; Lose "oh, fuck off"; Lose "We make castanets out of your
+ testicles"
+ "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.178 b/source/ap/vim/patches/7.2.178
new file mode 100644
index 000000000..84fe670f0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.178
@@ -0,0 +1,150 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.178
+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.178
+Problem: Using negative value for device number might not work.
+Solution: Use a separate flag for whether ffv_dev was set.
+Files: src/misc2.c
+
+
+*** ../vim-7.2.177/src/misc2.c 2009-04-29 11:00:09.000000000 +0200
+--- src/misc2.c 2009-05-16 21:05:10.000000000 +0200
+***************
+*** 2841,2847 ****
+ get_key_name(i)
+ int i;
+ {
+! if (i >= KEY_NAMES_TABLE_LEN)
+ return NULL;
+ return key_names_table[i].name;
+ }
+--- 2841,2847 ----
+ get_key_name(i)
+ int i;
+ {
+! if (i >= (int)KEY_NAMES_TABLE_LEN)
+ return NULL;
+ return key_names_table[i].name;
+ }
+***************
+*** 3869,3875 ****
+ * use filename.
+ */
+ #ifdef UNIX
+! int ffv_dev; /* device number (-1 if not set) */
+ ino_t ffv_ino; /* inode number */
+ #endif
+ /* The memory for this struct is allocated according to the length of
+--- 3869,3876 ----
+ * use filename.
+ */
+ #ifdef UNIX
+! int ffv_dev_valid; /* ffv_dev and ffv_ino were set */
+! dev_t ffv_dev; /* device number */
+ ino_t ffv_ino; /* inode number */
+ #endif
+ /* The memory for this struct is allocated according to the length of
+***************
+*** 4059,4071 ****
+ * This function silently ignores a few errors, vim_findfile() will have
+ * limited functionality then.
+ */
+- /*ARGSUSED*/
+ void *
+ vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
+ search_ctx_arg, tagfile, rel_fname)
+ char_u *path;
+ char_u *filename;
+! char_u *stopdirs;
+ int level;
+ int free_visited;
+ int find_what;
+--- 4060,4071 ----
+ * This function silently ignores a few errors, vim_findfile() will have
+ * limited functionality then.
+ */
+ void *
+ vim_findfile_init(path, filename, stopdirs, level, free_visited, find_what,
+ search_ctx_arg, tagfile, rel_fname)
+ char_u *path;
+ char_u *filename;
+! char_u *stopdirs UNUSED;
+ int level;
+ int free_visited;
+ int find_what;
+***************
+*** 5063,5072 ****
+ {
+ if (
+ #ifdef UNIX
+! !url
+! ? (vp->ffv_dev == st.st_dev
+! && vp->ffv_ino == st.st_ino)
+! :
+ #endif
+ fnamecmp(vp->ffv_fname, ff_expand_buffer) == 0
+ )
+--- 5063,5071 ----
+ {
+ if (
+ #ifdef UNIX
+! !url ? (vp->ffv_dev_valid && vp->ffv_dev == st.st_dev
+! && vp->ffv_ino == st.st_ino)
+! :
+ #endif
+ fnamecmp(vp->ffv_fname, ff_expand_buffer) == 0
+ )
+***************
+*** 5091,5104 ****
+ #ifdef UNIX
+ if (!url)
+ {
+ vp->ffv_ino = st.st_ino;
+ vp->ffv_dev = st.st_dev;
+ vp->ffv_fname[0] = NUL;
+ }
+ else
+ {
+! vp->ffv_ino = 0;
+! vp->ffv_dev = -1;
+ #endif
+ STRCPY(vp->ffv_fname, ff_expand_buffer);
+ #ifdef UNIX
+--- 5090,5103 ----
+ #ifdef UNIX
+ if (!url)
+ {
++ vp->ffv_dev_valid = TRUE;
+ vp->ffv_ino = st.st_ino;
+ vp->ffv_dev = st.st_dev;
+ vp->ffv_fname[0] = NUL;
+ }
+ else
+ {
+! vp->ffv_dev_valid = FALSE;
+ #endif
+ STRCPY(vp->ffv_fname, ff_expand_buffer);
+ #ifdef UNIX
+*** ../vim-7.2.177/src/version.c 2009-05-16 17:29:37.000000000 +0200
+--- src/version.c 2009-05-16 21:00:15.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 178,
+ /**/
+
+--
+FATAL ERROR! SYSTEM HALTED! - Press any key to continue doing nothing.
+
+ /// 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.179 b/source/ap/vim/patches/7.2.179
new file mode 100644
index 000000000..97f94ed16
--- /dev/null
+++ b/source/ap/vim/patches/7.2.179
@@ -0,0 +1,100 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.179
+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.179
+Problem: Using negative value for device number might not work.
+Solution: Use a separate flag for whether sn_dev was set.
+Files: src/ex_cmds2.c
+
+
+*** ../vim-7.2.178/src/ex_cmds2.c 2009-05-14 22:19:19.000000000 +0200
+--- src/ex_cmds2.c 2009-05-16 21:13:29.000000000 +0200
+***************
+*** 28,34 ****
+ {
+ char_u *sn_name;
+ # ifdef UNIX
+! int sn_dev;
+ ino_t sn_ino;
+ # endif
+ # ifdef FEAT_PROFILE
+--- 28,35 ----
+ {
+ char_u *sn_name;
+ # ifdef UNIX
+! int sn_dev_valid;
+! dev_t sn_dev;
+ ino_t sn_ino;
+ # endif
+ # ifdef FEAT_PROFILE
+***************
+*** 3049,3055 ****
+ /* Compare dev/ino when possible, it catches symbolic
+ * links. Also compare file names, the inode may change
+ * when the file was edited. */
+! ((stat_ok && si->sn_dev != -1)
+ && (si->sn_dev == st.st_dev
+ && si->sn_ino == st.st_ino)) ||
+ # endif
+--- 3050,3056 ----
+ /* Compare dev/ino when possible, it catches symbolic
+ * links. Also compare file names, the inode may change
+ * when the file was edited. */
+! ((stat_ok && si->sn_dev_valid)
+ && (si->sn_dev == st.st_dev
+ && si->sn_ino == st.st_ino)) ||
+ # endif
+***************
+*** 3076,3086 ****
+ # ifdef UNIX
+ if (stat_ok)
+ {
+ si->sn_dev = st.st_dev;
+ si->sn_ino = st.st_ino;
+ }
+ else
+! si->sn_dev = -1;
+ # endif
+
+ /* Allocate the local script variables to use for this script. */
+--- 3077,3088 ----
+ # ifdef UNIX
+ if (stat_ok)
+ {
++ si->sn_dev_valid = TRUE;
+ si->sn_dev = st.st_dev;
+ si->sn_ino = st.st_ino;
+ }
+ else
+! si->sn_dev_valid = FALSE;
+ # endif
+
+ /* Allocate the local script variables to use for this script. */
+*** ../vim-7.2.178/src/version.c 2009-05-16 21:06:36.000000000 +0200
+--- src/version.c 2009-05-16 21:15:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 179,
+ /**/
+
+--
+(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.180 b/source/ap/vim/patches/7.2.180
new file mode 100644
index 000000000..f3f3a9ed8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.180
@@ -0,0 +1,6520 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.180
+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.180
+Problem: Some more compiler warnings when using gcc -Wextra.
+Solution: Add UNUSED and type casts.
+Files: src/buffer.c, src/ex_cmds.c, src/macros.h, src/main.c,
+ src/menu.c, src/message.c, src/misc1.c, src/mbyte.c,
+ src/normal.c, src/option.c, src/os_unix.c, src/quickfix.c,
+ src/screen.c, src/search.c, src/spell.c, src/syntax.c, src/tag.c,
+ src/term.c, src/ui.c
+
+
+*** ../vim-7.2.179/src/buffer.c 2009-05-14 22:19:19.000000000 +0200
+--- src/buffer.c 2009-05-16 22:21:41.000000000 +0200
+***************
+*** 2025,2037 ****
+ * Return fnum of the found buffer.
+ * Return < 0 for error.
+ */
+- /*ARGSUSED*/
+ int
+ buflist_findpat(pattern, pattern_end, unlisted, diffmode)
+ char_u *pattern;
+ char_u *pattern_end; /* pointer to first char after pattern */
+ int unlisted; /* find unlisted buffers */
+! int diffmode; /* find diff-mode buffers only */
+ {
+ buf_T *buf;
+ regprog_T *prog;
+--- 2025,2036 ----
+ * Return fnum of the found buffer.
+ * Return < 0 for error.
+ */
+ int
+ buflist_findpat(pattern, pattern_end, unlisted, diffmode)
+ char_u *pattern;
+ char_u *pattern_end; /* pointer to first char after pattern */
+ int unlisted; /* find unlisted buffers */
+! int diffmode UNUSED; /* find diff-mode buffers only */
+ {
+ buf_T *buf;
+ regprog_T *prog;
+***************
+*** 2539,2545 ****
+ /*
+ * List all know file names (for :files and :buffers command).
+ */
+- /*ARGSUSED*/
+ void
+ buflist_list(eap)
+ exarg_T *eap;
+--- 2538,2543 ----
+***************
+*** 3346,3359 ****
+ * If maxwidth is not zero, the string will be filled at any middle marker
+ * or truncated if too long, fillchar is used for all whitespace.
+ */
+- /*ARGSUSED*/
+ int
+ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
+ win_T *wp;
+ char_u *out; /* buffer to write into != NameBuff */
+ size_t outlen; /* length of out[] */
+ char_u *fmt;
+! int use_sandbox; /* "fmt" was set insecurely, use sandbox */
+ int fillchar;
+ int maxwidth;
+ struct stl_hlrec *hltab; /* return: HL attributes (can be NULL) */
+--- 3344,3356 ----
+ * If maxwidth is not zero, the string will be filled at any middle marker
+ * or truncated if too long, fillchar is used for all whitespace.
+ */
+ int
+ build_stl_str_hl(wp, out, outlen, fmt, use_sandbox, fillchar, maxwidth, hltab, tabtab)
+ win_T *wp;
+ char_u *out; /* buffer to write into != NameBuff */
+ size_t outlen; /* length of out[] */
+ char_u *fmt;
+! int use_sandbox UNUSED; /* "fmt" was set insecurely, use sandbox */
+ int fillchar;
+ int maxwidth;
+ struct stl_hlrec *hltab; /* return: HL attributes (can be NULL) */
+*** ../vim-7.2.179/src/ex_cmds.c 2009-05-16 16:36:25.000000000 +0200
+--- src/ex_cmds.c 2009-05-16 22:22:46.000000000 +0200
+***************
+*** 2255,2266 ****
+ *
+ * Return the string in allocated memory (NULL when out of memory).
+ */
+- /*ARGSUSED*/
+ char_u *
+ viminfo_readstring(virp, off, convert)
+ vir_T *virp;
+ int off; /* offset for virp->vir_line */
+! int convert; /* convert the string */
+ {
+ char_u *retval;
+ char_u *s, *d;
+--- 2255,2265 ----
+ *
+ * Return the string in allocated memory (NULL when out of memory).
+ */
+ char_u *
+ viminfo_readstring(virp, off, convert)
+ vir_T *virp;
+ int off; /* offset for virp->vir_line */
+! int convert UNUSED; /* convert the string */
+ {
+ char_u *retval;
+ char_u *s, *d;
+***************
+*** 2736,2742 ****
+ * May set eap->forceit if a dialog says it's OK to overwrite.
+ * Return OK if it's OK, FAIL if it is not.
+ */
+- /*ARGSUSED*/
+ static int
+ check_overwrite(eap, buf, fname, ffname, other)
+ exarg_T *eap;
+--- 2735,2740 ----
+*** ../vim-7.2.179/src/macros.h 2009-02-21 20:27:00.000000000 +0100
+--- src/macros.h 2009-05-16 21:52:56.000000000 +0200
+***************
+*** 284,290 ****
+ # define mb_cptr2len(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p))
+
+ # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++
+! # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : STRLEN(p))
+ # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p))
+ #else
+ # define mb_ptr_adv(p) ++p
+--- 284,290 ----
+ # define mb_cptr2len(p) (enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p))
+
+ # define MB_COPY_CHAR(f, t) if (has_mbyte) mb_copy_char(&f, &t); else *t++ = *f++
+! # define MB_CHARLEN(p) (has_mbyte ? mb_charlen(p) : (int)STRLEN(p))
+ # define PTR2CHAR(p) (has_mbyte ? mb_ptr2char(p) : (int)*(p))
+ #else
+ # define mb_ptr_adv(p) ++p
+*** ../vim-7.2.179/src/main.c 2008-11-28 21:26:50.000000000 +0100
+--- src/main.c 2009-05-16 22:25:59.000000000 +0200
+***************
+*** 1505,1514 ****
+ *
+ * Also find the --server... arguments and --socketid and --windowid
+ */
+- /*ARGSUSED*/
+ static void
+ early_arg_scan(parmp)
+! mparm_T *parmp;
+ {
+ #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
+ || !defined(FEAT_NETBEANS_INTG)
+--- 1505,1513 ----
+ *
+ * Also find the --server... arguments and --socketid and --windowid
+ */
+ static void
+ early_arg_scan(parmp)
+! mparm_T *parmp UNUSED;
+ {
+ #if defined(FEAT_XCLIPBOARD) || defined(FEAT_CLIENTSERVER) \
+ || !defined(FEAT_NETBEANS_INTG)
+***************
+*** 2380,2389 ****
+ * Create the requested number of windows and edit buffers in them.
+ * Also does recovery if "recoverymode" set.
+ */
+- /*ARGSUSED*/
+ static void
+ create_windows(parmp)
+! mparm_T *parmp;
+ {
+ #ifdef FEAT_WINDOWS
+ int dorewind;
+--- 2379,2387 ----
+ * Create the requested number of windows and edit buffers in them.
+ * Also does recovery if "recoverymode" set.
+ */
+ static void
+ create_windows(parmp)
+! mparm_T *parmp UNUSED;
+ {
+ #ifdef FEAT_WINDOWS
+ int dorewind;
+***************
+*** 3851,3860 ****
+ * return an allocated string. Otherwise return "data".
+ * "*tofree" is set to the result when it needs to be freed later.
+ */
+- /*ARGSUSED*/
+ char_u *
+ serverConvert(client_enc, data, tofree)
+! char_u *client_enc;
+ char_u *data;
+ char_u **tofree;
+ {
+--- 3849,3857 ----
+ * return an allocated string. Otherwise return "data".
+ * "*tofree" is set to the result when it needs to be freed later.
+ */
+ char_u *
+ serverConvert(client_enc, data, tofree)
+! char_u *client_enc UNUSED;
+ char_u *data;
+ char_u **tofree;
+ {
+*** ../vim-7.2.179/src/menu.c 2009-05-16 17:29:37.000000000 +0200
+--- src/menu.c 2009-05-16 22:29:31.000000000 +0200
+***************
+*** 2340,2349 ****
+ * This function is also defined without the +multi_lang feature, in which
+ * case the commands are ignored.
+ */
+- /*ARGSUSED*/
+ void
+ ex_menutranslate(eap)
+! exarg_T *eap;
+ {
+ #ifdef FEAT_MULTI_LANG
+ char_u *arg = eap->arg;
+--- 2340,2348 ----
+ * This function is also defined without the +multi_lang feature, in which
+ * case the commands are ignored.
+ */
+ void
+ ex_menutranslate(eap)
+! exarg_T *eap UNUSED;
+ {
+ #ifdef FEAT_MULTI_LANG
+ char_u *arg = eap->arg;
+*** ../vim-7.2.179/src/message.c 2009-04-22 14:42:26.000000000 +0200
+--- src/message.c 2009-05-16 22:30:47.000000000 +0200
+***************
+*** 818,827 ****
+ /*
+ * ":messages" command.
+ */
+- /*ARGSUSED*/
+ void
+ ex_messages(eap)
+! exarg_T *eap;
+ {
+ struct msg_hist *p;
+ char_u *s;
+--- 818,826 ----
+ /*
+ * ":messages" command.
+ */
+ void
+ ex_messages(eap)
+! exarg_T *eap UNUSED;
+ {
+ struct msg_hist *p;
+ char_u *s;
+***************
+*** 3290,3304 ****
+ * A '&' in a button name becomes a shortcut, so each '&' should be before a
+ * different letter.
+ */
+- /* ARGSUSED */
+ int
+ do_dialog(type, title, message, buttons, dfltbutton, textfield)
+! int type;
+! char_u *title;
+ char_u *message;
+ char_u *buttons;
+ int dfltbutton;
+! char_u *textfield; /* IObuff for inputdialog(), NULL otherwise */
+ {
+ int oldState;
+ int retval = 0;
+--- 3289,3303 ----
+ * A '&' in a button name becomes a shortcut, so each '&' should be before a
+ * different letter.
+ */
+ int
+ do_dialog(type, title, message, buttons, dfltbutton, textfield)
+! int type UNUSED;
+! char_u *title UNUSED;
+ char_u *message;
+ char_u *buttons;
+ int dfltbutton;
+! char_u *textfield UNUSED; /* IObuff for inputdialog(), NULL
+! otherwise */
+ {
+ int oldState;
+ int retval = 0;
+***************
+*** 4021,4027 ****
+ if (*p != '%')
+ {
+ char *q = strchr(p + 1, '%');
+! size_t n = (q == NULL) ? STRLEN(p) : (q - p);
+
+ /* Copy up to the next '%' or NUL without any changes. */
+ if (str_l < str_m)
+--- 4020,4026 ----
+ if (*p != '%')
+ {
+ char *q = strchr(p + 1, '%');
+! size_t n = (q == NULL) ? STRLEN(p) : (size_t)(q - p);
+
+ /* Copy up to the next '%' or NUL without any changes. */
+ if (str_l < str_m)
+***************
+*** 4268,4274 ****
+ precision <= (size_t)0x7fffffffL ? precision
+ : (size_t)0x7fffffffL);
+ #endif
+! str_arg_l = (q == NULL) ? precision : q - str_arg;
+ }
+ break;
+
+--- 4267,4274 ----
+ precision <= (size_t)0x7fffffffL ? precision
+ : (size_t)0x7fffffffL);
+ #endif
+! str_arg_l = (q == NULL) ? precision
+! : (size_t)(q - str_arg);
+ }
+ break;
+
+***************
+*** 4368,4374 ****
+ get_a_arg(arg_idx);
+ #else
+ # if defined(FEAT_EVAL)
+! tvs != NULL ? tv_nr(tvs, &arg_idx) :
+ # endif
+ va_arg(ap, unsigned int);
+ #endif
+--- 4368,4375 ----
+ get_a_arg(arg_idx);
+ #else
+ # if defined(FEAT_EVAL)
+! tvs != NULL ? (unsigned)
+! tv_nr(tvs, &arg_idx) :
+ # endif
+ va_arg(ap, unsigned int);
+ #endif
+***************
+*** 4381,4387 ****
+ get_a_arg(arg_idx);
+ #else
+ # if defined(FEAT_EVAL)
+! tvs != NULL ? tv_nr(tvs, &arg_idx) :
+ # endif
+ va_arg(ap, unsigned long int);
+ #endif
+--- 4382,4389 ----
+ get_a_arg(arg_idx);
+ #else
+ # if defined(FEAT_EVAL)
+! tvs != NULL ? (unsigned long)
+! tv_nr(tvs, &arg_idx) :
+ # endif
+ va_arg(ap, unsigned long int);
+ #endif
+***************
+*** 4704,4710 ****
+ size_t avail = str_m - str_l;
+
+ vim_memset(str + str_l, zero_padding ? '0' : ' ',
+! (size_t)pn > avail ? avail : pn);
+ }
+ str_l += pn;
+ }
+--- 4706,4713 ----
+ size_t avail = str_m - str_l;
+
+ vim_memset(str + str_l, zero_padding ? '0' : ' ',
+! (size_t)pn > avail ? avail
+! : (size_t)pn);
+ }
+ str_l += pn;
+ }
+***************
+*** 4731,4737 ****
+ size_t avail = str_m - str_l;
+
+ mch_memmove(str + str_l, str_arg,
+! (size_t)zn > avail ? avail : zn);
+ }
+ str_l += zn;
+ }
+--- 4734,4741 ----
+ size_t avail = str_m - str_l;
+
+ mch_memmove(str + str_l, str_arg,
+! (size_t)zn > avail ? avail
+! : (size_t)zn);
+ }
+ str_l += zn;
+ }
+***************
+*** 4746,4752 ****
+ size_t avail = str_m-str_l;
+
+ vim_memset(str + str_l, '0',
+! (size_t)zn > avail ? avail : zn);
+ }
+ str_l += zn;
+ }
+--- 4750,4757 ----
+ size_t avail = str_m-str_l;
+
+ vim_memset(str + str_l, '0',
+! (size_t)zn > avail ? avail
+! : (size_t)zn);
+ }
+ str_l += zn;
+ }
+***************
+*** 4765,4771 ****
+
+ mch_memmove(str + str_l,
+ str_arg + zero_padding_insertion_ind,
+! (size_t)sn > avail ? avail : sn);
+ }
+ str_l += sn;
+ }
+--- 4770,4776 ----
+
+ mch_memmove(str + str_l,
+ str_arg + zero_padding_insertion_ind,
+! (size_t)sn > avail ? avail : (size_t)sn);
+ }
+ str_l += sn;
+ }
+***************
+*** 4785,4791 ****
+ size_t avail = str_m - str_l;
+
+ vim_memset(str + str_l, ' ',
+! (size_t)pn > avail ? avail : pn);
+ }
+ str_l += pn;
+ }
+--- 4790,4797 ----
+ size_t avail = str_m - str_l;
+
+ vim_memset(str + str_l, ' ',
+! (size_t)pn > avail ? avail
+! : (size_t)pn);
+ }
+ str_l += pn;
+ }
+*** ../vim-7.2.179/src/misc1.c 2009-05-15 21:31:11.000000000 +0200
+--- src/misc1.c 2009-05-16 21:25:34.000000000 +0200
+***************
+*** 4147,4156 ****
+ /*
+ * Function given to ExpandGeneric() to obtain an environment variable name.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_env_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ # if defined(AMIGA) || defined(__MRC__) || defined(__SC__)
+--- 4147,4155 ----
+ /*
+ * Function given to ExpandGeneric() to obtain an environment variable name.
+ */
+ char_u *
+ get_env_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ # if defined(AMIGA) || defined(__MRC__) || defined(__SC__)
+***************
+*** 4742,4750 ****
+ * If it is then restrict the search to below this line and try again.
+ */
+ line = ml_get(pos->lnum);
+! for (p = line; *p && (unsigned)(p - line) < pos->col; ++p)
+ p = skip_string(p);
+! if ((unsigned)(p - line) <= pos->col)
+ break;
+ cur_maxcomment = curwin->w_cursor.lnum - pos->lnum - 1;
+ if (cur_maxcomment <= 0)
+--- 4741,4749 ----
+ * If it is then restrict the search to below this line and try again.
+ */
+ line = ml_get(pos->lnum);
+! for (p = line; *p && (colnr_T)(p - line) < pos->col; ++p)
+ p = skip_string(p);
+! if ((colnr_T)(p - line) <= pos->col)
+ break;
+ cur_maxcomment = curwin->w_cursor.lnum - pos->lnum - 1;
+ if (cur_maxcomment <= 0)
+***************
+*** 6275,6281 ****
+ * check for that.
+ */
+ if ((State & INSERT)
+! && curwin->w_cursor.col < STRLEN(linecopy)
+ && linecopy[curwin->w_cursor.col] == ')')
+ linecopy[curwin->w_cursor.col] = NUL;
+
+--- 6274,6280 ----
+ * check for that.
+ */
+ if ((State & INSERT)
+! && curwin->w_cursor.col < (colnr_T)STRLEN(linecopy)
+ && linecopy[curwin->w_cursor.col] == ')')
+ linecopy[curwin->w_cursor.col] = NUL;
+
+*** ../vim-7.2.179/src/mbyte.c 2008-11-28 21:26:50.000000000 +0100
+--- src/mbyte.c 2009-05-16 22:29:02.000000000 +0200
+***************
+*** 1015,1024 ****
+ * Return length in bytes of character "c".
+ * Returns 1 for a single-byte character.
+ */
+- /* ARGSUSED */
+ int
+ latin_char2len(c)
+! int c;
+ {
+ return 1;
+ }
+--- 1015,1023 ----
+ * Return length in bytes of character "c".
+ * Returns 1 for a single-byte character.
+ */
+ int
+ latin_char2len(c)
+! int c UNUSED;
+ {
+ return 1;
+ }
+***************
+*** 1248,1257 ****
+ * Return the number of display cells character at "*p" occupies.
+ * This doesn't take care of unprintable characters, use ptr2cells() for that.
+ */
+- /*ARGSUSED*/
+ int
+ latin_ptr2cells(p)
+! char_u *p;
+ {
+ return 1;
+ }
+--- 1247,1255 ----
+ * Return the number of display cells character at "*p" occupies.
+ * This doesn't take care of unprintable characters, use ptr2cells() for that.
+ */
+ int
+ latin_ptr2cells(p)
+! char_u *p UNUSED;
+ {
+ return 1;
+ }
+***************
+*** 1293,1302 ****
+ * Return the number of display cells character "c" occupies.
+ * Only takes care of multi-byte chars, not "^C" and such.
+ */
+- /*ARGSUSED*/
+ int
+ latin_char2cells(c)
+! int c;
+ {
+ return 1;
+ }
+--- 1291,1299 ----
+ * Return the number of display cells character "c" occupies.
+ * Only takes care of multi-byte chars, not "^C" and such.
+ */
+ int
+ latin_char2cells(c)
+! int c UNUSED;
+ {
+ return 1;
+ }
+***************
+*** 1318,1328 ****
+ * Return number of display cells for char at ScreenLines[off].
+ * We make sure that the offset used is less than "max_off".
+ */
+- /*ARGSUSED*/
+ int
+ latin_off2cells(off, max_off)
+! unsigned off;
+! unsigned max_off;
+ {
+ return 1;
+ }
+--- 1315,1324 ----
+ * Return number of display cells for char at ScreenLines[off].
+ * We make sure that the offset used is less than "max_off".
+ */
+ int
+ latin_off2cells(off, max_off)
+! unsigned off UNUSED;
+! unsigned max_off UNUSED;
+ {
+ return 1;
+ }
+***************
+*** 2419,2429 ****
+ * Return offset from "p" to the first byte of the character it points into.
+ * Returns 0 when already at the first byte of a character.
+ */
+- /*ARGSUSED*/
+ int
+ latin_head_off(base, p)
+! char_u *base;
+! char_u *p;
+ {
+ return 0;
+ }
+--- 2415,2424 ----
+ * Return offset from "p" to the first byte of the character it points into.
+ * Returns 0 when already at the first byte of a character.
+ */
+ int
+ latin_head_off(base, p)
+! char_u *base UNUSED;
+! char_u *p UNUSED;
+ {
+ return 0;
+ }
+***************
+*** 3131,3137 ****
+ else
+ s = p + 1;
+ }
+! for (i = 0; s[i] != NUL && i < sizeof(buf) - 1; ++i)
+ {
+ if (s[i] == '_' || s[i] == '-')
+ buf[i] = '-';
+--- 3126,3132 ----
+ else
+ s = p + 1;
+ }
+! for (i = 0; s[i] != NUL && i < (int)sizeof(buf) - 1; ++i)
+ {
+ if (s[i] == '_' || s[i] == '-')
+ buf[i] = '-';
+***************
+*** 3582,3590 ****
+ * Callback invoked when the user finished preediting.
+ * Put the final string into the input buffer.
+ */
+- /*ARGSUSED0*/
+ static void
+! im_commit_cb(GtkIMContext *context, const gchar *str, gpointer data)
+ {
+ int slen = (int)STRLEN(str);
+ int add_to_input = TRUE;
+--- 3577,3586 ----
+ * Callback invoked when the user finished preediting.
+ * Put the final string into the input buffer.
+ */
+ static void
+! im_commit_cb(GtkIMContext *context UNUSED,
+! const gchar *str,
+! gpointer data UNUSED)
+ {
+ int slen = (int)STRLEN(str);
+ int add_to_input = TRUE;
+***************
+*** 3670,3678 ****
+ /*
+ * Callback invoked after start to the preedit.
+ */
+- /*ARGSUSED*/
+ static void
+! im_preedit_start_cb(GtkIMContext *context, gpointer data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("im_preedit_start_cb()\n");
+--- 3666,3673 ----
+ /*
+ * Callback invoked after start to the preedit.
+ */
+ static void
+! im_preedit_start_cb(GtkIMContext *context UNUSED, gpointer data UNUSED)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("im_preedit_start_cb()\n");
+***************
+*** 3687,3695 ****
+ /*
+ * Callback invoked after end to the preedit.
+ */
+- /*ARGSUSED*/
+ static void
+! im_preedit_end_cb(GtkIMContext *context, gpointer data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("im_preedit_end_cb()\n");
+--- 3682,3689 ----
+ /*
+ * Callback invoked after end to the preedit.
+ */
+ static void
+! im_preedit_end_cb(GtkIMContext *context UNUSED, gpointer data UNUSED)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("im_preedit_end_cb()\n");
+***************
+*** 3748,3756 ****
+ * remaining input from within the "retrieve_surrounding" signal handler, this
+ * might not be necessary. Gotta ask on vim-dev for opinions.
+ */
+- /*ARGSUSED1*/
+ static void
+! im_preedit_changed_cb(GtkIMContext *context, gpointer data)
+ {
+ char *preedit_string = NULL;
+ int cursor_index = 0;
+--- 3742,3749 ----
+ * remaining input from within the "retrieve_surrounding" signal handler, this
+ * might not be necessary. Gotta ask on vim-dev for opinions.
+ */
+ static void
+! im_preedit_changed_cb(GtkIMContext *context, gpointer data UNUSED)
+ {
+ char *preedit_string = NULL;
+ int cursor_index = 0;
+***************
+*** 4616,4626 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ void
+ im_set_position(row, col)
+! int row;
+! int col;
+ {
+ xim_set_preedit();
+ }
+--- 4609,4618 ----
+ }
+ }
+
+ void
+ im_set_position(row, col)
+! int row UNUSED;
+! int col UNUSED;
+ {
+ xim_set_preedit();
+ }
+***************
+*** 4927,4938 ****
+ static void xim_instantiate_cb __ARGS((Display *display, XPointer client_data, XPointer call_data));
+ static void xim_destroy_cb __ARGS((XIM im, XPointer client_data, XPointer call_data));
+
+- /*ARGSUSED*/
+ static void
+ xim_instantiate_cb(display, client_data, call_data)
+ Display *display;
+! XPointer client_data;
+! XPointer call_data;
+ {
+ Window x11_window;
+ Display *x11_display;
+--- 4919,4929 ----
+ static void xim_instantiate_cb __ARGS((Display *display, XPointer client_data, XPointer call_data));
+ static void xim_destroy_cb __ARGS((XIM im, XPointer client_data, XPointer call_data));
+
+ static void
+ xim_instantiate_cb(display, client_data, call_data)
+ Display *display;
+! XPointer client_data UNUSED;
+! XPointer call_data UNUSED;
+ {
+ Window x11_window;
+ Display *x11_display;
+***************
+*** 4952,4963 ****
+ xim_instantiate_cb, NULL);
+ }
+
+- /*ARGSUSED*/
+ static void
+ xim_destroy_cb(im, client_data, call_data)
+! XIM im;
+! XPointer client_data;
+! XPointer call_data;
+ {
+ Window x11_window;
+ Display *x11_display;
+--- 4943,4953 ----
+ xim_instantiate_cb, NULL);
+ }
+
+ static void
+ xim_destroy_cb(im, client_data, call_data)
+! XIM im UNUSED;
+! XPointer client_data UNUSED;
+! XPointer call_data UNUSED;
+ {
+ Window x11_window;
+ Display *x11_display;
+***************
+*** 5276,5284 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+! preedit_start_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("xim_decide_input_style()\n");
+--- 5266,5275 ----
+ }
+ }
+
+ static void
+! preedit_start_cbproc(XIC thexic UNUSED,
+! XPointer client_data UNUSED,
+! XPointer call_data UNUSED)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("xim_decide_input_style()\n");
+***************
+*** 5310,5318 ****
+ static GSList *key_press_event_queue = NULL;
+ static gboolean processing_queued_event = FALSE;
+
+- /*ARGSUSED*/
+ static void
+! preedit_draw_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ XIMPreeditDrawCallbackStruct *draw_data;
+ XIMText *text;
+--- 5301,5310 ----
+ static GSList *key_press_event_queue = NULL;
+ static gboolean processing_queued_event = FALSE;
+
+ static void
+! preedit_draw_cbproc(XIC thexic UNUSED,
+! XPointer client_data UNUSED,
+! XPointer call_data)
+ {
+ XIMPreeditDrawCallbackStruct *draw_data;
+ XIMText *text;
+***************
+*** 5451,5468 ****
+ return -1;
+ }
+
+- /*ARGSUSED*/
+ static void
+! preedit_caret_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_caret_cbproc()\n");
+ #endif
+ }
+
+- /*ARGSUSED*/
+ static void
+! preedit_done_cbproc(XIC thexic, XPointer client_data, XPointer call_data)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_done_cbproc()\n");
+--- 5443,5462 ----
+ return -1;
+ }
+
+ static void
+! preedit_caret_cbproc(XIC thexic UNUSED,
+! XPointer client_data UNUSED,
+! XPointer call_data UNUSED)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_caret_cbproc()\n");
+ #endif
+ }
+
+ static void
+! preedit_done_cbproc(XIC thexic UNUSED,
+! XPointer client_data UNUSED,
+! XPointer call_data UNUSED)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("preedit_done_cbproc()\n");
+***************
+*** 5501,5509 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ int
+! xim_queue_key_press_event(GdkEventKey *event, int down)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("xim_queue_key_press_event()\n");
+--- 5495,5502 ----
+ }
+ }
+
+ int
+! xim_queue_key_press_event(GdkEventKey *event, int down UNUSED)
+ {
+ #ifdef XIM_DEBUG
+ xim_log("xim_queue_key_press_event()\n");
+***************
+*** 5519,5527 ****
+ return TRUE;
+ }
+
+- /*ARGSUSED*/
+ static void
+! preedit_callback_setup(GdkIC *ic)
+ {
+ XIC xxic;
+ XVaNestedList preedit_attr;
+--- 5512,5519 ----
+ return TRUE;
+ }
+
+ static void
+! preedit_callback_setup(GdkIC *ic UNUSED)
+ {
+ XIC xxic;
+ XVaNestedList preedit_attr;
+***************
+*** 5546,5554 ****
+ XFree(preedit_attr);
+ }
+
+- /*ARGSUSED*/
+ static void
+! reset_state_setup(GdkIC *ic)
+ {
+ #ifdef USE_X11R6_XIM
+ /* don't change the input context when we call reset */
+--- 5538,5545 ----
+ XFree(preedit_attr);
+ }
+
+ static void
+! reset_state_setup(GdkIC *ic UNUSED)
+ {
+ #ifdef USE_X11R6_XIM
+ /* don't change the input context when we call reset */
+*** ../vim-7.2.179/src/normal.c 2009-05-15 21:31:11.000000000 +0200
+--- src/normal.c 2009-05-16 22:31:10.000000000 +0200
+***************
+*** 9243,9252 ****
+ }
+
+ #ifdef FEAT_SNIFF
+- /*ARGSUSED*/
+ static void
+ nv_sniff(cap)
+! cmdarg_T *cap;
+ {
+ ProcessSniffRequests();
+ }
+--- 9243,9251 ----
+ }
+
+ #ifdef FEAT_SNIFF
+ static void
+ nv_sniff(cap)
+! cmdarg_T *cap UNUSED;
+ {
+ ProcessSniffRequests();
+ }
+***************
+*** 9262,9271 ****
+ #endif
+
+ #ifdef FEAT_DND
+- /*ARGSUSED*/
+ static void
+ nv_drop(cap)
+! cmdarg_T *cap;
+ {
+ do_put('~', BACKWARD, 1L, PUT_CURSEND);
+ }
+--- 9261,9269 ----
+ #endif
+
+ #ifdef FEAT_DND
+ static void
+ nv_drop(cap)
+! cmdarg_T *cap UNUSED;
+ {
+ do_put('~', BACKWARD, 1L, PUT_CURSEND);
+ }
+***************
+*** 9277,9283 ****
+ * When waiting for a character for 'updatetime' K_CURSORHOLD is put in the
+ * input buffer. "did_cursorhold" is set to avoid retriggering.
+ */
+- /*ARGSUSED*/
+ static void
+ nv_cursorhold(cap)
+ cmdarg_T *cap;
+--- 9275,9280 ----
+*** ../vim-7.2.179/src/option.c 2009-05-15 21:31:11.000000000 +0200
+--- src/option.c 2009-05-17 12:13:52.000000000 +0200
+***************
+*** 387,392 ****
+--- 387,395 ----
+ char_u *def_val[2]; /* default values for variable (vi and vim) */
+ #ifdef FEAT_EVAL
+ scid_T scriptID; /* script in which the option was last set */
++ # define SCRIPTID_INIT , 0
++ #else
++ # define SCRIPTID_INIT
+ #endif
+ };
+
+***************
+*** 477,483 ****
+ #else
+ (char_u *)224L,
+ #endif
+! (char_u *)0L}},
+ {"antialias", "anti", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
+ #if defined(FEAT_GUI) && defined(MACOS_X)
+ (char_u *)&p_antialias, PV_NONE,
+--- 480,486 ----
+ #else
+ (char_u *)224L,
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"antialias", "anti", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
+ #if defined(FEAT_GUI) && defined(MACOS_X)
+ (char_u *)&p_antialias, PV_NONE,
+***************
+*** 486,520 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)FALSE, (char_u *)FALSE}
+ #endif
+! },
+ {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_ARABIC
+ (char_u *)VAR_WIN, PV_ARAB,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"arabicshape", "arshape", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
+ #ifdef FEAT_ARABIC
+ (char_u *)&p_arshape, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"allowrevins", "ari", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_ari, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"altkeymap", "akm", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_FKMAP
+ (char_u *)&p_altkeymap, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"ambiwidth", "ambw", P_STRING|P_VI_DEF|P_RCLR,
+ #if defined(FEAT_MBYTE)
+ (char_u *)&p_ambw, PV_NONE,
+--- 489,523 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)FALSE, (char_u *)FALSE}
+ #endif
+! SCRIPTID_INIT},
+ {"arabic", "arab", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_ARABIC
+ (char_u *)VAR_WIN, PV_ARAB,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"arabicshape", "arshape", P_BOOL|P_VI_DEF|P_VIM|P_RCLR,
+ #ifdef FEAT_ARABIC
+ (char_u *)&p_arshape, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"allowrevins", "ari", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_ari, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"altkeymap", "akm", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_FKMAP
+ (char_u *)&p_altkeymap, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"ambiwidth", "ambw", P_STRING|P_VI_DEF|P_RCLR,
+ #if defined(FEAT_MBYTE)
+ (char_u *)&p_ambw, PV_NONE,
+***************
+*** 523,549 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ #ifdef FEAT_AUTOCHDIR
+ {"autochdir", "acd", P_BOOL|P_VI_DEF,
+ (char_u *)&p_acd, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ #endif
+ {"autoindent", "ai", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ai, PV_AI,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"autoprint", "ap", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"autoread", "ar", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ar, PV_AR,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"autowrite", "aw", P_BOOL|P_VI_DEF,
+ (char_u *)&p_aw, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"autowriteall","awa", P_BOOL|P_VI_DEF,
+ (char_u *)&p_awa, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"background", "bg", P_STRING|P_VI_DEF|P_RCLR,
+ (char_u *)&p_bg, PV_NONE,
+ {
+--- 526,552 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ #ifdef FEAT_AUTOCHDIR
+ {"autochdir", "acd", P_BOOL|P_VI_DEF,
+ (char_u *)&p_acd, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ #endif
+ {"autoindent", "ai", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ai, PV_AI,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"autoprint", "ap", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"autoread", "ar", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ar, PV_AR,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"autowrite", "aw", P_BOOL|P_VI_DEF,
+ (char_u *)&p_aw, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"autowriteall","awa", P_BOOL|P_VI_DEF,
+ (char_u *)&p_awa, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"background", "bg", P_STRING|P_VI_DEF|P_RCLR,
+ (char_u *)&p_bg, PV_NONE,
+ {
+***************
+*** 552,564 ****
+ #else
+ (char_u *)"light",
+ #endif
+! (char_u *)0L}},
+ {"backspace", "bs", P_STRING|P_VI_DEF|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_bs, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"backup", "bk", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_bk, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"backupcopy", "bkc", P_STRING|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_bkc, PV_NONE,
+ #ifdef UNIX
+--- 555,567 ----
+ #else
+ (char_u *)"light",
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"backspace", "bs", P_STRING|P_VI_DEF|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_bs, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"backup", "bk", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_bk, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"backupcopy", "bkc", P_STRING|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_bkc, PV_NONE,
+ #ifdef UNIX
+***************
+*** 566,575 ****
+ #else
+ {(char_u *)"auto", (char_u *)"auto"}
+ #endif
+! },
+ {"backupdir", "bdir", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP|P_SECURE,
+ (char_u *)&p_bdir, PV_NONE,
+! {(char_u *)DFLT_BDIR, (char_u *)0L}},
+ {"backupext", "bex", P_STRING|P_VI_DEF|P_NFNAME,
+ (char_u *)&p_bex, PV_NONE,
+ {
+--- 569,578 ----
+ #else
+ {(char_u *)"auto", (char_u *)"auto"}
+ #endif
+! SCRIPTID_INIT},
+ {"backupdir", "bdir", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP|P_SECURE,
+ (char_u *)&p_bdir, PV_NONE,
+! {(char_u *)DFLT_BDIR, (char_u *)0L} SCRIPTID_INIT},
+ {"backupext", "bex", P_STRING|P_VI_DEF|P_NFNAME,
+ (char_u *)&p_bex, PV_NONE,
+ {
+***************
+*** 578,584 ****
+ #else
+ (char_u *)"~",
+ #endif
+! (char_u *)0L}},
+ {"backupskip", "bsk", P_STRING|P_VI_DEF|P_COMMA,
+ #ifdef FEAT_WILDIGN
+ (char_u *)&p_bsk, PV_NONE,
+--- 581,587 ----
+ #else
+ (char_u *)"~",
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"backupskip", "bsk", P_STRING|P_VI_DEF|P_COMMA,
+ #ifdef FEAT_WILDIGN
+ (char_u *)&p_bsk, PV_NONE,
+***************
+*** 587,626 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ #ifdef FEAT_BEVAL
+ {"balloondelay","bdlay",P_NUM|P_VI_DEF,
+ (char_u *)&p_bdlay, PV_NONE,
+! {(char_u *)600L, (char_u *)0L}},
+ {"ballooneval", "beval",P_BOOL|P_VI_DEF|P_NO_MKRC,
+ (char_u *)&p_beval, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ # ifdef FEAT_EVAL
+ {"balloonexpr", "bexpr", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
+ (char_u *)&p_bexpr, PV_BEXPR,
+! {(char_u *)"", (char_u *)0L}},
+ # endif
+ #endif
+ {"beautify", "bf", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"binary", "bin", P_BOOL|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_bin, PV_BIN,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"bioskey", "biosk",P_BOOL|P_VI_DEF,
+ #ifdef MSDOS
+ (char_u *)&p_biosk, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"bomb", NULL, P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_bomb, PV_BOMB,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"breakat", "brk", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)&p_breakat, PV_NONE,
+--- 590,629 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ #ifdef FEAT_BEVAL
+ {"balloondelay","bdlay",P_NUM|P_VI_DEF,
+ (char_u *)&p_bdlay, PV_NONE,
+! {(char_u *)600L, (char_u *)0L} SCRIPTID_INIT},
+ {"ballooneval", "beval",P_BOOL|P_VI_DEF|P_NO_MKRC,
+ (char_u *)&p_beval, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ # ifdef FEAT_EVAL
+ {"balloonexpr", "bexpr", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
+ (char_u *)&p_bexpr, PV_BEXPR,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ # endif
+ #endif
+ {"beautify", "bf", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"binary", "bin", P_BOOL|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_bin, PV_BIN,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"bioskey", "biosk",P_BOOL|P_VI_DEF,
+ #ifdef MSDOS
+ (char_u *)&p_biosk, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"bomb", NULL, P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_bomb, PV_BOMB,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"breakat", "brk", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)&p_breakat, PV_NONE,
+***************
+*** 629,635 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"browsedir", "bsdir",P_STRING|P_VI_DEF,
+ #ifdef FEAT_BROWSE
+ (char_u *)&p_bsdir, PV_NONE,
+--- 632,638 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"browsedir", "bsdir",P_STRING|P_VI_DEF,
+ #ifdef FEAT_BROWSE
+ (char_u *)&p_bsdir, PV_NONE,
+***************
+*** 638,644 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"bufhidden", "bh", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB,
+ #if defined(FEAT_QUICKFIX)
+ (char_u *)&p_bh, PV_BH,
+--- 641,647 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"bufhidden", "bh", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB,
+ #if defined(FEAT_QUICKFIX)
+ (char_u *)&p_bh, PV_BH,
+***************
+*** 647,657 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"buflisted", "bl", P_BOOL|P_VI_DEF|P_NOGLOB,
+ (char_u *)&p_bl, PV_BL,
+ {(char_u *)1L, (char_u *)0L}
+! },
+ {"buftype", "bt", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB,
+ #if defined(FEAT_QUICKFIX)
+ (char_u *)&p_bt, PV_BT,
+--- 650,660 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"buflisted", "bl", P_BOOL|P_VI_DEF|P_NOGLOB,
+ (char_u *)&p_bl, PV_BL,
+ {(char_u *)1L, (char_u *)0L}
+! SCRIPTID_INIT},
+ {"buftype", "bt", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB,
+ #if defined(FEAT_QUICKFIX)
+ (char_u *)&p_bt, PV_BT,
+***************
+*** 660,666 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"casemap", "cmp", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_cmp, PV_NONE,
+--- 663,669 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"casemap", "cmp", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_cmp, PV_NONE,
+***************
+*** 669,675 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"cdpath", "cd", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SEARCHPATH
+ (char_u *)&p_cdpath, PV_NONE,
+--- 672,678 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cdpath", "cd", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SEARCHPATH
+ (char_u *)&p_cdpath, PV_NONE,
+***************
+*** 678,684 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"cedit", NULL, P_STRING,
+ #ifdef FEAT_CMDWIN
+ (char_u *)&p_cedit, PV_NONE,
+--- 681,687 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cedit", NULL, P_STRING,
+ #ifdef FEAT_CMDWIN
+ (char_u *)&p_cedit, PV_NONE,
+***************
+*** 687,693 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"charconvert", "ccv", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
+ (char_u *)&p_ccv, PV_NONE,
+--- 690,696 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"charconvert", "ccv", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_MBYTE) && defined(FEAT_EVAL)
+ (char_u *)&p_ccv, PV_NONE,
+***************
+*** 696,709 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"cindent", "cin", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CINDENT
+ (char_u *)&p_cin, PV_CIN,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"cinkeys", "cink", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_CINDENT
+ (char_u *)&p_cink, PV_CINK,
+--- 699,712 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cindent", "cin", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CINDENT
+ (char_u *)&p_cin, PV_CIN,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"cinkeys", "cink", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_CINDENT
+ (char_u *)&p_cink, PV_CINK,
+***************
+*** 712,725 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"cinoptions", "cino", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_CINDENT
+ (char_u *)&p_cino, PV_CINO,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"cinwords", "cinw", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
+ (char_u *)&p_cinw, PV_CINW,
+--- 715,728 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cinoptions", "cino", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_CINDENT
+ (char_u *)&p_cino, PV_CINO,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"cinwords", "cinw", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #if defined(FEAT_SMARTINDENT) || defined(FEAT_CINDENT)
+ (char_u *)&p_cinw, PV_CINW,
+***************
+*** 729,735 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"clipboard", "cb", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_CLIPBOARD
+ (char_u *)&p_cb, PV_NONE,
+--- 732,738 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"clipboard", "cb", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_CLIPBOARD
+ (char_u *)&p_cb, PV_NONE,
+***************
+*** 743,762 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! },
+ {"cmdheight", "ch", P_NUM|P_VI_DEF|P_RALL,
+ (char_u *)&p_ch, PV_NONE,
+! {(char_u *)1L, (char_u *)0L}},
+ {"cmdwinheight", "cwh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_CMDWIN
+ (char_u *)&p_cwh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)7L, (char_u *)0L}},
+ {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+ (char_u *)&Columns, PV_NONE,
+! {(char_u *)80L, (char_u *)0L}},
+ {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_COMMENTS
+ (char_u *)&p_com, PV_COM,
+--- 746,765 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cmdheight", "ch", P_NUM|P_VI_DEF|P_RALL,
+ (char_u *)&p_ch, PV_NONE,
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"cmdwinheight", "cwh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_CMDWIN
+ (char_u *)&p_cwh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)7L, (char_u *)0L} SCRIPTID_INIT},
+ {"columns", "co", P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+ (char_u *)&Columns, PV_NONE,
+! {(char_u *)80L, (char_u *)0L} SCRIPTID_INIT},
+ {"comments", "com", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_COMMENTS
+ (char_u *)&p_com, PV_COM,
+***************
+*** 766,772 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FOLDING
+ (char_u *)&p_cms, PV_CMS,
+--- 769,775 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"commentstring", "cms", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FOLDING
+ (char_u *)&p_cms, PV_CMS,
+***************
+*** 775,786 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ /* P_PRI_MKRC isn't needed here, optval_default()
+ * always returns TRUE for 'compatible' */
+ {"compatible", "cp", P_BOOL|P_RALL,
+ (char_u *)&p_cp, PV_NONE,
+! {(char_u *)TRUE, (char_u *)FALSE}},
+ {"complete", "cpt", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_cpt, PV_CPT,
+--- 778,789 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ /* P_PRI_MKRC isn't needed here, optval_default()
+ * always returns TRUE for 'compatible' */
+ {"compatible", "cp", P_BOOL|P_RALL,
+ (char_u *)&p_cp, PV_NONE,
+! {(char_u *)TRUE, (char_u *)FALSE} SCRIPTID_INIT},
+ {"complete", "cpt", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_cpt, PV_CPT,
+***************
+*** 789,795 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"completefunc", "cfu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_COMPL_FUNC
+ (char_u *)&p_cfu, PV_CFU,
+--- 792,798 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"completefunc", "cfu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_COMPL_FUNC
+ (char_u *)&p_cfu, PV_CFU,
+***************
+*** 798,804 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"completeopt", "cot", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_cot, PV_NONE,
+--- 801,807 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"completeopt", "cot", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_cot, PV_NONE,
+***************
+*** 807,840 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"confirm", "cf", P_BOOL|P_VI_DEF,
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ (char_u *)&p_confirm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"conskey", "consk",P_BOOL|P_VI_DEF,
+ #ifdef MSDOS
+ (char_u *)&p_consk, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"copyindent", "ci", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_ci, PV_CI,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"cpoptions", "cpo", P_STRING|P_VIM|P_RALL|P_FLAGLIST,
+ (char_u *)&p_cpo, PV_NONE,
+! {(char_u *)CPO_VI, (char_u *)CPO_VIM}},
+ {"cscopepathcomp", "cspc", P_NUM|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_cspc, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L}},
+ {"cscopeprg", "csprg", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_csprg, PV_NONE,
+--- 810,844 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"confirm", "cf", P_BOOL|P_VI_DEF,
+ #if defined(FEAT_GUI_DIALOG) || defined(FEAT_CON_DIALOG)
+ (char_u *)&p_confirm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"conskey", "consk",P_BOOL|P_VI_DEF,
+ #ifdef MSDOS
+ (char_u *)&p_consk, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"copyindent", "ci", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_ci, PV_CI,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"cpoptions", "cpo", P_STRING|P_VIM|P_RALL|P_FLAGLIST,
+ (char_u *)&p_cpo, PV_NONE,
+! {(char_u *)CPO_VI, (char_u *)CPO_VIM}
+! SCRIPTID_INIT},
+ {"cscopepathcomp", "cspc", P_NUM|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_cspc, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"cscopeprg", "csprg", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_csprg, PV_NONE,
+***************
+*** 843,849 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"cscopequickfix", "csqf", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #if defined(FEAT_CSCOPE) && defined(FEAT_QUICKFIX)
+ (char_u *)&p_csqf, PV_NONE,
+--- 847,853 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cscopequickfix", "csqf", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #if defined(FEAT_CSCOPE) && defined(FEAT_QUICKFIX)
+ (char_u *)&p_csqf, PV_NONE,
+***************
+*** 852,896 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"cscopetag", "cst", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_cst, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L}},
+ {"cscopetagorder", "csto", P_NUM|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_csto, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L}},
+ {"cscopeverbose", "csverb", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_csverbose, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L}},
+ {"cursorcolumn", "cuc", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_SYN_HL
+ (char_u *)VAR_WIN, PV_CUC,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"cursorline", "cul", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_SYN_HL
+ (char_u *)VAR_WIN, PV_CUL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"debug", NULL, P_STRING|P_VI_DEF,
+ (char_u *)&p_debug, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FIND_ID
+ (char_u *)&p_def, PV_DEF,
+--- 856,900 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"cscopetag", "cst", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_cst, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"cscopetagorder", "csto", P_NUM|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_csto, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"cscopeverbose", "csverb", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_CSCOPE
+ (char_u *)&p_csverbose, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"cursorcolumn", "cuc", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_SYN_HL
+ (char_u *)VAR_WIN, PV_CUC,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"cursorline", "cul", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_SYN_HL
+ (char_u *)VAR_WIN, PV_CUL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"debug", NULL, P_STRING|P_VI_DEF,
+ (char_u *)&p_debug, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"define", "def", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FIND_ID
+ (char_u *)&p_def, PV_DEF,
+***************
+*** 899,926 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"delcombine", "deco", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_deco, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_dict, PV_DICT,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"diff", NULL, P_BOOL|P_VI_DEF|P_RWIN|P_NOGLOB,
+ #ifdef FEAT_DIFF
+ (char_u *)VAR_WIN, PV_DIFF,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+ (char_u *)&p_dex, PV_NONE,
+--- 903,930 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"delcombine", "deco", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_deco, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_dict, PV_DICT,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"diff", NULL, P_BOOL|P_VI_DEF|P_RWIN|P_NOGLOB,
+ #ifdef FEAT_DIFF
+ (char_u *)VAR_WIN, PV_DIFF,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"diffexpr", "dex", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+ (char_u *)&p_dex, PV_NONE,
+***************
+*** 929,935 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"diffopt", "dip", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN|P_COMMA|P_NODUP,
+ #ifdef FEAT_DIFF
+ (char_u *)&p_dip, PV_NONE,
+--- 933,939 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"diffopt", "dip", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN|P_COMMA|P_NODUP,
+ #ifdef FEAT_DIFF
+ (char_u *)&p_dip, PV_NONE,
+***************
+*** 938,957 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)NULL}
+ #endif
+! },
+ {"digraph", "dg", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_DIGRAPHS
+ (char_u *)&p_dg, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"directory", "dir", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP|P_SECURE,
+ (char_u *)&p_dir, PV_NONE,
+! {(char_u *)DFLT_DIR, (char_u *)0L}},
+ {"display", "dy", P_STRING|P_VI_DEF|P_COMMA|P_RALL|P_NODUP,
+ (char_u *)&p_dy, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"eadirection", "ead", P_STRING|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_ead, PV_NONE,
+--- 942,961 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)NULL}
+ #endif
+! SCRIPTID_INIT},
+ {"digraph", "dg", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_DIGRAPHS
+ (char_u *)&p_dg, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"directory", "dir", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP|P_SECURE,
+ (char_u *)&p_dir, PV_NONE,
+! {(char_u *)DFLT_DIR, (char_u *)0L} SCRIPTID_INIT},
+ {"display", "dy", P_STRING|P_VI_DEF|P_COMMA|P_RALL|P_NODUP,
+ (char_u *)&p_dy, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"eadirection", "ead", P_STRING|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_ead, PV_NONE,
+***************
+*** 960,969 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"edcompatible","ed", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ed, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"encoding", "enc", P_STRING|P_VI_DEF|P_RCLR,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_enc, PV_NONE,
+--- 964,973 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"edcompatible","ed", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ed, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"encoding", "enc", P_STRING|P_VI_DEF|P_RCLR,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_enc, PV_NONE,
+***************
+*** 972,990 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"endofline", "eol", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_eol, PV_EOL,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"equalalways", "ea", P_BOOL|P_VI_DEF|P_RALL,
+ (char_u *)&p_ea, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"equalprg", "ep", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_ep, PV_EP,
+! {(char_u *)"", (char_u *)0L}},
+ {"errorbells", "eb", P_BOOL|P_VI_DEF,
+ (char_u *)&p_eb, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"errorfile", "ef", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_ef, PV_NONE,
+--- 976,994 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"endofline", "eol", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_eol, PV_EOL,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"equalalways", "ea", P_BOOL|P_VI_DEF|P_RALL,
+ (char_u *)&p_ea, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"equalprg", "ep", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_ep, PV_EP,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"errorbells", "eb", P_BOOL|P_VI_DEF,
+ (char_u *)&p_eb, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"errorfile", "ef", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_ef, PV_NONE,
+***************
+*** 993,1024 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"errorformat", "efm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_efm, PV_EFM,
+! {(char_u *)DFLT_EFM, (char_u *)0L},
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"esckeys", "ek", P_BOOL|P_VIM,
+ (char_u *)&p_ek, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE}},
+ {"eventignore", "ei", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_AUTOCMD
+ (char_u *)&p_ei, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"expandtab", "et", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_et, PV_ET,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"exrc", "ex", P_BOOL|P_VI_DEF|P_SECURE,
+ (char_u *)&p_exrc, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"fileencoding","fenc", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_RBUF|P_NO_MKRC,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_fenc, PV_FENC,
+--- 997,1028 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"errorformat", "efm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_efm, PV_EFM,
+! {(char_u *)DFLT_EFM, (char_u *)0L}
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"esckeys", "ek", P_BOOL|P_VIM,
+ (char_u *)&p_ek, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE} SCRIPTID_INIT},
+ {"eventignore", "ei", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_AUTOCMD
+ (char_u *)&p_ei, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"expandtab", "et", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_et, PV_ET,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"exrc", "ex", P_BOOL|P_VI_DEF|P_SECURE,
+ (char_u *)&p_exrc, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"fileencoding","fenc", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_RBUF|P_NO_MKRC,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_fenc, PV_FENC,
+***************
+*** 1027,1033 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"fileencodings","fencs", P_STRING|P_VI_DEF|P_COMMA,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_fencs, PV_NONE,
+--- 1031,1037 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"fileencodings","fencs", P_STRING|P_VI_DEF|P_COMMA,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_fencs, PV_NONE,
+***************
+*** 1036,1048 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC,
+ (char_u *)&p_ff, PV_FF,
+! {(char_u *)DFLT_FF, (char_u *)0L}},
+ {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_ffs, PV_NONE,
+! {(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM}},
+ {"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
+ #ifdef FEAT_AUTOCMD
+ (char_u *)&p_ft, PV_FT,
+--- 1040,1053 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"fileformat", "ff", P_STRING|P_ALLOCED|P_VI_DEF|P_RSTAT|P_NO_MKRC,
+ (char_u *)&p_ff, PV_FF,
+! {(char_u *)DFLT_FF, (char_u *)0L} SCRIPTID_INIT},
+ {"fileformats", "ffs", P_STRING|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_ffs, PV_NONE,
+! {(char_u *)DFLT_FFS_VI, (char_u *)DFLT_FFS_VIM}
+! SCRIPTID_INIT},
+ {"filetype", "ft", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
+ #ifdef FEAT_AUTOCMD
+ (char_u *)&p_ft, PV_FT,
+***************
+*** 1051,1057 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"fillchars", "fcs", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
+ #if defined(FEAT_WINDOWS) || defined(FEAT_FOLDING)
+ (char_u *)&p_fcs, PV_NONE,
+--- 1056,1062 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"fillchars", "fcs", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
+ #if defined(FEAT_WINDOWS) || defined(FEAT_FOLDING)
+ (char_u *)&p_fcs, PV_NONE,
+***************
+*** 1060,1086 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! },
+ {"fkmap", "fk", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_FKMAP
+ (char_u *)&p_fkmap, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"flash", "fl", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ #ifdef FEAT_FOLDING
+ {"foldclose", "fcl", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_RWIN,
+ (char_u *)&p_fcl, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"foldcolumn", "fdc", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDC,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"foldenable", "fen", P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FEN,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"foldexpr", "fde", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ # ifdef FEAT_EVAL
+ (char_u *)VAR_WIN, PV_FDE,
+--- 1065,1091 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"fkmap", "fk", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_FKMAP
+ (char_u *)&p_fkmap, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"flash", "fl", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ #ifdef FEAT_FOLDING
+ {"foldclose", "fcl", P_STRING|P_VI_DEF|P_COMMA|P_NODUP|P_RWIN,
+ (char_u *)&p_fcl, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"foldcolumn", "fdc", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDC,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"foldenable", "fen", P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FEN,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"foldexpr", "fde", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ # ifdef FEAT_EVAL
+ (char_u *)VAR_WIN, PV_FDE,
+***************
+*** 1089,1121 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ # endif
+! },
+ {"foldignore", "fdi", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDI,
+! {(char_u *)"#", (char_u *)NULL}},
+ {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDL,
+! {(char_u *)0L, (char_u *)0L}},
+ {"foldlevelstart","fdls", P_NUM|P_VI_DEF,
+ (char_u *)&p_fdls, PV_NONE,
+! {(char_u *)-1L, (char_u *)0L}},
+ {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
+ P_RWIN|P_COMMA|P_NODUP,
+ (char_u *)VAR_WIN, PV_FMR,
+! {(char_u *)"{{{,}}}", (char_u *)NULL}},
+ {"foldmethod", "fdm", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDM,
+! {(char_u *)"manual", (char_u *)NULL}},
+ {"foldminlines","fml", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FML,
+! {(char_u *)1L, (char_u *)0L}},
+ {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDN,
+! {(char_u *)20L, (char_u *)0L}},
+ {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_fdo, PV_NONE,
+ {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
+! (char_u *)0L}},
+ {"foldtext", "fdt", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ # ifdef FEAT_EVAL
+ (char_u *)VAR_WIN, PV_FDT,
+--- 1094,1127 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ # endif
+! SCRIPTID_INIT},
+ {"foldignore", "fdi", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDI,
+! {(char_u *)"#", (char_u *)NULL} SCRIPTID_INIT},
+ {"foldlevel", "fdl", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDL,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"foldlevelstart","fdls", P_NUM|P_VI_DEF,
+ (char_u *)&p_fdls, PV_NONE,
+! {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
+ {"foldmarker", "fmr", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|
+ P_RWIN|P_COMMA|P_NODUP,
+ (char_u *)VAR_WIN, PV_FMR,
+! {(char_u *)"{{{,}}}", (char_u *)NULL}
+! SCRIPTID_INIT},
+ {"foldmethod", "fdm", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDM,
+! {(char_u *)"manual", (char_u *)NULL} SCRIPTID_INIT},
+ {"foldminlines","fml", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FML,
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"foldnestmax", "fdn", P_NUM|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_FDN,
+! {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+ {"foldopen", "fdo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_fdo, PV_NONE,
+ {(char_u *)"block,hor,mark,percent,quickfix,search,tag,undo",
+! (char_u *)0L} SCRIPTID_INIT},
+ {"foldtext", "fdt", P_STRING|P_ALLOCED|P_VIM|P_VI_DEF|P_RWIN,
+ # ifdef FEAT_EVAL
+ (char_u *)VAR_WIN, PV_FDT,
+***************
+*** 1124,1130 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ # endif
+! },
+ #endif
+ {"formatexpr", "fex", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
+ #ifdef FEAT_EVAL
+--- 1130,1136 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ # endif
+! SCRIPTID_INIT},
+ #endif
+ {"formatexpr", "fex", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
+ #ifdef FEAT_EVAL
+***************
+*** 1134,1149 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"formatoptions","fo", P_STRING|P_ALLOCED|P_VIM|P_FLAGLIST,
+ (char_u *)&p_fo, PV_FO,
+! {(char_u *)DFLT_FO_VI, (char_u *)DFLT_FO_VIM}},
+ {"formatlistpat","flp", P_STRING|P_ALLOCED|P_VI_DEF,
+ (char_u *)&p_flp, PV_FLP,
+! {(char_u *)"^\\s*\\d\\+[\\]:.)}\\t ]\\s*", (char_u *)0L}},
+ {"formatprg", "fp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_fp, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"fsync", "fs", P_BOOL|P_SECURE|P_VI_DEF,
+ #ifdef HAVE_FSYNC
+ (char_u *)&p_fs, PV_NONE,
+--- 1140,1157 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"formatoptions","fo", P_STRING|P_ALLOCED|P_VIM|P_FLAGLIST,
+ (char_u *)&p_fo, PV_FO,
+! {(char_u *)DFLT_FO_VI, (char_u *)DFLT_FO_VIM}
+! SCRIPTID_INIT},
+ {"formatlistpat","flp", P_STRING|P_ALLOCED|P_VI_DEF,
+ (char_u *)&p_flp, PV_FLP,
+! {(char_u *)"^\\s*\\d\\+[\\]:.)}\\t ]\\s*",
+! (char_u *)0L} SCRIPTID_INIT},
+ {"formatprg", "fp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_fp, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"fsync", "fs", P_BOOL|P_SECURE|P_VI_DEF,
+ #ifdef HAVE_FSYNC
+ (char_u *)&p_fs, PV_NONE,
+***************
+*** 1152,1173 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)FALSE, (char_u *)0L}
+ #endif
+! },
+ {"gdefault", "gd", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_gd, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"graphic", "gr", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"grepformat", "gfm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_gefm, PV_NONE,
+! {(char_u *)DFLT_GREPFORMAT, (char_u *)0L},
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"grepprg", "gp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_gp, PV_GP,
+--- 1160,1181 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)FALSE, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"gdefault", "gd", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_gd, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"graphic", "gr", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"grepformat", "gfm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_gefm, PV_NONE,
+! {(char_u *)DFLT_GREPFORMAT, (char_u *)0L}
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"grepprg", "gp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_gp, PV_GP,
+***************
+*** 1185,1199 ****
+ (char_u *)"SEARCH/NUMBERS ",
+ # else
+ (char_u *)"grep -n ",
+! #endif
+! #endif
+ # endif
+! (char_u *)0L},
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guicursor", "gcr", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef CURSOR_SHAPE
+ (char_u *)&p_guicursor, PV_NONE,
+--- 1193,1207 ----
+ (char_u *)"SEARCH/NUMBERS ",
+ # else
+ (char_u *)"grep -n ",
+! # endif
+! # endif
+ # endif
+! (char_u *)0L}
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guicursor", "gcr", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef CURSOR_SHAPE
+ (char_u *)&p_guicursor, PV_NONE,
+***************
+*** 1208,1214 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guifont", "gfn", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
+ #ifdef FEAT_GUI
+ (char_u *)&p_guifont, PV_NONE,
+--- 1216,1222 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guifont", "gfn", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
+ #ifdef FEAT_GUI
+ (char_u *)&p_guifont, PV_NONE,
+***************
+*** 1217,1223 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guifontset", "gfs", P_STRING|P_VI_DEF|P_RCLR|P_COMMA,
+ #if defined(FEAT_GUI) && defined(FEAT_XFONTSET)
+ (char_u *)&p_guifontset, PV_NONE,
+--- 1225,1231 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guifontset", "gfs", P_STRING|P_VI_DEF|P_RCLR|P_COMMA,
+ #if defined(FEAT_GUI) && defined(FEAT_XFONTSET)
+ (char_u *)&p_guifontset, PV_NONE,
+***************
+*** 1226,1232 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guifontwide", "gfw", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
+ #if defined(FEAT_GUI) && defined(FEAT_MBYTE)
+ (char_u *)&p_guifontwide, PV_NONE,
+--- 1234,1240 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guifontwide", "gfw", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
+ #if defined(FEAT_GUI) && defined(FEAT_MBYTE)
+ (char_u *)&p_guifontwide, PV_NONE,
+***************
+*** 1235,1248 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guiheadroom", "ghr", P_NUM|P_VI_DEF,
+ #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
+ (char_u *)&p_ghr, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)50L, (char_u *)0L}},
+ {"guioptions", "go", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
+ #if defined(FEAT_GUI)
+ (char_u *)&p_go, PV_NONE,
+--- 1243,1256 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guiheadroom", "ghr", P_NUM|P_VI_DEF,
+ #if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
+ (char_u *)&p_ghr, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)50L, (char_u *)0L} SCRIPTID_INIT},
+ {"guioptions", "go", P_STRING|P_VI_DEF|P_RALL|P_FLAGLIST,
+ #if defined(FEAT_GUI)
+ (char_u *)&p_go, PV_NONE,
+***************
+*** 1255,1268 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guipty", NULL, P_BOOL|P_VI_DEF,
+ #if defined(FEAT_GUI)
+ (char_u *)&p_guipty, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"guitablabel", "gtl", P_STRING|P_VI_DEF|P_RWIN,
+ #if defined(FEAT_GUI_TABLINE)
+ (char_u *)&p_gtl, PV_NONE,
+--- 1263,1276 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guipty", NULL, P_BOOL|P_VI_DEF,
+ #if defined(FEAT_GUI)
+ (char_u *)&p_guipty, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"guitablabel", "gtl", P_STRING|P_VI_DEF|P_RWIN,
+ #if defined(FEAT_GUI_TABLINE)
+ (char_u *)&p_gtl, PV_NONE,
+***************
+*** 1271,1277 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"guitabtooltip", "gtt", P_STRING|P_VI_DEF|P_RWIN,
+ #if defined(FEAT_GUI_TABLINE)
+ (char_u *)&p_gtt, PV_NONE,
+--- 1279,1285 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"guitabtooltip", "gtt", P_STRING|P_VI_DEF|P_RWIN,
+ #if defined(FEAT_GUI_TABLINE)
+ (char_u *)&p_gtt, PV_NONE,
+***************
+*** 1280,1299 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"hardtabs", "ht", P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"helpfile", "hf", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_hf, PV_NONE,
+! {(char_u *)DFLT_HELPFILE, (char_u *)0L}},
+ {"helpheight", "hh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_hh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)20L, (char_u *)0L}},
+ {"helplang", "hlg", P_STRING|P_VI_DEF|P_COMMA,
+ #ifdef FEAT_MULTI_LANG
+ (char_u *)&p_hlg, PV_NONE,
+--- 1288,1308 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"hardtabs", "ht", P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"helpfile", "hf", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_hf, PV_NONE,
+! {(char_u *)DFLT_HELPFILE, (char_u *)0L}
+! SCRIPTID_INIT},
+ {"helpheight", "hh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_hh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+ {"helplang", "hlg", P_STRING|P_VI_DEF|P_COMMA,
+ #ifdef FEAT_MULTI_LANG
+ (char_u *)&p_hlg, PV_NONE,
+***************
+*** 1302,1365 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"hidden", "hid", P_BOOL|P_VI_DEF,
+ (char_u *)&p_hid, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"highlight", "hl", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
+ (char_u *)&p_hl, PV_NONE,
+! {(char_u *)HIGHLIGHT_INIT, (char_u *)0L}},
+ {"history", "hi", P_NUM|P_VIM,
+ (char_u *)&p_hi, PV_NONE,
+! {(char_u *)0L, (char_u *)20L}},
+ {"hkmap", "hk", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_hkmap, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"hkmapp", "hkp", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_hkmapp, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"hlsearch", "hls", P_BOOL|P_VI_DEF|P_VIM|P_RALL,
+ (char_u *)&p_hls, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"icon", NULL, P_BOOL|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_icon, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"iconstring", NULL, P_STRING|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_iconstring, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"ignorecase", "ic", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ic, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"imactivatekey","imak",P_STRING|P_VI_DEF,
+ #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
+ (char_u *)&p_imak, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"imcmdline", "imc", P_BOOL|P_VI_DEF,
+ #ifdef USE_IM_CONTROL
+ (char_u *)&p_imcmdline, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"imdisable", "imd", P_BOOL|P_VI_DEF,
+ #ifdef USE_IM_CONTROL
+ (char_u *)&p_imdisable, PV_NONE,
+--- 1311,1375 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"hidden", "hid", P_BOOL|P_VI_DEF,
+ (char_u *)&p_hid, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"highlight", "hl", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP,
+ (char_u *)&p_hl, PV_NONE,
+! {(char_u *)HIGHLIGHT_INIT, (char_u *)0L}
+! SCRIPTID_INIT},
+ {"history", "hi", P_NUM|P_VIM,
+ (char_u *)&p_hi, PV_NONE,
+! {(char_u *)0L, (char_u *)20L} SCRIPTID_INIT},
+ {"hkmap", "hk", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_hkmap, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"hkmapp", "hkp", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_hkmapp, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"hlsearch", "hls", P_BOOL|P_VI_DEF|P_VIM|P_RALL,
+ (char_u *)&p_hls, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"icon", NULL, P_BOOL|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_icon, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"iconstring", NULL, P_STRING|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_iconstring, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"ignorecase", "ic", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ic, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"imactivatekey","imak",P_STRING|P_VI_DEF,
+ #if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
+ (char_u *)&p_imak, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"imcmdline", "imc", P_BOOL|P_VI_DEF,
+ #ifdef USE_IM_CONTROL
+ (char_u *)&p_imcmdline, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"imdisable", "imd", P_BOOL|P_VI_DEF,
+ #ifdef USE_IM_CONTROL
+ (char_u *)&p_imdisable, PV_NONE,
+***************
+*** 1371,1377 ****
+ #else
+ {(char_u *)FALSE, (char_u *)0L}
+ #endif
+! },
+ {"iminsert", "imi", P_NUM|P_VI_DEF,
+ (char_u *)&p_iminsert, PV_IMI,
+ #ifdef B_IMODE_IM
+--- 1381,1387 ----
+ #else
+ {(char_u *)FALSE, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"iminsert", "imi", P_NUM|P_VI_DEF,
+ (char_u *)&p_iminsert, PV_IMI,
+ #ifdef B_IMODE_IM
+***************
+*** 1379,1385 ****
+ #else
+ {(char_u *)B_IMODE_NONE, (char_u *)0L}
+ #endif
+! },
+ {"imsearch", "ims", P_NUM|P_VI_DEF,
+ (char_u *)&p_imsearch, PV_IMS,
+ #ifdef B_IMODE_IM
+--- 1389,1395 ----
+ #else
+ {(char_u *)B_IMODE_NONE, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"imsearch", "ims", P_NUM|P_VI_DEF,
+ (char_u *)&p_imsearch, PV_IMS,
+ #ifdef B_IMODE_IM
+***************
+*** 1387,1393 ****
+ #else
+ {(char_u *)B_IMODE_NONE, (char_u *)0L}
+ #endif
+! },
+ {"include", "inc", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FIND_ID
+ (char_u *)&p_inc, PV_INC,
+--- 1397,1403 ----
+ #else
+ {(char_u *)B_IMODE_NONE, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"include", "inc", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_FIND_ID
+ (char_u *)&p_inc, PV_INC,
+***************
+*** 1396,1402 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"includeexpr", "inex", P_STRING|P_ALLOCED|P_VI_DEF,
+ #if defined(FEAT_FIND_ID) && defined(FEAT_EVAL)
+ (char_u *)&p_inex, PV_INEX,
+--- 1406,1412 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"includeexpr", "inex", P_STRING|P_ALLOCED|P_VI_DEF,
+ #if defined(FEAT_FIND_ID) && defined(FEAT_EVAL)
+ (char_u *)&p_inex, PV_INEX,
+***************
+*** 1405,1414 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"incsearch", "is", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_is, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"indentexpr", "inde", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
+ #if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
+ (char_u *)&p_inde, PV_INDE,
+--- 1415,1424 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"incsearch", "is", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_is, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"indentexpr", "inde", P_STRING|P_ALLOCED|P_VI_DEF|P_VIM,
+ #if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
+ (char_u *)&p_inde, PV_INDE,
+***************
+*** 1417,1423 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"indentkeys", "indk", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
+ (char_u *)&p_indk, PV_INDK,
+--- 1427,1433 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"indentkeys", "indk", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ #if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
+ (char_u *)&p_indk, PV_INDK,
+***************
+*** 1426,1438 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"infercase", "inf", P_BOOL|P_VI_DEF,
+ (char_u *)&p_inf, PV_INF,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"insertmode", "im", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_im, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"isfname", "isf", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_isf, PV_NONE,
+ {
+--- 1436,1448 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"infercase", "inf", P_BOOL|P_VI_DEF,
+ (char_u *)&p_inf, PV_INF,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"insertmode", "im", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_im, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"isfname", "isf", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_isf, PV_NONE,
+ {
+***************
+*** 1455,1461 ****
+ # endif
+ # endif
+ #endif
+! (char_u *)0L}},
+ {"isident", "isi", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_isi, PV_NONE,
+ {
+--- 1465,1471 ----
+ # endif
+ # endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"isident", "isi", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_isi, PV_NONE,
+ {
+***************
+*** 1472,1478 ****
+ (char_u *)"@,48-57,_,192-255",
+ # endif
+ #endif
+! (char_u *)0L}},
+ {"iskeyword", "isk", P_STRING|P_ALLOCED|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_isk, PV_ISK,
+ {
+--- 1482,1488 ----
+ (char_u *)"@,48-57,_,192-255",
+ # endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"iskeyword", "isk", P_STRING|P_ALLOCED|P_VIM|P_COMMA|P_NODUP,
+ (char_u *)&p_isk, PV_ISK,
+ {
+***************
+*** 1491,1497 ****
+ ISK_LATIN1
+ # endif
+ #endif
+! }},
+ {"isprint", "isp", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
+ (char_u *)&p_isp, PV_NONE,
+ {
+--- 1501,1507 ----
+ ISK_LATIN1
+ # endif
+ #endif
+! } SCRIPTID_INIT},
+ {"isprint", "isp", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
+ (char_u *)&p_isp, PV_NONE,
+ {
+***************
+*** 1507,1516 ****
+ ISP_LATIN1,
+ # endif
+ #endif
+! (char_u *)0L}},
+ {"joinspaces", "js", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_js, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"key", NULL, P_STRING|P_ALLOCED|P_VI_DEF|P_NO_MKRC,
+ #ifdef FEAT_CRYPT
+ (char_u *)&p_key, PV_KEY,
+--- 1517,1526 ----
+ ISP_LATIN1,
+ # endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"joinspaces", "js", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_js, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"key", NULL, P_STRING|P_ALLOCED|P_VI_DEF|P_NO_MKRC,
+ #ifdef FEAT_CRYPT
+ (char_u *)&p_key, PV_KEY,
+***************
+*** 1519,1525 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT|P_NFNAME|P_PRI_MKRC,
+ #ifdef FEAT_KEYMAP
+ (char_u *)&p_keymap, PV_KMAP,
+--- 1529,1535 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"keymap", "kmp", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF|P_RSTAT|P_NFNAME|P_PRI_MKRC,
+ #ifdef FEAT_KEYMAP
+ (char_u *)&p_keymap, PV_KMAP,
+***************
+*** 1528,1541 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! },
+ {"keymodel", "km", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_VISUAL
+ (char_u *)&p_km, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"keywordprg", "kp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_kp, PV_KP,
+ {
+--- 1538,1551 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"keymodel", "km", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_VISUAL
+ (char_u *)&p_km, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"keywordprg", "kp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_kp, PV_KP,
+ {
+***************
+*** 1556,1562 ****
+ # endif
+ #endif
+ #endif
+! (char_u *)0L}},
+ {"langmap", "lmap", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_LANGMAP
+ (char_u *)&p_langmap, PV_NONE,
+--- 1566,1572 ----
+ # endif
+ #endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"langmap", "lmap", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_LANGMAP
+ (char_u *)&p_langmap, PV_NONE,
+***************
+*** 1565,1595 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL,
+ #endif
+! (char_u *)0L}},
+ {"langmenu", "lm", P_STRING|P_VI_DEF|P_NFNAME,
+ #if defined(FEAT_MENU) && defined(FEAT_MULTI_LANG)
+ (char_u *)&p_lm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"laststatus", "ls", P_NUM|P_VI_DEF|P_RALL,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_ls, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L}},
+ {"lazyredraw", "lz", P_BOOL|P_VI_DEF,
+ (char_u *)&p_lz, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"linebreak", "lbr", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)VAR_WIN, PV_LBR,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"lines", NULL, P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+ (char_u *)&Rows, PV_NONE,
+ {
+--- 1575,1605 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL,
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"langmenu", "lm", P_STRING|P_VI_DEF|P_NFNAME,
+ #if defined(FEAT_MENU) && defined(FEAT_MULTI_LANG)
+ (char_u *)&p_lm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"laststatus", "ls", P_NUM|P_VI_DEF|P_RALL,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_ls, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"lazyredraw", "lz", P_BOOL|P_VI_DEF,
+ (char_u *)&p_lz, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"linebreak", "lbr", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)VAR_WIN, PV_LBR,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"lines", NULL, P_NUM|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RCLR,
+ (char_u *)&Rows, PV_NONE,
+ {
+***************
+*** 1598,1604 ****
+ #else
+ (char_u *)24L,
+ #endif
+! (char_u *)0L}},
+ {"linespace", "lsp", P_NUM|P_VI_DEF|P_RCLR,
+ #ifdef FEAT_GUI
+ (char_u *)&p_linespace, PV_NONE,
+--- 1608,1614 ----
+ #else
+ (char_u *)24L,
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"linespace", "lsp", P_NUM|P_VI_DEF|P_RCLR,
+ #ifdef FEAT_GUI
+ (char_u *)&p_linespace, PV_NONE,
+***************
+*** 1610,1623 ****
+ #else
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"lisp", NULL, P_BOOL|P_VI_DEF,
+ #ifdef FEAT_LISP
+ (char_u *)&p_lisp, PV_LISP,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"lispwords", "lw", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_LISP
+ (char_u *)&p_lispwords, PV_NONE,
+--- 1620,1633 ----
+ #else
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"lisp", NULL, P_BOOL|P_VI_DEF,
+ #ifdef FEAT_LISP
+ (char_u *)&p_lisp, PV_LISP,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"lispwords", "lw", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_LISP
+ (char_u *)&p_lispwords, PV_NONE,
+***************
+*** 1626,1649 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! },
+ {"list", NULL, P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_LIST,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"listchars", "lcs", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
+ (char_u *)&p_lcs, PV_NONE,
+! {(char_u *)"eol:$", (char_u *)0L}},
+ {"loadplugins", "lpl", P_BOOL|P_VI_DEF,
+ (char_u *)&p_lpl, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ #ifdef FEAT_GUI_MAC
+ {"macatsui", NULL, P_BOOL|P_VI_DEF|P_RCLR,
+ (char_u *)&p_macatsui, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ #endif
+ {"magic", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_magic, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"makeef", "mef", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_mef, PV_NONE,
+--- 1636,1659 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"list", NULL, P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_LIST,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"listchars", "lcs", P_STRING|P_VI_DEF|P_RALL|P_COMMA|P_NODUP,
+ (char_u *)&p_lcs, PV_NONE,
+! {(char_u *)"eol:$", (char_u *)0L} SCRIPTID_INIT},
+ {"loadplugins", "lpl", P_BOOL|P_VI_DEF,
+ (char_u *)&p_lpl, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ #ifdef FEAT_GUI_MAC
+ {"macatsui", NULL, P_BOOL|P_VI_DEF|P_RCLR,
+ (char_u *)&p_macatsui, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ #endif
+ {"magic", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_magic, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"makeef", "mef", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_mef, PV_NONE,
+***************
+*** 1652,1658 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"makeprg", "mp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_mp, PV_MP,
+--- 1662,1668 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"makeprg", "mp", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_mp, PV_MP,
+***************
+*** 1665,1713 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"matchpairs", "mps", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_mps, PV_MPS,
+! {(char_u *)"(:),{:},[:]", (char_u *)0L}},
+ {"matchtime", "mat", P_NUM|P_VI_DEF,
+ (char_u *)&p_mat, PV_NONE,
+! {(char_u *)5L, (char_u *)0L}},
+ {"maxcombine", "mco", P_NUM|P_VI_DEF,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_mco, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)2, (char_u *)0L}},
+ {"maxfuncdepth", "mfd", P_NUM|P_VI_DEF,
+ #ifdef FEAT_EVAL
+ (char_u *)&p_mfd, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)100L, (char_u *)0L}},
+ {"maxmapdepth", "mmd", P_NUM|P_VI_DEF,
+ (char_u *)&p_mmd, PV_NONE,
+! {(char_u *)1000L, (char_u *)0L}},
+ {"maxmem", "mm", P_NUM|P_VI_DEF,
+ (char_u *)&p_mm, PV_NONE,
+! {(char_u *)DFLT_MAXMEM, (char_u *)0L}},
+ {"maxmempattern","mmp", P_NUM|P_VI_DEF,
+ (char_u *)&p_mmp, PV_NONE,
+! {(char_u *)1000L, (char_u *)0L}},
+ {"maxmemtot", "mmt", P_NUM|P_VI_DEF,
+ (char_u *)&p_mmt, PV_NONE,
+! {(char_u *)DFLT_MAXMEMTOT, (char_u *)0L}},
+ {"menuitems", "mis", P_NUM|P_VI_DEF,
+ #ifdef FEAT_MENU
+ (char_u *)&p_mis, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)25L, (char_u *)0L}},
+ {"mesg", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"mkspellmem", "msm", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_msm, PV_NONE,
+--- 1675,1726 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"matchpairs", "mps", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_mps, PV_MPS,
+! {(char_u *)"(:),{:},[:]", (char_u *)0L}
+! SCRIPTID_INIT},
+ {"matchtime", "mat", P_NUM|P_VI_DEF,
+ (char_u *)&p_mat, PV_NONE,
+! {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
+ {"maxcombine", "mco", P_NUM|P_VI_DEF,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_mco, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)2, (char_u *)0L} SCRIPTID_INIT},
+ {"maxfuncdepth", "mfd", P_NUM|P_VI_DEF,
+ #ifdef FEAT_EVAL
+ (char_u *)&p_mfd, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)100L, (char_u *)0L} SCRIPTID_INIT},
+ {"maxmapdepth", "mmd", P_NUM|P_VI_DEF,
+ (char_u *)&p_mmd, PV_NONE,
+! {(char_u *)1000L, (char_u *)0L} SCRIPTID_INIT},
+ {"maxmem", "mm", P_NUM|P_VI_DEF,
+ (char_u *)&p_mm, PV_NONE,
+! {(char_u *)DFLT_MAXMEM, (char_u *)0L}
+! SCRIPTID_INIT},
+ {"maxmempattern","mmp", P_NUM|P_VI_DEF,
+ (char_u *)&p_mmp, PV_NONE,
+! {(char_u *)1000L, (char_u *)0L} SCRIPTID_INIT},
+ {"maxmemtot", "mmt", P_NUM|P_VI_DEF,
+ (char_u *)&p_mmt, PV_NONE,
+! {(char_u *)DFLT_MAXMEMTOT, (char_u *)0L}
+! SCRIPTID_INIT},
+ {"menuitems", "mis", P_NUM|P_VI_DEF,
+ #ifdef FEAT_MENU
+ (char_u *)&p_mis, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)25L, (char_u *)0L} SCRIPTID_INIT},
+ {"mesg", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"mkspellmem", "msm", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_msm, PV_NONE,
+***************
+*** 1716,1737 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"modeline", "ml", P_BOOL|P_VIM,
+ (char_u *)&p_ml, PV_ML,
+! {(char_u *)FALSE, (char_u *)TRUE}},
+ {"modelines", "mls", P_NUM|P_VI_DEF,
+ (char_u *)&p_mls, PV_NONE,
+! {(char_u *)5L, (char_u *)0L}},
+ {"modifiable", "ma", P_BOOL|P_VI_DEF|P_NOGLOB,
+ (char_u *)&p_ma, PV_MA,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"modified", "mod", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_mod, PV_MOD,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"more", NULL, P_BOOL|P_VIM,
+ (char_u *)&p_more, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE}},
+ {"mouse", NULL, P_STRING|P_VI_DEF|P_FLAGLIST,
+ (char_u *)&p_mouse, PV_NONE,
+ {
+--- 1729,1750 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"modeline", "ml", P_BOOL|P_VIM,
+ (char_u *)&p_ml, PV_ML,
+! {(char_u *)FALSE, (char_u *)TRUE} SCRIPTID_INIT},
+ {"modelines", "mls", P_NUM|P_VI_DEF,
+ (char_u *)&p_mls, PV_NONE,
+! {(char_u *)5L, (char_u *)0L} SCRIPTID_INIT},
+ {"modifiable", "ma", P_BOOL|P_VI_DEF|P_NOGLOB,
+ (char_u *)&p_ma, PV_MA,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"modified", "mod", P_BOOL|P_NO_MKRC|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_mod, PV_MOD,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"more", NULL, P_BOOL|P_VIM,
+ (char_u *)&p_more, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE} SCRIPTID_INIT},
+ {"mouse", NULL, P_STRING|P_VI_DEF|P_FLAGLIST,
+ (char_u *)&p_mouse, PV_NONE,
+ {
+***************
+*** 1740,1760 ****
+ #else
+ (char_u *)"",
+ #endif
+! (char_u *)0L}},
+ {"mousefocus", "mousef", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_GUI
+ (char_u *)&p_mousef, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"mousehide", "mh", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_GUI
+ (char_u *)&p_mh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"mousemodel", "mousem", P_STRING|P_VI_DEF,
+ (char_u *)&p_mousem, PV_NONE,
+ {
+--- 1753,1773 ----
+ #else
+ (char_u *)"",
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"mousefocus", "mousef", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_GUI
+ (char_u *)&p_mousef, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"mousehide", "mh", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_GUI
+ (char_u *)&p_mh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"mousemodel", "mousem", P_STRING|P_VI_DEF,
+ (char_u *)&p_mousem, PV_NONE,
+ {
+***************
+*** 1767,1773 ****
+ (char_u *)"extend",
+ # endif
+ #endif
+! (char_u *)0L}},
+ {"mouseshape", "mouses", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_MOUSESHAPE
+ (char_u *)&p_mouseshape, PV_NONE,
+--- 1780,1786 ----
+ (char_u *)"extend",
+ # endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"mouseshape", "mouses", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_MOUSESHAPE
+ (char_u *)&p_mouseshape, PV_NONE,
+***************
+*** 1776,1808 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"mousetime", "mouset", P_NUM|P_VI_DEF,
+ (char_u *)&p_mouset, PV_NONE,
+! {(char_u *)500L, (char_u *)0L}},
+ {"mzquantum", "mzq", P_NUM,
+ #ifdef FEAT_MZSCHEME
+ (char_u *)&p_mzq, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)100L, (char_u *)100L}},
+ {"novice", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"nrformats", "nf", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_nf, PV_NF,
+! {(char_u *)"octal,hex", (char_u *)0L}},
+ {"number", "nu", P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_NU,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"numberwidth", "nuw", P_NUM|P_RWIN|P_VIM,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)VAR_WIN, PV_NUW,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)8L, (char_u *)4L}},
+ {"omnifunc", "ofu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_COMPL_FUNC
+ (char_u *)&p_ofu, PV_OFU,
+--- 1789,1822 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"mousetime", "mouset", P_NUM|P_VI_DEF,
+ (char_u *)&p_mouset, PV_NONE,
+! {(char_u *)500L, (char_u *)0L} SCRIPTID_INIT},
+ {"mzquantum", "mzq", P_NUM,
+ #ifdef FEAT_MZSCHEME
+ (char_u *)&p_mzq, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)100L, (char_u *)100L} SCRIPTID_INIT},
+ {"novice", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"nrformats", "nf", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_nf, PV_NF,
+! {(char_u *)"octal,hex", (char_u *)0L}
+! SCRIPTID_INIT},
+ {"number", "nu", P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_NU,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"numberwidth", "nuw", P_NUM|P_RWIN|P_VIM,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)VAR_WIN, PV_NUW,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)8L, (char_u *)4L} SCRIPTID_INIT},
+ {"omnifunc", "ofu", P_STRING|P_ALLOCED|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_COMPL_FUNC
+ (char_u *)&p_ofu, PV_OFU,
+***************
+*** 1811,1820 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"open", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"opendevice", "odev", P_BOOL|P_VI_DEF,
+ #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+ (char_u *)&p_odev, PV_NONE,
+--- 1825,1834 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"open", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"opendevice", "odev", P_BOOL|P_VI_DEF,
+ #if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+ (char_u *)&p_odev, PV_NONE,
+***************
+*** 1822,1834 ****
+ (char_u *)NULL, PV_NONE,
+ #endif
+ {(char_u *)FALSE, (char_u *)FALSE}
+! },
+ {"operatorfunc", "opfunc", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_opfunc, PV_NONE,
+! {(char_u *)"", (char_u *)0L} },
+ {"optimize", "opt", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_OSFILETYPE
+ (char_u *)&p_oft, PV_OFT,
+--- 1836,1848 ----
+ (char_u *)NULL, PV_NONE,
+ #endif
+ {(char_u *)FALSE, (char_u *)FALSE}
+! SCRIPTID_INIT},
+ {"operatorfunc", "opfunc", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_opfunc, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"optimize", "opt", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"osfiletype", "oft", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_OSFILETYPE
+ (char_u *)&p_oft, PV_OFT,
+***************
+*** 1837,1853 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"paragraphs", "para", P_STRING|P_VI_DEF,
+ (char_u *)&p_para, PV_NONE,
+ {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
+! (char_u *)0L}},
+ {"paste", NULL, P_BOOL|P_VI_DEF|P_PRI_MKRC,
+ (char_u *)&p_paste, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"pastetoggle", "pt", P_STRING|P_VI_DEF,
+ (char_u *)&p_pt, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"patchexpr", "pex", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+ (char_u *)&p_pex, PV_NONE,
+--- 1851,1867 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"paragraphs", "para", P_STRING|P_VI_DEF,
+ (char_u *)&p_para, PV_NONE,
+ {(char_u *)"IPLPPPQPP TPHPLIPpLpItpplpipbp",
+! (char_u *)0L} SCRIPTID_INIT},
+ {"paste", NULL, P_BOOL|P_VI_DEF|P_PRI_MKRC,
+ (char_u *)&p_paste, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"pastetoggle", "pt", P_STRING|P_VI_DEF,
+ (char_u *)&p_pt, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"patchexpr", "pex", P_STRING|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_DIFF) && defined(FEAT_EVAL)
+ (char_u *)&p_pex, PV_NONE,
+***************
+*** 1856,1865 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"patchmode", "pm", P_STRING|P_VI_DEF|P_NFNAME,
+ (char_u *)&p_pm, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"path", "pa", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_path, PV_PATH,
+ {
+--- 1870,1879 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"patchmode", "pm", P_STRING|P_VI_DEF|P_NFNAME,
+ (char_u *)&p_pm, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"path", "pa", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_path, PV_PATH,
+ {
+***************
+*** 1872,1895 ****
+ (char_u *)".,/usr/include,,",
+ # endif
+ #endif
+! (char_u *)0L}},
+ {"preserveindent", "pi", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_pi, PV_PI,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"previewheight", "pvh", P_NUM|P_VI_DEF,
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+ (char_u *)&p_pvh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)12L, (char_u *)0L}},
+ {"previewwindow", "pvw", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+ (char_u *)VAR_WIN, PV_PVW,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"printdevice", "pdev", P_STRING|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_pdev, PV_NONE,
+--- 1886,1909 ----
+ (char_u *)".,/usr/include,,",
+ # endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"preserveindent", "pi", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_pi, PV_PI,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"previewheight", "pvh", P_NUM|P_VI_DEF,
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+ (char_u *)&p_pvh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)12L, (char_u *)0L} SCRIPTID_INIT},
+ {"previewwindow", "pvw", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
+ #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+ (char_u *)VAR_WIN, PV_PVW,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"printdevice", "pdev", P_STRING|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_pdev, PV_NONE,
+***************
+*** 1898,1904 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printencoding", "penc", P_STRING|P_VI_DEF,
+ #ifdef FEAT_POSTSCRIPT
+ (char_u *)&p_penc, PV_NONE,
+--- 1912,1918 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printencoding", "penc", P_STRING|P_VI_DEF,
+ #ifdef FEAT_POSTSCRIPT
+ (char_u *)&p_penc, PV_NONE,
+***************
+*** 1907,1913 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printexpr", "pexpr", P_STRING|P_VI_DEF,
+ #ifdef FEAT_POSTSCRIPT
+ (char_u *)&p_pexpr, PV_NONE,
+--- 1921,1927 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printexpr", "pexpr", P_STRING|P_VI_DEF,
+ #ifdef FEAT_POSTSCRIPT
+ (char_u *)&p_pexpr, PV_NONE,
+***************
+*** 1916,1922 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printfont", "pfn", P_STRING|P_VI_DEF,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_pfn, PV_NONE,
+--- 1930,1936 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printfont", "pfn", P_STRING|P_VI_DEF,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_pfn, PV_NONE,
+***************
+*** 1931,1937 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printheader", "pheader", P_STRING|P_VI_DEF|P_GETTEXT,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_header, PV_NONE,
+--- 1945,1951 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printheader", "pheader", P_STRING|P_VI_DEF|P_GETTEXT,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_header, PV_NONE,
+***************
+*** 1940,1946 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printmbcharset", "pmbcs", P_STRING|P_VI_DEF,
+ #if defined(FEAT_POSTSCRIPT) && defined(FEAT_MBYTE)
+ (char_u *)&p_pmcs, PV_NONE,
+--- 1954,1960 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printmbcharset", "pmbcs", P_STRING|P_VI_DEF,
+ #if defined(FEAT_POSTSCRIPT) && defined(FEAT_MBYTE)
+ (char_u *)&p_pmcs, PV_NONE,
+***************
+*** 1949,1955 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printmbfont", "pmbfn", P_STRING|P_VI_DEF,
+ #if defined(FEAT_POSTSCRIPT) && defined(FEAT_MBYTE)
+ (char_u *)&p_pmfn, PV_NONE,
+--- 1963,1969 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printmbfont", "pmbfn", P_STRING|P_VI_DEF,
+ #if defined(FEAT_POSTSCRIPT) && defined(FEAT_MBYTE)
+ (char_u *)&p_pmfn, PV_NONE,
+***************
+*** 1958,1964 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"printoptions", "popt", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_popt, PV_NONE,
+--- 1972,1978 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"printoptions", "popt", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_PRINTER
+ (char_u *)&p_popt, PV_NONE,
+***************
+*** 1967,1983 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"prompt", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_prompt, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"pumheight", "ph", P_NUM|P_VI_DEF,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_ph, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L}},
+ {"quoteescape", "qe", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_TEXTOBJ
+ (char_u *)&p_qe, PV_QE,
+--- 1981,1997 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"prompt", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_prompt, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"pumheight", "ph", P_NUM|P_VI_DEF,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_ph, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"quoteescape", "qe", P_STRING|P_ALLOCED|P_VI_DEF,
+ #ifdef FEAT_TEXTOBJ
+ (char_u *)&p_qe, PV_QE,
+***************
+*** 1986,2032 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"readonly", "ro", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
+ (char_u *)&p_ro, PV_RO,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"redraw", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"redrawtime", "rdt", P_NUM|P_VI_DEF,
+ #ifdef FEAT_RELTIME
+ (char_u *)&p_rdt, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)2000L, (char_u *)0L}},
+ {"remap", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_remap, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"report", NULL, P_NUM|P_VI_DEF,
+ (char_u *)&p_report, PV_NONE,
+! {(char_u *)2L, (char_u *)0L}},
+ {"restorescreen", "rs", P_BOOL|P_VI_DEF,
+ #ifdef WIN3264
+ (char_u *)&p_rs, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"revins", "ri", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_ri, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"rightleft", "rl", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)VAR_WIN, PV_RL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"rightleftcmd", "rlc", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)VAR_WIN, PV_RLC,
+--- 2000,2046 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"readonly", "ro", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
+ (char_u *)&p_ro, PV_RO,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"redraw", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"redrawtime", "rdt", P_NUM|P_VI_DEF,
+ #ifdef FEAT_RELTIME
+ (char_u *)&p_rdt, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)2000L, (char_u *)0L} SCRIPTID_INIT},
+ {"remap", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_remap, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"report", NULL, P_NUM|P_VI_DEF,
+ (char_u *)&p_report, PV_NONE,
+! {(char_u *)2L, (char_u *)0L} SCRIPTID_INIT},
+ {"restorescreen", "rs", P_BOOL|P_VI_DEF,
+ #ifdef WIN3264
+ (char_u *)&p_rs, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"revins", "ri", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)&p_ri, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"rightleft", "rl", P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)VAR_WIN, PV_RL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"rightleftcmd", "rlc", P_STRING|P_ALLOCED|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_RIGHTLEFT
+ (char_u *)VAR_WIN, PV_RLC,
+***************
+*** 2035,2074 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"ruler", "ru", P_BOOL|P_VI_DEF|P_VIM|P_RSTAT,
+ #ifdef FEAT_CMDL_INFO
+ (char_u *)&p_ru, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"rulerformat", "ruf", P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT,
+ #ifdef FEAT_STL_OPT
+ (char_u *)&p_ruf, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"runtimepath", "rtp", P_STRING|P_VI_DEF|P_EXPAND|P_COMMA|P_NODUP|P_SECURE,
+ (char_u *)&p_rtp, PV_NONE,
+! {(char_u *)DFLT_RUNTIMEPATH, (char_u *)0L}},
+ {"scroll", "scr", P_NUM|P_NO_MKRC|P_VI_DEF,
+ (char_u *)VAR_WIN, PV_SCROLL,
+! {(char_u *)12L, (char_u *)0L}},
+ {"scrollbind", "scb", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_SCROLLBIND
+ (char_u *)VAR_WIN, PV_SCBIND,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"scrolljump", "sj", P_NUM|P_VI_DEF|P_VIM,
+ (char_u *)&p_sj, PV_NONE,
+! {(char_u *)1L, (char_u *)0L}},
+ {"scrolloff", "so", P_NUM|P_VI_DEF|P_VIM|P_RALL,
+ (char_u *)&p_so, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"scrollopt", "sbo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SCROLLBIND
+ (char_u *)&p_sbo, PV_NONE,
+--- 2049,2089 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"ruler", "ru", P_BOOL|P_VI_DEF|P_VIM|P_RSTAT,
+ #ifdef FEAT_CMDL_INFO
+ (char_u *)&p_ru, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"rulerformat", "ruf", P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT,
+ #ifdef FEAT_STL_OPT
+ (char_u *)&p_ruf, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"runtimepath", "rtp", P_STRING|P_VI_DEF|P_EXPAND|P_COMMA|P_NODUP|P_SECURE,
+ (char_u *)&p_rtp, PV_NONE,
+! {(char_u *)DFLT_RUNTIMEPATH, (char_u *)0L}
+! SCRIPTID_INIT},
+ {"scroll", "scr", P_NUM|P_NO_MKRC|P_VI_DEF,
+ (char_u *)VAR_WIN, PV_SCROLL,
+! {(char_u *)12L, (char_u *)0L} SCRIPTID_INIT},
+ {"scrollbind", "scb", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_SCROLLBIND
+ (char_u *)VAR_WIN, PV_SCBIND,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"scrolljump", "sj", P_NUM|P_VI_DEF|P_VIM,
+ (char_u *)&p_sj, PV_NONE,
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"scrolloff", "so", P_NUM|P_VI_DEF|P_VIM|P_RALL,
+ (char_u *)&p_so, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"scrollopt", "sbo", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SCROLLBIND
+ (char_u *)&p_sbo, PV_NONE,
+***************
+*** 2077,2103 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"sections", "sect", P_STRING|P_VI_DEF,
+ (char_u *)&p_sections, PV_NONE,
+! {(char_u *)"SHNHH HUnhsh", (char_u *)0L}},
+ {"secure", NULL, P_BOOL|P_VI_DEF|P_SECURE,
+ (char_u *)&p_secure, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"selection", "sel", P_STRING|P_VI_DEF,
+ #ifdef FEAT_VISUAL
+ (char_u *)&p_sel, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"inclusive", (char_u *)0L}},
+ {"selectmode", "slm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_VISUAL
+ (char_u *)&p_slm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SESSION
+ (char_u *)&p_ssop, PV_NONE,
+--- 2092,2120 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"sections", "sect", P_STRING|P_VI_DEF,
+ (char_u *)&p_sections, PV_NONE,
+! {(char_u *)"SHNHH HUnhsh", (char_u *)0L}
+! SCRIPTID_INIT},
+ {"secure", NULL, P_BOOL|P_VI_DEF|P_SECURE,
+ (char_u *)&p_secure, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"selection", "sel", P_STRING|P_VI_DEF,
+ #ifdef FEAT_VISUAL
+ (char_u *)&p_sel, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"inclusive", (char_u *)0L}
+! SCRIPTID_INIT},
+ {"selectmode", "slm", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_VISUAL
+ (char_u *)&p_slm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"sessionoptions", "ssop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SESSION
+ (char_u *)&p_ssop, PV_NONE,
+***************
+*** 2107,2113 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"shell", "sh", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_sh, PV_NONE,
+ {
+--- 2124,2130 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"shell", "sh", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_sh, PV_NONE,
+ {
+***************
+*** 2136,2142 ****
+ # endif
+ # endif
+ #endif /* VMS */
+! (char_u *)0L}},
+ {"shellcmdflag","shcf", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_shcf, PV_NONE,
+ {
+--- 2153,2159 ----
+ # endif
+ # endif
+ #endif /* VMS */
+! (char_u *)0L} SCRIPTID_INIT},
+ {"shellcmdflag","shcf", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_shcf, PV_NONE,
+ {
+***************
+*** 2149,2155 ****
+ (char_u *)"-c",
+ # endif
+ #endif
+! (char_u *)0L}},
+ {"shellpipe", "sp", P_STRING|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_sp, PV_NONE,
+--- 2166,2172 ----
+ (char_u *)"-c",
+ # endif
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"shellpipe", "sp", P_STRING|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_QUICKFIX
+ (char_u *)&p_sp, PV_NONE,
+***************
+*** 2168,2197 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"shellquote", "shq", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_shq, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"shellredir", "srr", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_srr, PV_NONE,
+! {(char_u *)">", (char_u *)0L}},
+ {"shellslash", "ssl", P_BOOL|P_VI_DEF,
+ #ifdef BACKSLASH_IN_FILENAME
+ (char_u *)&p_ssl, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"shelltemp", "stmp", P_BOOL,
+ (char_u *)&p_stmp, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE}},
+ {"shelltype", "st", P_NUM|P_VI_DEF,
+ #ifdef AMIGA
+ (char_u *)&p_st, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L}},
+ {"shellxquote", "sxq", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_sxq, PV_NONE,
+ {
+--- 2185,2214 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"shellquote", "shq", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_shq, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"shellredir", "srr", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_srr, PV_NONE,
+! {(char_u *)">", (char_u *)0L} SCRIPTID_INIT},
+ {"shellslash", "ssl", P_BOOL|P_VI_DEF,
+ #ifdef BACKSLASH_IN_FILENAME
+ (char_u *)&p_ssl, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"shelltemp", "stmp", P_BOOL,
+ (char_u *)&p_stmp, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE} SCRIPTID_INIT},
+ {"shelltype", "st", P_NUM|P_VI_DEF,
+ #ifdef AMIGA
+ (char_u *)&p_st, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"shellxquote", "sxq", P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_sxq, PV_NONE,
+ {
+***************
+*** 2200,2229 ****
+ #else
+ (char_u *)"",
+ #endif
+! (char_u *)0L}},
+ {"shiftround", "sr", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sr, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"shiftwidth", "sw", P_NUM|P_VI_DEF,
+ (char_u *)&p_sw, PV_SW,
+! {(char_u *)8L, (char_u *)0L}},
+ {"shortmess", "shm", P_STRING|P_VIM|P_FLAGLIST,
+ (char_u *)&p_shm, PV_NONE,
+! {(char_u *)"", (char_u *)"filnxtToO"}},
+ {"shortname", "sn", P_BOOL|P_VI_DEF,
+ #ifdef SHORT_FNAME
+ (char_u *)NULL, PV_NONE,
+ #else
+ (char_u *)&p_sn, PV_SN,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"showbreak", "sbr", P_STRING|P_VI_DEF|P_RALL,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)&p_sbr, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"showcmd", "sc", P_BOOL|P_VIM,
+ #ifdef FEAT_CMDL_INFO
+ (char_u *)&p_sc, PV_NONE,
+--- 2217,2247 ----
+ #else
+ (char_u *)"",
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"shiftround", "sr", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sr, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"shiftwidth", "sw", P_NUM|P_VI_DEF,
+ (char_u *)&p_sw, PV_SW,
+! {(char_u *)8L, (char_u *)0L} SCRIPTID_INIT},
+ {"shortmess", "shm", P_STRING|P_VIM|P_FLAGLIST,
+ (char_u *)&p_shm, PV_NONE,
+! {(char_u *)"", (char_u *)"filnxtToO"}
+! SCRIPTID_INIT},
+ {"shortname", "sn", P_BOOL|P_VI_DEF,
+ #ifdef SHORT_FNAME
+ (char_u *)NULL, PV_NONE,
+ #else
+ (char_u *)&p_sn, PV_SN,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"showbreak", "sbr", P_STRING|P_VI_DEF|P_RALL,
+ #ifdef FEAT_LINEBREAK
+ (char_u *)&p_sbr, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"showcmd", "sc", P_BOOL|P_VIM,
+ #ifdef FEAT_CMDL_INFO
+ (char_u *)&p_sc, PV_NONE,
+***************
+*** 2236,2293 ****
+ #else
+ (char_u *)TRUE
+ #endif
+! }},
+ {"showfulltag", "sft", P_BOOL|P_VI_DEF,
+ (char_u *)&p_sft, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"showmatch", "sm", P_BOOL|P_VI_DEF,
+ (char_u *)&p_sm, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"showmode", "smd", P_BOOL|P_VIM,
+ (char_u *)&p_smd, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE}},
+ {"showtabline", "stal", P_NUM|P_VI_DEF|P_RALL,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_stal, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L}},
+ {"sidescroll", "ss", P_NUM|P_VI_DEF,
+ (char_u *)&p_ss, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"sidescrolloff", "siso", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
+ (char_u *)&p_siso, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"slowopen", "slow", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"smartcase", "scs", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_scs, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"smartindent", "si", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_SMARTINDENT
+ (char_u *)&p_si, PV_SI,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"smarttab", "sta", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sta, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"softtabstop", "sts", P_NUM|P_VI_DEF|P_VIM,
+ (char_u *)&p_sts, PV_STS,
+! {(char_u *)0L, (char_u *)0L}},
+ {"sourceany", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"spell", NULL, P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_SPELL
+ (char_u *)VAR_WIN, PV_SPELL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"spellcapcheck", "spc", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_spc, PV_SPC,
+--- 2254,2311 ----
+ #else
+ (char_u *)TRUE
+ #endif
+! } SCRIPTID_INIT},
+ {"showfulltag", "sft", P_BOOL|P_VI_DEF,
+ (char_u *)&p_sft, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"showmatch", "sm", P_BOOL|P_VI_DEF,
+ (char_u *)&p_sm, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"showmode", "smd", P_BOOL|P_VIM,
+ (char_u *)&p_smd, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE} SCRIPTID_INIT},
+ {"showtabline", "stal", P_NUM|P_VI_DEF|P_RALL,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_stal, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"sidescroll", "ss", P_NUM|P_VI_DEF,
+ (char_u *)&p_ss, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"sidescrolloff", "siso", P_NUM|P_VI_DEF|P_VIM|P_RBUF,
+ (char_u *)&p_siso, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"slowopen", "slow", P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"smartcase", "scs", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_scs, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"smartindent", "si", P_BOOL|P_VI_DEF|P_VIM,
+ #ifdef FEAT_SMARTINDENT
+ (char_u *)&p_si, PV_SI,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"smarttab", "sta", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sta, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"softtabstop", "sts", P_NUM|P_VI_DEF|P_VIM,
+ (char_u *)&p_sts, PV_STS,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"sourceany", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"spell", NULL, P_BOOL|P_VI_DEF|P_RWIN,
+ #ifdef FEAT_SPELL
+ (char_u *)VAR_WIN, PV_SPELL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"spellcapcheck", "spc", P_STRING|P_ALLOCED|P_VI_DEF|P_RBUF,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_spc, PV_SPC,
+***************
+*** 2296,2302 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"spellfile", "spf", P_STRING|P_EXPAND|P_ALLOCED|P_VI_DEF|P_SECURE|P_COMMA,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_spf, PV_SPF,
+--- 2314,2320 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"spellfile", "spf", P_STRING|P_EXPAND|P_ALLOCED|P_VI_DEF|P_SECURE|P_COMMA,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_spf, PV_SPF,
+***************
+*** 2305,2311 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"spelllang", "spl", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_RBUF|P_EXPAND,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_spl, PV_SPL,
+--- 2323,2329 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"spelllang", "spl", P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_RBUF|P_EXPAND,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_spl, PV_SPL,
+***************
+*** 2314,2320 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE|P_COMMA,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_sps, PV_NONE,
+--- 2332,2338 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"spellsuggest", "sps", P_STRING|P_VI_DEF|P_EXPAND|P_SECURE|P_COMMA,
+ #ifdef FEAT_SPELL
+ (char_u *)&p_sps, PV_NONE,
+***************
+*** 2323,2357 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"splitbelow", "sb", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_sb, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"splitright", "spr", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_spr, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"startofline", "sol", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sol, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"statusline" ,"stl", P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT,
+ #ifdef FEAT_STL_OPT
+ (char_u *)&p_stl, PV_STL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"suffixes", "su", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_su, PV_NONE,
+ {(char_u *)".bak,~,.o,.h,.info,.swp,.obj",
+! (char_u *)0L}},
+ {"suffixesadd", "sua", P_STRING|P_VI_DEF|P_ALLOCED|P_COMMA|P_NODUP,
+ #ifdef FEAT_SEARCHPATH
+ (char_u *)&p_sua, PV_SUA,
+--- 2341,2375 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"splitbelow", "sb", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_sb, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"splitright", "spr", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_spr, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"startofline", "sol", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_sol, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"statusline" ,"stl", P_STRING|P_VI_DEF|P_ALLOCED|P_RSTAT,
+ #ifdef FEAT_STL_OPT
+ (char_u *)&p_stl, PV_STL,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"suffixes", "su", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_su, PV_NONE,
+ {(char_u *)".bak,~,.o,.h,.info,.swp,.obj",
+! (char_u *)0L} SCRIPTID_INIT},
+ {"suffixesadd", "sua", P_STRING|P_VI_DEF|P_ALLOCED|P_COMMA|P_NODUP,
+ #ifdef FEAT_SEARCHPATH
+ (char_u *)&p_sua, PV_SUA,
+***************
+*** 2360,2375 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"swapfile", "swf", P_BOOL|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_swf, PV_SWF,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"swapsync", "sws", P_STRING|P_VI_DEF,
+ (char_u *)&p_sws, PV_NONE,
+! {(char_u *)"fsync", (char_u *)0L}},
+ {"switchbuf", "swb", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_swb, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"synmaxcol", "smc", P_NUM|P_VI_DEF|P_RBUF,
+ #ifdef FEAT_SYN_HL
+ (char_u *)&p_smc, PV_SMC,
+--- 2378,2393 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"swapfile", "swf", P_BOOL|P_VI_DEF|P_RSTAT,
+ (char_u *)&p_swf, PV_SWF,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"swapsync", "sws", P_STRING|P_VI_DEF,
+ (char_u *)&p_sws, PV_NONE,
+! {(char_u *)"fsync", (char_u *)0L} SCRIPTID_INIT},
+ {"switchbuf", "swb", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_swb, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"synmaxcol", "smc", P_NUM|P_VI_DEF|P_RBUF,
+ #ifdef FEAT_SYN_HL
+ (char_u *)&p_smc, PV_SMC,
+***************
+*** 2378,2384 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"syntax", "syn", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
+ #ifdef FEAT_SYN_HL
+ (char_u *)&p_syn, PV_SYN,
+--- 2396,2402 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"syntax", "syn", P_STRING|P_ALLOCED|P_VI_DEF|P_NOGLOB|P_NFNAME,
+ #ifdef FEAT_SYN_HL
+ (char_u *)&p_syn, PV_SYN,
+***************
+*** 2387,2410 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"tabline", "tal", P_STRING|P_VI_DEF|P_RALL,
+ #ifdef FEAT_STL_OPT
+ (char_u *)&p_tal, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"tabpagemax", "tpm", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_tpm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)10L, (char_u *)0L}},
+ {"tabstop", "ts", P_NUM|P_VI_DEF|P_RBUF,
+ (char_u *)&p_ts, PV_TS,
+! {(char_u *)8L, (char_u *)0L}},
+ {"tagbsearch", "tbs", P_BOOL|P_VI_DEF,
+ (char_u *)&p_tbs, PV_NONE,
+ #ifdef VMS /* binary searching doesn't appear to work on VMS */
+--- 2405,2428 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"tabline", "tal", P_STRING|P_VI_DEF|P_RALL,
+ #ifdef FEAT_STL_OPT
+ (char_u *)&p_tal, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"tabpagemax", "tpm", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_tpm, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)10L, (char_u *)0L} SCRIPTID_INIT},
+ {"tabstop", "ts", P_NUM|P_VI_DEF|P_RBUF,
+ (char_u *)&p_ts, PV_TS,
+! {(char_u *)8L, (char_u *)0L} SCRIPTID_INIT},
+ {"tagbsearch", "tbs", P_BOOL|P_VI_DEF,
+ (char_u *)&p_tbs, PV_NONE,
+ #ifdef VMS /* binary searching doesn't appear to work on VMS */
+***************
+*** 2412,2424 ****
+ #else
+ {(char_u *)TRUE, (char_u *)0L}
+ #endif
+! },
+ {"taglength", "tl", P_NUM|P_VI_DEF,
+ (char_u *)&p_tl, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"tagrelative", "tr", P_BOOL|P_VIM,
+ (char_u *)&p_tr, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE}},
+ {"tags", "tag", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_tags, PV_TAGS,
+ {
+--- 2430,2442 ----
+ #else
+ {(char_u *)TRUE, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"taglength", "tl", P_NUM|P_VI_DEF,
+ (char_u *)&p_tl, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"tagrelative", "tr", P_BOOL|P_VIM,
+ (char_u *)&p_tr, PV_NONE,
+! {(char_u *)FALSE, (char_u *)TRUE} SCRIPTID_INIT},
+ {"tags", "tag", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_tags, PV_TAGS,
+ {
+***************
+*** 2427,2446 ****
+ #else
+ (char_u *)"./tags,tags",
+ #endif
+! (char_u *)0L}},
+ {"tagstack", "tgst", P_BOOL|P_VI_DEF,
+ (char_u *)&p_tgst, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"term", NULL, P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL,
+ (char_u *)&T_NAME, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"termbidi", "tbidi", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_ARABIC
+ (char_u *)&p_tbidi, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"termencoding", "tenc", P_STRING|P_VI_DEF|P_RCLR,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_tenc, PV_NONE,
+--- 2445,2464 ----
+ #else
+ (char_u *)"./tags,tags",
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"tagstack", "tgst", P_BOOL|P_VI_DEF,
+ (char_u *)&p_tgst, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"term", NULL, P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL,
+ (char_u *)&T_NAME, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"termbidi", "tbidi", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_ARABIC
+ (char_u *)&p_tbidi, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"termencoding", "tenc", P_STRING|P_VI_DEF|P_RCLR,
+ #ifdef FEAT_MBYTE
+ (char_u *)&p_tenc, PV_NONE,
+***************
+*** 2449,2461 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"terse", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_terse, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"textauto", "ta", P_BOOL|P_VIM,
+ (char_u *)&p_ta, PV_NONE,
+! {(char_u *)DFLT_TEXTAUTO, (char_u *)TRUE}},
+ {"textmode", "tx", P_BOOL|P_VI_DEF|P_NO_MKRC,
+ (char_u *)&p_tx, PV_TX,
+ {
+--- 2467,2480 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"terse", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_terse, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"textauto", "ta", P_BOOL|P_VIM,
+ (char_u *)&p_ta, PV_NONE,
+! {(char_u *)DFLT_TEXTAUTO, (char_u *)TRUE}
+! SCRIPTID_INIT},
+ {"textmode", "tx", P_BOOL|P_VI_DEF|P_NO_MKRC,
+ (char_u *)&p_tx, PV_TX,
+ {
+***************
+*** 2464,2503 ****
+ #else
+ (char_u *)FALSE,
+ #endif
+! (char_u *)0L}},
+ {"textwidth", "tw", P_NUM|P_VI_DEF|P_VIM,
+ (char_u *)&p_tw, PV_TW,
+! {(char_u *)0L, (char_u *)0L}},
+ {"thesaurus", "tsr", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_tsr, PV_TSR,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"tildeop", "top", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_to, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"timeout", "to", P_BOOL|P_VI_DEF,
+ (char_u *)&p_timeout, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"timeoutlen", "tm", P_NUM|P_VI_DEF,
+ (char_u *)&p_tm, PV_NONE,
+! {(char_u *)1000L, (char_u *)0L}},
+ {"title", NULL, P_BOOL|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_title, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"titlelen", NULL, P_NUM|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_titlelen, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)85L, (char_u *)0L}},
+ {"titleold", NULL, P_STRING|P_VI_DEF|P_GETTEXT|P_SECURE|P_NO_MKRC,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_titleold, PV_NONE,
+--- 2483,2522 ----
+ #else
+ (char_u *)FALSE,
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"textwidth", "tw", P_NUM|P_VI_DEF|P_VIM,
+ (char_u *)&p_tw, PV_TW,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"thesaurus", "tsr", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_INS_EXPAND
+ (char_u *)&p_tsr, PV_TSR,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"tildeop", "top", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_to, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"timeout", "to", P_BOOL|P_VI_DEF,
+ (char_u *)&p_timeout, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"timeoutlen", "tm", P_NUM|P_VI_DEF,
+ (char_u *)&p_tm, PV_NONE,
+! {(char_u *)1000L, (char_u *)0L} SCRIPTID_INIT},
+ {"title", NULL, P_BOOL|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_title, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"titlelen", NULL, P_NUM|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_titlelen, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)85L, (char_u *)0L} SCRIPTID_INIT},
+ {"titleold", NULL, P_STRING|P_VI_DEF|P_GETTEXT|P_SECURE|P_NO_MKRC,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_titleold, PV_NONE,
+***************
+*** 2507,2555 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"titlestring", NULL, P_STRING|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_titlestring, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ #if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32)
+ {"toolbar", "tb", P_STRING|P_COMMA|P_VI_DEF|P_NODUP,
+ (char_u *)&p_toolbar, PV_NONE,
+! {(char_u *)"icons,tooltips", (char_u *)0L}},
+ #endif
+ #if defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK) && defined(HAVE_GTK2)
+ {"toolbariconsize", "tbis", P_STRING|P_VI_DEF,
+ (char_u *)&p_tbis, PV_NONE,
+! {(char_u *)"small", (char_u *)0L}},
+ #endif
+ {"ttimeout", NULL, P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_ttimeout, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"ttimeoutlen", "ttm", P_NUM|P_VI_DEF,
+ (char_u *)&p_ttm, PV_NONE,
+! {(char_u *)-1L, (char_u *)0L}},
+ {"ttybuiltin", "tbi", P_BOOL|P_VI_DEF,
+ (char_u *)&p_tbi, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"ttyfast", "tf", P_BOOL|P_NO_MKRC|P_VI_DEF,
+ (char_u *)&p_tf, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"ttymouse", "ttym", P_STRING|P_NODEFAULT|P_NO_MKRC|P_VI_DEF,
+ #if defined(FEAT_MOUSE) && (defined(UNIX) || defined(VMS))
+ (char_u *)&p_ttym, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"ttyscroll", "tsl", P_NUM|P_VI_DEF,
+ (char_u *)&p_ttyscroll, PV_NONE,
+! {(char_u *)999L, (char_u *)0L}},
+ {"ttytype", "tty", P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL,
+ (char_u *)&T_NAME, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"undolevels", "ul", P_NUM|P_VI_DEF,
+ (char_u *)&p_ul, PV_NONE,
+ {
+--- 2526,2575 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"titlestring", NULL, P_STRING|P_VI_DEF,
+ #ifdef FEAT_TITLE
+ (char_u *)&p_titlestring, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ #if defined(FEAT_TOOLBAR) && !defined(FEAT_GUI_W32)
+ {"toolbar", "tb", P_STRING|P_COMMA|P_VI_DEF|P_NODUP,
+ (char_u *)&p_toolbar, PV_NONE,
+! {(char_u *)"icons,tooltips", (char_u *)0L}
+! SCRIPTID_INIT},
+ #endif
+ #if defined(FEAT_TOOLBAR) && defined(FEAT_GUI_GTK) && defined(HAVE_GTK2)
+ {"toolbariconsize", "tbis", P_STRING|P_VI_DEF,
+ (char_u *)&p_tbis, PV_NONE,
+! {(char_u *)"small", (char_u *)0L} SCRIPTID_INIT},
+ #endif
+ {"ttimeout", NULL, P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_ttimeout, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"ttimeoutlen", "ttm", P_NUM|P_VI_DEF,
+ (char_u *)&p_ttm, PV_NONE,
+! {(char_u *)-1L, (char_u *)0L} SCRIPTID_INIT},
+ {"ttybuiltin", "tbi", P_BOOL|P_VI_DEF,
+ (char_u *)&p_tbi, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"ttyfast", "tf", P_BOOL|P_NO_MKRC|P_VI_DEF,
+ (char_u *)&p_tf, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"ttymouse", "ttym", P_STRING|P_NODEFAULT|P_NO_MKRC|P_VI_DEF,
+ #if defined(FEAT_MOUSE) && (defined(UNIX) || defined(VMS))
+ (char_u *)&p_ttym, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"ttyscroll", "tsl", P_NUM|P_VI_DEF,
+ (char_u *)&p_ttyscroll, PV_NONE,
+! {(char_u *)999L, (char_u *)0L} SCRIPTID_INIT},
+ {"ttytype", "tty", P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL,
+ (char_u *)&T_NAME, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"undolevels", "ul", P_NUM|P_VI_DEF,
+ (char_u *)&p_ul, PV_NONE,
+ {
+***************
+*** 2558,2576 ****
+ #else
+ (char_u *)100L,
+ #endif
+! (char_u *)0L}},
+ {"updatecount", "uc", P_NUM|P_VI_DEF,
+ (char_u *)&p_uc, PV_NONE,
+! {(char_u *)200L, (char_u *)0L}},
+ {"updatetime", "ut", P_NUM|P_VI_DEF,
+ (char_u *)&p_ut, PV_NONE,
+! {(char_u *)4000L, (char_u *)0L}},
+ {"verbose", "vbs", P_NUM|P_VI_DEF,
+ (char_u *)&p_verbose, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"verbosefile", "vfile", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_vfile, PV_NONE,
+! {(char_u *)"", (char_u *)0L}},
+ {"viewdir", "vdir", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_SESSION
+ (char_u *)&p_vdir, PV_NONE,
+--- 2578,2596 ----
+ #else
+ (char_u *)100L,
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"updatecount", "uc", P_NUM|P_VI_DEF,
+ (char_u *)&p_uc, PV_NONE,
+! {(char_u *)200L, (char_u *)0L} SCRIPTID_INIT},
+ {"updatetime", "ut", P_NUM|P_VI_DEF,
+ (char_u *)&p_ut, PV_NONE,
+! {(char_u *)4000L, (char_u *)0L} SCRIPTID_INIT},
+ {"verbose", "vbs", P_NUM|P_VI_DEF,
+ (char_u *)&p_verbose, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"verbosefile", "vfile", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ (char_u *)&p_vfile, PV_NONE,
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"viewdir", "vdir", P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #ifdef FEAT_SESSION
+ (char_u *)&p_vdir, PV_NONE,
+***************
+*** 2579,2585 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"viewoptions", "vop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SESSION
+ (char_u *)&p_vop, PV_NONE,
+--- 2599,2605 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"viewoptions", "vop", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_SESSION
+ (char_u *)&p_vop, PV_NONE,
+***************
+*** 2588,2594 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"viminfo", "vi", P_STRING|P_COMMA|P_NODUP|P_SECURE,
+ #ifdef FEAT_VIMINFO
+ (char_u *)&p_viminfo, PV_NONE,
+--- 2608,2614 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"viminfo", "vi", P_STRING|P_COMMA|P_NODUP|P_SECURE,
+ #ifdef FEAT_VIMINFO
+ (char_u *)&p_viminfo, PV_NONE,
+***************
+*** 2606,2612 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM,
+ #ifdef FEAT_VIRTUALEDIT
+ (char_u *)&p_ve, PV_NONE,
+--- 2626,2632 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"virtualedit", "ve", P_STRING|P_COMMA|P_NODUP|P_VI_DEF|P_VIM,
+ #ifdef FEAT_VIRTUALEDIT
+ (char_u *)&p_ve, PV_NONE,
+***************
+*** 2615,2665 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! },
+ {"visualbell", "vb", P_BOOL|P_VI_DEF,
+ (char_u *)&p_vb, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"w300", NULL, P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"w1200", NULL, P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"w9600", NULL, P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"warn", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_warn, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"weirdinvert", "wiv", P_BOOL|P_VI_DEF|P_RCLR,
+ (char_u *)&p_wiv, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"whichwrap", "ww", P_STRING|P_VIM|P_COMMA|P_FLAGLIST,
+ (char_u *)&p_ww, PV_NONE,
+! {(char_u *)"", (char_u *)"b,s"}},
+ {"wildchar", "wc", P_NUM|P_VIM,
+ (char_u *)&p_wc, PV_NONE,
+! {(char_u *)(long)Ctrl_E, (char_u *)(long)TAB}},
+ {"wildcharm", "wcm", P_NUM|P_VI_DEF,
+ (char_u *)&p_wcm, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"wildignore", "wig", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_WILDIGN
+ (char_u *)&p_wig, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L}},
+ {"wildmenu", "wmnu", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_WILDMENU
+ (char_u *)&p_wmnu, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"wildmode", "wim", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_wim, PV_NONE,
+! {(char_u *)"full", (char_u *)0L}},
+ {"wildoptions", "wop", P_STRING|P_VI_DEF,
+ #ifdef FEAT_CMDL_COMPL
+ (char_u *)&p_wop, PV_NONE,
+--- 2635,2686 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)0L, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"visualbell", "vb", P_BOOL|P_VI_DEF,
+ (char_u *)&p_vb, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"w300", NULL, P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"w1200", NULL, P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"w9600", NULL, P_NUM|P_VI_DEF,
+ (char_u *)NULL, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"warn", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_warn, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"weirdinvert", "wiv", P_BOOL|P_VI_DEF|P_RCLR,
+ (char_u *)&p_wiv, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"whichwrap", "ww", P_STRING|P_VIM|P_COMMA|P_FLAGLIST,
+ (char_u *)&p_ww, PV_NONE,
+! {(char_u *)"", (char_u *)"b,s"} SCRIPTID_INIT},
+ {"wildchar", "wc", P_NUM|P_VIM,
+ (char_u *)&p_wc, PV_NONE,
+! {(char_u *)(long)Ctrl_E, (char_u *)(long)TAB}
+! SCRIPTID_INIT},
+ {"wildcharm", "wcm", P_NUM|P_VI_DEF,
+ (char_u *)&p_wcm, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"wildignore", "wig", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ #ifdef FEAT_WILDIGN
+ (char_u *)&p_wig, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+ {"wildmenu", "wmnu", P_BOOL|P_VI_DEF,
+ #ifdef FEAT_WILDMENU
+ (char_u *)&p_wmnu, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"wildmode", "wim", P_STRING|P_VI_DEF|P_COMMA|P_NODUP,
+ (char_u *)&p_wim, PV_NONE,
+! {(char_u *)"full", (char_u *)0L} SCRIPTID_INIT},
+ {"wildoptions", "wop", P_STRING|P_VI_DEF,
+ #ifdef FEAT_CMDL_COMPL
+ (char_u *)&p_wop, PV_NONE,
+***************
+*** 2668,2674 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"winaltkeys", "wak", P_STRING|P_VI_DEF,
+ #ifdef FEAT_WAK
+ (char_u *)&p_wak, PV_NONE,
+--- 2689,2695 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"winaltkeys", "wak", P_STRING|P_VI_DEF,
+ #ifdef FEAT_WAK
+ (char_u *)&p_wak, PV_NONE,
+***************
+*** 2677,2743 ****
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! },
+ {"window", "wi", P_NUM|P_VI_DEF,
+ (char_u *)&p_window, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+ {"winheight", "wh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_wh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L}},
+ {"winfixheight", "wfh", P_BOOL|P_VI_DEF|P_RSTAT,
+ #ifdef FEAT_WINDOWS
+ (char_u *)VAR_WIN, PV_WFH,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"winfixwidth", "wfw", P_BOOL|P_VI_DEF|P_RSTAT,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)VAR_WIN, PV_WFW,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"winminheight", "wmh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_wmh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L}},
+ {"winminwidth", "wmw", P_NUM|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_wmw, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L}},
+ {"winwidth", "wiw", P_NUM|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_wiw, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)20L, (char_u *)0L}},
+ {"wrap", NULL, P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_WRAP,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"wrapmargin", "wm", P_NUM|P_VI_DEF,
+ (char_u *)&p_wm, PV_WM,
+! {(char_u *)0L, (char_u *)0L}},
+ {"wrapscan", "ws", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ws, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"write", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_write, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L}},
+ {"writeany", "wa", P_BOOL|P_VI_DEF,
+ (char_u *)&p_wa, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L}},
+ {"writebackup", "wb", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_wb, PV_NONE,
+ {
+--- 2698,2764 ----
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+! SCRIPTID_INIT},
+ {"window", "wi", P_NUM|P_VI_DEF,
+ (char_u *)&p_window, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"winheight", "wh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_wh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"winfixheight", "wfh", P_BOOL|P_VI_DEF|P_RSTAT,
+ #ifdef FEAT_WINDOWS
+ (char_u *)VAR_WIN, PV_WFH,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"winfixwidth", "wfw", P_BOOL|P_VI_DEF|P_RSTAT,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)VAR_WIN, PV_WFW,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"winminheight", "wmh", P_NUM|P_VI_DEF,
+ #ifdef FEAT_WINDOWS
+ (char_u *)&p_wmh, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"winminwidth", "wmw", P_NUM|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_wmw, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT},
+ {"winwidth", "wiw", P_NUM|P_VI_DEF,
+ #ifdef FEAT_VERTSPLIT
+ (char_u *)&p_wiw, PV_NONE,
+ #else
+ (char_u *)NULL, PV_NONE,
+ #endif
+! {(char_u *)20L, (char_u *)0L} SCRIPTID_INIT},
+ {"wrap", NULL, P_BOOL|P_VI_DEF|P_RWIN,
+ (char_u *)VAR_WIN, PV_WRAP,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"wrapmargin", "wm", P_NUM|P_VI_DEF,
+ (char_u *)&p_wm, PV_WM,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+ {"wrapscan", "ws", P_BOOL|P_VI_DEF,
+ (char_u *)&p_ws, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"write", NULL, P_BOOL|P_VI_DEF,
+ (char_u *)&p_write, PV_NONE,
+! {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+ {"writeany", "wa", P_BOOL|P_VI_DEF,
+ (char_u *)&p_wa, PV_NONE,
+! {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
+ {"writebackup", "wb", P_BOOL|P_VI_DEF|P_VIM,
+ (char_u *)&p_wb, PV_NONE,
+ {
+***************
+*** 2746,2760 ****
+ #else
+ (char_u *)FALSE,
+ #endif
+! (char_u *)0L}},
+ {"writedelay", "wd", P_NUM|P_VI_DEF,
+ (char_u *)&p_wd, PV_NONE,
+! {(char_u *)0L, (char_u *)0L}},
+
+ /* terminal output codes */
+ #define p_term(sss, vvv) {sss, NULL, P_STRING|P_VI_DEF|P_RALL|P_SECURE, \
+ (char_u *)&vvv, PV_NONE, \
+! {(char_u *)"", (char_u *)0L}},
+
+ p_term("t_AB", T_CAB)
+ p_term("t_AF", T_CAF)
+--- 2767,2781 ----
+ #else
+ (char_u *)FALSE,
+ #endif
+! (char_u *)0L} SCRIPTID_INIT},
+ {"writedelay", "wd", P_NUM|P_VI_DEF,
+ (char_u *)&p_wd, PV_NONE,
+! {(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+
+ /* terminal output codes */
+ #define p_term(sss, vvv) {sss, NULL, P_STRING|P_VI_DEF|P_RALL|P_SECURE, \
+ (char_u *)&vvv, PV_NONE, \
+! {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+
+ p_term("t_AB", T_CAB)
+ p_term("t_AF", T_CAF)
+***************
+*** 2815,2821 ****
+
+ /* terminal key codes are not in here */
+
+! {NULL, NULL, 0, NULL, PV_NONE, {NULL, NULL}} /* end marker */
+ };
+
+ #define PARAM_COUNT (sizeof(options) / sizeof(struct vimoption))
+--- 2836,2843 ----
+
+ /* terminal key codes are not in here */
+
+! /* end marker */
+! {NULL, NULL, 0, NULL, PV_NONE, {NULL, NULL} SCRIPTID_INIT}
+ };
+
+ #define PARAM_COUNT (sizeof(options) / sizeof(struct vimoption))
+***************
+*** 9917,9923 ****
+ regmatch->rm_ic = ic;
+ if (xp->xp_context != EXPAND_BOOL_SETTINGS)
+ {
+! for (match = 0; match < sizeof(names) / sizeof(char *); ++match)
+ if (vim_regexec(regmatch, (char_u *)names[match], (colnr_T)0))
+ {
+ if (loop == 0)
+--- 9939,9946 ----
+ regmatch->rm_ic = ic;
+ if (xp->xp_context != EXPAND_BOOL_SETTINGS)
+ {
+! for (match = 0; match < (int)(sizeof(names) / sizeof(char *));
+! ++match)
+ if (vim_regexec(regmatch, (char_u *)names[match], (colnr_T)0))
+ {
+ if (loop == 0)
+*** ../vim-7.2.179/src/os_unix.c 2009-05-16 16:36:25.000000000 +0200
+--- src/os_unix.c 2009-05-17 12:17:01.000000000 +0200
+***************
+*** 821,827 ****
+ #endif
+
+ #if defined(SIGINT)
+- /* ARGSUSED */
+ static RETSIGTYPE
+ catch_sigint SIGDEFARG(sigarg)
+ {
+--- 821,826 ----
+***************
+*** 833,839 ****
+ #endif
+
+ #if defined(SIGPWR)
+- /* ARGSUSED */
+ static RETSIGTYPE
+ catch_sigpwr SIGDEFARG(sigarg)
+ {
+--- 832,837 ----
+***************
+*** 853,859 ****
+ /*
+ * signal function for alarm().
+ */
+- /* ARGSUSED */
+ static RETSIGTYPE
+ sig_alarm SIGDEFARG(sigarg)
+ {
+--- 851,856 ----
+***************
+*** 1087,1093 ****
+ /*
+ * signal handler for SIGCONT
+ */
+- /* ARGSUSED */
+ static RETSIGTYPE
+ sigcont_handler SIGDEFARG(sigarg)
+ {
+--- 1084,1089 ----
+***************
+*** 1436,1446 ****
+ /*
+ * Another X Error handler, just used to check for errors.
+ */
+- /* ARGSUSED */
+ static int
+ x_error_check(dpy, error_event)
+! Display *dpy;
+! XErrorEvent *error_event;
+ {
+ got_x_error = TRUE;
+ return 0;
+--- 1432,1441 ----
+ /*
+ * Another X Error handler, just used to check for errors.
+ */
+ static int
+ x_error_check(dpy, error_event)
+! Display *dpy UNUSED;
+! XErrorEvent *error_event UNUSED;
+ {
+ got_x_error = TRUE;
+ return 0;
+***************
+*** 1453,1467 ****
+ */
+ static int x_IOerror_check __ARGS((Display *dpy));
+
+- /* ARGSUSED */
+ static int
+ x_IOerror_check(dpy)
+! Display *dpy;
+ {
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(lc_jump_env, 1);
+- /*NOTREACHED*/
+- return 0;
+ }
+ # endif
+
+--- 1448,1459 ----
+ */
+ static int x_IOerror_check __ARGS((Display *dpy));
+
+ static int
+ x_IOerror_check(dpy)
+! Display *dpy UNUSED;
+ {
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(lc_jump_env, 1);
+ }
+ # endif
+
+***************
+*** 1470,1479 ****
+ */
+ static int x_IOerror_handler __ARGS((Display *dpy));
+
+- /* ARGSUSED */
+ static int
+ x_IOerror_handler(dpy)
+! Display *dpy;
+ {
+ xterm_dpy = NULL;
+ x11_window = 0;
+--- 1462,1470 ----
+ */
+ static int x_IOerror_handler __ARGS((Display *dpy));
+
+ static int
+ x_IOerror_handler(dpy)
+! Display *dpy UNUSED;
+ {
+ xterm_dpy = NULL;
+ x11_window = 0;
+***************
+*** 1482,1489 ****
+
+ /* This function should not return, it causes exit(). Longjump instead. */
+ LONGJMP(x_jump_env, 1);
+- /*NOTREACHED*/
+- return 0;
+ }
+ #endif
+
+--- 1473,1478 ----
+***************
+*** 1919,1928 ****
+
+ #else /* FEAT_X11 */
+
+- /*ARGSUSED*/
+ static int
+ get_x11_title(test_only)
+! int test_only;
+ {
+ return FALSE;
+ }
+--- 1908,1916 ----
+
+ #else /* FEAT_X11 */
+
+ static int
+ get_x11_title(test_only)
+! int test_only UNUSED;
+ {
+ return FALSE;
+ }
+***************
+*** 2497,2507 ****
+ * file name to remain exactly the same.
+ * Only required for file systems where case is ignored and preserved.
+ */
+- /*ARGSUSED*/
+ void
+ fname_case(name, len)
+ char_u *name;
+! int len; /* buffer size, only used when name gets longer */
+ {
+ struct stat st;
+ char_u *slash, *tail;
+--- 2485,2494 ----
+ * file name to remain exactly the same.
+ * Only required for file systems where case is ignored and preserved.
+ */
+ void
+ fname_case(name, len)
+ char_u *name;
+! int len UNUSED; /* buffer size, only used when name gets longer */
+ {
+ struct stat st;
+ char_u *slash, *tail;
+***************
+*** 5141,5147 ****
+
+ #define SHELL_SPECIAL (char_u *)"\t \"&'$;<>()\\|"
+
+- /* ARGSUSED */
+ int
+ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
+ int num_pat;
+--- 5128,5133 ----
+***************
+*** 6068,6074 ****
+ /*
+ * Gets info from sysmouse and adds special keys to input buf.
+ */
+- /* ARGSUSED */
+ static RETSIGTYPE
+ sig_sysmouse SIGDEFARG(sigarg)
+ {
+--- 6054,6059 ----
+***************
+*** 6632,6642 ****
+ * This is our chance to ask the user if they want to save,
+ * or abort the logout
+ */
+- /*ARGSUSED*/
+ static void
+ xsmp_handle_interaction(smc_conn, client_data)
+ SmcConn smc_conn;
+! SmPointer client_data;
+ {
+ cmdmod_T save_cmdmod;
+ int cancel_shutdown = False;
+--- 6617,6626 ----
+ * This is our chance to ask the user if they want to save,
+ * or abort the logout
+ */
+ static void
+ xsmp_handle_interaction(smc_conn, client_data)
+ SmcConn smc_conn;
+! SmPointer client_data UNUSED;
+ {
+ cmdmod_T save_cmdmod;
+ int cancel_shutdown = False;
+***************
+*** 6669,6684 ****
+ /*
+ * Callback that starts save-yourself.
+ */
+- /*ARGSUSED*/
+ static void
+ xsmp_handle_save_yourself(smc_conn, client_data, save_type,
+ shutdown, interact_style, fast)
+ SmcConn smc_conn;
+! SmPointer client_data;
+! int save_type;
+ Bool shutdown;
+! int interact_style;
+! Bool fast;
+ {
+ /* Handle already being in saveyourself */
+ if (xsmp.save_yourself)
+--- 6653,6667 ----
+ /*
+ * Callback that starts save-yourself.
+ */
+ static void
+ xsmp_handle_save_yourself(smc_conn, client_data, save_type,
+ shutdown, interact_style, fast)
+ SmcConn smc_conn;
+! SmPointer client_data UNUSED;
+! int save_type UNUSED;
+ Bool shutdown;
+! int interact_style UNUSED;
+! Bool fast UNUSED;
+ {
+ /* Handle already being in saveyourself */
+ if (xsmp.save_yourself)
+***************
+*** 6712,6722 ****
+ /*
+ * Callback to warn us of imminent death.
+ */
+- /*ARGSUSED*/
+ static void
+ xsmp_die(smc_conn, client_data)
+! SmcConn smc_conn;
+! SmPointer client_data;
+ {
+ xsmp_close();
+
+--- 6695,6704 ----
+ /*
+ * Callback to warn us of imminent death.
+ */
+ static void
+ xsmp_die(smc_conn, client_data)
+! SmcConn smc_conn UNUSED;
+! SmPointer client_data UNUSED;
+ {
+ xsmp_close();
+
+***************
+*** 6728,6738 ****
+ /*
+ * Callback to tell us that save-yourself has completed.
+ */
+- /*ARGSUSED*/
+ static void
+ xsmp_save_complete(smc_conn, client_data)
+! SmcConn smc_conn;
+! SmPointer client_data;
+ {
+ xsmp.save_yourself = False;
+ }
+--- 6710,6719 ----
+ /*
+ * Callback to tell us that save-yourself has completed.
+ */
+ static void
+ xsmp_save_complete(smc_conn, client_data)
+! SmcConn smc_conn UNUSED;
+! SmPointer client_data UNUSED;
+ {
+ xsmp.save_yourself = False;
+ }
+***************
+*** 6742,6752 ****
+ * Callback to tell us that an instigated shutdown was cancelled
+ * (maybe even by us)
+ */
+- /*ARGSUSED*/
+ static void
+ xsmp_shutdown_cancelled(smc_conn, client_data)
+ SmcConn smc_conn;
+! SmPointer client_data;
+ {
+ if (xsmp.save_yourself)
+ SmcSaveYourselfDone(smc_conn, True);
+--- 6723,6732 ----
+ * Callback to tell us that an instigated shutdown was cancelled
+ * (maybe even by us)
+ */
+ static void
+ xsmp_shutdown_cancelled(smc_conn, client_data)
+ SmcConn smc_conn;
+! SmPointer client_data UNUSED;
+ {
+ if (xsmp.save_yourself)
+ SmcSaveYourselfDone(smc_conn, True);
+***************
+*** 6758,6770 ****
+ /*
+ * Callback to tell us that a new ICE connection has been established.
+ */
+- /*ARGSUSED*/
+ static void
+ xsmp_ice_connection(iceConn, clientData, opening, watchData)
+ IceConn iceConn;
+! IcePointer clientData;
+ Bool opening;
+! IcePointer *watchData;
+ {
+ /* Intercept creation of ICE connection fd */
+ if (opening)
+--- 6738,6749 ----
+ /*
+ * Callback to tell us that a new ICE connection has been established.
+ */
+ static void
+ xsmp_ice_connection(iceConn, clientData, opening, watchData)
+ IceConn iceConn;
+! IcePointer clientData UNUSED;
+ Bool opening;
+! IcePointer *watchData UNUSED;
+ {
+ /* Intercept creation of ICE connection fd */
+ if (opening)
+*** ../vim-7.2.179/src/quickfix.c 2009-05-13 18:54:14.000000000 +0200
+--- src/quickfix.c 2009-05-16 22:31:49.000000000 +0200
+***************
+*** 2240,2246 ****
+ * ":cclose": close the window showing the list of errors.
+ * ":lclose": close the window showing the location list
+ */
+- /*ARGSUSED*/
+ void
+ ex_cclose(eap)
+ exarg_T *eap;
+--- 2240,2245 ----
+***************
+*** 3211,3217 ****
+ break;
+ col = regmatch.endpos[0].col
+ + (col == regmatch.endpos[0].col);
+! if (col > STRLEN(ml_get_buf(buf, lnum, FALSE)))
+ break;
+ }
+ line_breakcheck();
+--- 3210,3216 ----
+ break;
+ col = regmatch.endpos[0].col
+ + (col == regmatch.endpos[0].col);
+! if (col > (colnr_T)STRLEN(ml_get_buf(buf, lnum, FALSE)))
+ break;
+ }
+ line_breakcheck();
+*** ../vim-7.2.179/src/screen.c 2009-05-13 12:46:36.000000000 +0200
+--- src/screen.c 2009-05-16 21:51:13.000000000 +0200
+***************
+*** 270,280 ****
+ * Note that when also inserting/deleting lines w_redraw_top and w_redraw_bot
+ * may become invalid and the whole window will have to be redrawn.
+ */
+- /*ARGSUSED*/
+ void
+ redrawWinline(lnum, invalid)
+ linenr_T lnum;
+! int invalid; /* window line height is invalid now */
+ {
+ #ifdef FEAT_FOLDING
+ int i;
+--- 270,279 ----
+ * Note that when also inserting/deleting lines w_redraw_top and w_redraw_bot
+ * may become invalid and the whole window will have to be redrawn.
+ */
+ void
+ redrawWinline(lnum, invalid)
+ linenr_T lnum;
+! int invalid UNUSED; /* window line height is invalid now */
+ {
+ #ifdef FEAT_FOLDING
+ int i;
+***************
+*** 2413,2419 ****
+ && (lnume < bot->lnum
+ || (lnume == bot->lnum
+ && (bot->col - (*p_sel == 'e'))
+! >= STRLEN(ml_get_buf(wp->w_buffer, lnume, FALSE)))))))
+ {
+ if (VIsual_mode == Ctrl_V)
+ {
+--- 2412,2418 ----
+ && (lnume < bot->lnum
+ || (lnume == bot->lnum
+ && (bot->col - (*p_sel == 'e'))
+! >= (colnr_T)STRLEN(ml_get_buf(wp->w_buffer, lnume, FALSE)))))))
+ {
+ if (VIsual_mode == Ctrl_V)
+ {
+***************
+*** 2549,2562 ****
+ *
+ * Return the number of last row the line occupies.
+ */
+- /* ARGSUSED */
+ static int
+ win_line(wp, lnum, startrow, endrow, nochange)
+ win_T *wp;
+ linenr_T lnum;
+ int startrow;
+ int endrow;
+! int nochange; /* not updating for changed text */
+ {
+ int col; /* visual column on screen */
+ unsigned off; /* offset in ScreenLines/ScreenAttrs */
+--- 2548,2560 ----
+ *
+ * Return the number of last row the line occupies.
+ */
+ static int
+ win_line(wp, lnum, startrow, endrow, nochange)
+ win_T *wp;
+ linenr_T lnum;
+ int startrow;
+ int endrow;
+! int nochange UNUSED; /* not updating for changed text */
+ {
+ int col; /* visual column on screen */
+ unsigned off; /* offset in ScreenLines/ScreenAttrs */
+***************
+*** 6098,6104 ****
+ fillchar, maxwidth, hltab, tabtab);
+ len = (int)STRLEN(buf);
+
+! while (width < maxwidth && len < sizeof(buf) - 1)
+ {
+ #ifdef FEAT_MBYTE
+ len += (*mb_char2bytes)(fillchar, buf + len);
+--- 6096,6102 ----
+ fillchar, maxwidth, hltab, tabtab);
+ len = (int)STRLEN(buf);
+
+! while (width < maxwidth && len < (int)sizeof(buf) - 1)
+ {
+ #ifdef FEAT_MBYTE
+ len += (*mb_char2bytes)(fillchar, buf + len);
+***************
+*** 8655,8661 ****
+ *
+ * Return OK for success, FAIL if the lines are not deleted.
+ */
+- /*ARGSUSED*/
+ int
+ screen_del_lines(off, row, line_count, end, force, wp)
+ int off;
+--- 8653,8658 ----
+***************
+*** 8663,8669 ****
+ int line_count;
+ int end;
+ int force; /* even when line_count > p_ttyscroll */
+! win_T *wp; /* NULL or window to use width from */
+ {
+ int j;
+ int i;
+--- 8660,8666 ----
+ int line_count;
+ int end;
+ int force; /* even when line_count > p_ttyscroll */
+! win_T *wp UNUSED; /* NULL or window to use width from */
+ {
+ int j;
+ int i;
+*** ../vim-7.2.179/src/search.c 2009-05-15 21:31:11.000000000 +0200
+--- src/search.c 2009-05-16 22:33:05.000000000 +0200
+***************
+*** 4527,4538 ****
+ * Find identifiers or defines in included files.
+ * if p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
+ */
+- /*ARGSUSED*/
+ void
+ find_pattern_in_path(ptr, dir, len, whole, skip_comments,
+ type, count, action, start_lnum, end_lnum)
+ char_u *ptr; /* pointer to search pattern */
+! int dir; /* direction of expansion */
+ int len; /* length of search pattern */
+ int whole; /* match whole words only */
+ int skip_comments; /* don't match inside comments */
+--- 4527,4537 ----
+ * Find identifiers or defines in included files.
+ * if p_ic && (compl_cont_status & CONT_SOL) then ptr must be in lowercase.
+ */
+ void
+ find_pattern_in_path(ptr, dir, len, whole, skip_comments,
+ type, count, action, start_lnum, end_lnum)
+ char_u *ptr; /* pointer to search pattern */
+! int dir UNUSED; /* direction of expansion */
+ int len; /* length of search pattern */
+ int whole; /* match whole words only */
+ int skip_comments; /* don't match inside comments */
+*** ../vim-7.2.179/src/spell.c 2009-05-13 18:54:14.000000000 +0200
+--- src/spell.c 2009-05-16 22:10:19.000000000 +0200
+***************
+*** 950,957 ****
+ */
+ #ifndef FEAT_MBYTE
+ /* Non-multi-byte implementation. */
+! # define SPELL_TOFOLD(c) ((c) < 256 ? spelltab.st_fold[c] : (c))
+! # define SPELL_TOUPPER(c) ((c) < 256 ? spelltab.st_upper[c] : (c))
+ # define SPELL_ISUPPER(c) ((c) < 256 ? spelltab.st_isu[c] : FALSE)
+ #else
+ # if defined(HAVE_WCHAR_H)
+--- 950,957 ----
+ */
+ #ifndef FEAT_MBYTE
+ /* Non-multi-byte implementation. */
+! # define SPELL_TOFOLD(c) ((c) < 256 ? (int)spelltab.st_fold[c] : (c))
+! # define SPELL_TOUPPER(c) ((c) < 256 ? (int)spelltab.st_upper[c] : (c))
+ # define SPELL_ISUPPER(c) ((c) < 256 ? spelltab.st_isu[c] : FALSE)
+ #else
+ # if defined(HAVE_WCHAR_H)
+***************
+*** 962,979 ****
+ * the "w" library function for characters above 255 if available. */
+ # ifdef HAVE_TOWLOWER
+ # define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
+! : (c) < 256 ? spelltab.st_fold[c] : towlower(c))
+ # else
+ # define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
+! : (c) < 256 ? spelltab.st_fold[c] : (c))
+ # endif
+
+ # ifdef HAVE_TOWUPPER
+ # define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
+! : (c) < 256 ? spelltab.st_upper[c] : towupper(c))
+ # else
+ # define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
+! : (c) < 256 ? spelltab.st_upper[c] : (c))
+ # endif
+
+ # ifdef HAVE_ISWUPPER
+--- 962,979 ----
+ * the "w" library function for characters above 255 if available. */
+ # ifdef HAVE_TOWLOWER
+ # define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
+! : (c) < 256 ? (int)spelltab.st_fold[c] : (int)towlower(c))
+ # else
+ # define SPELL_TOFOLD(c) (enc_utf8 && (c) >= 128 ? utf_fold(c) \
+! : (c) < 256 ? (int)spelltab.st_fold[c] : (c))
+ # endif
+
+ # ifdef HAVE_TOWUPPER
+ # define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
+! : (c) < 256 ? (int)spelltab.st_upper[c] : (int)towupper(c))
+ # else
+ # define SPELL_TOUPPER(c) (enc_utf8 && (c) >= 128 ? utf_toupper(c) \
+! : (c) < 256 ? (int)spelltab.st_upper[c] : (c))
+ # endif
+
+ # ifdef HAVE_ISWUPPER
+***************
+*** 8052,8058 ****
+ /* time_t can be up to 8 bytes in size, more than long_u, thus we
+ * can't use put_bytes() here. */
+ for (i = 7; i >= 0; --i)
+! if (i + 1 > sizeof(time_t))
+ /* ">>" doesn't work well when shifting more bits than avail */
+ putc(0, fd);
+ else
+--- 8052,8058 ----
+ /* time_t can be up to 8 bytes in size, more than long_u, thus we
+ * can't use put_bytes() here. */
+ for (i = 7; i >= 0; --i)
+! if (i + 1 > (int)sizeof(time_t))
+ /* ">>" doesn't work well when shifting more bits than avail */
+ putc(0, fd);
+ else
+***************
+*** 10541,10550 ****
+ /*
+ * ":spellrepall"
+ */
+- /*ARGSUSED*/
+ void
+ ex_spellrepall(eap)
+! exarg_T *eap;
+ {
+ pos_T pos = curwin->w_cursor;
+ char_u *frompat;
+--- 10541,10549 ----
+ /*
+ * ":spellrepall"
+ */
+ void
+ ex_spellrepall(eap)
+! exarg_T *eap UNUSED;
+ {
+ pos_T pos = curwin->w_cursor;
+ char_u *frompat;
+***************
+*** 15604,15613 ****
+ /*
+ * ":spellinfo"
+ */
+- /*ARGSUSED*/
+ void
+ ex_spellinfo(eap)
+! exarg_T *eap;
+ {
+ int lpi;
+ langp_T *lp;
+--- 15603,15611 ----
+ /*
+ * ":spellinfo"
+ */
+ void
+ ex_spellinfo(eap)
+! exarg_T *eap UNUSED;
+ {
+ int lpi;
+ langp_T *lp;
+***************
+*** 16153,16159 ****
+ */
+ int
+ expand_spelling(lnum, pat, matchp)
+! linenr_T lnum;
+ char_u *pat;
+ char_u ***matchp;
+ {
+--- 16151,16157 ----
+ */
+ int
+ expand_spelling(lnum, pat, matchp)
+! linenr_T lnum UNUSED;
+ char_u *pat;
+ char_u ***matchp;
+ {
+*** ../vim-7.2.179/src/syntax.c 2008-08-09 19:37:33.000000000 +0200
+--- src/syntax.c 2009-05-16 22:14:19.000000000 +0200
+***************
+*** 3224,3234 ****
+ /*
+ * Handle ":syntax case" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_case(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ char_u *arg = eap->arg;
+ char_u *next;
+--- 3224,3233 ----
+ /*
+ * Handle ":syntax case" command.
+ */
+ static void
+ syn_cmd_case(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ char_u *arg = eap->arg;
+ char_u *next;
+***************
+*** 3249,3259 ****
+ /*
+ * Handle ":syntax spell" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_spell(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ char_u *arg = eap->arg;
+ char_u *next;
+--- 3248,3257 ----
+ /*
+ * Handle ":syntax spell" command.
+ */
+ static void
+ syn_cmd_spell(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ char_u *arg = eap->arg;
+ char_u *next;
+***************
+*** 3517,3527 ****
+ /*
+ * Handle ":syntax on" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_on(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ syn_cmd_onoff(eap, "syntax");
+ }
+--- 3515,3524 ----
+ /*
+ * Handle ":syntax on" command.
+ */
+ static void
+ syn_cmd_on(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ syn_cmd_onoff(eap, "syntax");
+ }
+***************
+*** 3529,3539 ****
+ /*
+ * Handle ":syntax enable" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_enable(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ set_internal_string_var((char_u *)"syntax_cmd", (char_u *)"enable");
+ syn_cmd_onoff(eap, "syntax");
+--- 3526,3535 ----
+ /*
+ * Handle ":syntax enable" command.
+ */
+ static void
+ syn_cmd_enable(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ set_internal_string_var((char_u *)"syntax_cmd", (char_u *)"enable");
+ syn_cmd_onoff(eap, "syntax");
+***************
+*** 3543,3553 ****
+ /*
+ * Handle ":syntax reset" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_reset(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ eap->nextcmd = check_nextcmd(eap->arg);
+ if (!eap->skip)
+--- 3539,3548 ----
+ /*
+ * Handle ":syntax reset" command.
+ */
+ static void
+ syn_cmd_reset(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ eap->nextcmd = check_nextcmd(eap->arg);
+ if (!eap->skip)
+***************
+*** 3561,3571 ****
+ /*
+ * Handle ":syntax manual" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_manual(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ syn_cmd_onoff(eap, "manual");
+ }
+--- 3556,3565 ----
+ /*
+ * Handle ":syntax manual" command.
+ */
+ static void
+ syn_cmd_manual(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ syn_cmd_onoff(eap, "manual");
+ }
+***************
+*** 3573,3583 ****
+ /*
+ * Handle ":syntax off" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_off(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ syn_cmd_onoff(eap, "nosyntax");
+ }
+--- 3567,3576 ----
+ /*
+ * Handle ":syntax off" command.
+ */
+ static void
+ syn_cmd_off(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ syn_cmd_onoff(eap, "nosyntax");
+ }
+***************
+*** 4461,4471 ****
+ /*
+ * Handle ":syntax include [@{group-name}] filename" command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_include(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ char_u *arg = eap->arg;
+ int sgl_id = 1;
+--- 4454,4463 ----
+ /*
+ * Handle ":syntax include [@{group-name}] filename" command.
+ */
+ static void
+ syn_cmd_include(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ char_u *arg = eap->arg;
+ int sgl_id = 1;
+***************
+*** 4532,4542 ****
+ /*
+ * Handle ":syntax keyword {group-name} [{option}] keyword .." command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_keyword(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ char_u *arg = eap->arg;
+ char_u *group_name_end;
+--- 4524,4533 ----
+ /*
+ * Handle ":syntax keyword {group-name} [{option}] keyword .." command.
+ */
+ static void
+ syn_cmd_keyword(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ char_u *arg = eap->arg;
+ char_u *group_name_end;
+***************
+*** 5275,5285 ****
+ * Handle ":syntax cluster {cluster-name} [contains={groupname},..]
+ * [add={groupname},..] [remove={groupname},..]".
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_cluster(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ char_u *arg = eap->arg;
+ char_u *group_name_end;
+--- 5266,5275 ----
+ * Handle ":syntax cluster {cluster-name} [contains={groupname},..]
+ * [add={groupname},..] [remove={groupname},..]".
+ */
+ static void
+ syn_cmd_cluster(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ char_u *arg = eap->arg;
+ char_u *group_name_end;
+***************
+*** 5464,5474 ****
+ /*
+ * Handle ":syntax sync .." command.
+ */
+- /* ARGSUSED */
+ static void
+ syn_cmd_sync(eap, syncing)
+ exarg_T *eap;
+! int syncing; /* not used */
+ {
+ char_u *arg_start = eap->arg;
+ char_u *arg_end;
+--- 5454,5463 ----
+ /*
+ * Handle ":syntax sync .." command.
+ */
+ static void
+ syn_cmd_sync(eap, syncing)
+ exarg_T *eap;
+! int syncing UNUSED;
+ {
+ char_u *arg_start = eap->arg;
+ char_u *arg_end;
+***************
+*** 6099,6108 ****
+ * Function given to ExpandGeneric() to obtain the list syntax names for
+ * expansion.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_syntax_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ if (expand_what == EXP_SUBCMD)
+--- 6088,6096 ----
+ * Function given to ExpandGeneric() to obtain the list syntax names for
+ * expansion.
+ */
+ char_u *
+ get_syntax_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ if (expand_what == EXP_SUBCMD)
+***************
+*** 7744,7757 ****
+ /*
+ * Get the font or fontset for one highlight group.
+ */
+- /*ARGSUSED*/
+ static void
+ hl_do_font(idx, arg, do_normal, do_menu, do_tooltip)
+ int idx;
+ char_u *arg;
+! int do_normal; /* set normal font */
+! int do_menu; /* set menu font */
+! int do_tooltip; /* set tooltip font */
+ {
+ # ifdef FEAT_XFONTSET
+ /* If 'guifontset' is not empty, first try using the name as a
+--- 7732,7744 ----
+ /*
+ * Get the font or fontset for one highlight group.
+ */
+ static void
+ hl_do_font(idx, arg, do_normal, do_menu, do_tooltip)
+ int idx;
+ char_u *arg;
+! int do_normal; /* set normal font */
+! int do_menu UNUSED; /* set menu font */
+! int do_tooltip UNUSED; /* set tooltip font */
+ {
+ # ifdef FEAT_XFONTSET
+ /* If 'guifontset' is not empty, first try using the name as a
+***************
+*** 9150,9159 ****
+ * Function given to ExpandGeneric() to obtain the list of group names.
+ * Also used for synIDattr() function.
+ */
+- /*ARGSUSED*/
+ char_u *
+ get_highlight_name(xp, idx)
+! expand_T *xp;
+ int idx;
+ {
+ #ifdef FEAT_CMDL_COMPL
+--- 9137,9145 ----
+ * Function given to ExpandGeneric() to obtain the list of group names.
+ * Also used for synIDattr() function.
+ */
+ char_u *
+ get_highlight_name(xp, idx)
+! expand_T *xp UNUSED;
+ int idx;
+ {
+ #ifdef FEAT_CMDL_COMPL
+*** ../vim-7.2.179/src/tag.c 2009-05-15 21:31:11.000000000 +0200
+--- src/tag.c 2009-05-16 22:16:31.000000000 +0200
+***************
+*** 100,106 ****
+ * Tag for preview window is remembered separately, to avoid messing up the
+ * normal tagstack.
+ */
+! static taggy_T ptag_entry = {NULL};
+ #endif
+
+ /*
+--- 100,106 ----
+ * Tag for preview window is remembered separately, to avoid messing up the
+ * normal tagstack.
+ */
+! static taggy_T ptag_entry = {NULL, {INIT_POS_T(0, 0, 0), 0}, 0, 0};
+ #endif
+
+ /*
+***************
+*** 3791,3797 ****
+ --end;
+ }
+ len = (int)(end - start);
+! if (len > sizeof(buf) - 1)
+ len = sizeof(buf) - 1;
+ vim_strncpy(buf, start, len);
+ }
+--- 3791,3797 ----
+ --end;
+ }
+ len = (int)(end - start);
+! if (len > (int)sizeof(buf) - 1)
+ len = sizeof(buf) - 1;
+ vim_strncpy(buf, start, len);
+ }
+*** ../vim-7.2.179/src/term.c 2009-01-22 18:32:55.000000000 +0100
+--- src/term.c 2009-05-16 22:18:08.000000000 +0200
+***************
+*** 2906,2912 ****
+ int i;
+ int shift;
+
+! for (i = 1; i <= sizeof(long_u); i++)
+ {
+ shift = 8 * (sizeof(long_u) - i);
+ dst[i - 1] = (char_u) ((val >> shift) & 0xff);
+--- 2906,2912 ----
+ int i;
+ int shift;
+
+! for (i = 1; i <= (int)sizeof(long_u); i++)
+ {
+ shift = 8 * (sizeof(long_u) - i);
+ dst[i - 1] = (char_u) ((val >> shift) & 0xff);
+***************
+*** 2937,2943 ****
+ len = get_bytes_from_buf(buf, bytes, (int)sizeof(long_u));
+ if (len != -1)
+ {
+! for (i = 0; i < sizeof(long_u); i++)
+ {
+ shift = 8 * (sizeof(long_u) - 1 - i);
+ *val += (long_u)bytes[i] << shift;
+--- 2937,2943 ----
+ len = get_bytes_from_buf(buf, bytes, (int)sizeof(long_u));
+ if (len != -1)
+ {
+! for (i = 0; i < (int)sizeof(long_u); i++)
+ {
+ shift = 8 * (sizeof(long_u) - 1 - i);
+ *val += (long_u)bytes[i] << shift;
+*** ../vim-7.2.179/src/ui.c 2008-11-28 21:26:50.000000000 +0100
+--- src/ui.c 2009-05-16 22:33:55.000000000 +0200
+***************
+*** 320,329 ****
+ * The gui_set_shellsize() or mch_set_shellsize() function will try to set the
+ * new size. If this is not possible, it will adjust Rows and Columns.
+ */
+- /*ARGSUSED*/
+ void
+ ui_set_shellsize(mustset)
+! int mustset; /* set by the user */
+ {
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+--- 320,328 ----
+ * The gui_set_shellsize() or mch_set_shellsize() function will try to set the
+ * new size. If this is not possible, it will adjust Rows and Columns.
+ */
+ void
+ ui_set_shellsize(mustset)
+! int mustset UNUSED; /* set by the user */
+ {
+ #ifdef FEAT_GUI
+ if (gui.in_use)
+***************
+*** 1127,1136 ****
+ * available for pasting.
+ * When "both" is TRUE also copy to the '+' register.
+ */
+- /*ARGSUSED*/
+ void
+ clip_copy_modeless_selection(both)
+! int both;
+ {
+ char_u *buffer;
+ char_u *bufp;
+--- 1126,1134 ----
+ * available for pasting.
+ * When "both" is TRUE also copy to the '+' register.
+ */
+ void
+ clip_copy_modeless_selection(both)
+! int both UNUSED;
+ {
+ char_u *buffer;
+ char_u *bufp;
+***************
+*** 1701,1710 ****
+ return (int)maxlen;
+ }
+
+- /*ARGSUSED*/
+ void
+ fill_input_buf(exit_on_error)
+! int exit_on_error;
+ {
+ #if defined(UNIX) || defined(OS2) || defined(VMS) || defined(MACOS_X_UNIX)
+ int len;
+--- 1699,1707 ----
+ return (int)maxlen;
+ }
+
+ void
+ fill_input_buf(exit_on_error)
+! int exit_on_error UNUSED;
+ {
+ #if defined(UNIX) || defined(OS2) || defined(VMS) || defined(MACOS_X_UNIX)
+ int len;
+***************
+*** 1992,2002 ****
+
+ static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
+
+- /* ARGSUSED */
+ static void
+ clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
+ format)
+! Widget w;
+ XtPointer success;
+ Atom *sel_atom;
+ Atom *type;
+--- 1989,1998 ----
+
+ static void clip_x11_request_selection_cb __ARGS((Widget, XtPointer, Atom *, Atom *, XtPointer, long_u *, int *));
+
+ static void
+ clip_x11_request_selection_cb(w, success, sel_atom, type, value, length,
+ format)
+! Widget w UNUSED;
+ XtPointer success;
+ Atom *sel_atom;
+ Atom *type;
+***************
+*** 2202,2211 ****
+
+ static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
+
+- /* ARGSUSED */
+ static Boolean
+ clip_x11_convert_selection_cb(w, sel_atom, target, type, value, length, format)
+! Widget w;
+ Atom *sel_atom;
+ Atom *target;
+ Atom *type;
+--- 2198,2206 ----
+
+ static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
+
+ static Boolean
+ clip_x11_convert_selection_cb(w, sel_atom, target, type, value, length, format)
+! Widget w UNUSED;
+ Atom *sel_atom;
+ Atom *target;
+ Atom *type;
+***************
+*** 2332,2341 ****
+
+ static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
+
+- /* ARGSUSED */
+ static void
+ clip_x11_lose_ownership_cb(w, sel_atom)
+! Widget w;
+ Atom *sel_atom;
+ {
+ if (*sel_atom == clip_plus.sel_atom)
+--- 2327,2335 ----
+
+ static void clip_x11_lose_ownership_cb __ARGS((Widget, Atom *));
+
+ static void
+ clip_x11_lose_ownership_cb(w, sel_atom)
+! Widget w UNUSED;
+ Atom *sel_atom;
+ {
+ if (*sel_atom == clip_plus.sel_atom)
+***************
+*** 2368,2377 ****
+ * Send the current selection to the clipboard. Do nothing for X because we
+ * will fill in the selection only when requested by another app.
+ */
+- /*ARGSUSED*/
+ void
+ clip_x11_set_selection(cbd)
+! VimClipboard *cbd;
+ {
+ }
+ #endif
+--- 2362,2370 ----
+ * Send the current selection to the clipboard. Do nothing for X because we
+ * will fill in the selection only when requested by another app.
+ */
+ void
+ clip_x11_set_selection(cbd)
+! VimClipboard *cbd UNUSED;
+ {
+ }
+ #endif
+***************
+*** 2922,2932 ****
+ * Find the window at screen position "*rowp" and "*colp". The positions are
+ * updated to become relative to the top-left of the window.
+ */
+- /*ARGSUSED*/
+ win_T *
+ mouse_find_win(rowp, colp)
+ int *rowp;
+! int *colp;
+ {
+ frame_T *fp;
+
+--- 2915,2924 ----
+ * Find the window at screen position "*rowp" and "*colp". The positions are
+ * updated to become relative to the top-left of the window.
+ */
+ win_T *
+ mouse_find_win(rowp, colp)
+ int *rowp;
+! int *colp UNUSED;
+ {
+ frame_T *fp;
+
+*** ../vim-7.2.179/src/version.c 2009-05-16 21:16:12.000000000 +0200
+--- src/version.c 2009-05-17 13:06:38.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 180,
+ /**/
+
+--
+Wi n0t trei a h0liday in Sweden thi yer?
+ "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.181 b/source/ap/vim/patches/7.2.181
new file mode 100644
index 000000000..bf7d5feb1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.181
@@ -0,0 +1,1978 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.181
+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.181
+Problem: Some more compiler warnings when using gcc -Wextra.
+Solution: Add UNUSED and type casts.
+Files: src/if_mzsch.c, src/gui.c, src/gui_gtk.c, src/gui_gtk_x11.c,
+ src/gui_gtk_f.c, src/gui_beval.c, src/netbeans.c
+
+
+*** ../vim-7.2.180/src/if_mzsch.c 2007-07-06 19:43:08.000000000 +0200
+--- src/if_mzsch.c 2009-05-16 22:24:18.000000000 +0200
+***************
+*** 667,679 ****
+ static void CALLBACK
+ timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
+ # elif defined(FEAT_GUI_GTK)
+- /*ARGSUSED*/
+ static gint
+! timer_proc(gpointer data)
+ # elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+- /* ARGSUSED */
+ static void
+! timer_proc(XtPointer timed_out, XtIntervalId *interval_id)
+ # elif defined(FEAT_GUI_MAC)
+ pascal void
+ timer_proc(EventLoopTimerRef theTimer, void *userData)
+--- 667,677 ----
+ static void CALLBACK
+ timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
+ # elif defined(FEAT_GUI_GTK)
+ static gint
+! timer_proc(gpointer data UNUSED)
+ # elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+ static void
+! timer_proc(XtPointer timed_out UNUSED, XtIntervalId *interval_id UNUSED)
+ # elif defined(FEAT_GUI_MAC)
+ pascal void
+ timer_proc(EventLoopTimerRef theTimer, void *userData)
+*** ../vim-7.2.180/src/gui.c 2008-12-03 18:50:09.000000000 +0100
+--- src/gui.c 2009-05-17 15:52:18.000000000 +0200
+***************
+*** 678,688 ****
+ * Return OK when able to set the font. When it failed FAIL is returned and
+ * the fonts are unchanged.
+ */
+- /*ARGSUSED*/
+ int
+ gui_init_font(font_list, fontset)
+ char_u *font_list;
+! int fontset;
+ {
+ #define FONTLEN 320
+ char_u font_name[FONTLEN];
+--- 678,687 ----
+ * Return OK when able to set the font. When it failed FAIL is returned and
+ * the fonts are unchanged.
+ */
+ int
+ gui_init_font(font_list, fontset)
+ char_u *font_list;
+! int fontset UNUSED;
+ {
+ #define FONTLEN 320
+ char_u font_name[FONTLEN];
+***************
+*** 1138,1147 ****
+ * Position the various GUI components (text area, menu). The vertical
+ * scrollbars are NOT handled here. See gui_update_scrollbars().
+ */
+- /*ARGSUSED*/
+ static void
+ gui_position_components(total_width)
+! int total_width;
+ {
+ int text_area_x;
+ int text_area_y;
+--- 1137,1145 ----
+ * Position the various GUI components (text area, menu). The vertical
+ * scrollbars are NOT handled here. See gui_update_scrollbars().
+ */
+ static void
+ gui_position_components(total_width)
+! int total_width UNUSED;
+ {
+ int text_area_x;
+ int text_area_y;
+***************
+*** 1374,1383 ****
+ * If "fit_to_display" is TRUE then the size may be reduced to fit the window
+ * on the screen.
+ */
+- /*ARGSUSED*/
+ void
+ gui_set_shellsize(mustset, fit_to_display, direction)
+! int mustset; /* set by the user */
+ int fit_to_display;
+ int direction; /* RESIZE_HOR, RESIZE_VER */
+ {
+--- 1372,1380 ----
+ * If "fit_to_display" is TRUE then the size may be reduced to fit the window
+ * on the screen.
+ */
+ void
+ gui_set_shellsize(mustset, fit_to_display, direction)
+! int mustset UNUSED; /* set by the user */
+ int fit_to_display;
+ int direction; /* RESIZE_HOR, RESIZE_VER */
+ {
+***************
+*** 3120,3126 ****
+ * If "oldval" is not NULL, "oldval" is the previous value, the new value is
+ * in p_go.
+ */
+- /*ARGSUSED*/
+ void
+ gui_init_which_components(oldval)
+ char_u *oldval;
+--- 3117,3122 ----
+***************
+*** 4411,4417 ****
+ if (curwin->w_p_wrap)
+ return FALSE;
+
+! if (curwin->w_leftcol == scrollbar_value)
+ return FALSE;
+
+ curwin->w_leftcol = (colnr_T)scrollbar_value;
+--- 4407,4413 ----
+ if (curwin->w_p_wrap)
+ return FALSE;
+
+! if ((long_u)curwin->w_leftcol == scrollbar_value)
+ return FALSE;
+
+ curwin->w_leftcol = (colnr_T)scrollbar_value;
+***************
+*** 4424,4430 ****
+ && longest_lnum < curwin->w_botline
+ && !virtual_active())
+ {
+! if (scrollbar_value > scroll_line_len(curwin->w_cursor.lnum))
+ {
+ curwin->w_cursor.lnum = longest_lnum;
+ curwin->w_cursor.col = 0;
+--- 4420,4426 ----
+ && longest_lnum < curwin->w_botline
+ && !virtual_active())
+ {
+! if (scrollbar_value > (long_u)scroll_line_len(curwin->w_cursor.lnum))
+ {
+ curwin->w_cursor.lnum = longest_lnum;
+ curwin->w_cursor.col = 0;
+***************
+*** 4670,4676 ****
+ /*
+ * Find window where the mouse pointer "y" coordinate is in.
+ */
+- /*ARGSUSED*/
+ static win_T *
+ xy2win(x, y)
+ int x;
+--- 4666,4671 ----
+***************
+*** 5124,5130 ****
+ * of dropped files, they will be freed in this function, and caller can't use
+ * fnames after call this function.
+ */
+- /*ARGSUSED*/
+ void
+ gui_handle_drop(x, y, modifiers, fnames, count)
+ int x;
+--- 5119,5124 ----
+*** ../vim-7.2.180/src/gui_gtk.c 2008-07-31 22:29:28.000000000 +0200
+--- src/gui_gtk.c 2009-05-17 16:06:30.000000000 +0200
+***************
+*** 285,298 ****
+ return image;
+ }
+
+- /*ARGSUSED*/
+ static gint
+! toolbar_button_focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
+! {
+! /* When we're in a GtkPlug, we don't have window focus events, only widget focus.
+! * To emulate stand-alone gvim, if a button gets focus (e.g., <Tab> into GtkPlug)
+! * immediately pass it to mainwin.
+! */
+ if (gtk_socket_id != 0)
+ gtk_widget_grab_focus(gui.drawarea);
+
+--- 285,298 ----
+ return image;
+ }
+
+ static gint
+! toolbar_button_focus_in_event(GtkWidget *widget UNUSED,
+! GdkEventFocus *event UNUSED,
+! gpointer data UNUSED)
+! {
+! /* When we're in a GtkPlug, we don't have window focus events, only widget
+! * focus. To emulate stand-alone gvim, if a button gets focus (e.g.,
+! * <Tab> into GtkPlug) immediately pass it to mainwin. */
+ if (gtk_socket_id != 0)
+ gtk_widget_grab_focus(gui.drawarea);
+
+***************
+*** 585,593 ****
+ gtk_menu_prepend(GTK_MENU(menu->submenu_id), menu->tearoff_handle);
+ }
+
+- /*ARGSUSED*/
+ static void
+! menu_item_activate(GtkWidget *widget, gpointer data)
+ {
+ gui_menu_cb((vimmenu_T *)data);
+
+--- 585,592 ----
+ gtk_menu_prepend(GTK_MENU(menu->submenu_id), menu->tearoff_handle);
+ }
+
+ static void
+! menu_item_activate(GtkWidget *widget UNUSED, gpointer data)
+ {
+ gui_menu_cb((vimmenu_T *)data);
+
+***************
+*** 1202,1210 ****
+ #endif
+
+ #ifndef USE_FILE_CHOOSER
+- /*ARGSUSED*/
+ static void
+! browse_ok_cb(GtkWidget *widget, gpointer cbdata)
+ {
+ gui_T *vw = (gui_T *)cbdata;
+
+--- 1201,1208 ----
+ #endif
+
+ #ifndef USE_FILE_CHOOSER
+ static void
+! browse_ok_cb(GtkWidget *widget UNUSED, gpointer cbdata)
+ {
+ gui_T *vw = (gui_T *)cbdata;
+
+***************
+*** 1218,1226 ****
+ gtk_main_quit();
+ }
+
+- /*ARGSUSED*/
+ static void
+! browse_cancel_cb(GtkWidget *widget, gpointer cbdata)
+ {
+ gui_T *vw = (gui_T *)cbdata;
+
+--- 1216,1223 ----
+ gtk_main_quit();
+ }
+
+ static void
+! browse_cancel_cb(GtkWidget *widget UNUSED, gpointer cbdata)
+ {
+ gui_T *vw = (gui_T *)cbdata;
+
+***************
+*** 1234,1242 ****
+ gtk_main_quit();
+ }
+
+- /*ARGSUSED*/
+ static gboolean
+! browse_destroy_cb(GtkWidget * widget)
+ {
+ if (gui.browse_fname != NULL)
+ {
+--- 1231,1238 ----
+ gtk_main_quit();
+ }
+
+ static gboolean
+! browse_destroy_cb(GtkWidget *widget UNUSED)
+ {
+ if (gui.browse_fname != NULL)
+ {
+***************
+*** 1262,1275 ****
+ * initdir initial directory, NULL for current dir
+ * filter not used (file name filter)
+ */
+- /*ARGSUSED*/
+ char_u *
+! gui_mch_browse(int saving,
+ char_u *title,
+ char_u *dflt,
+! char_u *ext,
+ char_u *initdir,
+! char_u *filter)
+ {
+ #ifdef USE_FILE_CHOOSER
+ GtkWidget *fc;
+--- 1258,1270 ----
+ * initdir initial directory, NULL for current dir
+ * filter not used (file name filter)
+ */
+ char_u *
+! gui_mch_browse(int saving UNUSED,
+ char_u *title,
+ char_u *dflt,
+! char_u *ext UNUSED,
+ char_u *initdir,
+! char_u *filter UNUSED)
+ {
+ #ifdef USE_FILE_CHOOSER
+ GtkWidget *fc;
+***************
+*** 1377,1383 ****
+ * dflt default name
+ * initdir initial directory, NULL for current dir
+ */
+- /*ARGSUSED*/
+ char_u *
+ gui_mch_browsedir(
+ char_u *title,
+--- 1372,1377 ----
+***************
+*** 1460,1466 ****
+ }
+
+ # ifdef FEAT_GUI_GNOME
+- /* ARGSUSED */
+ static int
+ gui_gnome_dialog( int type,
+ char_u *title,
+--- 1454,1459 ----
+***************
+*** 1611,1617 ****
+ GtkWidget *dialog;
+ } CancelData;
+
+- /* ARGSUSED */
+ static void
+ dlg_button_clicked(GtkWidget * widget, ButtonData *data)
+ {
+--- 1604,1609 ----
+***************
+*** 1622,1628 ****
+ /*
+ * This makes the Escape key equivalent to the cancel button.
+ */
+- /*ARGSUSED*/
+ static int
+ dlg_key_press_event(GtkWidget *widget, GdkEventKey *event, CancelData *data)
+ {
+--- 1614,1619 ----
+***************
+*** 1655,1661 ****
+ gtk_main_quit();
+ }
+
+- /* ARGSUSED */
+ int
+ gui_mch_dialog( int type, /* type of dialog */
+ char_u *title, /* title of dialog */
+--- 1646,1651 ----
+***************
+*** 2215,2221 ****
+ GtkDialog *dialog; /* Widget of the dialog */
+ } DialogInfo;
+
+- /*ARGSUSED2*/
+ static gboolean
+ dialog_key_press_event_cb(GtkWidget *widget, GdkEventKey *event, gpointer data)
+ {
+--- 2205,2210 ----
+***************
+*** 2398,2411 ****
+ * Note: The push_in output argument seems to affect scrolling of huge
+ * menus that don't fit on the screen. Leave it at the default for now.
+ */
+- /*ARGSUSED0*/
+ static void
+! popup_menu_position_func(GtkMenu *menu,
+ gint *x, gint *y,
+ # ifdef HAVE_GTK2
+! gboolean *push_in,
+ # endif
+! gpointer user_data)
+ {
+ gdk_window_get_origin(gui.drawarea->window, x, y);
+
+--- 2387,2399 ----
+ * Note: The push_in output argument seems to affect scrolling of huge
+ * menus that don't fit on the screen. Leave it at the default for now.
+ */
+ static void
+! popup_menu_position_func(GtkMenu *menu UNUSED,
+ gint *x, gint *y,
+ # ifdef HAVE_GTK2
+! gboolean *push_in UNUSED,
+ # endif
+! gpointer user_data UNUSED)
+ {
+ gdk_window_get_origin(gui.drawarea->window, x, y);
+
+***************
+*** 2464,2476 ****
+ GtkWidget *all; /* 'Replace All' action button */
+ } SharedFindReplace;
+
+! static SharedFindReplace find_widgets = { NULL, };
+! static SharedFindReplace repl_widgets = { NULL, };
+
+- /* ARGSUSED */
+ static int
+ find_key_press_event(
+! GtkWidget *widget,
+ GdkEventKey *event,
+ SharedFindReplace *frdp)
+ {
+--- 2452,2463 ----
+ GtkWidget *all; /* 'Replace All' action button */
+ } SharedFindReplace;
+
+! static SharedFindReplace find_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+! static SharedFindReplace repl_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+
+ static int
+ find_key_press_event(
+! GtkWidget *widget UNUSED,
+ GdkEventKey *event,
+ SharedFindReplace *frdp)
+ {
+***************
+*** 2962,2970 ****
+ /*
+ * Callback for actions of the find and replace dialogs
+ */
+- /*ARGSUSED*/
+ static void
+! find_replace_cb(GtkWidget *widget, gpointer data)
+ {
+ int flags;
+ char_u *find_text;
+--- 2949,2956 ----
+ /*
+ * Callback for actions of the find and replace dialogs
+ */
+ static void
+! find_replace_cb(GtkWidget *widget UNUSED, gpointer data)
+ {
+ int flags;
+ char_u *find_text;
+***************
+*** 3010,3018 ****
+ }
+
+ /* our usual callback function */
+- /*ARGSUSED*/
+ static void
+! entry_activate_cb(GtkWidget *widget, gpointer data)
+ {
+ gtk_widget_grab_focus(GTK_WIDGET(data));
+ }
+--- 2996,3003 ----
+ }
+
+ /* our usual callback function */
+ static void
+! entry_activate_cb(GtkWidget *widget UNUSED, gpointer data)
+ {
+ gtk_widget_grab_focus(GTK_WIDGET(data));
+ }
+***************
+*** 3055,3064 ****
+ /*
+ * ":helpfind"
+ */
+- /*ARGSUSED*/
+ void
+ ex_helpfind(eap)
+! exarg_T *eap;
+ {
+ /* This will fail when menus are not loaded. Well, it's only for
+ * backwards compatibility anyway. */
+--- 3040,3048 ----
+ /*
+ * ":helpfind"
+ */
+ void
+ ex_helpfind(eap)
+! exarg_T *eap UNUSED;
+ {
+ /* This will fail when menus are not loaded. Well, it's only for
+ * backwards compatibility anyway. */
+*** ../vim-7.2.180/src/gui_gtk_x11.c 2008-11-28 21:26:50.000000000 +0100
+--- src/gui_gtk_x11.c 2009-05-17 15:53:02.000000000 +0200
+***************
+*** 619,627 ****
+ * Doesn't seem possible, since check_copy_area() relies on
+ * this information. --danielk
+ */
+- /*ARGSUSED*/
+ static gint
+! visibility_event(GtkWidget *widget, GdkEventVisibility *event, gpointer data)
+ {
+ gui.visibility = event->state;
+ /*
+--- 625,634 ----
+ * Doesn't seem possible, since check_copy_area() relies on
+ * this information. --danielk
+ */
+ static gint
+! visibility_event(GtkWidget *widget UNUSED,
+! GdkEventVisibility *event,
+! gpointer data UNUSED)
+ {
+ gui.visibility = event->state;
+ /*
+***************
+*** 638,646 ****
+ /*
+ * Redraw the corresponding portions of the screen.
+ */
+- /*ARGSUSED*/
+ static gint
+! expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
+ {
+ /* Skip this when the GUI isn't set up yet, will redraw later. */
+ if (gui.starting)
+--- 645,654 ----
+ /*
+ * Redraw the corresponding portions of the screen.
+ */
+ static gint
+! expose_event(GtkWidget *widget UNUSED,
+! GdkEventExpose *event,
+! gpointer data UNUSED)
+ {
+ /* Skip this when the GUI isn't set up yet, will redraw later. */
+ if (gui.starting)
+***************
+*** 668,676 ****
+ /*
+ * Handle changes to the "Comm" property
+ */
+- /*ARGSUSED2*/
+ static gint
+! property_event(GtkWidget *widget, GdkEventProperty *event, gpointer data)
+ {
+ if (event->type == GDK_PROPERTY_NOTIFY
+ && event->state == (int)GDK_PROPERTY_NEW_VALUE
+--- 676,685 ----
+ /*
+ * Handle changes to the "Comm" property
+ */
+ static gint
+! property_event(GtkWidget *widget,
+! GdkEventProperty *event,
+! gpointer data UNUSED)
+ {
+ if (event->type == GDK_PROPERTY_NOTIFY
+ && event->state == (int)GDK_PROPERTY_NEW_VALUE
+***************
+*** 740,748 ****
+ blink_state = BLINK_NONE;
+ }
+
+- /*ARGSUSED*/
+ static gint
+! blink_cb(gpointer data)
+ {
+ if (blink_state == BLINK_ON)
+ {
+--- 749,756 ----
+ blink_state = BLINK_NONE;
+ }
+
+ static gint
+! blink_cb(gpointer data UNUSED)
+ {
+ if (blink_state == BLINK_ON)
+ {
+***************
+*** 781,789 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static gint
+! enter_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
+ {
+ if (blink_state == BLINK_NONE)
+ gui_mch_start_blink();
+--- 789,798 ----
+ }
+ }
+
+ static gint
+! enter_notify_event(GtkWidget *widget UNUSED,
+! GdkEventCrossing *event UNUSED,
+! gpointer data UNUSED)
+ {
+ if (blink_state == BLINK_NONE)
+ gui_mch_start_blink();
+***************
+*** 795,803 ****
+ return FALSE;
+ }
+
+- /*ARGSUSED*/
+ static gint
+! leave_notify_event(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
+ {
+ if (blink_state != BLINK_NONE)
+ gui_mch_stop_blink();
+--- 804,813 ----
+ return FALSE;
+ }
+
+ static gint
+! leave_notify_event(GtkWidget *widget UNUSED,
+! GdkEventCrossing *event UNUSED,
+! gpointer data UNUSED)
+ {
+ if (blink_state != BLINK_NONE)
+ gui_mch_stop_blink();
+***************
+*** 805,813 ****
+ return FALSE;
+ }
+
+- /*ARGSUSED*/
+ static gint
+! focus_in_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
+ {
+ gui_focus_change(TRUE);
+
+--- 815,824 ----
+ return FALSE;
+ }
+
+ static gint
+! focus_in_event(GtkWidget *widget,
+! GdkEventFocus *event UNUSED,
+! gpointer data UNUSED)
+ {
+ gui_focus_change(TRUE);
+
+***************
+*** 826,834 ****
+ return TRUE;
+ }
+
+- /*ARGSUSED*/
+ static gint
+! focus_out_event(GtkWidget *widget, GdkEventFocus *event, gpointer data)
+ {
+ gui_focus_change(FALSE);
+
+--- 837,846 ----
+ return TRUE;
+ }
+
+ static gint
+! focus_out_event(GtkWidget *widget UNUSED,
+! GdkEventFocus *event UNUSED,
+! gpointer data UNUSED)
+ {
+ gui_focus_change(FALSE);
+
+***************
+*** 956,964 ****
+ /*
+ * Main keyboard handler:
+ */
+- /*ARGSUSED*/
+ static gint
+! key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
+ {
+ #ifdef HAVE_GTK2
+ /* 256 bytes is way over the top, but for safety let's reduce it only
+--- 968,977 ----
+ /*
+ * Main keyboard handler:
+ */
+ static gint
+! key_press_event(GtkWidget *widget UNUSED,
+! GdkEventKey *event,
+! gpointer data UNUSED)
+ {
+ #ifdef HAVE_GTK2
+ /* 256 bytes is way over the top, but for safety let's reduce it only
+***************
+*** 1225,1233 ****
+ }
+
+ #if defined(FEAT_XIM) && defined(HAVE_GTK2)
+- /*ARGSUSED0*/
+ static gboolean
+! key_release_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
+ {
+ /*
+ * GTK+ 2 input methods may do fancy stuff on key release events too.
+--- 1238,1247 ----
+ }
+
+ #if defined(FEAT_XIM) && defined(HAVE_GTK2)
+ static gboolean
+! key_release_event(GtkWidget *widget UNUSED,
+! GdkEventKey *event,
+! gpointer data UNUSED)
+ {
+ /*
+ * GTK+ 2 input methods may do fancy stuff on key release events too.
+***************
+*** 1243,1253 ****
+ * Selection handlers:
+ */
+
+- /*ARGSUSED*/
+ static gint
+! selection_clear_event(GtkWidget *widget,
+ GdkEventSelection *event,
+! gpointer user_data)
+ {
+ if (event->selection == clip_plus.gtk_sel_atom)
+ clip_lose_selection(&clip_plus);
+--- 1257,1266 ----
+ * Selection handlers:
+ */
+
+ static gint
+! selection_clear_event(GtkWidget *widget UNUSED,
+ GdkEventSelection *event,
+! gpointer user_data UNUSED)
+ {
+ if (event->selection == clip_plus.gtk_sel_atom)
+ clip_lose_selection(&clip_plus);
+***************
+*** 1265,1276 ****
+ #define RS_FAIL 2 /* selection_received_cb() called and failed */
+ static int received_selection = RS_NONE;
+
+- /*ARGSUSED*/
+ static void
+! selection_received_cb(GtkWidget *widget,
+ GtkSelectionData *data,
+! guint time_,
+! gpointer user_data)
+ {
+ VimClipboard *cbd;
+ char_u *text;
+--- 1278,1288 ----
+ #define RS_FAIL 2 /* selection_received_cb() called and failed */
+ static int received_selection = RS_NONE;
+
+ static void
+! selection_received_cb(GtkWidget *widget UNUSED,
+ GtkSelectionData *data,
+! guint time_ UNUSED,
+! gpointer user_data UNUSED)
+ {
+ VimClipboard *cbd;
+ char_u *text;
+***************
+*** 1414,1426 ****
+ * Prepare our selection data for passing it to the external selection
+ * client.
+ */
+- /*ARGSUSED*/
+ static void
+! selection_get_cb(GtkWidget *widget,
+ GtkSelectionData *selection_data,
+ guint info,
+! guint time_,
+! gpointer user_data)
+ {
+ char_u *string;
+ char_u *tmpbuf;
+--- 1426,1437 ----
+ * Prepare our selection data for passing it to the external selection
+ * client.
+ */
+ static void
+! selection_get_cb(GtkWidget *widget UNUSED,
+ GtkSelectionData *selection_data,
+ guint info,
+! guint time_ UNUSED,
+! gpointer user_data UNUSED)
+ {
+ char_u *string;
+ char_u *tmpbuf;
+***************
+*** 1678,1684 ****
+
+ offshoot = dx > dy ? dx : dy;
+
+! /* Make a linearly declaying timer delay with a threshold of 5 at a
+ * distance of 127 pixels from the main window.
+ *
+ * One could think endlessly about the most ergonomic variant here.
+--- 1689,1695 ----
+
+ offshoot = dx > dy ? dx : dy;
+
+! /* Make a linearly decaying timer delay with a threshold of 5 at a
+ * distance of 127 pixels from the main window.
+ *
+ * One could think endlessly about the most ergonomic variant here.
+***************
+*** 1707,1715 ****
+ /*
+ * Timer used to recognize multiple clicks of the mouse button.
+ */
+- /*ARGSUSED0*/
+ static gint
+! motion_repeat_timer_cb(gpointer data)
+ {
+ int x;
+ int y;
+--- 1718,1725 ----
+ /*
+ * Timer used to recognize multiple clicks of the mouse button.
+ */
+ static gint
+! motion_repeat_timer_cb(gpointer data UNUSED)
+ {
+ int x;
+ int y;
+***************
+*** 1749,1757 ****
+ return FALSE;
+ }
+
+- /*ARGSUSED2*/
+ static gint
+! motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data)
+ {
+ if (event->is_hint)
+ {
+--- 1759,1768 ----
+ return FALSE;
+ }
+
+ static gint
+! motion_notify_event(GtkWidget *widget,
+! GdkEventMotion *event,
+! gpointer data UNUSED)
+ {
+ if (event->is_hint)
+ {
+***************
+*** 1777,1785 ****
+ * by our own timeout mechanism instead of the one provided by GTK+ itself.
+ * This is due to the way the generic VIM code is recognizing multiple clicks.
+ */
+- /*ARGSUSED2*/
+ static gint
+! button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
+ {
+ int button;
+ int repeated_click = FALSE;
+--- 1788,1797 ----
+ * by our own timeout mechanism instead of the one provided by GTK+ itself.
+ * This is due to the way the generic VIM code is recognizing multiple clicks.
+ */
+ static gint
+! button_press_event(GtkWidget *widget,
+! GdkEventButton *event,
+! gpointer data UNUSED)
+ {
+ int button;
+ int repeated_click = FALSE;
+***************
+*** 1855,1863 ****
+ * GTK+ 2 doesn't handle mouse buttons 4, 5, 6 and 7 the same way as GTK+ 1.
+ * Instead, it abstracts scrolling via the new GdkEventScroll.
+ */
+- /*ARGSUSED2*/
+ static gboolean
+! scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data)
+ {
+ int button;
+ int_u vim_modifiers;
+--- 1867,1876 ----
+ * GTK+ 2 doesn't handle mouse buttons 4, 5, 6 and 7 the same way as GTK+ 1.
+ * Instead, it abstracts scrolling via the new GdkEventScroll.
+ */
+ static gboolean
+! scroll_event(GtkWidget *widget,
+! GdkEventScroll *event,
+! gpointer data UNUSED)
+ {
+ int button;
+ int_u vim_modifiers;
+***************
+*** 1896,1904 ****
+ #endif /* HAVE_GTK2 */
+
+
+- /*ARGSUSED*/
+ static gint
+! button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
+ {
+ int x, y;
+ int_u vim_modifiers;
+--- 1909,1918 ----
+ #endif /* HAVE_GTK2 */
+
+
+ static gint
+! button_release_event(GtkWidget *widget UNUSED,
+! GdkEventButton *event,
+! gpointer data UNUSED)
+ {
+ int x, y;
+ int_u vim_modifiers;
+***************
+*** 2100,2106 ****
+ /*
+ * DND receiver.
+ */
+- /*ARGSUSED2*/
+ static void
+ drag_data_received_cb(GtkWidget *widget,
+ GdkDragContext *context,
+--- 2114,2119 ----
+***************
+*** 2109,2115 ****
+ GtkSelectionData *data,
+ guint info,
+ guint time_,
+! gpointer user_data)
+ {
+ GdkModifierType state;
+
+--- 2122,2128 ----
+ GtkSelectionData *data,
+ guint info,
+ guint time_,
+! gpointer user_data UNUSED)
+ {
+ GdkModifierType state;
+
+***************
+*** 2143,2149 ****
+ * be abandoned and pop up a dialog asking the user for confirmation if
+ * necessary.
+ */
+- /*ARGSUSED0*/
+ static void
+ sm_client_check_changed_any(GnomeClient *client,
+ gint key,
+--- 2156,2161 ----
+***************
+*** 2251,2257 ****
+ * for confirmation if necessary. Save the current editing session and tell
+ * the session manager how to restart Vim.
+ */
+- /*ARGSUSED1*/
+ static gboolean
+ sm_client_save_yourself(GnomeClient *client,
+ gint phase,
+--- 2263,2268 ----
+***************
+*** 2339,2345 ****
+ * here since "save_yourself" has been emitted before (unless serious trouble
+ * is happening).
+ */
+- /*ARGSUSED0*/
+ static void
+ sm_client_die(GnomeClient *client, gpointer data)
+ {
+--- 2350,2355 ----
+***************
+*** 2379,2388 ****
+ /*
+ * GTK tells us that XSMP needs attention
+ */
+- /*ARGSUSED*/
+ static gboolean
+ local_xsmp_handle_requests(source, condition, data)
+! GIOChannel *source;
+ GIOCondition condition;
+ gpointer data;
+ {
+--- 2389,2397 ----
+ /*
+ * GTK tells us that XSMP needs attention
+ */
+ static gboolean
+ local_xsmp_handle_requests(source, condition, data)
+! GIOChannel *source UNUSED;
+ GIOCondition condition;
+ gpointer data;
+ {
+***************
+*** 2480,2495 ****
+ * WM_SAVE_YOURSELF hack it actually stores the session... And yes,
+ * it should work with KDE as well.
+ */
+- /*ARGSUSED1*/
+ static GdkFilterReturn
+! global_event_filter(GdkXEvent *xev, GdkEvent *event, gpointer data)
+ {
+ XEvent *xevent = (XEvent *)xev;
+
+ if (xevent != NULL
+ && xevent->type == ClientMessage
+ && xevent->xclient.message_type == GET_X_ATOM(wm_protocols_atom)
+! && xevent->xclient.data.l[0] == GET_X_ATOM(save_yourself_atom))
+ {
+ out_flush();
+ ml_sync_all(FALSE, FALSE); /* preserve all swap files */
+--- 2489,2506 ----
+ * WM_SAVE_YOURSELF hack it actually stores the session... And yes,
+ * it should work with KDE as well.
+ */
+ static GdkFilterReturn
+! global_event_filter(GdkXEvent *xev,
+! GdkEvent *event UNUSED,
+! gpointer data UNUSED)
+ {
+ XEvent *xevent = (XEvent *)xev;
+
+ if (xevent != NULL
+ && xevent->type == ClientMessage
+ && xevent->xclient.message_type == GET_X_ATOM(wm_protocols_atom)
+! && (long_u)xevent->xclient.data.l[0]
+! == GET_X_ATOM(save_yourself_atom))
+ {
+ out_flush();
+ ml_sync_all(FALSE, FALSE); /* preserve all swap files */
+***************
+*** 2512,2518 ****
+ /*
+ * GDK handler for X ClientMessage events.
+ */
+- /*ARGSUSED2*/
+ static GdkFilterReturn
+ gdk_wm_protocols_filter(GdkXEvent *xev, GdkEvent *event, gpointer data)
+ {
+--- 2523,2528 ----
+***************
+*** 2558,2566 ****
+ /*
+ * Setup the window icon & xcmdsrv comm after the main window has been realized.
+ */
+- /*ARGSUSED*/
+ static void
+! mainwin_realize(GtkWidget *widget, gpointer data)
+ {
+ /* If you get an error message here, you still need to unpack the runtime
+ * archive! */
+--- 2568,2575 ----
+ /*
+ * Setup the window icon & xcmdsrv comm after the main window has been realized.
+ */
+ static void
+! mainwin_realize(GtkWidget *widget UNUSED, gpointer data UNUSED)
+ {
+ /* If you get an error message here, you still need to unpack the runtime
+ * archive! */
+***************
+*** 2712,2722 ****
+ }
+
+ #ifdef HAVE_GTK_MULTIHEAD
+- /*ARGSUSED1*/
+ static void
+ mainwin_screen_changed_cb(GtkWidget *widget,
+! GdkScreen *previous_screen,
+! gpointer data)
+ {
+ if (!gtk_widget_has_screen(widget))
+ return;
+--- 2721,2730 ----
+ }
+
+ #ifdef HAVE_GTK_MULTIHEAD
+ static void
+ mainwin_screen_changed_cb(GtkWidget *widget,
+! GdkScreen *previous_screen UNUSED,
+! gpointer data UNUSED)
+ {
+ if (!gtk_widget_has_screen(widget))
+ return;
+***************
+*** 2757,2765 ****
+ * Don't try to set any VIM scrollbar sizes anywhere here. I'm relying on the
+ * fact that the main VIM engine doesn't take them into account anywhere.
+ */
+- /*ARGSUSED1*/
+ static void
+! drawarea_realize_cb(GtkWidget *widget, gpointer data)
+ {
+ GtkWidget *sbar;
+
+--- 2765,2772 ----
+ * Don't try to set any VIM scrollbar sizes anywhere here. I'm relying on the
+ * fact that the main VIM engine doesn't take them into account anywhere.
+ */
+ static void
+! drawarea_realize_cb(GtkWidget *widget, gpointer data UNUSED)
+ {
+ GtkWidget *sbar;
+
+***************
+*** 2789,2797 ****
+ /*
+ * Properly clean up on shutdown.
+ */
+- /*ARGSUSED0*/
+ static void
+! drawarea_unrealize_cb(GtkWidget *widget, gpointer data)
+ {
+ /* Don't write messages to the GUI anymore */
+ full_screen = FALSE;
+--- 2796,2803 ----
+ /*
+ * Properly clean up on shutdown.
+ */
+ static void
+! drawarea_unrealize_cb(GtkWidget *widget UNUSED, gpointer data UNUSED)
+ {
+ /* Don't write messages to the GUI anymore */
+ full_screen = FALSE;
+***************
+*** 2827,2837 ****
+ #endif
+ }
+
+- /*ARGSUSED0*/
+ static void
+! drawarea_style_set_cb(GtkWidget *widget,
+! GtkStyle *previous_style,
+! gpointer data)
+ {
+ gui_mch_new_colors();
+ }
+--- 2833,2842 ----
+ #endif
+ }
+
+ static void
+! drawarea_style_set_cb(GtkWidget *widget UNUSED,
+! GtkStyle *previous_style UNUSED,
+! gpointer data UNUSED)
+ {
+ gui_mch_new_colors();
+ }
+***************
+*** 2840,2848 ****
+ * Callback routine for the "delete_event" signal on the toplevel window.
+ * Tries to vim gracefully, or refuses to exit with changed buffers.
+ */
+- /*ARGSUSED*/
+ static gint
+! delete_event_cb(GtkWidget *widget, GdkEventAny *event, gpointer data)
+ {
+ gui_shell_closed();
+ return TRUE;
+--- 2845,2854 ----
+ * Callback routine for the "delete_event" signal on the toplevel window.
+ * Tries to vim gracefully, or refuses to exit with changed buffers.
+ */
+ static gint
+! delete_event_cb(GtkWidget *widget UNUSED,
+! GdkEventAny *event UNUSED,
+! gpointer data UNUSED)
+ {
+ gui_shell_closed();
+ return TRUE;
+***************
+*** 2964,2970 ****
+
+ /* At start-up, don't try to set the hints until the initial
+ * values have been used (those that dictate our initial size)
+! * Let forced (i.e., correct) values thruogh always.
+ */
+ if (!(force_width && force_height) && init_window_hints_state > 0)
+ {
+--- 2970,2976 ----
+
+ /* At start-up, don't try to set the hints until the initial
+ * values have been used (those that dictate our initial size)
+! * Let forced (i.e., correct) values through always.
+ */
+ if (!(force_width && force_height) && init_window_hints_state > 0)
+ {
+***************
+*** 3142,3150 ****
+ /*
+ * Handle selecting an item in the tab line popup menu.
+ */
+- /*ARGSUSED*/
+ static void
+! tabline_menu_handler(GtkMenuItem *item, gpointer user_data)
+ {
+ /* Add the string cmd into input buffer */
+ send_tabline_menu_event(clicked_page, (int)(long)user_data);
+--- 3148,3155 ----
+ /*
+ * Handle selecting an item in the tab line popup menu.
+ */
+ static void
+! tabline_menu_handler(GtkMenuItem *item UNUSED, gpointer user_data)
+ {
+ /* Add the string cmd into input buffer */
+ send_tabline_menu_event(clicked_page, (int)(long)user_data);
+***************
+*** 3244,3256 ****
+ /*
+ * Handle selecting one of the tabs.
+ */
+- /*ARGSUSED*/
+ static void
+ on_select_tab(
+! GtkNotebook *notebook,
+! GtkNotebookPage *page,
+ gint idx,
+! gpointer data)
+ {
+ if (!ignore_tabline_evt)
+ {
+--- 3249,3260 ----
+ /*
+ * Handle selecting one of the tabs.
+ */
+ static void
+ on_select_tab(
+! GtkNotebook *notebook UNUSED,
+! GtkNotebookPage *page UNUSED,
+ gint idx,
+! gpointer data UNUSED)
+ {
+ if (!ignore_tabline_evt)
+ {
+***************
+*** 3784,3790 ****
+ #endif
+
+ if (gtk_socket_id != 0)
+! /* make sure keybord input can go to the drawarea */
+ GTK_WIDGET_SET_FLAGS(gui.drawarea, GTK_CAN_FOCUS);
+
+ /*
+--- 3788,3794 ----
+ #endif
+
+ if (gtk_socket_id != 0)
+! /* make sure keyboard input can go to the drawarea */
+ GTK_WIDGET_SET_FLAGS(gui.drawarea, GTK_CAN_FOCUS);
+
+ /*
+***************
+*** 3922,3931 ****
+ /*
+ * This signal informs us about the need to rearrange our sub-widgets.
+ */
+- /*ARGSUSED*/
+ static gint
+! form_configure_event(GtkWidget *widget, GdkEventConfigure *event,
+! gpointer data)
+ {
+ int usable_height = event->height;
+
+--- 3926,3935 ----
+ /*
+ * This signal informs us about the need to rearrange our sub-widgets.
+ */
+ static gint
+! form_configure_event(GtkWidget *widget UNUSED,
+! GdkEventConfigure *event,
+! gpointer data UNUSED)
+ {
+ int usable_height = event->height;
+
+***************
+*** 3948,3956 ****
+ * We can't do much more here than to trying to preserve what had been done,
+ * since the window is already inevitably going away.
+ */
+- /*ARGSUSED0*/
+ static void
+! mainwin_destroy_cb(GtkObject *object, gpointer data)
+ {
+ /* Don't write messages to the GUI anymore */
+ full_screen = FALSE;
+--- 3952,3959 ----
+ * We can't do much more here than to trying to preserve what had been done,
+ * since the window is already inevitably going away.
+ */
+ static void
+! mainwin_destroy_cb(GtkObject *object UNUSED, gpointer data UNUSED)
+ {
+ /* Don't write messages to the GUI anymore */
+ full_screen = FALSE;
+***************
+*** 3980,3988 ****
+ * scrollbar init.), actually do the standard hinst and stop the timer.
+ * We'll not let the default hints be set while this timer's active.
+ */
+- /*ARGSUSED*/
+ static gboolean
+! check_startup_plug_hints(gpointer data)
+ {
+ if (init_window_hints_state == 1)
+ {
+--- 3983,3990 ----
+ * scrollbar init.), actually do the standard hinst and stop the timer.
+ * We'll not let the default hints be set while this timer's active.
+ */
+ static gboolean
+! check_startup_plug_hints(gpointer data UNUSED)
+ {
+ if (init_window_hints_state == 1)
+ {
+***************
+*** 4055,4061 ****
+ Columns = w;
+ if (mask & HeightValue)
+ {
+! if (p_window > h - 1 || !option_was_set((char_u *)"window"))
+ p_window = h - 1;
+ Rows = h;
+ }
+--- 4057,4063 ----
+ Columns = w;
+ if (mask & HeightValue)
+ {
+! if (p_window > (long)h - 1 || !option_was_set((char_u *)"window"))
+ p_window = h - 1;
+ Rows = h;
+ }
+***************
+*** 4229,4237 ****
+ }
+
+
+- /*ARGSUSED0*/
+ void
+! gui_mch_exit(int rc)
+ {
+ if (gui.mainwin != NULL)
+ gtk_widget_destroy(gui.mainwin);
+--- 4231,4238 ----
+ }
+
+
+ void
+! gui_mch_exit(int rc UNUSED)
+ {
+ if (gui.mainwin != NULL)
+ gtk_widget_destroy(gui.mainwin);
+***************
+*** 4286,4292 ****
+ * report the new size through form_configure_event(). That caused the window
+ * layout to be messed up.
+ */
+- /*ARGSUSED0*/
+ static gboolean
+ force_shell_resize_idle(gpointer data)
+ {
+--- 4287,4292 ----
+***************
+*** 4314,4325 ****
+ /*
+ * Set the windows size.
+ */
+- /*ARGSUSED2*/
+ void
+ gui_mch_set_shellsize(int width, int height,
+! int min_width, int min_height,
+! int base_width, int base_height,
+! int direction)
+ {
+ #ifndef HAVE_GTK2
+ /* Hack: When the form already is at the desired size, the window might
+--- 4314,4324 ----
+ /*
+ * Set the windows size.
+ */
+ void
+ gui_mch_set_shellsize(int width, int height,
+! int min_width UNUSED, int min_height UNUSED,
+! int base_width UNUSED, int base_height UNUSED,
+! int direction UNUSED)
+ {
+ #ifndef HAVE_GTK2
+ /* Hack: When the form already is at the desired size, the window might
+***************
+*** 4413,4421 ****
+ }
+
+ #if defined(FEAT_TITLE) || defined(PROTO)
+- /*ARGSUSED*/
+ void
+! gui_mch_settitle(char_u *title, char_u *icon)
+ {
+ # ifdef HAVE_GTK2
+ if (title != NULL && output_conv.vc_type != CONV_NONE)
+--- 4412,4419 ----
+ }
+
+ #if defined(FEAT_TITLE) || defined(PROTO)
+ void
+! gui_mch_settitle(char_u *title, char_u *icon UNUSED)
+ {
+ # ifdef HAVE_GTK2
+ if (title != NULL && output_conv.vc_type != CONV_NONE)
+***************
+*** 4493,4499 ****
+ * Get a font structure for highlighting.
+ * "cbdata" is a pointer to the global gui structure.
+ */
+- /*ARGSUSED*/
+ static void
+ font_sel_ok(GtkWidget *wgt, gpointer cbdata)
+ {
+--- 4491,4496 ----
+***************
+*** 4509,4515 ****
+ gtk_main_quit();
+ }
+
+- /*ARGSUSED*/
+ static void
+ font_sel_cancel(GtkWidget *wgt, gpointer cbdata)
+ {
+--- 4506,4511 ----
+***************
+*** 4520,4526 ****
+ gtk_main_quit();
+ }
+
+- /*ARGSUSED*/
+ static void
+ font_sel_destroy(GtkWidget *wgt, gpointer cbdata)
+ {
+--- 4516,4521 ----
+***************
+*** 4620,4626 ****
+ /*
+ * Try to load the requested fontset.
+ */
+- /*ARGSUSED2*/
+ GuiFontset
+ gui_mch_get_fontset(char_u *name, int report_error, int fixed_width)
+ {
+--- 4615,4620 ----
+***************
+*** 4863,4869 ****
+ styled_font[1] = &gui.ital_font;
+ styled_font[2] = &gui.boldital_font;
+
+! /* First free whatever was freviously there. */
+ for (i = 0; i < 3; ++i)
+ if (*styled_font[i])
+ {
+--- 4857,4863 ----
+ styled_font[1] = &gui.ital_font;
+ styled_font[2] = &gui.boldital_font;
+
+! /* First free whatever was previously there. */
+ for (i = 0; i < 3; ++i)
+ if (*styled_font[i])
+ {
+***************
+*** 5012,5020 ****
+ * Initialize Vim to use the font or fontset with the given name.
+ * Return FAIL if the font could not be loaded, OK otherwise.
+ */
+- /*ARGSUSED1*/
+ int
+! gui_mch_init_font(char_u *font_name, int fontset)
+ {
+ #ifdef HAVE_GTK2
+ PangoFontDescription *font_desc;
+--- 5006,5013 ----
+ * Initialize Vim to use the font or fontset with the given name.
+ * Return FAIL if the font could not be loaded, OK otherwise.
+ */
+ int
+! gui_mch_init_font(char_u *font_name, int fontset UNUSED)
+ {
+ #ifdef HAVE_GTK2
+ PangoFontDescription *font_desc;
+***************
+*** 5326,5334 ****
+ /*
+ * Return the name of font "font" in allocated memory.
+ */
+- /*ARGSUSED*/
+ char_u *
+! gui_mch_get_fontname(GuiFont font, char_u *name)
+ {
+ # ifdef HAVE_GTK2
+ if (font != NOFONT)
+--- 5319,5326 ----
+ /*
+ * Return the name of font "font" in allocated memory.
+ */
+ char_u *
+! gui_mch_get_fontname(GuiFont font, char_u *name UNUSED)
+ {
+ # ifdef HAVE_GTK2
+ if (font != NOFONT)
+***************
+*** 5732,5738 ****
+ {
+ int i;
+ int offset;
+! const static int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
+ int y = FILL_Y(row + 1) - 1;
+
+ /* Undercurl: draw curl at the bottom of the character cell. */
+--- 5724,5730 ----
+ {
+ int i;
+ int offset;
+! static const int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
+ int y = FILL_Y(row + 1) - 1;
+
+ /* Undercurl: draw curl at the bottom of the character cell. */
+***************
+*** 6402,6408 ****
+ /*
+ * Callback function, used when data is available on the SNiFF connection.
+ */
+- /* ARGSUSED */
+ static void
+ sniff_request_cb(
+ gpointer data,
+--- 6394,6399 ----
+***************
+*** 6711,6719 ****
+ /*
+ * Disown the selection.
+ */
+- /*ARGSUSED*/
+ void
+! clip_mch_lose_selection(VimClipboard *cbd)
+ {
+ /* WEIRD: when using NULL to actually disown the selection, we lose the
+ * selection the first time we own it. */
+--- 6702,6709 ----
+ /*
+ * Disown the selection.
+ */
+ void
+! clip_mch_lose_selection(VimClipboard *cbd UNUSED)
+ {
+ /* WEIRD: when using NULL to actually disown the selection, we lose the
+ * selection the first time we own it. */
+***************
+*** 6741,6749 ****
+ * Send the current selection to the clipboard. Do nothing for X because we
+ * will fill in the selection only when requested by another app.
+ */
+- /*ARGSUSED*/
+ void
+! clip_mch_set_selection(VimClipboard *cbd)
+ {
+ }
+
+--- 6731,6738 ----
+ * Send the current selection to the clipboard. Do nothing for X because we
+ * will fill in the selection only when requested by another app.
+ */
+ void
+! clip_mch_set_selection(VimClipboard *cbd UNUSED)
+ {
+ }
+
+***************
+*** 6950,6956 ****
+ else
+ id &= ~1; /* they are always even (why?) */
+ }
+! else if (shape < sizeof(mshape_ids) / sizeof(int))
+ id = mshape_ids[shape];
+ else
+ return;
+--- 6939,6945 ----
+ else
+ id &= ~1; /* they are always even (why?) */
+ }
+! else if (shape < (int)(sizeof(mshape_ids) / sizeof(int)))
+ id = mshape_ids[shape];
+ else
+ return;
+*** ../vim-7.2.180/src/gui_gtk_f.c 2007-05-10 19:50:33.000000000 +0200
+--- src/gui_gtk_f.c 2009-05-17 15:48:51.000000000 +0200
+***************
+*** 227,240 ****
+
+ if (!form_type)
+ {
+! GtkTypeInfo form_info =
+! {
+! "GtkForm",
+! sizeof(GtkForm),
+! sizeof(GtkFormClass),
+! (GtkClassInitFunc) gtk_form_class_init,
+! (GtkObjectInitFunc) gtk_form_init
+! };
+
+ form_type = gtk_type_unique(GTK_TYPE_CONTAINER, &form_info);
+ }
+--- 227,239 ----
+
+ if (!form_type)
+ {
+! GtkTypeInfo form_info;
+!
+! form_info.type_name = "GtkForm";
+! form_info.object_size = sizeof(GtkForm);
+! form_info.class_size = sizeof(GtkFormClass);
+! form_info.class_init_func = (GtkClassInitFunc)gtk_form_class_init;
+! form_info.object_init_func = (GtkObjectInitFunc)gtk_form_init;
+
+ form_type = gtk_type_unique(GTK_TYPE_CONTAINER, &form_info);
+ }
+***************
+*** 611,620 ****
+ }
+ }
+
+- /*ARGSUSED1*/
+ static void
+ gtk_form_forall(GtkContainer *container,
+! gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data)
+ {
+--- 610,618 ----
+ }
+ }
+
+ static void
+ gtk_form_forall(GtkContainer *container,
+! gboolean include_internals UNUSED,
+ GtkCallback callback,
+ gpointer callback_data)
+ {
+***************
+*** 786,794 ****
+ * them or discards them, depending on whether we are obscured
+ * or not.
+ */
+- /*ARGSUSED1*/
+ static GdkFilterReturn
+! gtk_form_filter(GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
+ {
+ XEvent *xevent;
+ GtkForm *form;
+--- 784,791 ----
+ * them or discards them, depending on whether we are obscured
+ * or not.
+ */
+ static GdkFilterReturn
+! gtk_form_filter(GdkXEvent *gdk_xevent, GdkEvent *event UNUSED, gpointer data)
+ {
+ XEvent *xevent;
+ GtkForm *form;
+***************
+*** 821,829 ****
+ * there is no corresponding event in GTK, so we have
+ * to get the events from a filter
+ */
+- /*ARGSUSED1*/
+ static GdkFilterReturn
+! gtk_form_main_filter(GdkXEvent *gdk_xevent, GdkEvent *event, gpointer data)
+ {
+ XEvent *xevent;
+ GtkForm *form;
+--- 818,827 ----
+ * there is no corresponding event in GTK, so we have
+ * to get the events from a filter
+ */
+ static GdkFilterReturn
+! gtk_form_main_filter(GdkXEvent *gdk_xevent,
+! GdkEvent *event UNUSED,
+! gpointer data)
+ {
+ XEvent *xevent;
+ GtkForm *form;
+***************
+*** 911,919 ****
+ #endif
+ }
+
+- /*ARGSUSED0*/
+ static void
+! gtk_form_child_map(GtkWidget *widget, gpointer user_data)
+ {
+ GtkFormChild *child;
+
+--- 909,916 ----
+ #endif
+ }
+
+ static void
+! gtk_form_child_map(GtkWidget *widget UNUSED, gpointer user_data)
+ {
+ GtkFormChild *child;
+
+***************
+*** 923,931 ****
+ gdk_window_show(child->window);
+ }
+
+- /*ARGSUSED0*/
+ static void
+! gtk_form_child_unmap(GtkWidget *widget, gpointer user_data)
+ {
+ GtkFormChild *child;
+
+--- 920,927 ----
+ gdk_window_show(child->window);
+ }
+
+ static void
+! gtk_form_child_unmap(GtkWidget *widget UNUSED, gpointer user_data)
+ {
+ GtkFormChild *child;
+
+*** ../vim-7.2.180/src/gui_beval.c 2009-03-18 12:20:35.000000000 +0100
+--- src/gui_beval.c 2009-05-17 15:53:22.000000000 +0200
+***************
+*** 15,21 ****
+ /*
+ * Common code, invoked when the mouse is resting for a moment.
+ */
+- /*ARGSUSED*/
+ void
+ general_beval_cb(beval, state)
+ BalloonEval *beval;
+--- 15,20 ----
+***************
+*** 551,559 ****
+ return FALSE; /* continue emission */
+ }
+
+- /*ARGSUSED*/
+ static gint
+! mainwin_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
+ {
+ BalloonEval *beval = (BalloonEval *)data;
+
+--- 550,557 ----
+ return FALSE; /* continue emission */
+ }
+
+ static gint
+! mainwin_event_cb(GtkWidget *widget UNUSED, GdkEvent *event, gpointer data)
+ {
+ BalloonEval *beval = (BalloonEval *)data;
+
+***************
+*** 663,671 ****
+ return FALSE; /* don't call me again */
+ }
+
+- /*ARGSUSED2*/
+ static gint
+! balloon_expose_event_cb(GtkWidget *widget, GdkEventExpose *event, gpointer data)
+ {
+ gtk_paint_flat_box(widget->style, widget->window,
+ GTK_STATE_NORMAL, GTK_SHADOW_OUT,
+--- 661,670 ----
+ return FALSE; /* don't call me again */
+ }
+
+ static gint
+! balloon_expose_event_cb(GtkWidget *widget,
+! GdkEventExpose *event,
+! gpointer data UNUSED)
+ {
+ gtk_paint_flat_box(widget->style, widget->window,
+ GTK_STATE_NORMAL, GTK_SHADOW_OUT,
+***************
+*** 676,682 ****
+ }
+
+ # ifndef HAVE_GTK2
+- /*ARGSUSED2*/
+ static void
+ balloon_draw_cb(GtkWidget *widget, GdkRectangle *area, gpointer data)
+ {
+--- 675,680 ----
+***************
+*** 726,732 ****
+ /*
+ * The X event handler. All it does is call the real event handler.
+ */
+- /*ARGSUSED*/
+ static void
+ pointerEventEH(w, client_data, event, unused)
+ Widget w;
+--- 724,729 ----
+***************
+*** 877,883 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+ timerRoutine(dx, id)
+ XtPointer dx;
+--- 874,879 ----
+*** ../vim-7.2.180/src/netbeans.c 2009-02-21 22:12:43.000000000 +0100
+--- src/netbeans.c 2009-05-17 15:51:14.000000000 +0200
+***************
+*** 700,706 ****
+ /*
+ * Read and process a command from netbeans.
+ */
+- /*ARGSUSED*/
+ #if defined(FEAT_GUI_W32) || defined(PROTO)
+ /* Use this one when generating prototypes, the others are static. */
+ void
+--- 700,705 ----
+***************
+*** 708,719 ****
+ #else
+ # ifdef FEAT_GUI_MOTIF
+ static void
+! messageFromNetbeans(XtPointer clientData, int *unused1, XtInputId *unused2)
+ # endif
+ # ifdef FEAT_GUI_GTK
+ static void
+! messageFromNetbeans(gpointer clientData, gint unused1,
+! GdkInputCondition unused2)
+ # endif
+ #endif
+ {
+--- 707,721 ----
+ #else
+ # ifdef FEAT_GUI_MOTIF
+ static void
+! messageFromNetbeans(XtPointer clientData UNUSED
+! int *unused1 UNUSED,
+! XtInputId *unused2 UNUSED)
+ # endif
+ # ifdef FEAT_GUI_GTK
+ static void
+! messageFromNetbeans(gpointer clientData UNUSED,
+! gint unused1 UNUSED,
+! GdkInputCondition unused2 UNUSED)
+ # endif
+ #endif
+ {
+***************
+*** 1585,1591 ****
+--- 1587,1595 ----
+ buf_delsign(buf->bufp, id);
+ }
+ else
++ {
+ nbdebug((" No sign on line %d\n", i));
++ }
+ }
+
+ nbdebug((" Deleting lines %d through %d\n", del_from_lnum, del_to_lnum));
+***************
+*** 2144,2150 ****
+--- 2148,2156 ----
+ #endif
+ }
+ else
++ {
+ nbdebug((" BAD POSITION in setDot: %s\n", s));
++ }
+
+ /* gui_update_cursor(TRUE, FALSE); */
+ /* update_curbuf(NOT_VALID); */
+***************
+*** 2744,2754 ****
+ * cursor and sends it to the debugger for evaluation. The debugger should
+ * respond with a showBalloon command when there is a useful result.
+ */
+- /*ARGSUSED*/
+ void
+ netbeans_beval_cb(
+ BalloonEval *beval,
+! int state)
+ {
+ win_T *wp;
+ char_u *text;
+--- 2750,2759 ----
+ * cursor and sends it to the debugger for evaluation. The debugger should
+ * respond with a showBalloon command when there is a useful result.
+ */
+ void
+ netbeans_beval_cb(
+ BalloonEval *beval,
+! int state UNUSED)
+ {
+ win_T *wp;
+ char_u *text;
+***************
+*** 3061,3069 ****
+ /*
+ * Send netbeans an unmodufied command.
+ */
+- /*ARGSUSED*/
+ void
+! netbeans_unmodified(buf_T *bufp)
+ {
+ #if 0
+ char_u buf[128];
+--- 3066,3073 ----
+ /*
+ * Send netbeans an unmodufied command.
+ */
+ void
+! netbeans_unmodified(buf_T *bufp UNUSED)
+ {
+ #if 0
+ char_u buf[128];
+***************
+*** 3370,3382 ****
+ * buf->signmapused[] maps buffer-local annotation IDs to an index in
+ * globalsignmap[].
+ */
+- /*ARGSUSED*/
+ static void
+ addsigntype(
+ nbbuf_T *buf,
+ int typeNum,
+ char_u *typeName,
+! char_u *tooltip,
+ char_u *glyphFile,
+ int use_fg,
+ int fg,
+--- 3374,3385 ----
+ * buf->signmapused[] maps buffer-local annotation IDs to an index in
+ * globalsignmap[].
+ */
+ static void
+ addsigntype(
+ nbbuf_T *buf,
+ int typeNum,
+ char_u *typeName,
+! char_u *tooltip UNUSED,
+ char_u *glyphFile,
+ int use_fg,
+ int fg,
+*** ../vim-7.2.180/src/version.c 2009-05-17 13:30:58.000000000 +0200
+--- src/version.c 2009-05-17 16:07:26.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 181,
+ /**/
+
+--
+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.182 b/source/ap/vim/patches/7.2.182
new file mode 100644
index 000000000..2df649955
--- /dev/null
+++ b/source/ap/vim/patches/7.2.182
@@ -0,0 +1,66 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.182
+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.182 (after 7.2.181)
+Problem: Compilation problems after previous patch for Motif. Gvim with
+ GTK crashes on startup.
+Solution: Add comma. Init form structure to zeroes.
+Files: src/netbeans.c, src/gui_gtk_f.c
+
+
+*** ../vim-7.2.181/src/netbeans.c 2009-05-17 16:23:20.000000000 +0200
+--- src/netbeans.c 2009-05-17 22:34:11.000000000 +0200
+***************
+*** 707,713 ****
+ #else
+ # ifdef FEAT_GUI_MOTIF
+ static void
+! messageFromNetbeans(XtPointer clientData UNUSED
+ int *unused1 UNUSED,
+ XtInputId *unused2 UNUSED)
+ # endif
+--- 707,713 ----
+ #else
+ # ifdef FEAT_GUI_MOTIF
+ static void
+! messageFromNetbeans(XtPointer clientData UNUSED,
+ int *unused1 UNUSED,
+ XtInputId *unused2 UNUSED)
+ # endif
+*** ../vim-7.2.181/src/gui_gtk_f.c 2009-05-17 16:23:20.000000000 +0200
+--- src/gui_gtk_f.c 2009-05-17 23:20:41.000000000 +0200
+***************
+*** 229,234 ****
+--- 229,235 ----
+ {
+ GtkTypeInfo form_info;
+
++ vim_memset(&form_info, 0, sizeof(form_info));
+ form_info.type_name = "GtkForm";
+ form_info.object_size = sizeof(GtkForm);
+ form_info.class_size = sizeof(GtkFormClass);
+*** ../vim-7.2.181/src/version.c 2009-05-17 16:23:20.000000000 +0200
+--- src/version.c 2009-05-17 23:21:41.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 182,
+ /**/
+
+--
+We apologise again for the fault in the subtitles. Those responsible for
+sacking the people who have just been sacked have been sacked.
+ "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.183 b/source/ap/vim/patches/7.2.183
new file mode 100644
index 000000000..ad1052db0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.183
@@ -0,0 +1,1846 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.183
+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.183
+Problem: Configure problem for sys/sysctl.h on OpenBSD. (Dasn)
+Solution: Add separate check for this header file. Also switch to newer
+ version of autoconf.
+Files: src/auto/configure, src/configure.in
+
+
+*** ../vim-7.2.182/src/auto/configure 2009-05-14 22:19:19.000000000 +0200
+--- src/auto/configure 2009-05-16 13:32:16.000000000 +0200
+***************
+*** 1,6 ****
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+! # Generated by GNU Autoconf 2.62.
+ #
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+ # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+--- 1,6 ----
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+! # Generated by GNU Autoconf 2.63.
+ #
+ # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+ # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+***************
+*** 635,772 ****
+ # 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
+! datarootdir
+! datadir
+! sysconfdir
+! sharedstatedir
+! localstatedir
+! includedir
+! oldincludedir
+! docdir
+! infodir
+! htmldir
+! dvidir
+! pdfdir
+! psdir
+! libdir
+! localedir
+! mandir
+! DEFS
+! ECHO_C
+! ECHO_N
+! ECHO_T
+! LIBS
+! build_alias
+! host_alias
+! target_alias
+! SET_MAKE
+! CC
+! CFLAGS
+! LDFLAGS
+! CPPFLAGS
+! ac_ct_CC
+! EXEEXT
+! OBJEXT
+! CPP
+! GREP
+! EGREP
+! AWK
+! STRIP
+! CPP_MM
+! OS_EXTRA_SRC
+! OS_EXTRA_OBJ
+! VIMNAME
+! EXNAME
+! VIEWNAME
+! line_break
+! dovimdiff
+! dogvimdiff
+! compiledby
+! vi_cv_path_mzscheme
+! MZSCHEME_SRC
+! MZSCHEME_OBJ
+! MZSCHEME_PRO
+! MZSCHEME_LIBS
+! MZSCHEME_CFLAGS
+! vi_cv_path_perl
+! vi_cv_perllib
+! shrpenv
+! PERL_SRC
+! PERL_OBJ
+! PERL_PRO
+! PERL_CFLAGS
+! PERL_LIBS
+! vi_cv_path_python
+! PYTHON_CONFDIR
+! PYTHON_LIBS
+! PYTHON_GETPATH_CFLAGS
+! PYTHON_CFLAGS
+! PYTHON_SRC
+! PYTHON_OBJ
+! vi_cv_path_tcl
+! TCL_SRC
+! TCL_OBJ
+! TCL_PRO
+! TCL_CFLAGS
+! TCL_LIBS
+! vi_cv_path_ruby
+! RUBY_SRC
+! RUBY_OBJ
+! RUBY_PRO
+! RUBY_CFLAGS
+! RUBY_LIBS
+! WORKSHOP_SRC
+! WORKSHOP_OBJ
+! NETBEANS_SRC
+! NETBEANS_OBJ
+! SNIFF_SRC
+! SNIFF_OBJ
+! xmkmfpath
+! XMKMF
+! X_CFLAGS
+! X_PRE_LIBS
+! X_LIBS
+! X_EXTRA_LIBS
+! X_LIB
+! GTK_CONFIG
+! GTK12_CONFIG
+! PKG_CONFIG
+! GTK_CFLAGS
+! GTK_LIBS
+! GTK_LIBNAME
+! GNOME_LIBS
+! GNOME_LIBDIR
+! GNOME_INCLUDEDIR
+! GNOME_CONFIG
+! MOTIF_LIBNAME
+! NARROW_PROTO
+! GUI_INC_LOC
+! GUI_LIB_LOC
+! GUITYPE
+! GUI_X_LIBS
+! HANGULIN_SRC
+! HANGULIN_OBJ
+! TAGPRG
+! INSTALL_LANGS
+! INSTALL_TOOL_LANGS
+! MSGFMT
+! MAKEMO
+! DEPEND_CFLAGS_FILTER
+ LIBOBJS
+! LTLIBOBJS'
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
+--- 635,772 ----
+ # include <unistd.h>
+ #endif"
+
+! ac_subst_vars='LTLIBOBJS
+ LIBOBJS
+! DEPEND_CFLAGS_FILTER
+! MAKEMO
+! MSGFMT
+! INSTALL_TOOL_LANGS
+! INSTALL_LANGS
+! TAGPRG
+! HANGULIN_OBJ
+! HANGULIN_SRC
+! GUI_X_LIBS
+! GUITYPE
+! GUI_LIB_LOC
+! GUI_INC_LOC
+! NARROW_PROTO
+! MOTIF_LIBNAME
+! GNOME_CONFIG
+! GNOME_INCLUDEDIR
+! GNOME_LIBDIR
+! GNOME_LIBS
+! GTK_LIBNAME
+! GTK_LIBS
+! GTK_CFLAGS
+! PKG_CONFIG
+! GTK12_CONFIG
+! GTK_CONFIG
+! X_LIB
+! X_EXTRA_LIBS
+! X_LIBS
+! X_PRE_LIBS
+! X_CFLAGS
+! XMKMF
+! xmkmfpath
+! SNIFF_OBJ
+! SNIFF_SRC
+! NETBEANS_OBJ
+! NETBEANS_SRC
+! WORKSHOP_OBJ
+! WORKSHOP_SRC
+! RUBY_LIBS
+! RUBY_CFLAGS
+! RUBY_PRO
+! RUBY_OBJ
+! RUBY_SRC
+! vi_cv_path_ruby
+! TCL_LIBS
+! TCL_CFLAGS
+! TCL_PRO
+! TCL_OBJ
+! TCL_SRC
+! vi_cv_path_tcl
+! PYTHON_OBJ
+! PYTHON_SRC
+! PYTHON_CFLAGS
+! PYTHON_GETPATH_CFLAGS
+! PYTHON_LIBS
+! PYTHON_CONFDIR
+! vi_cv_path_python
+! PERL_LIBS
+! PERL_CFLAGS
+! PERL_PRO
+! PERL_OBJ
+! PERL_SRC
+! shrpenv
+! vi_cv_perllib
+! vi_cv_path_perl
+! MZSCHEME_CFLAGS
+! MZSCHEME_LIBS
+! MZSCHEME_PRO
+! MZSCHEME_OBJ
+! MZSCHEME_SRC
+! vi_cv_path_mzscheme
+! compiledby
+! dogvimdiff
+! dovimdiff
+! line_break
+! VIEWNAME
+! EXNAME
+! VIMNAME
+! OS_EXTRA_OBJ
+! OS_EXTRA_SRC
+! CPP_MM
+! STRIP
+! AWK
+! EGREP
+! GREP
+! CPP
+! OBJEXT
+! EXEEXT
+! ac_ct_CC
+! CPPFLAGS
+! LDFLAGS
+! CFLAGS
+! CC
+! SET_MAKE
+! target_alias
+! host_alias
+! build_alias
+! LIBS
+! ECHO_T
+! ECHO_N
+! ECHO_C
+! DEFS
+! mandir
+! localedir
+! libdir
+! psdir
+! pdfdir
+! dvidir
+! htmldir
+! infodir
+! docdir
+! oldincludedir
+! includedir
+! localstatedir
+! sharedstatedir
+! sysconfdir
+! datadir
+! datarootdir
+! libexecdir
+! sbindir
+! bindir
+! program_transform_name
+! prefix
+! exec_prefix
+! PACKAGE_BUGREPORT
+! PACKAGE_STRING
+! PACKAGE_VERSION
+! PACKAGE_TARNAME
+! PACKAGE_NAME
+! PATH_SEPARATOR
+! SHELL'
+ ac_subst_files=''
+ ac_user_opts='
+ enable_option_checking
+***************
+*** 1253,1261 ****
+ if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+! fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2
+ { (exit 1); exit 1; }; } ;;
+! *) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+ fi
+
+--- 1253,1261 ----
+ if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+! fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+ { (exit 1); exit 1; }; } ;;
+! *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+ fi
+
+***************
+*** 1308,1314 ****
+ ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ ac_ls_di=`ls -di .` &&
+ ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+! { $as_echo "$as_me: error: Working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+--- 1308,1314 ----
+ ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ ac_ls_di=`ls -di .` &&
+ ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+! { $as_echo "$as_me: error: working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+ test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+***************
+*** 1587,1593 ****
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ configure
+! generated by GNU Autoconf 2.62
+
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+--- 1587,1593 ----
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ configure
+! generated by GNU Autoconf 2.63
+
+ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+***************
+*** 1601,1607 ****
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by $as_me, which was
+! generated by GNU Autoconf 2.62. Invocation command line was
+
+ $ $0 $@
+
+--- 1601,1607 ----
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by $as_me, which was
+! generated by GNU Autoconf 2.63. Invocation command line was
+
+ $ $0 $@
+
+***************
+*** 1724,1731 ****
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+! *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+! $as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+--- 1724,1731 ----
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+! *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+! $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+***************
+*** 1928,1933 ****
+--- 1928,1935 ----
+ fi
+ done
+ if $ac_cache_corrupted; then
++ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+ $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+***************
+*** 2084,2095 ****
+ else
+ case $cross_compiling:$ac_tool_warned in
+ yes:)
+! { $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+! whose name does not start with the host triplet. If you think this
+! configuration is useful to you, please write to autoconf@gnu.org." >&5
+! $as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+! whose name does not start with the host triplet. If you think this
+! configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ ac_tool_warned=yes ;;
+ esac
+ CC=$ac_ct_CC
+--- 2086,2093 ----
+ else
+ case $cross_compiling:$ac_tool_warned in
+ yes:)
+! { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+! $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+ CC=$ac_ct_CC
+***************
+*** 2288,2299 ****
+ else
+ case $cross_compiling:$ac_tool_warned in
+ yes:)
+! { $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+! whose name does not start with the host triplet. If you think this
+! configuration is useful to you, please write to autoconf@gnu.org." >&5
+! $as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+! whose name does not start with the host triplet. If you think this
+! configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ ac_tool_warned=yes ;;
+ esac
+ CC=$ac_ct_CC
+--- 2286,2293 ----
+ else
+ case $cross_compiling:$ac_tool_warned in
+ yes:)
+! { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+! $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+ CC=$ac_ct_CC
+***************
+*** 2303,2313 ****
+ fi
+
+
+! test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+ See \`config.log' for more details." >&5
+ $as_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.
+ $as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+--- 2297,2309 ----
+ fi
+
+
+! test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+! { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+ See \`config.log' for more details." >&5
+ $as_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.
+ $as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+***************
+*** 2437,2447 ****
+ $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+ { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+ See \`config.log' for more details." >&5
+ $as_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
+--- 2433,2445 ----
+ $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+ See \`config.log' for more details." >&5
+ $as_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
+***************
+*** 2469,2481 ****
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+! { { $as_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
+ $as_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
+--- 2467,2481 ----
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+! { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+! { { $as_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
+ $as_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
+***************
+*** 2518,2528 ****
+ esac
+ done
+ else
+! { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+ See \`config.log' for more details." >&5
+ $as_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
+--- 2518,2530 ----
+ esac
+ done
+ else
+! { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+! { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+ See \`config.log' for more details." >&5
+ $as_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
+***************
+*** 2576,2586 ****
+ $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
+ { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+ See \`config.log' for more details." >&5
+ $as_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
+--- 2578,2590 ----
+ $as_echo "$as_me: failed program was:" >&5
+ sed 's/^/| /' conftest.$ac_ext >&5
+
++ { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
++ $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+ See \`config.log' for more details." >&5
+ $as_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
+***************
+*** 3148,3158 ****
+ if $ac_preproc_ok; then
+ :
+ else
+! { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+ See \`config.log' for more details." >&5
+ $as_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
+--- 3152,3164 ----
+ if $ac_preproc_ok; then
+ :
+ else
+! { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+! $as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+! { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+ See \`config.log' for more details." >&5
+ $as_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
+***************
+*** 4016,4023 ****
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 4022,4030 ----
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 4154,4160 ****
+ $as_echo "$ac_cv_header_Carbon_Carbon_h" >&6; }
+
+ fi
+! if test $ac_cv_header_Carbon_Carbon_h = yes; then
+ CARBON=yes
+ fi
+
+--- 4161,4167 ----
+ $as_echo "$ac_cv_header_Carbon_Carbon_h" >&6; }
+
+ fi
+! if test "x$ac_cv_header_Carbon_Carbon_h" = x""yes; then
+ CARBON=yes
+ fi
+
+***************
+*** 4484,4490 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
+ $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
+! if test $ac_cv_lib_selinux_is_selinux_enabled = yes; then
+ LIBS="$LIBS -lselinux"
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_SELINUX 1
+--- 4491,4497 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
+ $as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
+! if test "x$ac_cv_lib_selinux_is_selinux_enabled" = x""yes; then
+ LIBS="$LIBS -lselinux"
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_SELINUX 1
+***************
+*** 5891,5897 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
+ $as_echo "$ac_cv_lib_socket_socket" >&6; }
+! if test $ac_cv_lib_socket_socket = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBSOCKET 1
+ _ACEOF
+--- 5898,5904 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
+ $as_echo "$ac_cv_lib_socket_socket" >&6; }
+! if test "x$ac_cv_lib_socket_socket" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBSOCKET 1
+ _ACEOF
+***************
+*** 5966,5972 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+ $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+! if test $ac_cv_lib_nsl_gethostbyname = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBNSL 1
+ _ACEOF
+--- 5973,5979 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+ $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+! if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBNSL 1
+ _ACEOF
+***************
+*** 6203,6210 ****
+ have_x=disabled
+ else
+ case $x_includes,$x_libraries in #(
+! *\'*) { { $as_echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
+! $as_echo "$as_me: error: Cannot use X directory names containing '" >&2;}
+ { (exit 1); exit 1; }; };; #(
+ *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
+ $as_echo_n "(cached) " >&6
+--- 6210,6217 ----
+ have_x=disabled
+ else
+ case $x_includes,$x_libraries in #(
+! *\'*) { { $as_echo "$as_me:$LINENO: error: cannot use X directory names containing '" >&5
+! $as_echo "$as_me: error: cannot use X directory names containing '" >&2;}
+ { (exit 1); exit 1; }; };; #(
+ *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
+ $as_echo_n "(cached) " >&6
+***************
+*** 6242,6248 ****
+ *) 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
+--- 6249,6255 ----
+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+ esac
+ case $ac_im_usrlibdir in
+! /usr/lib | /usr/lib64 | /lib | /lib64) ;;
+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+ esac
+ fi
+***************
+*** 6682,6688 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+ $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+! if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+ fi
+
+--- 6689,6695 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+ $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+! if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+ fi
+
+***************
+*** 6752,6758 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+ $as_echo "$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"
+ fi
+
+--- 6759,6765 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+ $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+! if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+ fi
+
+***************
+*** 6924,6930 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+ $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+! if test $ac_cv_lib_nsl_gethostbyname = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+ fi
+
+--- 6931,6937 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+ $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+! if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+ fi
+
+***************
+*** 6994,7000 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+ $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+! if test $ac_cv_lib_bsd_gethostbyname = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+ fi
+
+--- 7001,7007 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+ $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+! if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+ fi
+
+***************
+*** 7160,7166 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+ $as_echo "$ac_cv_lib_socket_connect" >&6; }
+! if test $ac_cv_lib_socket_connect = yes; then
+ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+ fi
+
+--- 7167,7173 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+ $as_echo "$ac_cv_lib_socket_connect" >&6; }
+! if test "x$ac_cv_lib_socket_connect" = x""yes; then
+ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+ fi
+
+***************
+*** 7319,7325 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+ $as_echo "$ac_cv_lib_posix_remove" >&6; }
+! if test $ac_cv_lib_posix_remove = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+ fi
+
+--- 7326,7332 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+ $as_echo "$ac_cv_lib_posix_remove" >&6; }
+! if test "x$ac_cv_lib_posix_remove" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+ fi
+
+***************
+*** 7478,7484 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+ $as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+! if test $ac_cv_lib_ipc_shmat = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+ fi
+
+--- 7485,7491 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+ $as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+! if test "x$ac_cv_lib_ipc_shmat" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+ fi
+
+***************
+*** 7559,7565 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+ $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+! if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+ fi
+
+--- 7566,7572 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+ $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+! if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then
+ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+ fi
+
+***************
+*** 7727,7733 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5
+ $as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; }
+! if test $ac_cv_lib_Xdmcp__XdmcpAuthDoIt = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"
+ fi
+
+--- 7734,7740 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5
+ $as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; }
+! if test "x$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"
+ fi
+
+***************
+*** 7797,7803 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceOpenConnection" >&5
+ $as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; }
+! if test $ac_cv_lib_ICE_IceOpenConnection = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"
+ fi
+
+--- 7804,7810 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceOpenConnection" >&5
+ $as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; }
+! if test "x$ac_cv_lib_ICE_IceOpenConnection" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"
+ fi
+
+***************
+*** 7868,7874 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5
+ $as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; }
+! if test $ac_cv_lib_Xpm_XpmCreatePixmapFromData = yes; then
+ X_PRE_LIBS="$X_PRE_LIBS -lXpm"
+ fi
+
+--- 7875,7881 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5
+ $as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; }
+! if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = x""yes; then
+ X_PRE_LIBS="$X_PRE_LIBS -lXpm"
+ fi
+
+***************
+*** 9251,9257 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
+ $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
+! if test $ac_cv_lib_Xext_XShapeQueryExtension = yes; then
+ GUI_X_LIBS="-lXext"
+ fi
+
+--- 9258,9264 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
+ $as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
+! if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = x""yes; then
+ GUI_X_LIBS="-lXext"
+ fi
+
+***************
+*** 9320,9326 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_w_wslen" >&5
+ $as_echo "$ac_cv_lib_w_wslen" >&6; }
+! if test $ac_cv_lib_w_wslen = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"
+ fi
+
+--- 9327,9333 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_w_wslen" >&5
+ $as_echo "$ac_cv_lib_w_wslen" >&6; }
+! if test "x$ac_cv_lib_w_wslen" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"
+ fi
+
+***************
+*** 9389,9395 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlsym" >&5
+ $as_echo "$ac_cv_lib_dl_dlsym" >&6; }
+! if test $ac_cv_lib_dl_dlsym = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"
+ fi
+
+--- 9396,9402 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlsym" >&5
+ $as_echo "$ac_cv_lib_dl_dlsym" >&6; }
+! if test "x$ac_cv_lib_dl_dlsym" = x""yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"
+ fi
+
+***************
+*** 9458,9464 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5
+ $as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; }
+! if test $ac_cv_lib_Xmu_XmuCreateStippledPixmap = yes; then
+ GUI_X_LIBS="-lXmu $GUI_X_LIBS"
+ fi
+
+--- 9465,9471 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5
+ $as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; }
+! if test "x$ac_cv_lib_Xmu_XmuCreateStippledPixmap" = x""yes; then
+ GUI_X_LIBS="-lXmu $GUI_X_LIBS"
+ fi
+
+***************
+*** 9528,9534 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_XpEndJob" >&5
+ $as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; }
+! if test $ac_cv_lib_Xp_XpEndJob = yes; then
+ GUI_X_LIBS="-lXp $GUI_X_LIBS"
+ fi
+
+--- 9535,9541 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_Xp_XpEndJob" >&5
+ $as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; }
+! if test "x$ac_cv_lib_Xp_XpEndJob" = x""yes; then
+ GUI_X_LIBS="-lXp $GUI_X_LIBS"
+ fi
+
+***************
+*** 9699,9706 ****
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 9706,9714 ----
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 9852,9859 ****
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 9860,9868 ----
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 10098,10105 ****
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 10107,10115 ----
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 10539,10545 ****
+ $as_echo "$ac_cv_header_elf_h" >&6; }
+
+ fi
+! if test $ac_cv_header_elf_h = yes; then
+ HAS_ELF=1
+ fi
+
+--- 10549,10555 ----
+ $as_echo "$ac_cv_header_elf_h" >&6; }
+
+ fi
+! if test "x$ac_cv_header_elf_h" = x""yes; then
+ HAS_ELF=1
+ fi
+
+***************
+*** 10605,10611 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_elf_main" >&5
+ $as_echo "$ac_cv_lib_elf_main" >&6; }
+! if test $ac_cv_lib_elf_main = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBELF 1
+ _ACEOF
+--- 10615,10621 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_elf_main" >&5
+ $as_echo "$ac_cv_lib_elf_main" >&6; }
+! if test "x$ac_cv_lib_elf_main" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBELF 1
+ _ACEOF
+***************
+*** 10679,10686 ****
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+ _ACEOF
+--- 10689,10697 ----
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 10966,10972 ****
+
+
+
+-
+ for ac_header in stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
+ termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
+ iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
+--- 10977,10982 ----
+***************
+*** 10974,10980 ****
+ sys/stream.h termios.h libc.h sys/statfs.h \
+ poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
+ libgen.h util/debug.h util/msg18n.h frame.h \
+! sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h
+ do
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+--- 10984,10990 ----
+ sys/stream.h termios.h libc.h sys/statfs.h \
+ poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
+ libgen.h util/debug.h util/msg18n.h frame.h \
+! sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h
+ do
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+***************
+*** 11108,11115 ****
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 11118,11126 ----
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 11172,11179 ****
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 11183,11256 ----
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+! cat >>confdefs.h <<_ACEOF
+! #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+! _ACEOF
+!
+! fi
+!
+! done
+!
+!
+!
+! for ac_header in sys/sysctl.h
+! do
+! as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+! { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+! $as_echo_n "checking for $ac_header... " >&6; }
+! if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+! $as_echo_n "(cached) " >&6
+! else
+! cat >conftest.$ac_ext <<_ACEOF
+! /* confdefs.h. */
+! _ACEOF
+! cat confdefs.h >>conftest.$ac_ext
+! cat >>conftest.$ac_ext <<_ACEOF
+! /* end confdefs.h. */
+! #if defined HAVE_SYS_PARAM_H
+! # include <sys/param.h>
+! #endif
+!
+! #include <$ac_header>
+! _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
+! eval "$as_ac_Header=yes"
+! else
+! $as_echo "$as_me: failed program was:" >&5
+! sed 's/^/| /' conftest.$ac_ext >&5
+!
+! eval "$as_ac_Header=no"
+! fi
+!
+! rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+! fi
+! ac_res=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+! $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 11372,11379 ****
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 11449,11457 ----
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 11770,11776 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
+ $as_echo "$ac_cv_type_mode_t" >&6; }
+! if test $ac_cv_type_mode_t = yes; then
+ :
+ else
+
+--- 11848,11854 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_mode_t" >&5
+ $as_echo "$ac_cv_type_mode_t" >&6; }
+! if test "x$ac_cv_type_mode_t" = x""yes; then
+ :
+ else
+
+***************
+*** 11874,11880 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+ $as_echo "$ac_cv_type_off_t" >&6; }
+! if test $ac_cv_type_off_t = yes; then
+ :
+ else
+
+--- 11952,11958 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+ $as_echo "$ac_cv_type_off_t" >&6; }
+! if test "x$ac_cv_type_off_t" = x""yes; then
+ :
+ else
+
+***************
+*** 11978,11984 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+ $as_echo "$ac_cv_type_pid_t" >&6; }
+! if test $ac_cv_type_pid_t = yes; then
+ :
+ else
+
+--- 12056,12062 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
+ $as_echo "$ac_cv_type_pid_t" >&6; }
+! if test "x$ac_cv_type_pid_t" = x""yes; then
+ :
+ else
+
+***************
+*** 12082,12088 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+ $as_echo "$ac_cv_type_size_t" >&6; }
+! if test $ac_cv_type_size_t = yes; then
+ :
+ else
+
+--- 12160,12166 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+ $as_echo "$ac_cv_type_size_t" >&6; }
+! if test "x$ac_cv_type_size_t" = x""yes; then
+ :
+ else
+
+***************
+*** 12286,12292 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_ino_t" >&5
+ $as_echo "$ac_cv_type_ino_t" >&6; }
+! if test $ac_cv_type_ino_t = yes; then
+ :
+ else
+
+--- 12364,12370 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_ino_t" >&5
+ $as_echo "$ac_cv_type_ino_t" >&6; }
+! if test "x$ac_cv_type_ino_t" = x""yes; then
+ :
+ else
+
+***************
+*** 12390,12396 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_dev_t" >&5
+ $as_echo "$ac_cv_type_dev_t" >&6; }
+! if test $ac_cv_type_dev_t = yes; then
+ :
+ else
+
+--- 12468,12474 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_type_dev_t" >&5
+ $as_echo "$ac_cv_type_dev_t" >&6; }
+! if test "x$ac_cv_type_dev_t" = x""yes; then
+ :
+ else
+
+***************
+*** 12680,12687 ****
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! if test `eval 'as_val=${'$as_ac_Lib'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1
+ _ACEOF
+--- 12758,12766 ----
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_Lib'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 13929,13936 ****
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! if test `eval 'as_val=${'$as_ac_var'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+--- 14008,14016 ----
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_var'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 14313,14319 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_strtod" >&5
+ $as_echo "$ac_cv_lib_m_strtod" >&6; }
+! if test $ac_cv_lib_m_strtod = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBM 1
+ _ACEOF
+--- 14393,14399 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_m_strtod" >&5
+ $as_echo "$ac_cv_lib_m_strtod" >&6; }
+! if test "x$ac_cv_lib_m_strtod" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_LIBM 1
+ _ACEOF
+***************
+*** 14473,14479 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix1e_acl_get_file" >&5
+ $as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; }
+! if test $ac_cv_lib_posix1e_acl_get_file = yes; then
+ LIBS="$LIBS -lposix1e"
+ else
+ { $as_echo "$as_me:$LINENO: checking for acl_get_file in -lacl" >&5
+--- 14553,14559 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_posix1e_acl_get_file" >&5
+ $as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; }
+! if test "x$ac_cv_lib_posix1e_acl_get_file" = x""yes; then
+ LIBS="$LIBS -lposix1e"
+ else
+ { $as_echo "$as_me:$LINENO: checking for acl_get_file in -lacl" >&5
+***************
+*** 14541,14547 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_acl_acl_get_file" >&5
+ $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
+! if test $ac_cv_lib_acl_acl_get_file = yes; then
+ LIBS="$LIBS -lacl"
+ { $as_echo "$as_me:$LINENO: checking for fgetxattr in -lattr" >&5
+ $as_echo_n "checking for fgetxattr in -lattr... " >&6; }
+--- 14621,14627 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_acl_acl_get_file" >&5
+ $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
+! if test "x$ac_cv_lib_acl_acl_get_file" = x""yes; then
+ LIBS="$LIBS -lacl"
+ { $as_echo "$as_me:$LINENO: checking for fgetxattr in -lattr" >&5
+ $as_echo_n "checking for fgetxattr in -lattr... " >&6; }
+***************
+*** 14608,14614 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_attr_fgetxattr" >&5
+ $as_echo "$ac_cv_lib_attr_fgetxattr" >&6; }
+! if test $ac_cv_lib_attr_fgetxattr = yes; then
+ LIBS="$LIBS -lattr"
+ fi
+
+--- 14688,14694 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_attr_fgetxattr" >&5
+ $as_echo "$ac_cv_lib_attr_fgetxattr" >&6; }
+! if test "x$ac_cv_lib_attr_fgetxattr" = x""yes; then
+ LIBS="$LIBS -lattr"
+ fi
+
+***************
+*** 15746,15752 ****
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5
+ $as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; }
+! if test $ac_cv_lib_xpg4__xpg4_setrunelocale = yes; then
+ LIBS="$LIBS -lxpg4"
+ fi
+
+--- 15826,15832 ----
+ fi
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5
+ $as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; }
+! if test "x$ac_cv_lib_xpg4__xpg4_setrunelocale" = x""yes; then
+ LIBS="$LIBS -lxpg4"
+ fi
+
+***************
+*** 16045,16052 ****
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! if test `eval 'as_val=${'$as_ac_var'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+--- 16125,16133 ----
+ $as_echo "$as_val"'`
+ { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+ $as_echo "$ac_res" >&6; }
+! as_val=`eval 'as_val=${'$as_ac_var'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 16246,16252 ****
+ $as_echo "$ac_cv_header_dlfcn_h" >&6; }
+
+ fi
+! if test $ac_cv_header_dlfcn_h = yes; then
+ DLL=dlfcn.h
+ else
+ if test "${ac_cv_header_dl_h+set}" = set; then
+--- 16327,16333 ----
+ $as_echo "$ac_cv_header_dlfcn_h" >&6; }
+
+ fi
+! if test "x$ac_cv_header_dlfcn_h" = x""yes; then
+ DLL=dlfcn.h
+ else
+ if test "${ac_cv_header_dl_h+set}" = set; then
+***************
+*** 16376,16382 ****
+ $as_echo "$ac_cv_header_dl_h" >&6; }
+
+ fi
+! if test $ac_cv_header_dl_h = yes; then
+ DLL=dl.h
+ fi
+
+--- 16457,16463 ----
+ $as_echo "$ac_cv_header_dl_h" >&6; }
+
+ fi
+! if test "x$ac_cv_header_dl_h" = x""yes; then
+ DLL=dl.h
+ fi
+
+***************
+*** 16895,16902 ****
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! if test `eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+--- 16976,16984 ----
+ $as_echo "$ac_res" >&6; }
+
+ fi
+! as_val=`eval 'as_val=${'$as_ac_Header'}
+! $as_echo "$as_val"'`
+! if test "x$as_val" = x""yes; then
+ cat >>confdefs.h <<_ACEOF
+ #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+ _ACEOF
+***************
+*** 16986,16993 ****
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+! *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+! $as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+--- 17068,17075 ----
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+! *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+! $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+***************
+*** 17379,17385 ****
+ # values after options handling.
+ ac_log="
+ This file was extended by $as_me, which was
+! generated by GNU Autoconf 2.62. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+--- 17461,17467 ----
+ # values after options handling.
+ ac_log="
+ This file was extended by $as_me, which was
+! generated by GNU Autoconf 2.63. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+***************
+*** 17392,17397 ****
+--- 17474,17488 ----
+
+ _ACEOF
+
++ case $ac_config_files in *"
++ "*) set x $ac_config_files; shift; ac_config_files=$*;;
++ esac
++
++ case $ac_config_headers in *"
++ "*) set x $ac_config_headers; shift; ac_config_headers=$*;;
++ esac
++
++
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ # Files that config.status was made for.
+ config_files="$ac_config_files"
+***************
+*** 17404,17419 ****
+ \`$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 and configuration settings, 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:
+--- 17495,17511 ----
+ \`$as_me' instantiates files from templates according to the
+ current configuration.
+
+! Usage: $0 [OPTION]... [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+! -q, --quiet, --silent
+! 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:
+***************
+*** 17428,17434 ****
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_version="\\
+ config.status
+! configured by $0, generated by GNU Autoconf 2.62,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+ Copyright (C) 2008 Free Software Foundation, Inc.
+--- 17520,17526 ----
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_cs_version="\\
+ config.status
+! configured by $0, generated by GNU Autoconf 2.63,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+ Copyright (C) 2008 Free Software Foundation, Inc.
+***************
+*** 17625,17631 ****
+ $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+! if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+--- 17717,17724 ----
+ $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+
+! ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+! if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+***************
+*** 17830,17838 ****
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+- prefix = substr(line, 1, index(line, defundef) - 1)
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+--- 17923,17931 ----
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
++ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+***************
+*** 17840,17846 ****
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+! print "/*", line, "*/"
+ next
+ }
+ }
+--- 17933,17939 ----
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+! print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+***************
+*** 17864,17871 ****
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+! :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+! $as_echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+--- 17957,17964 ----
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+! :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+! $as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+***************
+*** 18183,18190 ****
+ $ac_cs_success || { (exit 1); exit 1; }
+ fi
+ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+! { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5
+! $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+
+
+--- 18276,18283 ----
+ $ac_cs_success || { (exit 1); exit 1; }
+ fi
+ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+! { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+! $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+
+
+*** ../vim-7.2.182/src/configure.in 2009-05-14 22:19:19.000000000 +0200
+--- src/configure.in 2009-05-16 13:32:00.000000000 +0200
+***************
+*** 2100,2106 ****
+ sys/stream.h termios.h libc.h sys/statfs.h \
+ poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
+ libgen.h util/debug.h util/msg18n.h frame.h \
+! sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
+
+ dnl sys/ptem.h depends on sys/stream.h on Solaris
+ AC_CHECK_HEADERS(sys/ptem.h, [], [],
+--- 2100,2106 ----
+ sys/stream.h termios.h libc.h sys/statfs.h \
+ poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
+ libgen.h util/debug.h util/msg18n.h frame.h \
+! sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
+
+ dnl sys/ptem.h depends on sys/stream.h on Solaris
+ AC_CHECK_HEADERS(sys/ptem.h, [], [],
+***************
+*** 2108,2113 ****
+--- 2108,2119 ----
+ # include <sys/stream.h>
+ #endif])
+
++ dnl sys/sysctl.h depends on sys/param.h on OpenBSD
++ AC_CHECK_HEADERS(sys/sysctl.h, [], [],
++ [#if defined HAVE_SYS_PARAM_H
++ # include <sys/param.h>
++ #endif])
++
+
+ dnl pthread_np.h may exist but can only be used after including pthread.h
+ AC_MSG_CHECKING([for pthread_np.h])
+*** ../vim-7.2.182/src/version.c 2009-05-17 23:25:16.000000000 +0200
+--- src/version.c 2009-05-21 15:16:01.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 183,
+ /**/
+
+--
+CART DRIVER: Bring out your dead!
+ There are legs stick out of windows and doors. Two MEN are fighting in the
+ mud - covered from head to foot in it. Another MAN is on his hands in
+ knees shovelling mud into his mouth. We just catch sight of a MAN falling
+ into a well.
+ "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.184 b/source/ap/vim/patches/7.2.184
new file mode 100644
index 000000000..638821570
--- /dev/null
+++ b/source/ap/vim/patches/7.2.184
@@ -0,0 +1,3646 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.184
+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.184
+Problem: Some more compiler warnings when using gcc -Wextra.
+Solution: Add UNUSED and type casts. Autoconf check for wchar_t.
+Files: src/auto/configure, src/config.h.in, src/configure.in,
+ src/gui_athena.c, src/gui_x11.c, src/gui.c, src/gui_beval.c,
+ src/gui_at_sb.c, src/gui_at_fs.c, src/gui_motif.c,
+ src/gui_xmdlg.c, src/gui_xmebw.c, src/if_python.c, src/window.c,
+ src/workshop.c
+
+
+*** ../vim-7.2.183/src/auto/configure 2009-05-21 15:19:59.000000000 +0200
+--- src/auto/configure 2009-05-21 16:05:01.000000000 +0200
+***************
+*** 7977,7982 ****
+--- 7977,8058 ----
+
+ LDFLAGS="$ac_save_LDFLAGS"
+
++ { $as_echo "$as_me:$LINENO: checking size of wchar_t is 2 bytes" >&5
++ $as_echo_n "checking size of wchar_t is 2 bytes... " >&6; }
++ if test "${ac_cv_small_wchar_t+set}" = set; then
++ $as_echo_n "(cached) " >&6
++ else
++ if test "$cross_compiling" = yes; then
++ { { $as_echo "$as_me:$LINENO: error: failed to compile test program" >&5
++ $as_echo "$as_me: error: failed to compile test program" >&2;}
++ { (exit 1); exit 1; }; }
++ else
++ 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>
++ #if STDC_HEADERS
++ # include <stdlib.h>
++ # include <stddef.h>
++ #endif
++ main()
++ {
++ if (sizeof(wchar_t) <= 2)
++ exit(1);
++ exit(0);
++ }
++ _ACEOF
++ rm -f 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>&5
++ ac_status=$?
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
++ { (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_try") 2>&5
++ ac_status=$?
++ $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_cv_small_wchar_t="no"
++ else
++ $as_echo "$as_me: program exited with status $ac_status" >&5
++ $as_echo "$as_me: failed program was:" >&5
++ sed 's/^/| /' conftest.$ac_ext >&5
++
++ ( exit $ac_status )
++ ac_cv_small_wchar_t="yes"
++ fi
++ rm -rf conftest.dSYM
++ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
++ fi
++
++
++ fi
++
++ { $as_echo "$as_me:$LINENO: result: $ac_cv_small_wchar_t" >&5
++ $as_echo "$ac_cv_small_wchar_t" >&6; }
++ if test "x$ac_cv_small_wchar_t" = "xyes" ; then
++ cat >>confdefs.h <<\_ACEOF
++ #define SMALL_WCHAR_T 1
++ _ACEOF
++
++ fi
++
+ fi
+ fi
+
+***************
+*** 15417,15423 ****
+
+
+
+-
+ bcopy_test_prog='
+ #include "confdefs.h"
+ #ifdef HAVE_STRING_H
+--- 15493,15498 ----
+*** ../vim-7.2.183/src/config.h.in 2009-05-14 22:19:19.000000000 +0200
+--- src/config.h.in 2009-05-21 15:44:24.000000000 +0200
+***************
+*** 39,44 ****
+--- 39,47 ----
+ /* Defined to the size of an int */
+ #undef SIZEOF_INT
+
++ /* Define when wchar_t is only 2 bytes. */
++ #undef SMALL_WCHAR_T
++
+ /*
+ * If we cannot trust one of the following from the libraries, we use our
+ * own safe but probably slower vim_memmove().
+*** ../vim-7.2.183/src/configure.in 2009-05-21 15:19:59.000000000 +0200
+--- src/configure.in 2009-05-21 16:04:56.000000000 +0200
+***************
+*** 1193,1198 ****
+--- 1193,1220 ----
+
+ LDFLAGS="$ac_save_LDFLAGS"
+
++ AC_MSG_CHECKING(size of wchar_t is 2 bytes)
++ AC_CACHE_VAL(ac_cv_small_wchar_t,
++ [AC_TRY_RUN([
++ #include <X11/Xlib.h>
++ #if STDC_HEADERS
++ # include <stdlib.h>
++ # include <stddef.h>
++ #endif
++ main()
++ {
++ if (sizeof(wchar_t) <= 2)
++ exit(1);
++ exit(0);
++ }],
++ ac_cv_small_wchar_t="no",
++ ac_cv_small_wchar_t="yes",
++ AC_MSG_ERROR(failed to compile test program))])
++ AC_MSG_RESULT($ac_cv_small_wchar_t)
++ if test "x$ac_cv_small_wchar_t" = "xyes" ; then
++ AC_DEFINE(SMALL_WCHAR_T)
++ fi
++
+ fi
+ fi
+
+***************
+*** 2881,2887 ****
+ AC_MSG_RESULT($ac_cv_sizeof_int)
+ AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
+
+-
+ dnl Check for memmove() before bcopy(), makes memmove() be used when both are
+ dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
+
+--- 2903,2908 ----
+*** ../vim-7.2.183/src/gui_athena.c 2008-06-24 23:00:51.000000000 +0200
+--- src/gui_athena.c 2009-05-21 16:39:43.000000000 +0200
+***************
+*** 86,95 ****
+ * Scrollbar callback (XtNjumpProc) for when the scrollbar is dragged with the
+ * left or middle mouse button.
+ */
+- /* ARGSUSED */
+ static void
+ gui_athena_scroll_cb_jump(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data, call_data;
+ {
+ scrollbar_T *sb, *sb_info;
+--- 86,94 ----
+ * Scrollbar callback (XtNjumpProc) for when the scrollbar is dragged with the
+ * left or middle mouse button.
+ */
+ static void
+ gui_athena_scroll_cb_jump(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data, call_data;
+ {
+ scrollbar_T *sb, *sb_info;
+***************
+*** 122,131 ****
+ * Scrollbar callback (XtNscrollProc) for paging up or down with the left or
+ * right mouse buttons.
+ */
+- /* ARGSUSED */
+ static void
+ gui_athena_scroll_cb_scroll(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data, call_data;
+ {
+ scrollbar_T *sb, *sb_info;
+--- 121,129 ----
+ * Scrollbar callback (XtNscrollProc) for paging up or down with the left or
+ * right mouse buttons.
+ */
+ static void
+ gui_athena_scroll_cb_scroll(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data, call_data;
+ {
+ scrollbar_T *sb, *sb_info;
+***************
+*** 492,498 ****
+ if (menu->icon_builtin || gui_find_bitmap(menu->name, buf, "xpm") == FAIL)
+ {
+ if (menu->iconidx >= 0 && menu->iconidx
+! < (sizeof(built_in_pixmaps) / sizeof(built_in_pixmaps[0])))
+ xpm = built_in_pixmaps[menu->iconidx];
+ else
+ xpm = tb_blank_xpm;
+--- 490,496 ----
+ if (menu->icon_builtin || gui_find_bitmap(menu->name, buf, "xpm") == FAIL)
+ {
+ if (menu->iconidx >= 0 && menu->iconidx
+! < (int)(sizeof(built_in_pixmaps) / sizeof(built_in_pixmaps[0])))
+ xpm = built_in_pixmaps[menu->iconidx];
+ else
+ xpm = tb_blank_xpm;
+***************
+*** 763,769 ****
+ XtGetValues(XtParent(widget), args, n);
+
+ retval = num_children;
+! for (i = 0; i < num_children; ++i)
+ {
+ Widget current = children[i];
+ vimmenu_T *menu = NULL;
+--- 761,767 ----
+ XtGetValues(XtParent(widget), args, n);
+
+ retval = num_children;
+! for (i = 0; i < (int)num_children; ++i)
+ {
+ Widget current = children[i];
+ vimmenu_T *menu = NULL;
+***************
+*** 780,790 ****
+ return retval;
+ }
+
+- /* ARGSUSED */
+ void
+ gui_mch_add_menu(menu, idx)
+ vimmenu_T *menu;
+! int idx;
+ {
+ char_u *pullright_name;
+ Dimension height, space, border;
+--- 778,787 ----
+ return retval;
+ }
+
+ void
+ gui_mch_add_menu(menu, idx)
+ vimmenu_T *menu;
+! int idx UNUSED;
+ {
+ char_u *pullright_name;
+ Dimension height, space, border;
+***************
+*** 869,875 ****
+ XtVaGetValues(parent->submenu_id, XtNchildren, &children,
+ XtNnumChildren, &num_children,
+ NULL);
+! for (i = 0; i < num_children; ++i)
+ {
+ XtVaSetValues(children[i],
+ XtNrightMargin, puller_width,
+--- 866,872 ----
+ XtVaGetValues(parent->submenu_id, XtNchildren, &children,
+ XtNnumChildren, &num_children,
+ NULL);
+! for (i = 0; i < (int)num_children; ++i)
+ {
+ XtVaSetValues(children[i],
+ XtNrightMargin, puller_width,
+***************
+*** 913,919 ****
+ XtVaGetValues(id, XtNchildren, &children,
+ XtNnumChildren, &num_children,
+ NULL);
+! for (i = 0; i < num_children; ++i)
+ {
+ if (children[i] == ignore)
+ continue;
+--- 910,916 ----
+ XtVaGetValues(id, XtNchildren, &children,
+ XtNnumChildren, &num_children,
+ NULL);
+! for (i = 0; i < (int)num_children; ++i)
+ {
+ if (children[i] == ignore)
+ continue;
+***************
+*** 1175,1185 ****
+ return pname;
+ }
+
+- /* ARGSUSED */
+ void
+ gui_mch_add_menu_item(menu, idx)
+ vimmenu_T *menu;
+! int idx;
+ {
+ vimmenu_T *parent = menu->parent;
+
+--- 1172,1181 ----
+ return pname;
+ }
+
+ void
+ gui_mch_add_menu_item(menu, idx)
+ vimmenu_T *menu;
+! int idx UNUSED;
+ {
+ vimmenu_T *parent = menu->parent;
+
+***************
+*** 1444,1450 ****
+ XtNchildren, &children,
+ XtNnumChildren, &numChildren,
+ NULL);
+! for (i = 0; i < numChildren; i++)
+ {
+ whgt = 0;
+
+--- 1440,1446 ----
+ XtNchildren, &children,
+ XtNnumChildren, &numChildren,
+ NULL);
+! for (i = 0; i < (int)numChildren; i++)
+ {
+ whgt = 0;
+
+***************
+*** 1473,1482 ****
+ #endif
+
+
+- /* ARGSUSED */
+ void
+ gui_mch_toggle_tearoffs(enable)
+! int enable;
+ {
+ /* no tearoff menus */
+ }
+--- 1469,1477 ----
+ #endif
+
+
+ void
+ gui_mch_toggle_tearoffs(enable)
+! int enable UNUSED;
+ {
+ /* no tearoff menus */
+ }
+***************
+*** 1537,1543 ****
+ else
+ get_left_margin = True;
+
+! for (i = 0; i < num_children; ++i)
+ {
+ if (children[i] == menu->id)
+ continue;
+--- 1532,1538 ----
+ else
+ get_left_margin = True;
+
+! for (i = 0; i < (int)num_children; ++i)
+ {
+ if (children[i] == menu->id)
+ continue;
+***************
+*** 1645,1655 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+ gui_athena_menu_timeout(client_data, id)
+ XtPointer client_data;
+! XtIntervalId *id;
+ {
+ Widget w = (Widget)client_data;
+ Widget popup;
+--- 1640,1649 ----
+ }
+ }
+
+ static void
+ gui_athena_menu_timeout(client_data, id)
+ XtPointer client_data;
+! XtIntervalId *id UNUSED;
+ {
+ Widget w = (Widget)client_data;
+ Widget popup;
+***************
+*** 1678,1689 ****
+ *
+ * This is called when XtPopup() is called.
+ */
+- /*ARGSUSED*/
+ static void
+ gui_athena_popup_callback(w, client_data, call_data)
+ Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ /* Assumption: XtIsSubclass(XtParent(w),simpleMenuWidgetClass) */
+ vimmenu_T *menu = (vimmenu_T *)client_data;
+--- 1672,1682 ----
+ *
+ * This is called when XtPopup() is called.
+ */
+ static void
+ gui_athena_popup_callback(w, client_data, call_data)
+ Widget w;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ /* Assumption: XtIsSubclass(XtParent(w),simpleMenuWidgetClass) */
+ vimmenu_T *menu = (vimmenu_T *)client_data;
+***************
+*** 1711,1717 ****
+ NULL);
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_athena_popdown_submenus_action(w, event, args, nargs)
+ Widget w;
+--- 1704,1709 ----
+***************
+*** 1756,1762 ****
+ return False;
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_athena_delayed_arm_action(w, event, args, nargs)
+ Widget w;
+--- 1748,1753 ----
+***************
+*** 1837,1843 ****
+ * (XtIsSubclass(popup,simpleMenuWidgetClass) == True) */
+ }
+
+- /* ARGSUSED */
+ void
+ gui_mch_show_popupmenu(menu)
+ vimmenu_T *menu;
+--- 1828,1833 ----
+***************
+*** 2046,2060 ****
+ * Put up a file requester.
+ * Returns the selected name in allocated memory, or NULL for Cancel.
+ */
+- /* ARGSUSED */
+ char_u *
+ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
+! int saving; /* select file to write */
+! char_u *title; /* not used (title for the window) */
+! char_u *dflt; /* not used (default name) */
+! char_u *ext; /* not used (extension added) */
+ char_u *initdir; /* initial directory, NULL for current dir */
+! char_u *filter; /* not used (file name filter) */
+ {
+ Position x, y;
+ char_u dirbuf[MAXPATHL];
+--- 2036,2049 ----
+ * Put up a file requester.
+ * Returns the selected name in allocated memory, or NULL for Cancel.
+ */
+ char_u *
+ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
+! int saving UNUSED; /* select file to write */
+! char_u *title; /* title for the window */
+! char_u *dflt; /* default name */
+! char_u *ext UNUSED; /* extension added */
+ char_u *initdir; /* initial directory, NULL for current dir */
+! char_u *filter UNUSED; /* file name filter */
+ {
+ Position x, y;
+ char_u dirbuf[MAXPATHL];
+***************
+*** 2100,2112 ****
+ * Callback function for the textfield. When CR is hit this works like
+ * hitting the "OK" button, ESC like "Cancel".
+ */
+- /* ARGSUSED */
+ static void
+ keyhit_callback(w, client_data, event, cont)
+! Widget w;
+! XtPointer client_data;
+ XEvent *event;
+! Boolean *cont;
+ {
+ char buf[2];
+
+--- 2089,2100 ----
+ * Callback function for the textfield. When CR is hit this works like
+ * hitting the "OK" button, ESC like "Cancel".
+ */
+ static void
+ keyhit_callback(w, client_data, event, cont)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+ XEvent *event;
+! Boolean *cont UNUSED;
+ {
+ char buf[2];
+
+***************
+*** 2119,2130 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ butproc(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ dialogStatus = (int)(long)client_data + 1;
+ }
+--- 2107,2117 ----
+ }
+ }
+
+ static void
+ butproc(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ dialogStatus = (int)(long)client_data + 1;
+ }
+***************
+*** 2132,2158 ****
+ /*
+ * Function called when dialog window closed.
+ */
+- /*ARGSUSED*/
+ static void
+ dialog_wm_handler(w, client_data, event, dum)
+! Widget w;
+! XtPointer client_data;
+ XEvent *event;
+! Boolean *dum;
+ {
+ if (event->type == ClientMessage
+! && ((XClientMessageEvent *)event)->data.l[0] == dialogatom)
+ dialogStatus = 0;
+ }
+
+- /* ARGSUSED */
+ int
+ gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield)
+! int type;
+ char_u *title;
+ char_u *message;
+ char_u *buttons;
+! int dfltbutton;
+ char_u *textfield;
+ {
+ char_u *buts;
+--- 2119,2143 ----
+ /*
+ * Function called when dialog window closed.
+ */
+ static void
+ dialog_wm_handler(w, client_data, event, dum)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ if (event->type == ClientMessage
+! && (Atom)((XClientMessageEvent *)event)->data.l[0] == dialogatom)
+ dialogStatus = 0;
+ }
+
+ int
+ gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield)
+! int type UNUSED;
+ char_u *title;
+ char_u *message;
+ char_u *buttons;
+! int dfltbutton UNUSED;
+ char_u *textfield;
+ {
+ char_u *buts;
+*** ../vim-7.2.183/src/gui_x11.c 2009-02-24 04:11:07.000000000 +0100
+--- src/gui_x11.c 2009-05-21 16:47:02.000000000 +0200
+***************
+*** 570,591 ****
+ * Call-back routines.
+ */
+
+- /* ARGSUSED */
+ static void
+ gui_x11_timer_cb(timed_out, interval_id)
+ XtPointer timed_out;
+! XtIntervalId *interval_id;
+ {
+ *((int *)timed_out) = TRUE;
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_visibility_cb(w, dud, event, dum)
+! Widget w;
+! XtPointer dud;
+ XEvent *event;
+! Boolean *dum;
+ {
+ if (event->type != VisibilityNotify)
+ return;
+--- 570,589 ----
+ * Call-back routines.
+ */
+
+ static void
+ gui_x11_timer_cb(timed_out, interval_id)
+ XtPointer timed_out;
+! XtIntervalId *interval_id UNUSED;
+ {
+ *((int *)timed_out) = TRUE;
+ }
+
+ static void
+ gui_x11_visibility_cb(w, dud, event, dum)
+! Widget w UNUSED;
+! XtPointer dud UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ if (event->type != VisibilityNotify)
+ return;
+***************
+*** 603,615 ****
+ gui_mch_update();
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_expose_cb(w, dud, event, dum)
+! Widget w;
+! XtPointer dud;
+ XEvent *event;
+! Boolean *dum;
+ {
+ XExposeEvent *gevent;
+ int new_x;
+--- 601,612 ----
+ gui_mch_update();
+ }
+
+ static void
+ gui_x11_expose_cb(w, dud, event, dum)
+! Widget w UNUSED;
+! XtPointer dud UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ XExposeEvent *gevent;
+ int new_x;
+***************
+*** 680,692 ****
+ }
+ #endif
+
+- /* ARGSUSED */
+ static void
+ gui_x11_resize_window_cb(w, dud, event, dum)
+! Widget w;
+! XtPointer dud;
+ XEvent *event;
+! Boolean *dum;
+ {
+ static int lastWidth, lastHeight;
+
+--- 677,688 ----
+ }
+ #endif
+
+ static void
+ gui_x11_resize_window_cb(w, dud, event, dum)
+! Widget w UNUSED;
+! XtPointer dud UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ static int lastWidth, lastHeight;
+
+***************
+*** 727,761 ****
+ #endif
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_focus_change_cb(w, data, event, dum)
+! Widget w;
+! XtPointer data;
+ XEvent *event;
+! Boolean *dum;
+ {
+ gui_focus_change(event->type == FocusIn);
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_enter_cb(w, data, event, dum)
+! Widget w;
+! XtPointer data;
+! XEvent *event;
+! Boolean *dum;
+ {
+ gui_focus_change(TRUE);
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_leave_cb(w, data, event, dum)
+! Widget w;
+! XtPointer data;
+! XEvent *event;
+! Boolean *dum;
+ {
+ gui_focus_change(FALSE);
+ }
+--- 723,754 ----
+ #endif
+ }
+
+ static void
+ gui_x11_focus_change_cb(w, data, event, dum)
+! Widget w UNUSED;
+! XtPointer data UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ gui_focus_change(event->type == FocusIn);
+ }
+
+ static void
+ gui_x11_enter_cb(w, data, event, dum)
+! Widget w UNUSED;
+! XtPointer data UNUSED;
+! XEvent *event UNUSED;
+! Boolean *dum UNUSED;
+ {
+ gui_focus_change(TRUE);
+ }
+
+ static void
+ gui_x11_leave_cb(w, data, event, dum)
+! Widget w UNUSED;
+! XtPointer data UNUSED;
+! XEvent *event UNUSED;
+! Boolean *dum UNUSED;
+ {
+ gui_focus_change(FALSE);
+ }
+***************
+*** 766,778 ****
+ # endif
+ #endif
+
+- /* ARGSUSED */
+ void
+ gui_x11_key_hit_cb(w, dud, event, dum)
+! Widget w;
+! XtPointer dud;
+ XEvent *event;
+! Boolean *dum;
+ {
+ XKeyPressedEvent *ev_press;
+ #ifdef FEAT_XIM
+--- 759,770 ----
+ # endif
+ #endif
+
+ void
+ gui_x11_key_hit_cb(w, dud, event, dum)
+! Widget w UNUSED;
+! XtPointer dud UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ XKeyPressedEvent *ev_press;
+ #ifdef FEAT_XIM
+***************
+*** 1078,1090 ****
+ #endif
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_mouse_cb(w, dud, event, dum)
+! Widget w;
+! XtPointer dud;
+ XEvent *event;
+! Boolean *dum;
+ {
+ static XtIntervalId timer = (XtIntervalId)0;
+ static int timed_out = TRUE;
+--- 1070,1081 ----
+ #endif
+ }
+
+ static void
+ gui_x11_mouse_cb(w, dud, event, dum)
+! Widget w UNUSED;
+! XtPointer dud UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ static XtIntervalId timer = (XtIntervalId)0;
+ static int timed_out = TRUE;
+***************
+*** 1210,1220 ****
+ while (arg < *argc)
+ {
+ /* Look for argv[arg] in cmdline_options[] table */
+! for (i = 0; i < XtNumber(cmdline_options); i++)
+ if (strcmp(argv[arg], cmdline_options[i].option) == 0)
+ break;
+
+! if (i < XtNumber(cmdline_options))
+ {
+ /* Remember finding "-rv" or "-reverse" */
+ if (strcmp("-rv", argv[arg]) == 0
+--- 1201,1211 ----
+ while (arg < *argc)
+ {
+ /* Look for argv[arg] in cmdline_options[] table */
+! for (i = 0; i < (int)XtNumber(cmdline_options); i++)
+ if (strcmp(argv[arg], cmdline_options[i].option) == 0)
+ break;
+
+! if (i < (int)XtNumber(cmdline_options))
+ {
+ /* Remember finding "-rv" or "-reverse" */
+ if (strcmp("-rv", argv[arg]) == 0
+***************
+*** 1319,1330 ****
+
+ static void local_xsmp_handle_requests __ARGS((XtPointer c, int *s, XtInputId *i));
+
+- /*ARGSUSED*/
+ static void
+ local_xsmp_handle_requests(c, s, i)
+! XtPointer c;
+! int *s;
+! XtInputId *i;
+ {
+ if (xsmp_handle_requests() == FAIL)
+ XtRemoveInput(_xsmp_xtinputid);
+--- 1310,1320 ----
+
+ static void local_xsmp_handle_requests __ARGS((XtPointer c, int *s, XtInputId *i));
+
+ static void
+ local_xsmp_handle_requests(c, s, i)
+! XtPointer c UNUSED;
+! int *s UNUSED;
+! XtInputId *i UNUSED;
+ {
+ if (xsmp_handle_requests() == FAIL)
+ XtRemoveInput(_xsmp_xtinputid);
+***************
+*** 1438,1444 ****
+ Columns = w;
+ if (mask & HeightValue)
+ {
+! if (p_window > h - 1 || !option_was_set((char_u *)"window"))
+ p_window = h - 1;
+ Rows = h;
+ }
+--- 1428,1434 ----
+ Columns = w;
+ if (mask & HeightValue)
+ {
+! if (p_window > (long)h - 1 || !option_was_set((char_u *)"window"))
+ p_window = h - 1;
+ Rows = h;
+ }
+***************
+*** 1753,1762 ****
+ }
+ #endif
+
+- /*ARGSUSED*/
+ void
+ gui_mch_exit(rc)
+! int rc;
+ {
+ #if 0
+ /* Lesstif gives an error message here, and so does Solaris. The man page
+--- 1743,1751 ----
+ }
+ #endif
+
+ void
+ gui_mch_exit(rc)
+! int rc UNUSED;
+ {
+ #if 0
+ /* Lesstif gives an error message here, and so does Solaris. The man page
+***************
+*** 1799,1805 ****
+ NULL);
+ }
+
+- /*ARGSUSED*/
+ void
+ gui_mch_set_shellsize(width, height, min_width, min_height,
+ base_width, base_height, direction)
+--- 1788,1793 ----
+***************
+*** 1809,1815 ****
+ int min_height;
+ int base_width;
+ int base_height;
+! int direction;
+ {
+ #ifdef FEAT_XIM
+ height += xim_get_status_area_height(),
+--- 1797,1803 ----
+ int min_height;
+ int base_width;
+ int base_height;
+! int direction UNUSED;
+ {
+ #ifdef FEAT_XIM
+ height += xim_get_status_area_height(),
+***************
+*** 1847,1857 ****
+ * If "fontset" is TRUE, load the "font_name" as a fontset.
+ * Return FAIL if the font could not be loaded, OK otherwise.
+ */
+- /*ARGSUSED*/
+ int
+ gui_mch_init_font(font_name, do_fontset)
+ char_u *font_name;
+! int do_fontset;
+ {
+ XFontStruct *font = NULL;
+
+--- 1835,1844 ----
+ * If "fontset" is TRUE, load the "font_name" as a fontset.
+ * Return FAIL if the font could not be loaded, OK otherwise.
+ */
+ int
+ gui_mch_init_font(font_name, do_fontset)
+ char_u *font_name;
+! int do_fontset UNUSED;
+ {
+ XFontStruct *font = NULL;
+
+***************
+*** 2029,2038 ****
+ * Return the name of font "font" in allocated memory.
+ * Don't know how to get the actual name, thus use the provided name.
+ */
+- /*ARGSUSED*/
+ char_u *
+ gui_mch_get_fontname(font, name)
+! GuiFont font;
+ char_u *name;
+ {
+ if (name == NULL)
+--- 2016,2024 ----
+ * Return the name of font "font" in allocated memory.
+ * Don't know how to get the actual name, thus use the provided name.
+ */
+ char_u *
+ gui_mch_get_fontname(font, name)
+! GuiFont font UNUSED;
+ char_u *name;
+ {
+ if (name == NULL)
+***************
+*** 2521,2527 ****
+ {
+ int i;
+ int offset;
+! const static int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
+
+ XSetForeground(gui.dpy, gui.text_gc, prev_sp_color);
+ for (i = FILL_X(col); i < FILL_X(col + cells); ++i)
+--- 2507,2513 ----
+ {
+ int i;
+ int offset;
+! static const int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
+
+ XSetForeground(gui.dpy, gui.text_gc, prev_sp_color);
+ for (i = FILL_X(col); i < FILL_X(col + cells); ++i)
+***************
+*** 2569,2576 ****
+ # ifdef FEAT_XFONTSET
+ if (current_fontset != NULL)
+ {
+! if (c >= 0x10000 && sizeof(wchar_t) <= 2)
+ c = 0xbf; /* show chars > 0xffff as ? */
+ ((wchar_t *)buf)[wlen] = c;
+ }
+ else
+--- 2555,2564 ----
+ # ifdef FEAT_XFONTSET
+ if (current_fontset != NULL)
+ {
+! # ifdef SMALL_WCHAR_T
+! if (c >= 0x10000)
+ c = 0xbf; /* show chars > 0xffff as ? */
++ # endif
+ ((wchar_t *)buf)[wlen] = c;
+ }
+ else
+***************
+*** 3136,3146 ****
+ /* Nothing to do in X */
+ }
+
+- /* ARGSUSED */
+ void
+ gui_x11_menu_cb(w, client_data, call_data)
+! Widget w;
+! XtPointer client_data, call_data;
+ {
+ gui_menu_cb((vimmenu_T *)client_data);
+ }
+--- 3124,3134 ----
+ /* Nothing to do in X */
+ }
+
+ void
+ gui_x11_menu_cb(w, client_data, call_data)
+! Widget w UNUSED;
+! XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ gui_menu_cb((vimmenu_T *)client_data);
+ }
+***************
+*** 3153,3165 ****
+ * Function called when window closed. Works like ":qa".
+ * Should put up a requester!
+ */
+- /*ARGSUSED*/
+ static void
+ gui_x11_wm_protocol_handler(w, client_data, event, dum)
+! Widget w;
+! XtPointer client_data;
+ XEvent *event;
+! Boolean *dum;
+ {
+ /*
+ * Only deal with Client messages.
+--- 3141,3152 ----
+ * Function called when window closed. Works like ":qa".
+ * Should put up a requester!
+ */
+ static void
+ gui_x11_wm_protocol_handler(w, client_data, event, dum)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ /*
+ * Only deal with Client messages.
+***************
+*** 3172,3178 ****
+ * exit. That can be cancelled though, thus Vim shouldn't exit here.
+ * Just sync our swap files.
+ */
+! if (((XClientMessageEvent *)event)->data.l[0] ==
+ wm_atoms[SAVE_YOURSELF_IDX])
+ {
+ out_flush();
+--- 3159,3165 ----
+ * exit. That can be cancelled though, thus Vim shouldn't exit here.
+ * Just sync our swap files.
+ */
+! if ((Atom)((XClientMessageEvent *)event)->data.l[0] ==
+ wm_atoms[SAVE_YOURSELF_IDX])
+ {
+ out_flush();
+***************
+*** 3185,3191 ****
+ return;
+ }
+
+! if (((XClientMessageEvent *)event)->data.l[0] !=
+ wm_atoms[DELETE_WINDOW_IDX])
+ return;
+
+--- 3172,3178 ----
+ return;
+ }
+
+! if ((Atom)((XClientMessageEvent *)event)->data.l[0] !=
+ wm_atoms[DELETE_WINDOW_IDX])
+ return;
+
+***************
+*** 3196,3208 ****
+ /*
+ * Function called when property changed. Check for incoming commands
+ */
+- /*ARGSUSED*/
+ static void
+ gui_x11_send_event_handler(w, client_data, event, dum)
+! Widget w;
+! XtPointer client_data;
+ XEvent *event;
+! Boolean *dum;
+ {
+ XPropertyEvent *e = (XPropertyEvent *) event;
+
+--- 3183,3194 ----
+ /*
+ * Function called when property changed. Check for incoming commands
+ */
+ static void
+ gui_x11_send_event_handler(w, client_data, event, dum)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+ XEvent *event;
+! Boolean *dum UNUSED;
+ {
+ XPropertyEvent *e = (XPropertyEvent *) event;
+
+***************
+*** 3277,3287 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ gui_x11_blink_cb(timed_out, interval_id)
+! XtPointer timed_out;
+! XtIntervalId *interval_id;
+ {
+ if (blink_state == BLINK_ON)
+ {
+--- 3263,3272 ----
+ }
+ }
+
+ static void
+ gui_x11_blink_cb(timed_out, interval_id)
+! XtPointer timed_out UNUSED;
+! XtIntervalId *interval_id UNUSED;
+ {
+ if (blink_state == BLINK_ON)
+ {
+*** ../vim-7.2.183/src/gui.c 2009-05-17 16:23:20.000000000 +0200
+--- src/gui.c 2009-05-21 16:37:39.000000000 +0200
+***************
+*** 3119,3125 ****
+ */
+ void
+ gui_init_which_components(oldval)
+! char_u *oldval;
+ {
+ #ifdef FEAT_MENU
+ static int prev_menu_is_active = -1;
+--- 3119,3125 ----
+ */
+ void
+ gui_init_which_components(oldval)
+! char_u *oldval UNUSED;
+ {
+ #ifdef FEAT_MENU
+ static int prev_menu_is_active = -1;
+***************
+*** 4668,4675 ****
+ */
+ static win_T *
+ xy2win(x, y)
+! int x;
+! int y;
+ {
+ #ifdef FEAT_WINDOWS
+ int row;
+--- 4668,4675 ----
+ */
+ static win_T *
+ xy2win(x, y)
+! int x UNUSED;
+! int y UNUSED;
+ {
+ #ifdef FEAT_WINDOWS
+ int row;
+***************
+*** 5121,5128 ****
+ */
+ void
+ gui_handle_drop(x, y, modifiers, fnames, count)
+! int x;
+! int y;
+ int_u modifiers;
+ char_u **fnames;
+ int count;
+--- 5121,5128 ----
+ */
+ void
+ gui_handle_drop(x, y, modifiers, fnames, count)
+! int x UNUSED;
+! int y UNUSED;
+ int_u modifiers;
+ char_u **fnames;
+ int count;
+*** ../vim-7.2.183/src/gui_beval.c 2009-05-17 16:23:20.000000000 +0200
+--- src/gui_beval.c 2009-05-21 15:03:02.000000000 +0200
+***************
+*** 18,24 ****
+ void
+ general_beval_cb(beval, state)
+ BalloonEval *beval;
+! int state;
+ {
+ win_T *wp;
+ int col;
+--- 18,24 ----
+ void
+ general_beval_cb(beval, state)
+ BalloonEval *beval;
+! int state UNUSED;
+ {
+ win_T *wp;
+ int col;
+***************
+*** 726,735 ****
+ */
+ static void
+ pointerEventEH(w, client_data, event, unused)
+! Widget w;
+ XtPointer client_data;
+ XEvent *event;
+! Boolean *unused;
+ {
+ BalloonEval *beval = (BalloonEval *)client_data;
+ pointerEvent(beval, event);
+--- 726,735 ----
+ */
+ static void
+ pointerEventEH(w, client_data, event, unused)
+! Widget w UNUSED;
+ XtPointer client_data;
+ XEvent *event;
+! Boolean *unused UNUSED;
+ {
+ BalloonEval *beval = (BalloonEval *)client_data;
+ pointerEvent(beval, event);
+***************
+*** 877,883 ****
+ static void
+ timerRoutine(dx, id)
+ XtPointer dx;
+! XtIntervalId *id;
+ {
+ BalloonEval *beval = (BalloonEval *)dx;
+
+--- 877,883 ----
+ static void
+ timerRoutine(dx, id)
+ XtPointer dx;
+! XtIntervalId *id UNUSED;
+ {
+ BalloonEval *beval = (BalloonEval *)dx;
+
+*** ../vim-7.2.183/src/gui_at_sb.c 2008-11-28 21:26:50.000000000 +0100
+--- src/gui_at_sb.c 2009-05-21 16:38:53.000000000 +0200
+***************
+*** 198,207 ****
+ /* extension */ NULL
+ },
+ { /* simple fields */
+! /* change_sensitive */ XtInheritChangeSensitive
+ },
+ { /* scrollbar fields */
+! /* ignore */ 0
+ }
+ };
+
+--- 198,210 ----
+ /* extension */ NULL
+ },
+ { /* simple fields */
+! /* change_sensitive */ XtInheritChangeSensitive,
+! #ifndef OLDXAW
+! /* extension */ NULL
+! #endif
+ },
+ { /* scrollbar fields */
+! /* empty */ 0
+ }
+ };
+
+***************
+*** 241,247 ****
+
+ if (bottom <= 0 || bottom <= top)
+ return;
+! if ((sw = sbw->scrollbar.shadow_width) < 0)
+ sw = 0;
+ margin = MARGIN (sbw);
+ floor = sbw->scrollbar.length - margin + 2;
+--- 244,251 ----
+
+ if (bottom <= 0 || bottom <= top)
+ return;
+! sw = sbw->scrollbar.shadow_width;
+! if (sw < 0)
+ sw = 0;
+ margin = MARGIN (sbw);
+ floor = sbw->scrollbar.length - margin + 2;
+***************
+*** 516,528 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ Initialize(request, new, args, num_args)
+! Widget request; /* what the client asked for */
+ Widget new; /* what we're going to give him */
+! ArgList args;
+! Cardinal *num_args;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) new;
+
+--- 520,531 ----
+ }
+ }
+
+ static void
+ Initialize(request, new, args, num_args)
+! Widget request UNUSED; /* what the client asked for */
+ Widget new; /* what we're going to give him */
+! ArgList args UNUSED;
+! Cardinal *num_args UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) new;
+
+***************
+*** 556,569 ****
+ (w, valueMask, attributes);
+ }
+
+- /* ARGSUSED */
+ static Boolean
+ SetValues(current, request, desired, args, num_args)
+! Widget current, /* what I am */
+! request, /* what he wants me to be */
+! desired; /* what I will become */
+! ArgList args;
+! Cardinal *num_args;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) current;
+ ScrollbarWidget dsbw = (ScrollbarWidget) desired;
+--- 559,571 ----
+ (w, valueMask, attributes);
+ }
+
+ static Boolean
+ SetValues(current, request, desired, args, num_args)
+! Widget current; /* what I am */
+! Widget request UNUSED; /* what he wants me to be */
+! Widget desired; /* what I will become */
+! ArgList args UNUSED;
+! Cardinal *num_args UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) current;
+ ScrollbarWidget dsbw = (ScrollbarWidget) desired;
+***************
+*** 609,615 ****
+ }
+
+
+- /* ARGSUSED */
+ static void
+ Redisplay(w, event, region)
+ Widget w;
+--- 611,616 ----
+***************
+*** 789,799 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ RepeatNotify(client_data, idp)
+ XtPointer client_data;
+! XtIntervalId *idp;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) client_data;
+ int call_data;
+--- 790,799 ----
+ }
+ }
+
+ static void
+ RepeatNotify(client_data, idp)
+ XtPointer client_data;
+! XtIntervalId *idp UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) client_data;
+ int call_data;
+***************
+*** 839,884 ****
+ return (num < small) ? small : ((num > big) ? big : num);
+ }
+
+- /* ARGSUSED */
+ static void
+ ScrollOneLineUp(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params;
+! Cardinal *num_params;
+ {
+ ScrollSome(w, event, -ONE_LINE_DATA);
+ }
+
+- /* ARGSUSED */
+ static void
+ ScrollOneLineDown(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params;
+! Cardinal *num_params;
+ {
+ ScrollSome(w, event, ONE_LINE_DATA);
+ }
+
+- /* ARGSUSED */
+ static void
+ ScrollPageDown(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params;
+! Cardinal *num_params;
+ {
+ ScrollSome(w, event, ONE_PAGE_DATA);
+ }
+
+- /* ARGSUSED */
+ static void
+ ScrollPageUp(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params;
+! Cardinal *num_params;
+ {
+ ScrollSome(w, event, -ONE_PAGE_DATA);
+ }
+--- 839,880 ----
+ return (num < small) ? small : ((num > big) ? big : num);
+ }
+
+ static void
+ ScrollOneLineUp(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollSome(w, event, -ONE_LINE_DATA);
+ }
+
+ static void
+ ScrollOneLineDown(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollSome(w, event, ONE_LINE_DATA);
+ }
+
+ static void
+ ScrollPageDown(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollSome(w, event, ONE_PAGE_DATA);
+ }
+
+ static void
+ ScrollPageUp(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollSome(w, event, -ONE_PAGE_DATA);
+ }
+***************
+*** 901,913 ****
+ XtCallCallbacks(w, XtNscrollProc, (XtPointer)call_data);
+ }
+
+- /* ARGSUSED */
+ static void
+ NotifyScroll(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params;
+! Cardinal *num_params;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) w;
+ Position x, y, loc;
+--- 897,908 ----
+ XtCallCallbacks(w, XtNscrollProc, (XtPointer)call_data);
+ }
+
+ static void
+ NotifyScroll(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) w;
+ Position x, y, loc;
+***************
+*** 991,1003 ****
+ delay, RepeatNotify, (XtPointer)w);
+ }
+
+- /* ARGSUSED */
+ static void
+ EndScroll(w, event, params, num_params)
+ Widget w;
+! XEvent *event; /* unused */
+! String *params; /* unused */
+! Cardinal *num_params; /* unused */
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) w;
+
+--- 986,997 ----
+ delay, RepeatNotify, (XtPointer)w);
+ }
+
+ static void
+ EndScroll(w, event, params, num_params)
+ Widget w;
+! XEvent *event UNUSED;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget) w;
+
+***************
+*** 1023,1035 ****
+ return PICKLENGTH(sbw, x / width, y / height);
+ }
+
+- /* ARGSUSED */
+ static void
+ MoveThumb(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params; /* unused */
+! Cardinal *num_params; /* unused */
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget)w;
+ Position x, y;
+--- 1017,1028 ----
+ return PICKLENGTH(sbw, x / width, y / height);
+ }
+
+ static void
+ MoveThumb(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget)w;
+ Position x, y;
+***************
+*** 1069,1081 ****
+ }
+
+
+- /* ARGSUSED */
+ static void
+ NotifyThumb(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params; /* unused */
+! Cardinal *num_params; /* unused */
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget)w;
+ /* Use a union to avoid a warning for the weird conversion from float to
+--- 1062,1073 ----
+ }
+
+
+ static void
+ NotifyThumb(w, event, params, num_params)
+ Widget w;
+ XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+ ScrollbarWidget sbw = (ScrollbarWidget)w;
+ /* Use a union to avoid a warning for the weird conversion from float to
+***************
+*** 1096,1102 ****
+ XtCallCallbacks(w, XtNjumpProc, (XtPointer)&sbw->scrollbar.top);
+ }
+
+- /* ARGSUSED */
+ static void
+ AllocTopShadowGC(w)
+ Widget w;
+--- 1088,1093 ----
+***************
+*** 1110,1116 ****
+ sbw->scrollbar.top_shadow_GC = XtGetGC(w, valuemask, &myXGCV);
+ }
+
+- /* ARGSUSED */
+ static void
+ AllocBotShadowGC(w)
+ Widget w;
+--- 1101,1106 ----
+***************
+*** 1124,1134 ****
+ sbw->scrollbar.bot_shadow_GC = XtGetGC(w, valuemask, &myXGCV);
+ }
+
+- /* ARGSUSED */
+ static void
+ _Xaw3dDrawShadows(gw, event, region, out)
+ Widget gw;
+! XEvent *event;
+ Region region;
+ int out;
+ {
+--- 1114,1123 ----
+ sbw->scrollbar.bot_shadow_GC = XtGetGC(w, valuemask, &myXGCV);
+ }
+
+ static void
+ _Xaw3dDrawShadows(gw, event, region, out)
+ Widget gw;
+! XEvent *event UNUSED;
+ Region region;
+ int out;
+ {
+*** ../vim-7.2.183/src/gui_at_fs.c 2006-05-13 15:51:07.000000000 +0200
+--- src/gui_at_fs.c 2009-05-21 16:38:36.000000000 +0200
+***************
+*** 829,835 ****
+ text.format = FMT8BIT;
+
+ #ifdef XtNinternational
+! if (_XawTextFormat((TextWidget)selFileField) == XawFmtWide)
+ {
+ XawTextReplace(selFileField, (XawTextPosition)0,
+ (XawTextPosition)WcsLen((wchar_t *)&SFtextBuffer[0]), &text);
+--- 829,835 ----
+ text.format = FMT8BIT;
+
+ #ifdef XtNinternational
+! if ((unsigned long)_XawTextFormat((TextWidget)selFileField) == XawFmtWide)
+ {
+ XawTextReplace(selFileField, (XawTextPosition)0,
+ (XawTextPosition)WcsLen((wchar_t *)&SFtextBuffer[0]), &text);
+***************
+*** 851,867 ****
+ #endif
+ }
+
+- /* ARGSUSED */
+ static void
+ SFbuttonPressList(w, n, event)
+! Widget w;
+! int n;
+! XButtonPressedEvent *event;
+ {
+ SFbuttonPressed = 1;
+ }
+
+- /* ARGSUSED */
+ static void
+ SFbuttonReleaseList(w, n, event)
+ Widget w;
+--- 851,865 ----
+ #endif
+ }
+
+ static void
+ SFbuttonPressList(w, n, event)
+! Widget w UNUSED;
+! int n UNUSED;
+! XButtonPressedEvent *event UNUSED;
+ {
+ SFbuttonPressed = 1;
+ }
+
+ static void
+ SFbuttonReleaseList(w, n, event)
+ Widget w;
+***************
+*** 989,999 ****
+ return result;
+ }
+
+- /* ARGSUSED */
+ static void
+ SFdirModTimer(cl, id)
+! XtPointer cl;
+! XtIntervalId *id;
+ {
+ static int n = -1;
+ static int f = 0;
+--- 987,996 ----
+ return result;
+ }
+
+ static void
+ SFdirModTimer(cl, id)
+! XtPointer cl UNUSED;
+! XtIntervalId *id UNUSED;
+ {
+ static int n = -1;
+ static int f = 0;
+***************
+*** 1596,1606 ****
+
+ static void SFscrollTimer __ARGS((XtPointer p, XtIntervalId *id));
+
+- /* ARGSUSED */
+ static void
+ SFscrollTimer(p, id)
+ XtPointer p;
+! XtIntervalId *id;
+ {
+ SFDir *dir;
+ int save;
+--- 1593,1602 ----
+
+ static void SFscrollTimer __ARGS((XtPointer p, XtIntervalId *id));
+
+ static void
+ SFscrollTimer(p, id)
+ XtPointer p;
+! XtIntervalId *id UNUSED;
+ {
+ SFDir *dir;
+ int save;
+***************
+*** 1695,1704 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ SFenterList(w, n, event)
+! Widget w;
+ int n;
+ XEnterWindowEvent *event;
+ {
+--- 1691,1699 ----
+ }
+ }
+
+ static void
+ SFenterList(w, n, event)
+! Widget w UNUSED;
+ int n;
+ XEnterWindowEvent *event;
+ {
+***************
+*** 1719,1730 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ SFleaveList(w, n, event)
+! Widget w;
+ int n;
+! XEvent *event;
+ {
+ if (SFcurrentInvert[n] != -1)
+ {
+--- 1714,1724 ----
+ }
+ }
+
+ static void
+ SFleaveList(w, n, event)
+! Widget w UNUSED;
+ int n;
+! XEvent *event UNUSED;
+ {
+ if (SFcurrentInvert[n] != -1)
+ {
+***************
+*** 1733,1742 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ SFmotionList(w, n, event)
+! Widget w;
+ int n;
+ XMotionEvent *event;
+ {
+--- 1727,1735 ----
+ }
+ }
+
+ static void
+ SFmotionList(w, n, event)
+! Widget w UNUSED;
+ int n;
+ XMotionEvent *event;
+ {
+***************
+*** 1754,1760 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ SFvFloatSliderMovedCallback(w, n, fnew)
+ Widget w;
+--- 1747,1752 ----
+***************
+*** 1767,1776 ****
+ SFvSliderMovedCallback(w, (int)(long)n, nw);
+ }
+
+- /* ARGSUSED */
+ static void
+ SFvSliderMovedCallback(w, n, nw)
+! Widget w;
+ int n;
+ int nw;
+ {
+--- 1759,1767 ----
+ SFvSliderMovedCallback(w, (int)(long)n, nw);
+ }
+
+ static void
+ SFvSliderMovedCallback(w, n, nw)
+! Widget w UNUSED;
+ int n;
+ int nw;
+ {
+***************
+*** 1853,1862 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ SFvAreaSelectedCallback(w, n, pnew)
+! Widget w;
+ XtPointer n;
+ XtPointer pnew;
+ {
+--- 1844,1852 ----
+ }
+ }
+
+ static void
+ SFvAreaSelectedCallback(w, n, pnew)
+! Widget w;
+ XtPointer n;
+ XtPointer pnew;
+ {
+***************
+*** 1914,1923 ****
+ SFvSliderMovedCallback(w, (int)(long)n, nw);
+ }
+
+- /* ARGSUSED */
+ static void
+ SFhSliderMovedCallback(w, n, nw)
+! Widget w;
+ XtPointer n;
+ XtPointer nw;
+ {
+--- 1904,1912 ----
+ SFvSliderMovedCallback(w, (int)(long)n, nw);
+ }
+
+ static void
+ SFhSliderMovedCallback(w, n, nw)
+! Widget w UNUSED;
+ XtPointer n;
+ XtPointer nw;
+ {
+***************
+*** 1933,1942 ****
+ SFdrawList((int)(long)n, SF_DO_NOT_SCROLL);
+ }
+
+- /* ARGSUSED */
+ static void
+ SFhAreaSelectedCallback(w, n, pnew)
+! Widget w;
+ XtPointer n;
+ XtPointer pnew;
+ {
+--- 1922,1930 ----
+ SFdrawList((int)(long)n, SF_DO_NOT_SCROLL);
+ }
+
+ static void
+ SFhAreaSelectedCallback(w, n, pnew)
+! Widget w;
+ XtPointer n;
+ XtPointer pnew;
+ {
+***************
+*** 1994,2004 ****
+ }
+ }
+
+- /* ARGSUSED */
+ static void
+ SFpathSliderMovedCallback(w, client_data, nw)
+! Widget w;
+! XtPointer client_data;
+ XtPointer nw;
+ {
+ SFDir *dir;
+--- 1982,1991 ----
+ }
+ }
+
+ static void
+ SFpathSliderMovedCallback(w, client_data, nw)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+ XtPointer nw;
+ {
+ SFDir *dir;
+***************
+*** 2031,2041 ****
+ XawTextSetInsertionPoint(selFileField, pos);
+ }
+
+- /* ARGSUSED */
+ static void
+ SFpathAreaSelectedCallback(w, client_data, pnew)
+ Widget w;
+! XtPointer client_data;
+ XtPointer pnew;
+ {
+ int nw = (int)(long)pnew;
+--- 2018,2027 ----
+ XawTextSetInsertionPoint(selFileField, pos);
+ }
+
+ static void
+ SFpathAreaSelectedCallback(w, client_data, pnew)
+ Widget w;
+! XtPointer client_data UNUSED;
+ XtPointer pnew;
+ {
+ int nw = (int)(long)pnew;
+***************
+*** 2206,2218 ****
+
+ static void SFexposeList __ARGS((Widget w, XtPointer n, XEvent *event, Boolean *cont));
+
+- /* ARGSUSED */
+ static void
+ SFexposeList(w, n, event, cont)
+! Widget w;
+ XtPointer n;
+ XEvent *event;
+! Boolean *cont;
+ {
+ if ((event->type == NoExpose) || event->xexpose.count)
+ return;
+--- 2192,2203 ----
+
+ static void SFexposeList __ARGS((Widget w, XtPointer n, XEvent *event, Boolean *cont));
+
+ static void
+ SFexposeList(w, n, event, cont)
+! Widget w UNUSED;
+ XtPointer n;
+ XEvent *event;
+! Boolean *cont UNUSED;
+ {
+ if ((event->type == NoExpose) || event->xexpose.count)
+ return;
+***************
+*** 2222,2234 ****
+
+ static void SFmodVerifyCallback __ARGS((Widget w, XtPointer client_data, XEvent *event, Boolean *cont));
+
+- /* ARGSUSED */
+ static void
+ SFmodVerifyCallback(w, client_data, event, cont)
+! Widget w;
+! XtPointer client_data;
+ XEvent *event;
+! Boolean *cont;
+ {
+ char buf[2];
+
+--- 2207,2218 ----
+
+ static void SFmodVerifyCallback __ARGS((Widget w, XtPointer client_data, XEvent *event, Boolean *cont));
+
+ static void
+ SFmodVerifyCallback(w, client_data, event, cont)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+ XEvent *event;
+! Boolean *cont UNUSED;
+ {
+ char buf[2];
+
+***************
+*** 2241,2251 ****
+
+ static void SFokCallback __ARGS((Widget w, XtPointer cl, XtPointer cd));
+
+- /* ARGSUSED */
+ static void
+ SFokCallback(w, cl, cd)
+! Widget w;
+! XtPointer cl, cd;
+ {
+ SFstatus = SEL_FILE_OK;
+ }
+--- 2225,2235 ----
+
+ static void SFokCallback __ARGS((Widget w, XtPointer cl, XtPointer cd));
+
+ static void
+ SFokCallback(w, cl, cd)
+! Widget w UNUSED;
+! XtPointer cl UNUSED;
+! XtPointer cd UNUSED;
+ {
+ SFstatus = SEL_FILE_OK;
+ }
+***************
+*** 2258,2268 ****
+
+ static void SFcancelCallback __ARGS((Widget w, XtPointer cl, XtPointer cd));
+
+- /* ARGSUSED */
+ static void
+ SFcancelCallback(w, cl, cd)
+! Widget w;
+! XtPointer cl, cd;
+ {
+ SFstatus = SEL_FILE_CANCEL;
+ }
+--- 2242,2252 ----
+
+ static void SFcancelCallback __ARGS((Widget w, XtPointer cl, XtPointer cd));
+
+ static void
+ SFcancelCallback(w, cl, cd)
+! Widget w UNUSED;
+! XtPointer cl UNUSED;
+! XtPointer cd UNUSED;
+ {
+ SFstatus = SEL_FILE_CANCEL;
+ }
+***************
+*** 2275,2290 ****
+
+ static void SFdismissAction __ARGS((Widget w, XEvent *event, String *params, Cardinal *num_params));
+
+- /* ARGSUSED */
+ static void
+ SFdismissAction(w, event, params, num_params)
+! Widget w;
+! XEvent *event;
+! String *params;
+! Cardinal *num_params;
+ {
+! if (event->type == ClientMessage &&
+! event->xclient.data.l[0] != SFwmDeleteWindow)
+ return;
+
+ SFstatus = SEL_FILE_CANCEL;
+--- 2259,2273 ----
+
+ static void SFdismissAction __ARGS((Widget w, XEvent *event, String *params, Cardinal *num_params));
+
+ static void
+ SFdismissAction(w, event, params, num_params)
+! Widget w UNUSED;
+! XEvent *event;
+! String *params UNUSED;
+! Cardinal *num_params UNUSED;
+ {
+! if (event->type == ClientMessage
+! && (Atom)event->xclient.data.l[0] != SFwmDeleteWindow)
+ return;
+
+ SFstatus = SEL_FILE_CANCEL;
+***************
+*** 2703,2709 ****
+ SFtextChanged()
+ {
+ #if defined(FEAT_XFONTSET) && defined(XtNinternational)
+! if (_XawTextFormat((TextWidget)selFileField) == XawFmtWide)
+ {
+ wchar_t *wcbuf=(wchar_t *)SFtextBuffer;
+
+--- 2686,2692 ----
+ SFtextChanged()
+ {
+ #if defined(FEAT_XFONTSET) && defined(XtNinternational)
+! if ((unsigned long)_XawTextFormat((TextWidget)selFileField) == XawFmtWide)
+ {
+ wchar_t *wcbuf=(wchar_t *)SFtextBuffer;
+
+***************
+*** 2749,2755 ****
+ #if defined(FEAT_XFONTSET) && defined(XtNinternational)
+ char *buf;
+
+! if (_XawTextFormat((TextWidget)selFileField) == XawFmtWide)
+ {
+ wchar_t *wcbuf;
+ int mbslength;
+--- 2732,2738 ----
+ #if defined(FEAT_XFONTSET) && defined(XtNinternational)
+ char *buf;
+
+! if ((unsigned long)_XawTextFormat((TextWidget)selFileField) == XawFmtWide)
+ {
+ wchar_t *wcbuf;
+ int mbslength;
+*** ../vim-7.2.183/src/gui_motif.c 2008-06-20 11:39:30.000000000 +0200
+--- src/gui_motif.c 2009-05-21 17:15:05.000000000 +0200
+***************
+*** 117,126 ****
+ * Call-back routines.
+ */
+
+- /* ARGSUSED */
+ static void
+ scroll_cb(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data, call_data;
+ {
+ scrollbar_T *sb;
+--- 117,125 ----
+ * Call-back routines.
+ */
+
+ static void
+ scroll_cb(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data, call_data;
+ {
+ scrollbar_T *sb;
+***************
+*** 136,146 ****
+ }
+
+ #ifdef FEAT_GUI_TABLINE
+- /*ARGSUSED*/
+ static void
+ tabline_cb(w, client_data, call_data)
+! Widget w;
+! XtPointer client_data, call_data;
+ {
+ XmNotebookCallbackStruct *nptr;
+
+--- 135,145 ----
+ }
+
+ #ifdef FEAT_GUI_TABLINE
+ static void
+ tabline_cb(w, client_data, call_data)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+! XtPointer call_data;
+ {
+ XmNotebookCallbackStruct *nptr;
+
+***************
+*** 149,159 ****
+ send_tabline_event(nptr->page_number);
+ }
+
+- /*ARGSUSED*/
+ static void
+ tabline_button_cb(w, client_data, call_data)
+ Widget w;
+! XtPointer client_data, call_data;
+ {
+ int cmd, tab_idx;
+
+--- 148,158 ----
+ send_tabline_event(nptr->page_number);
+ }
+
+ static void
+ tabline_button_cb(w, client_data, call_data)
+ Widget w;
+! XtPointer client_data UNUSED;
+! XtPointer call_data UNUSED;
+ {
+ int cmd, tab_idx;
+
+***************
+*** 166,176 ****
+ /*
+ * Tabline single mouse click timeout handler
+ */
+- /*ARGSUSED*/
+ static void
+ motif_tabline_timer_cb (timed_out, interval_id)
+ XtPointer timed_out;
+! XtIntervalId *interval_id;
+ {
+ *((int *)timed_out) = TRUE;
+ }
+--- 165,174 ----
+ /*
+ * Tabline single mouse click timeout handler
+ */
+ static void
+ motif_tabline_timer_cb (timed_out, interval_id)
+ XtPointer timed_out;
+! XtIntervalId *interval_id UNUSED;
+ {
+ *((int *)timed_out) = TRUE;
+ }
+***************
+*** 203,215 ****
+ return FALSE;
+ }
+
+- /*ARGSUSED*/
+ static void
+ tabline_menu_cb(w, closure, e, continue_dispatch)
+ Widget w;
+! XtPointer closure;
+ XEvent *e;
+! Boolean *continue_dispatch;
+ {
+ Widget tab_w;
+ XButtonPressedEvent *event;
+--- 201,212 ----
+ return FALSE;
+ }
+
+ static void
+ tabline_menu_cb(w, closure, e, continue_dispatch)
+ Widget w;
+! XtPointer closure UNUSED;
+ XEvent *e;
+! Boolean *continue_dispatch UNUSED;
+ {
+ Widget tab_w;
+ XButtonPressedEvent *event;
+***************
+*** 277,287 ****
+ XtManageChild(tabLine_menu);
+ }
+
+- /*ARGSUSED*/
+ static void
+ tabline_balloon_cb(beval, state)
+ BalloonEval *beval;
+! int state;
+ {
+ int nr;
+ tabpage_T *tp;
+--- 274,283 ----
+ XtManageChild(tabLine_menu);
+ }
+
+ static void
+ tabline_balloon_cb(beval, state)
+ BalloonEval *beval;
+! int state UNUSED;
+ {
+ int nr;
+ tabpage_T *tp;
+***************
+*** 642,654 ****
+ #endif
+ }
+
+- /*ARGSUSED*/
+ void
+ gui_mch_set_text_area_pos(x, y, w, h)
+! int x;
+! int y;
+! int w;
+! int h;
+ {
+ #ifdef FEAT_TOOLBAR
+ /* Give keyboard focus to the textArea instead of the toolbar. */
+--- 638,649 ----
+ #endif
+ }
+
+ void
+ gui_mch_set_text_area_pos(x, y, w, h)
+! int x UNUSED;
+! int y UNUSED;
+! int w UNUSED;
+! int h UNUSED;
+ {
+ #ifdef FEAT_TOOLBAR
+ /* Give keyboard focus to the textArea instead of the toolbar. */
+***************
+*** 1261,1267 ****
+ if (menu->icon_builtin || gui_find_bitmap(menu->name, buf, "xpm") == FAIL)
+ {
+ if (menu->iconidx >= 0 && menu->iconidx
+! < (sizeof(built_in_pixmaps) / sizeof(built_in_pixmaps[0])))
+ xpm = built_in_pixmaps[menu->iconidx];
+ else
+ xpm = tb_blank_xpm;
+--- 1256,1262 ----
+ if (menu->icon_builtin || gui_find_bitmap(menu->name, buf, "xpm") == FAIL)
+ {
+ if (menu->iconidx >= 0 && menu->iconidx
+! < (int)(sizeof(built_in_pixmaps) / sizeof(built_in_pixmaps[0])))
+ xpm = built_in_pixmaps[menu->iconidx];
+ else
+ xpm = tb_blank_xpm;
+***************
+*** 1716,1725 ****
+ }
+ }
+
+- /* ARGSUSED */
+ void
+ gui_mch_show_popupmenu(menu)
+! vimmenu_T *menu;
+ {
+ #ifdef MOTIF_POPUP
+ XmMenuPosition(menu->submenu_id, gui_x11_get_last_mouse_event());
+--- 1711,1719 ----
+ }
+ }
+
+ void
+ gui_mch_show_popupmenu(menu)
+! vimmenu_T *menu UNUSED;
+ {
+ #ifdef MOTIF_POPUP
+ XmMenuPosition(menu->submenu_id, gui_x11_get_last_mouse_event());
+***************
+*** 2046,2054 ****
+ /*
+ * Callback routine for dialog mnemonic processing.
+ */
+- /*ARGSUSED*/
+ static void
+! mnemonic_event(Widget w, XtPointer call_data, XKeyEvent *event)
+ {
+ do_mnemonic(w, event->keycode);
+ }
+--- 2040,2047 ----
+ /*
+ * Callback routine for dialog mnemonic processing.
+ */
+ static void
+! mnemonic_event(Widget w, XtPointer call_data UNUSED, XKeyEvent *event)
+ {
+ do_mnemonic(w, event->keycode);
+ }
+***************
+*** 2287,2299 ****
+ * Put up a file requester.
+ * Returns the selected name in allocated memory, or NULL for Cancel.
+ */
+- /* ARGSUSED */
+ char_u *
+ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
+! int saving; /* select file to write */
+ char_u *title; /* title for the window */
+ char_u *dflt; /* default name */
+! char_u *ext; /* not used (extension added) */
+ char_u *initdir; /* initial directory, NULL for current dir */
+ char_u *filter; /* file name filter */
+ {
+--- 2280,2291 ----
+ * Put up a file requester.
+ * Returns the selected name in allocated memory, or NULL for Cancel.
+ */
+ char_u *
+ gui_mch_browse(saving, title, dflt, ext, initdir, filter)
+! int saving UNUSED; /* select file to write */
+ char_u *title; /* title for the window */
+ char_u *dflt; /* default name */
+! char_u *ext UNUSED; /* not used (extension added) */
+ char_u *initdir; /* initial directory, NULL for current dir */
+ char_u *filter; /* file name filter */
+ {
+***************
+*** 2413,2424 ****
+ /*
+ * Process callback from Dialog cancel actions.
+ */
+- /* ARGSUSED */
+ static void
+ DialogCancelCB(w, client_data, call_data)
+! Widget w; /* widget id */
+! XtPointer client_data; /* data from application */
+! XtPointer call_data; /* data from widget class */
+ {
+ if (browse_fname != NULL)
+ {
+--- 2405,2415 ----
+ /*
+ * Process callback from Dialog cancel actions.
+ */
+ static void
+ DialogCancelCB(w, client_data, call_data)
+! Widget w UNUSED; /* widget id */
+! XtPointer client_data UNUSED; /* data from application */
+! XtPointer call_data UNUSED; /* data from widget class */
+ {
+ if (browse_fname != NULL)
+ {
+***************
+*** 2431,2442 ****
+ /*
+ * Process callback from Dialog actions.
+ */
+- /* ARGSUSED */
+ static void
+ DialogAcceptCB(w, client_data, call_data)
+! Widget w; /* widget id */
+! XtPointer client_data; /* data from application */
+! XtPointer call_data; /* data from widget class */
+ {
+ XmFileSelectionBoxCallbackStruct *fcb;
+
+--- 2422,2432 ----
+ /*
+ * Process callback from Dialog actions.
+ */
+ static void
+ DialogAcceptCB(w, client_data, call_data)
+! Widget w UNUSED; /* widget id */
+! XtPointer client_data UNUSED; /* data from application */
+! XtPointer call_data; /* data from widget class */
+ {
+ XmFileSelectionBoxCallbackStruct *fcb;
+
+***************
+*** 2467,2479 ****
+ * Callback function for the textfield. When CR is hit this works like
+ * hitting the "OK" button, ESC like "Cancel".
+ */
+- /* ARGSUSED */
+ static void
+ keyhit_callback(w, client_data, event, cont)
+ Widget w;
+! XtPointer client_data;
+ XEvent *event;
+! Boolean *cont;
+ {
+ char buf[2];
+ KeySym key_sym;
+--- 2457,2468 ----
+ * Callback function for the textfield. When CR is hit this works like
+ * hitting the "OK" button, ESC like "Cancel".
+ */
+ static void
+ keyhit_callback(w, client_data, event, cont)
+ Widget w;
+! XtPointer client_data UNUSED;
+ XEvent *event;
+! Boolean *cont UNUSED;
+ {
+ char buf[2];
+ KeySym key_sym;
+***************
+*** 2490,2501 ****
+ XmTextFieldClearSelection(w, XtLastTimestampProcessed(gui.dpy));
+ }
+
+- /* ARGSUSED */
+ static void
+ butproc(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ dialogStatus = (int)(long)client_data + 1;
+ }
+--- 2479,2489 ----
+ XmTextFieldClearSelection(w, XtLastTimestampProcessed(gui.dpy));
+ }
+
+ static void
+ butproc(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ dialogStatus = (int)(long)client_data + 1;
+ }
+***************
+*** 2567,2576 ****
+ }
+ #endif
+
+- /* ARGSUSED */
+ int
+ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
+! int type;
+ char_u *title;
+ char_u *message;
+ char_u *button_names;
+--- 2555,2563 ----
+ }
+ #endif
+
+ int
+ gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
+! int type UNUSED;
+ char_u *title;
+ char_u *message;
+ char_u *button_names;
+***************
+*** 3197,3203 ****
+ XmNchildren, &children,
+ XmNnumChildren, &numChildren, NULL);
+ borders += tst + tmh;
+! for (i = 0; i < numChildren; i++)
+ {
+ whgt = 0;
+ XtVaGetValues(children[i], XmNheight, &whgt, NULL);
+--- 3184,3190 ----
+ XmNchildren, &children,
+ XmNnumChildren, &numChildren, NULL);
+ borders += tst + tmh;
+! for (i = 0; i < (int)numChildren; i++)
+ {
+ whgt = 0;
+ XtVaGetValues(children[i], XmNheight, &whgt, NULL);
+***************
+*** 3237,3249 ****
+ * I have to use footer help for backwards compatability. Hopefully both will
+ * get implemented and the user will have a choice.
+ */
+- /*ARGSUSED*/
+ static void
+ toolbarbutton_enter_cb(w, client_data, event, cont)
+! Widget w;
+ XtPointer client_data;
+! XEvent *event;
+! Boolean *cont;
+ {
+ vimmenu_T *menu = (vimmenu_T *) client_data;
+
+--- 3224,3235 ----
+ * I have to use footer help for backwards compatability. Hopefully both will
+ * get implemented and the user will have a choice.
+ */
+ static void
+ toolbarbutton_enter_cb(w, client_data, event, cont)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XEvent *event UNUSED;
+! Boolean *cont UNUSED;
+ {
+ vimmenu_T *menu = (vimmenu_T *) client_data;
+
+***************
+*** 3254,3266 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+ toolbarbutton_leave_cb(w, client_data, event, cont)
+! Widget w;
+! XtPointer client_data;
+! XEvent *event;
+! Boolean *cont;
+ {
+ gui_mch_set_footer((char_u *) "");
+ }
+--- 3240,3251 ----
+ }
+ }
+
+ static void
+ toolbarbutton_leave_cb(w, client_data, event, cont)
+! Widget w UNUSED;
+! XtPointer client_data UNUSED;
+! XEvent *event UNUSED;
+! Boolean *cont UNUSED;
+ {
+ gui_mch_set_footer((char_u *) "");
+ }
+***************
+*** 3492,3501 ****
+ /*
+ * Set the fontlist for Widget "id" to use gui.menu_fontset or gui.menu_font.
+ */
+- /*ARGSUSED*/
+ void
+ gui_motif_menu_fontlist(id)
+! Widget id;
+ {
+ #ifdef FEAT_MENU
+ #ifdef FONTSET_ALWAYS
+--- 3477,3485 ----
+ /*
+ * Set the fontlist for Widget "id" to use gui.menu_fontset or gui.menu_font.
+ */
+ void
+ gui_motif_menu_fontlist(id)
+! Widget id UNUSED;
+ {
+ #ifdef FEAT_MENU
+ #ifdef FONTSET_ALWAYS
+***************
+*** 3566,3573 ****
+ Widget cancel;
+ } SharedFindReplace;
+
+! static SharedFindReplace find_widgets = { NULL };
+! static SharedFindReplace repl_widgets = { NULL };
+
+ static void find_replace_destroy_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
+ static void find_replace_dismiss_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
+--- 3550,3557 ----
+ Widget cancel;
+ } SharedFindReplace;
+
+! static SharedFindReplace find_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+! static SharedFindReplace repl_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+
+ static void find_replace_destroy_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
+ static void find_replace_dismiss_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
+***************
+*** 3576,3587 ****
+ static void find_replace_keypress __ARGS((Widget w, SharedFindReplace * frdp, XKeyEvent * event));
+ static void find_replace_dialog_create __ARGS((char_u *entry_text, int do_replace));
+
+- /*ARGSUSED*/
+ static void
+ find_replace_destroy_callback(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ SharedFindReplace *cd = (SharedFindReplace *)client_data;
+
+--- 3560,3570 ----
+ static void find_replace_keypress __ARGS((Widget w, SharedFindReplace * frdp, XKeyEvent * event));
+ static void find_replace_dialog_create __ARGS((char_u *entry_text, int do_replace));
+
+ static void
+ find_replace_destroy_callback(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ SharedFindReplace *cd = (SharedFindReplace *)client_data;
+
+***************
+*** 3590,3601 ****
+ cd->dialog = (Widget)0;
+ }
+
+- /*ARGSUSED*/
+ static void
+ find_replace_dismiss_callback(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ SharedFindReplace *cd = (SharedFindReplace *)client_data;
+
+--- 3573,3583 ----
+ cd->dialog = (Widget)0;
+ }
+
+ static void
+ find_replace_dismiss_callback(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ SharedFindReplace *cd = (SharedFindReplace *)client_data;
+
+***************
+*** 3603,3624 ****
+ XtUnmanageChild(cd->dialog);
+ }
+
+- /*ARGSUSED*/
+ static void
+ entry_activate_callback(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ XmProcessTraversal((Widget)client_data, XmTRAVERSE_CURRENT);
+ }
+
+- /*ARGSUSED*/
+ static void
+ find_replace_callback(w, client_data, call_data)
+! Widget w;
+ XtPointer client_data;
+! XtPointer call_data;
+ {
+ long_u flags = (long_u)client_data;
+ char *find_text, *repl_text;
+--- 3585,3604 ----
+ XtUnmanageChild(cd->dialog);
+ }
+
+ static void
+ entry_activate_callback(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ XmProcessTraversal((Widget)client_data, XmTRAVERSE_CURRENT);
+ }
+
+ static void
+ find_replace_callback(w, client_data, call_data)
+! Widget w UNUSED;
+ XtPointer client_data;
+! XtPointer call_data UNUSED;
+ {
+ long_u flags = (long_u)client_data;
+ char *find_text, *repl_text;
+***************
+*** 3668,3677 ****
+ XtFree(repl_text);
+ }
+
+- /*ARGSUSED*/
+ static void
+ find_replace_keypress(w, frdp, event)
+! Widget w;
+ SharedFindReplace *frdp;
+ XKeyEvent *event;
+ {
+--- 3648,3656 ----
+ XtFree(repl_text);
+ }
+
+ static void
+ find_replace_keypress(w, frdp, event)
+! Widget w UNUSED;
+ SharedFindReplace *frdp;
+ XKeyEvent *event;
+ {
+*** ../vim-7.2.183/src/gui_xmdlg.c 2008-11-28 21:26:50.000000000 +0100
+--- src/gui_xmdlg.c 2009-05-21 17:01:52.000000000 +0200
+***************
+*** 448,454 ****
+
+ items[i] = XmStringCreateLocalized(list[ENCODING][i]);
+
+! if (i < n_items)
+ {
+ /* recycle old button */
+ XtVaSetValues(children[i],
+--- 448,454 ----
+
+ items[i] = XmStringCreateLocalized(list[ENCODING][i]);
+
+! if (i < (int)n_items)
+ {
+ /* recycle old button */
+ XtVaSetValues(children[i],
+***************
+*** 481,487 ****
+
+ /* Destroy all the outstanding menu items.
+ */
+! for (i = count[ENCODING]; i < n_items; ++i)
+ {
+ XtUnmanageChild(children[i]);
+ XtDestroyWidget(children[i]);
+--- 481,487 ----
+
+ /* Destroy all the outstanding menu items.
+ */
+! for (i = count[ENCODING]; i < (int)n_items; ++i)
+ {
+ XtUnmanageChild(children[i]);
+ XtDestroyWidget(children[i]);
+***************
+*** 544,552 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+! stoggle_callback(Widget w,
+ SharedFontSelData *data,
+ XmToggleButtonCallbackStruct *call_data)
+ {
+--- 544,551 ----
+ }
+ }
+
+ static void
+! stoggle_callback(Widget w UNUSED,
+ SharedFontSelData *data,
+ XmToggleButtonCallbackStruct *call_data)
+ {
+***************
+*** 709,719 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+ encoding_callback(Widget w,
+ SharedFontSelData *data,
+! XtPointer dummy)
+ {
+ XmString str;
+ XmListCallbackStruct fake_data;
+--- 708,717 ----
+ }
+ }
+
+ static void
+ encoding_callback(Widget w,
+ SharedFontSelData *data,
+! XtPointer dummy UNUSED)
+ {
+ XmString str;
+ XmListCallbackStruct fake_data;
+***************
+*** 752,762 ****
+ do_choice(w, data, call_data, SIZE);
+ }
+
+- /*ARGSUSED*/
+ static void
+! cancel_callback(Widget w,
+ SharedFontSelData *data,
+! XmListCallbackStruct *call_data)
+ {
+ if (data->sel[ENCODING])
+ {
+--- 750,759 ----
+ do_choice(w, data, call_data, SIZE);
+ }
+
+ static void
+! cancel_callback(Widget w UNUSED,
+ SharedFontSelData *data,
+! XmListCallbackStruct *call_data UNUSED)
+ {
+ if (data->sel[ENCODING])
+ {
+***************
+*** 789,799 ****
+ data->exit = True;
+ }
+
+- /*ARGSUSED*/
+ static void
+! ok_callback(Widget w,
+ SharedFontSelData *data,
+! XmPushButtonCallbackStruct *call_data)
+ {
+ char *pattern;
+ char **name;
+--- 786,795 ----
+ data->exit = True;
+ }
+
+ static void
+! ok_callback(Widget w UNUSED,
+ SharedFontSelData *data,
+! XmPushButtonCallbackStruct *call_data UNUSED)
+ {
+ char *pattern;
+ char **name;
+*** ../vim-7.2.183/src/gui_xmebw.c 2008-11-28 21:26:50.000000000 +0100
+--- src/gui_xmebw.c 2009-05-21 17:06:17.000000000 +0200
+***************
+*** 235,247 ****
+ return tmp;
+ }
+
+- /*ARGSUSED*/
+ static int
+ alloc_color(Display *display,
+ Colormap colormap,
+ char *colorname,
+ XColor *xcolor,
+! void *closure)
+ {
+ int status;
+
+--- 235,246 ----
+ return tmp;
+ }
+
+ static int
+ alloc_color(Display *display,
+ Colormap colormap,
+ char *colorname,
+ XColor *xcolor,
+! void *closure UNUSED)
+ {
+ int status;
+
+***************
+*** 595,603 ****
+ XtHeight(eb), eb->primitive.highlight_thickness);
+ }
+
+- /*ARGSUSED*/
+ static void
+! draw_pixmap(XmEnhancedButtonWidget eb, XEvent *event, Region region)
+ {
+ Pixmap pix;
+ GC gc = eb->label.normal_GC;
+--- 594,603 ----
+ XtHeight(eb), eb->primitive.highlight_thickness);
+ }
+
+ static void
+! draw_pixmap(XmEnhancedButtonWidget eb,
+! XEvent *event UNUSED,
+! Region region UNUSED)
+ {
+ Pixmap pix;
+ GC gc = eb->label.normal_GC;
+***************
+*** 641,647 ****
+ height = eb->core.height - 2 * y;
+ if (h < height)
+ height = h;
+! if (depth == eb->core.depth)
+ XCopyArea(XtDisplay(eb), pix, XtWindow(eb), gc, 0, 0,
+ width, height, x, y);
+ else if (depth == 1)
+--- 641,647 ----
+ height = eb->core.height - 2 * y;
+ if (h < height)
+ height = h;
+! if (depth == (int)eb->core.depth)
+ XCopyArea(XtDisplay(eb), pix, XtWindow(eb), gc, 0, 0,
+ width, height, x, y);
+ else if (depth == 1)
+***************
+*** 731,739 ****
+ eb->label.normal_GC = tmp_gc;
+ }
+
+- /*ARGSUSED*/
+ static void
+! Enter(Widget wid, XEvent *event, String *params, Cardinal *num_params)
+ {
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget) wid;
+ XmPushButtonCallbackStruct call_value;
+--- 731,741 ----
+ eb->label.normal_GC = tmp_gc;
+ }
+
+ static void
+! Enter(Widget wid,
+! XEvent *event,
+! String *params UNUSED,
+! Cardinal *num_params UNUSED)
+ {
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget) wid;
+ XmPushButtonCallbackStruct call_value;
+***************
+*** 818,826 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+! Leave(Widget wid, XEvent *event, String *params, Cardinal *num_params)
+ {
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget)wid;
+ XmPushButtonCallbackStruct call_value;
+--- 820,830 ----
+ }
+ }
+
+ static void
+! Leave(Widget wid,
+! XEvent *event,
+! String *params UNUSED,
+! Cardinal *num_params UNUSED)
+ {
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget)wid;
+ XmPushButtonCallbackStruct call_value;
+***************
+*** 976,984 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static void
+! Initialize(Widget rq, Widget ebw, ArgList args, Cardinal *n)
+ {
+ XmEnhancedButtonWidget request = (XmEnhancedButtonWidget)rq;
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget)ebw;
+--- 980,987 ----
+ }
+ }
+
+ static void
+! Initialize(Widget rq, Widget ebw, ArgList args UNUSED, Cardinal *n UNUSED)
+ {
+ XmEnhancedButtonWidget request = (XmEnhancedButtonWidget)rq;
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget)ebw;
+***************
+*** 1056,1064 ****
+ free_pixmaps((XmEnhancedButtonWidget)w);
+ }
+
+- /*ARGSUSED*/
+ static Boolean
+! SetValues(Widget current, Widget request, Widget new, ArgList args, Cardinal *n)
+ {
+ XmEnhancedButtonWidget cur = (XmEnhancedButtonWidget) current;
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget) new;
+--- 1059,1070 ----
+ free_pixmaps((XmEnhancedButtonWidget)w);
+ }
+
+ static Boolean
+! SetValues(Widget current,
+! Widget request UNUSED,
+! Widget new,
+! ArgList args UNUSED,
+! Cardinal *n UNUSED)
+ {
+ XmEnhancedButtonWidget cur = (XmEnhancedButtonWidget) current;
+ XmEnhancedButtonWidget eb = (XmEnhancedButtonWidget) new;
+***************
+*** 1108,1114 ****
+ if ((win_x < 0) || (win_y < 0))
+ return False;
+
+! if ((win_x > r_width) || (win_y > r_height))
+ return False;
+ draw_highlight(eb);
+ draw_shadows(eb);
+--- 1114,1120 ----
+ if ((win_x < 0) || (win_y < 0))
+ return False;
+
+! if ((win_x > (int)r_width) || (win_y > (int)r_height))
+ return False;
+ draw_highlight(eb);
+ draw_shadows(eb);
+*** ../vim-7.2.183/src/if_python.c 2009-01-13 18:10:21.000000000 +0100
+--- src/if_python.c 2009-05-21 17:27:50.000000000 +0200
+***************
+*** 1096,1104 ****
+
+ /* Vim module - Implementation
+ */
+- /*ARGSUSED*/
+ static PyObject *
+! VimCommand(PyObject *self, PyObject *args)
+ {
+ char *cmd;
+ PyObject *result;
+--- 1096,1103 ----
+
+ /* Vim module - Implementation
+ */
+ static PyObject *
+! VimCommand(PyObject *self UNUSED, PyObject *args)
+ {
+ char *cmd;
+ PyObject *result;
+***************
+*** 1242,1250 ****
+ }
+ #endif
+
+- /*ARGSUSED*/
+ static PyObject *
+! VimEval(PyObject *self, PyObject *args)
+ {
+ #ifdef FEAT_EVAL
+ char *expr;
+--- 1241,1248 ----
+ }
+ #endif
+
+ static PyObject *
+! VimEval(PyObject *self UNUSED, PyObject *args)
+ {
+ #ifdef FEAT_EVAL
+ char *expr;
+***************
+*** 1894,1902 ****
+ /* Buffer list object - Implementation
+ */
+
+- /*ARGSUSED*/
+ static PyInt
+! BufListLength(PyObject *self)
+ {
+ buf_T *b = firstbuf;
+ PyInt n = 0;
+--- 1892,1899 ----
+ /* Buffer list object - Implementation
+ */
+
+ static PyInt
+! BufListLength(PyObject *self UNUSED)
+ {
+ buf_T *b = firstbuf;
+ PyInt n = 0;
+***************
+*** 1910,1918 ****
+ return n;
+ }
+
+- /*ARGSUSED*/
+ static PyObject *
+! BufListItem(PyObject *self, PyInt n)
+ {
+ buf_T *b;
+
+--- 1907,1914 ----
+ return n;
+ }
+
+ static PyObject *
+! BufListItem(PyObject *self UNUSED, PyInt n)
+ {
+ buf_T *b;
+
+***************
+*** 2210,2218 ****
+
+ /* Window list object - Implementation
+ */
+- /*ARGSUSED*/
+ static PyInt
+! WinListLength(PyObject *self)
+ {
+ win_T *w = firstwin;
+ PyInt n = 0;
+--- 2206,2213 ----
+
+ /* Window list object - Implementation
+ */
+ static PyInt
+! WinListLength(PyObject *self UNUSED)
+ {
+ win_T *w = firstwin;
+ PyInt n = 0;
+***************
+*** 2226,2234 ****
+ return n;
+ }
+
+- /*ARGSUSED*/
+ static PyObject *
+! WinListItem(PyObject *self, PyInt n)
+ {
+ win_T *w;
+
+--- 2221,2228 ----
+ return n;
+ }
+
+ static PyObject *
+! WinListItem(PyObject *self UNUSED, PyInt n)
+ {
+ win_T *w;
+
+***************
+*** 2274,2282 ****
+
+ /* Current items object - Implementation
+ */
+- /*ARGSUSED*/
+ static PyObject *
+! CurrentGetattr(PyObject *self, char *name)
+ {
+ if (strcmp(name, "buffer") == 0)
+ return (PyObject *)BufferNew(curbuf);
+--- 2268,2275 ----
+
+ /* Current items object - Implementation
+ */
+ static PyObject *
+! CurrentGetattr(PyObject *self UNUSED, char *name)
+ {
+ if (strcmp(name, "buffer") == 0)
+ return (PyObject *)BufferNew(curbuf);
+***************
+*** 2295,2303 ****
+ }
+ }
+
+- /*ARGSUSED*/
+ static int
+! CurrentSetattr(PyObject *self, char *name, PyObject *value)
+ {
+ if (strcmp(name, "line") == 0)
+ {
+--- 2288,2295 ----
+ }
+ }
+
+ static int
+! CurrentSetattr(PyObject *self UNUSED, char *name, PyObject *value)
+ {
+ if (strcmp(name, "line") == 0)
+ {
+*** ../vim-7.2.183/src/window.c 2009-02-22 02:36:36.000000000 +0100
+--- src/window.c 2009-05-21 15:14:54.000000000 +0200
+***************
+*** 1163,1174 ****
+ * WSP_NEWLOC may be specified in flags to prevent the location list from
+ * being copied.
+ */
+- /*ARGSUSED*/
+ static void
+ win_init(newp, oldp, flags)
+ win_T *newp;
+ win_T *oldp;
+! int flags;
+ {
+ int i;
+
+--- 1163,1173 ----
+ * WSP_NEWLOC may be specified in flags to prevent the location list from
+ * being copied.
+ */
+ static void
+ win_init(newp, oldp, flags)
+ win_T *newp;
+ win_T *oldp;
+! int flags UNUSED;
+ {
+ int i;
+
+***************
+*** 1268,1278 ****
+ * Must be called when there is just one window, filling the whole screen
+ * (excluding the command line).
+ */
+- /*ARGSUSED*/
+ int
+ make_windows(count, vertical)
+ int count;
+! int vertical; /* split windows vertically if TRUE */
+ {
+ int maxcount;
+ int todo;
+--- 1267,1276 ----
+ * Must be called when there is just one window, filling the whole screen
+ * (excluding the command line).
+ */
+ int
+ make_windows(count, vertical)
+ int count;
+! int vertical UNUSED; /* split windows vertically if TRUE */
+ {
+ int maxcount;
+ int todo;
+***************
+*** 2353,2363 ****
+ * Remove a window and its frame from the tree of frames.
+ * Returns a pointer to the window that got the freed up space.
+ */
+- /*ARGSUSED*/
+ static win_T *
+ winframe_remove(win, dirp, tp)
+ win_T *win;
+! int *dirp; /* set to 'v' or 'h' for direction if 'ea' */
+ tabpage_T *tp; /* tab page "win" is in, NULL for current */
+ {
+ frame_T *frp, *frp2, *frp3;
+--- 2351,2360 ----
+ * Remove a window and its frame from the tree of frames.
+ * Returns a pointer to the window that got the freed up space.
+ */
+ static win_T *
+ winframe_remove(win, dirp, tp)
+ win_T *win;
+! int *dirp UNUSED; /* set to 'v' or 'h' for direction if 'ea' */
+ tabpage_T *tp; /* tab page "win" is in, NULL for current */
+ {
+ frame_T *frp, *frp2, *frp3;
+***************
+*** 3500,3509 ****
+ * FAIL.
+ * Careful: When OK is returned need to get a new tab page very very soon!
+ */
+- /*ARGSUSED*/
+ static int
+ leave_tabpage(new_curbuf)
+! buf_T *new_curbuf; /* what is going to be the new curbuf,
+ NULL if unknown */
+ {
+ tabpage_T *tp = curtab;
+--- 3497,3505 ----
+ * FAIL.
+ * Careful: When OK is returned need to get a new tab page very very soon!
+ */
+ static int
+ leave_tabpage(new_curbuf)
+! buf_T *new_curbuf UNUSED; /* what is going to be the new curbuf,
+ NULL if unknown */
+ {
+ tabpage_T *tp = curtab;
+***************
+*** 3545,3555 ****
+ * Start using tab page "tp".
+ * Only to be used after leave_tabpage() or freeing the current tab page.
+ */
+- /*ARGSUSED*/
+ static void
+ enter_tabpage(tp, old_curbuf)
+ tabpage_T *tp;
+! buf_T *old_curbuf;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+--- 3541,3550 ----
+ * Start using tab page "tp".
+ * Only to be used after leave_tabpage() or freeing the current tab page.
+ */
+ static void
+ enter_tabpage(tp, old_curbuf)
+ tabpage_T *tp;
+! buf_T *old_curbuf UNUSED;
+ {
+ int old_off = tp->tp_firstwin->w_winrow;
+ win_T *next_prevwin = tp->tp_prevwin;
+***************
+*** 4157,4166 ****
+ /*
+ * allocate a window structure and link it in the window list
+ */
+- /*ARGSUSED*/
+ static win_T *
+ win_alloc(after)
+! win_T *after;
+ {
+ win_T *newwin;
+
+--- 4152,4160 ----
+ /*
+ * allocate a window structure and link it in the window list
+ */
+ static win_T *
+ win_alloc(after)
+! win_T *after UNUSED;
+ {
+ win_T *newwin;
+
+*** ../vim-7.2.183/src/workshop.c 2008-11-28 11:47:14.000000000 +0100
+--- src/workshop.c 2009-05-21 17:12:55.000000000 +0200
+***************
+*** 204,215 ****
+ * Function:
+ * Load a given file into the WorkShop buffer.
+ */
+- /*ARGSUSED*/
+ void
+ workshop_load_file(
+ char *filename, /* the file to load */
+ int line, /* an optional line number (or 0) */
+! char *frameid) /* used for multi-frame support */
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+--- 204,214 ----
+ * Function:
+ * Load a given file into the WorkShop buffer.
+ */
+ void
+ workshop_load_file(
+ char *filename, /* the file to load */
+ int line, /* an optional line number (or 0) */
+! char *frameid UNUSED) /* used for multi-frame support */
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+***************
+*** 263,272 ****
+ load_window(filename, lineno);
+ }
+
+- /*ARGSUSED*/
+ void
+ workshop_front_file(
+! char *filename)
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+--- 262,270 ----
+ load_window(filename, lineno);
+ }
+
+ void
+ workshop_front_file(
+! char *filename UNUSED)
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+***************
+*** 538,546 ****
+ * breakpoints have moved when a program has been recompiled and
+ * reloaded into dbx.
+ */
+- /*ARGSUSED*/
+ void
+! workshop_moved_marks(char *filename)
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+--- 536,543 ----
+ * breakpoints have moved when a program has been recompiled and
+ * reloaded into dbx.
+ */
+ void
+! workshop_moved_marks(char *filename UNUSED)
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+***************
+*** 575,585 ****
+ return (int)h;
+ }
+
+- /*ARGSUSED*/
+ void
+ workshop_footer_message(
+! char *message,
+! int severity) /* severity is currently unused */
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+--- 572,581 ----
+ return (int)h;
+ }
+
+ void
+ workshop_footer_message(
+! char *message,
+! int severity UNUSED) /* severity is currently unused */
+ {
+ #ifdef WSDEBUG_TRACE
+ if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE))
+***************
+*** 687,701 ****
+ * command. The globals curMenuName and curMenuPriority contain the name and
+ * priority of the parent menu tree.
+ */
+- /*ARGSUSED*/
+ void
+ workshop_menu_item(
+ char *label,
+ char *verb,
+! char *accelerator,
+ char *acceleratorText,
+! char *name,
+! char *filepos,
+ char *sensitive)
+ {
+ char cbuf[BUFSIZ];
+--- 683,696 ----
+ * command. The globals curMenuName and curMenuPriority contain the name and
+ * priority of the parent menu tree.
+ */
+ void
+ workshop_menu_item(
+ char *label,
+ char *verb,
+! char *accelerator UNUSED,
+ char *acceleratorText,
+! char *name UNUSED,
+! char *filepos UNUSED,
+ char *sensitive)
+ {
+ char cbuf[BUFSIZ];
+***************
+*** 810,822 ****
+ workshopInitDone = True;
+ }
+
+- /*ARGSUSED*/
+ void
+ workshop_toolbar_button(
+ char *label,
+ char *verb,
+! char *senseVerb,
+! char *filepos,
+ char *help,
+ char *sense,
+ char *file,
+--- 805,816 ----
+ workshopInitDone = True;
+ }
+
+ void
+ workshop_toolbar_button(
+ char *label,
+ char *verb,
+! char *senseVerb UNUSED,
+! char *filepos UNUSED,
+ char *help,
+ char *sense,
+ char *file,
+***************
+*** 968,974 ****
+ if (strcmp(option, "syntax") == 0)
+ vim_snprintf(cbuf, sizeof(cbuf), "syntax %s", value);
+ else if (strcmp(option, "savefiles") == 0)
+! ; /* XXX - Not yet implemented */
+ break;
+
+ case 'l':
+--- 962,970 ----
+ if (strcmp(option, "syntax") == 0)
+ vim_snprintf(cbuf, sizeof(cbuf), "syntax %s", value);
+ else if (strcmp(option, "savefiles") == 0)
+! {
+! /* XXX - Not yet implemented */
+! }
+ break;
+
+ case 'l':
+***************
+*** 1098,1107 ****
+ /*
+ * A button in the toolbar has been pushed.
+ */
+- /*ARGSUSED*/
+ int
+ workshop_get_positions(
+! void *clientData, /* unused */
+ char **filename, /* output data */
+ int *curLine, /* output data */
+ int *curCol, /* output data */
+--- 1094,1102 ----
+ /*
+ * A button in the toolbar has been pushed.
+ */
+ int
+ workshop_get_positions(
+! void *clientData UNUSED,
+ char **filename, /* output data */
+ int *curLine, /* output data */
+ int *curCol, /* output data */
+***************
+*** 1526,1534 ****
+ return NULL;
+ }
+
+- /*ARGSUSED*/
+ void
+! workshop_save_sensitivity(char *filename)
+ {
+ }
+
+--- 1521,1528 ----
+ return NULL;
+ }
+
+ void
+! workshop_save_sensitivity(char *filename UNUSED)
+ {
+ }
+
+*** ../vim-7.2.183/src/version.c 2009-05-21 15:19:59.000000000 +0200
+--- src/version.c 2009-05-21 23:19:40.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 184,
+ /**/
+
+--
+CART DRIVER: Bring out your dead!
+LARGE MAN: Here's one!
+CART DRIVER: Ninepence.
+BODY: I'm not dead!
+ "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.185 b/source/ap/vim/patches/7.2.185
new file mode 100644
index 000000000..35dbad05e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.185
@@ -0,0 +1,305 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.185
+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.185
+Problem: Some more compiler warnings when using gcc -Wextra.
+Solution: Add UNUSED and type casts.
+Files: src/Makefile, src/if_tlc.c, src/if_ruby.c
+
+
+*** ../vim-7.2.184/src/Makefile 2009-05-21 23:25:47.000000000 +0200
+--- src/Makefile 2009-05-22 18:18:44.000000000 +0200
+***************
+*** 105,112 ****
+ # 4. "make test" {{{1
+ # This is optional. This will run Vim scripts on a number of test
+ # files, and compare the produced output with the expected output.
+! # If all is well, you will get the "ALL DONE" message in the end. See
+! # below (search for "/^test").
+ #
+ # 5. "make install" {{{1
+ # If the new Vim seems to be working OK you can install it and the
+--- 105,112 ----
+ # 4. "make test" {{{1
+ # This is optional. This will run Vim scripts on a number of test
+ # files, and compare the produced output with the expected output.
+! # If all is well, you will get the "ALL DONE" message in the end. If a
+! # test fails you get "TEST FAILURE". See below (search for "/^test").
+ #
+ # 5. "make install" {{{1
+ # If the new Vim seems to be working OK you can install it and the
+***************
+*** 533,538 ****
+--- 533,543 ----
+ #CFLAGS = -g -DDEBUG -Wall -Wshadow -Wmissing-prototypes
+ #CFLAGS = -g -O2 '-DSTARTUPTIME="vimstartup"' -fno-strength-reduce -Wall -Wmissing-prototypes
+
++ # Use this with GCC to check for mistakes, unused arguments, etc.
++ #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code
++ #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
++ #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code
++
+ # EFENCE - Electric-Fence malloc debugging: catches memory accesses beyond
+ # allocated memory (and makes every malloc()/free() very slow).
+ # Electric Fence is free (search ftp sites).
+***************
+*** 551,562 ****
+ # }}}
+
+ # LINT - for running lint
+! # For standard lint
+! #LINT = lint
+! #LINT_OPTIONS = -beprxzF
+! # For splint (see cleanlint.vim for filtering the output)
+! LINT = splint
+! LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
+
+ # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+ # Might not work with GUI or Perl.
+--- 556,568 ----
+ # }}}
+
+ # LINT - for running lint
+! # For standard Unix lint
+! LINT = lint
+! LINT_OPTIONS = -beprxzF
+! # For splint
+! # It doesn't work well, crashes on include files and non-ascii characters.
+! #LINT = splint
+! #LINT_OPTIONS = +unixlib -weak -macrovarprefixexclude -showfunc -linelen 9999
+
+ # PROFILING - Uncomment the next two lines to do profiling with gcc and gprof.
+ # Might not work with GUI or Perl.
+***************
+*** 1743,1749 ****
+ # messages. Don't worry about that.
+ # If there is a real error, there will be a difference between "test.out" and
+ # a "test99.ok" file.
+! # If everything is alright, the final message will be "ALL DONE".
+ #
+ test check:
+ $(MAKE) -f Makefile $(VIMTARGET)
+--- 1749,1756 ----
+ # messages. Don't worry about that.
+ # If there is a real error, there will be a difference between "test.out" and
+ # a "test99.ok" file.
+! # If everything is alright, the final message will be "ALL DONE". If not you
+! # get "TEST FAILURE".
+ #
+ test check:
+ $(MAKE) -f Makefile $(VIMTARGET)
+***************
+*** 2427,2433 ****
+ $(CCC) -o $@ if_xcmdsrv.c
+
+ objects/if_mzsch.o: if_mzsch.c
+! $(CCC) -o $@ if_mzsch.c
+
+ objects/if_perl.o: auto/if_perl.c
+ $(CCC) -o $@ auto/if_perl.c
+--- 2434,2440 ----
+ $(CCC) -o $@ if_xcmdsrv.c
+
+ objects/if_mzsch.o: if_mzsch.c
+! $(CCC) -o $@ $(MZSCHEME_CFLAGS_EXTRA) if_mzsch.c
+
+ objects/if_perl.o: auto/if_perl.c
+ $(CCC) -o $@ auto/if_perl.c
+***************
+*** 2436,2442 ****
+ $(CCC) -o $@ if_perlsfio.c
+
+ objects/if_python.o: if_python.c
+! $(CCC) -o $@ if_python.c
+
+ objects/if_ruby.o: if_ruby.c
+ $(CCC) -o $@ if_ruby.c
+--- 2443,2449 ----
+ $(CCC) -o $@ if_perlsfio.c
+
+ objects/if_python.o: if_python.c
+! $(CCC) -o $@ $(PYTHON_CFLAGS_EXTRA) if_python.c
+
+ objects/if_ruby.o: if_ruby.c
+ $(CCC) -o $@ if_ruby.c
+*** ../vim-7.2.184/src/if_ruby.c 2007-09-13 15:00:49.000000000 +0200
+--- src/if_ruby.c 2009-05-22 15:32:04.000000000 +0200
+***************
+*** 492,498 ****
+ }
+ }
+
+! static VALUE vim_message(VALUE self, VALUE str)
+ {
+ char *buff, *p;
+
+--- 492,498 ----
+ }
+ }
+
+! static VALUE vim_message(VALUE self UNUSED, VALUE str)
+ {
+ char *buff, *p;
+
+***************
+*** 505,524 ****
+ return Qnil;
+ }
+
+! static VALUE vim_set_option(VALUE self, VALUE str)
+ {
+ do_set((char_u *)STR2CSTR(str), 0);
+ update_screen(NOT_VALID);
+ return Qnil;
+ }
+
+! static VALUE vim_command(VALUE self, VALUE str)
+ {
+ do_cmdline_cmd((char_u *)STR2CSTR(str));
+ return Qnil;
+ }
+
+! static VALUE vim_evaluate(VALUE self, VALUE str)
+ {
+ #ifdef FEAT_EVAL
+ char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
+--- 505,524 ----
+ return Qnil;
+ }
+
+! 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);
+***************
+*** 580,586 ****
+ return INT2NUM(n);
+ }
+
+! static VALUE buffer_s_aref(VALUE self, VALUE num)
+ {
+ buf_T *b;
+ int n = NUM2INT(num);
+--- 580,586 ----
+ return INT2NUM(n);
+ }
+
+! static VALUE buffer_s_aref(VALUE self UNUSED, VALUE num)
+ {
+ buf_T *b;
+ int n = NUM2INT(num);
+***************
+*** 629,635 ****
+--- 629,637 ----
+ 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
+ }
+
+ static VALUE buffer_aref(VALUE self, VALUE num)
+***************
+*** 668,674 ****
+--- 670,678 ----
+ else
+ {
+ rb_raise(rb_eIndexError, "index %d out of buffer", n);
++ #ifndef __GNUC__
+ return Qnil; /* For stop warning */
++ #endif
+ }
+ return str;
+ }
+***************
+*** 789,795 ****
+ return get_buffer_line(curbuf, curwin->w_cursor.lnum);
+ }
+
+! static VALUE set_current_line(VALUE self, VALUE str)
+ {
+ return set_buffer_line(curbuf, curwin->w_cursor.lnum, str);
+ }
+--- 793,799 ----
+ return get_buffer_line(curbuf, curwin->w_cursor.lnum);
+ }
+
+! static VALUE set_current_line(VALUE self UNUSED, VALUE str)
+ {
+ return set_buffer_line(curbuf, curwin->w_cursor.lnum, str);
+ }
+***************
+*** 815,821 ****
+ #endif
+ }
+
+! static VALUE window_s_aref(VALUE self, VALUE num)
+ {
+ win_T *w;
+ int n = NUM2INT(num);
+--- 819,825 ----
+ #endif
+ }
+
+! static VALUE window_s_aref(VALUE self UNUSED, VALUE num)
+ {
+ win_T *w;
+ int n = NUM2INT(num);
+***************
+*** 897,903 ****
+ return Qnil;
+ }
+
+! static VALUE f_p(int argc, VALUE *argv, VALUE self)
+ {
+ int i;
+ VALUE str = rb_str_new("", 0);
+--- 901,907 ----
+ return Qnil;
+ }
+
+! static VALUE f_p(int argc, VALUE *argv, VALUE self UNUSED)
+ {
+ int i;
+ VALUE str = rb_str_new("", 0);
+*** ../vim-7.2.184/src/version.c 2009-05-21 23:25:38.000000000 +0200
+--- src/version.c 2009-05-22 18:18:58.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 185,
+ /**/
+
+--
+BODY: I'm not dead!
+CART DRIVER: 'Ere. He says he's not dead.
+LARGE MAN: Yes he is.
+BODY: I'm not!
+ "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.186 b/source/ap/vim/patches/7.2.186
new file mode 100644
index 000000000..c3710425d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.186
@@ -0,0 +1,331 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.186
+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.186
+Problem: Some more compiler warnings when using gcc -Wextra.
+Solution: Now with the intended if_tcl.c changes.
+Files: src/if_tcl.c
+
+
+*** ../vim-7.2.185/src/if_tcl.c 2007-05-10 20:55:34.000000000 +0200
+--- src/if_tcl.c 2009-05-22 15:29:53.000000000 +0200
+***************
+*** 290,299 ****
+ */
+ #define TCL_EXIT 5
+
+- /* ARGSUSED */
+ static int
+ exitcmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 290,298 ----
+ */
+ #define TCL_EXIT 5
+
+ static int
+ exitcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 315,324 ****
+ return TCL_ERROR;
+ }
+
+- /* ARGSUSED */
+ static int
+ catchcmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 314,322 ----
+ return TCL_ERROR;
+ }
+
+ static int
+ catchcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 356,365 ****
+ /*
+ * "::vim::beep" - what Vi[m] does best :-)
+ */
+- /* ARGSUSED */
+ static int
+ beepcmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 354,362 ----
+ /*
+ * "::vim::beep" - what Vi[m] does best :-)
+ */
+ static int
+ beepcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 378,387 ****
+ * "::vim::buffer {N}" - create buffer command for buffer N.
+ * "::vim::buffer new" - create a new buffer (not implemented)
+ */
+- /* ARGSUSED */
+ static int
+ buffercmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 375,383 ----
+ * "::vim::buffer {N}" - create buffer command for buffer N.
+ * "::vim::buffer new" - create a new buffer (not implemented)
+ */
+ static int
+ buffercmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 475,484 ****
+ /*
+ * "::vim::window list" - create list of window commands.
+ */
+- /* ARGSUSED */
+ static int
+ windowcmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 471,479 ----
+ /*
+ * "::vim::window list" - create list of window commands.
+ */
+ static int
+ windowcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 1130,1139 ****
+ }
+
+
+- /* ARGSUSED */
+ static int
+ commandcmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 1125,1133 ----
+ }
+
+
+ static int
+ commandcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 1145,1154 ****
+ return err;
+ }
+
+- /* ARGSUSED */
+ static int
+ optioncmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 1139,1147 ----
+ return err;
+ }
+
+ static int
+ optioncmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 1160,1169 ****
+ return err;
+ }
+
+- /* ARGSUSED */
+ static int
+ exprcmd(dummy, interp, objc, objv)
+! ClientData dummy;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+--- 1153,1161 ----
+ return err;
+ }
+
+ static int
+ exprcmd(dummy, interp, objc, objv)
+! ClientData dummy UNUSED;
+ Tcl_Interp *interp;
+ int objc;
+ Tcl_Obj *CONST objv[];
+***************
+*** 1584,1594 ****
+ I/O Channel
+ ********************************************/
+
+- /* ARGSUSED */
+ static int
+ channel_close(instance, interp)
+ ClientData instance;
+! Tcl_Interp *interp;
+ {
+ int err = 0;
+
+--- 1576,1585 ----
+ I/O Channel
+ ********************************************/
+
+ static int
+ channel_close(instance, interp)
+ ClientData instance;
+! Tcl_Interp *interp UNUSED;
+ {
+ int err = 0;
+
+***************
+*** 1602,1613 ****
+ return err;
+ }
+
+- /* ARGSUSED */
+ static int
+ channel_input(instance, buf, bufsiz, errptr)
+! ClientData instance;
+! char *buf;
+! int bufsiz;
+ int *errptr;
+ {
+
+--- 1593,1603 ----
+ return err;
+ }
+
+ static int
+ channel_input(instance, buf, bufsiz, errptr)
+! ClientData instance UNUSED;
+! char *buf UNUSED;
+! int bufsiz UNUSED;
+ int *errptr;
+ {
+
+***************
+*** 1659,1679 ****
+ return result;
+ }
+
+- /* ARGSUSED */
+ static void
+ channel_watch(instance, mask)
+! ClientData instance;
+! int mask;
+ {
+ Tcl_SetErrno(EINVAL);
+ }
+
+- /* ARGSUSED */
+ static int
+ channel_gethandle(instance, direction, handleptr)
+! ClientData instance;
+! int direction;
+! ClientData *handleptr;
+ {
+ Tcl_SetErrno(EINVAL);
+ return EINVAL;
+--- 1649,1667 ----
+ return result;
+ }
+
+ static void
+ channel_watch(instance, mask)
+! ClientData instance UNUSED;
+! int mask UNUSED;
+ {
+ Tcl_SetErrno(EINVAL);
+ }
+
+ static int
+ channel_gethandle(instance, direction, handleptr)
+! ClientData instance UNUSED;
+! int direction UNUSED;
+! ClientData *handleptr UNUSED;
+ {
+ Tcl_SetErrno(EINVAL);
+ return EINVAL;
+***************
+*** 1691,1697 ****
+ NULL, /* set option */
+ NULL, /* get option */
+ channel_watch,
+! channel_gethandle
+ };
+
+ /**********************************
+--- 1679,1692 ----
+ NULL, /* set option */
+ NULL, /* get option */
+ channel_watch,
+! channel_gethandle,
+! NULL,
+! NULL,
+! NULL,
+! NULL,
+! NULL,
+! NULL,
+! NULL
+ };
+
+ /**********************************
+*** ../vim-7.2.185/src/version.c 2009-05-22 18:20:23.000000000 +0200
+--- src/version.c 2009-05-22 21:07:21.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 186,
+ /**/
+
+--
+ARTHUR: Old woman!
+DENNIS: Man!
+ARTHUR: Man. I'm sorry. Old man, What knight live in that castle over there?
+DENNIS: I'm thirty-seven.
+ "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.187 b/source/ap/vim/patches/7.2.187
new file mode 100644
index 000000000..13dfc9f18
--- /dev/null
+++ b/source/ap/vim/patches/7.2.187
@@ -0,0 +1,125 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.187
+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.187 (after 7.2.186)
+Problem: Doesn't build with older versions of TCL. (Yongwei Wu)
+Solution: Add #ifdefs. (Dominique Pelle)
+Files: src/if_tcl.c
+
+
+*** ../vim-7.2.186/src/if_tcl.c 2009-05-22 21:07:45.000000000 +0200
+--- src/if_tcl.c 2009-05-23 14:23:51.000000000 +0200
+***************
+*** 161,167 ****
+ # endif
+
+ /*
+! * Declare HANDLE for perl.dll and function pointers.
+ */
+ static HANDLE hTclLib = NULL;
+ Tcl_Interp* (*dll_Tcl_CreateInterp)();
+--- 161,167 ----
+ # endif
+
+ /*
+! * Declare HANDLE for tcl.dll and function pointers.
+ */
+ static HANDLE hTclLib = NULL;
+ Tcl_Interp* (*dll_Tcl_CreateInterp)();
+***************
+*** 182,188 ****
+ * Make all runtime-links of tcl.
+ *
+ * 1. Get module handle using LoadLibraryEx.
+! * 2. Get pointer to perl function by GetProcAddress.
+ * 3. Repeat 2, until get all functions will be used.
+ *
+ * Parameter 'libname' provides name of DLL.
+--- 182,188 ----
+ * Make all runtime-links of tcl.
+ *
+ * 1. Get module handle using LoadLibraryEx.
+! * 2. Get pointer to tcl function by GetProcAddress.
+ * 3. Repeat 2, until get all functions will be used.
+ *
+ * Parameter 'libname' provides name of DLL.
+***************
+*** 1670,1692 ****
+
+ static Tcl_ChannelType channel_type =
+ {
+! "vimmessage",
+! NULL, /* blockmode */
+! channel_close,
+! channel_input,
+! channel_output,
+! NULL, /* seek */
+! NULL, /* set option */
+! NULL, /* get option */
+! channel_watch,
+! channel_gethandle,
+! NULL,
+! NULL,
+! NULL,
+! NULL,
+! NULL,
+! NULL,
+! NULL
+ };
+
+ /**********************************
+--- 1670,1700 ----
+
+ static Tcl_ChannelType channel_type =
+ {
+! "vimmessage", /* typeName */
+! NULL, /* version */
+! channel_close, /* closeProc */
+! channel_input, /* inputProc */
+! channel_output, /* outputProc */
+! NULL, /* seekProc */
+! NULL, /* setOptionProc */
+! NULL, /* getOptionProc */
+! channel_watch, /* watchProc */
+! channel_gethandle, /* getHandleProc */
+! NULL, /* close2Proc */
+! NULL, /* blockModeProc */
+! #ifdef TCL_CHANNEL_VERSION_2
+! NULL, /* flushProc */
+! NULL, /* handlerProc */
+! #endif
+! #ifdef TCL_CHANNEL_VERSION_3
+! NULL, /* wideSeekProc */
+! #endif
+! #ifdef TCL_CHANNEL_VERSION_4
+! NULL, /* threadActionProc */
+! #endif
+! #ifdef TCL_CHANNEL_VERSION_5
+! NULL /* truncateProc */
+! #endif
+ };
+
+ /**********************************
+*** ../vim-7.2.186/src/version.c 2009-05-22 21:07:45.000000000 +0200
+--- src/version.c 2009-05-23 14:25:04.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 187,
+ /**/
+
+--
+Friends? I have lots of friends! In fact, I have every episode ever made.
+
+ /// 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.188 b/source/ap/vim/patches/7.2.188
new file mode 100644
index 000000000..1aa527dac
--- /dev/null
+++ b/source/ap/vim/patches/7.2.188
@@ -0,0 +1,278 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.188
+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.188
+Problem: Crash with specific use of function calls. (Meikel Brandmeyer)
+Solution: Make sure the items referenced by a function call are not freed
+ twice. (based on patch from Nico Weber)
+Files: src/eval.c
+
+
+*** ../vim-7.2.187/src/eval.c 2009-05-16 17:29:37.000000000 +0200
+--- src/eval.c 2009-05-22 20:04:22.000000000 +0200
+***************
+*** 129,136 ****
+--- 129,139 ----
+ /*
+ * When recursively copying lists and dicts we need to remember which ones we
+ * have done to avoid endless recursiveness. This unique ID is used for that.
++ * The last bit is used for previous_funccal, ignored when comparing.
+ */
+ static int current_copyID = 0;
++ #define COPYID_INC 2
++ #define COPYID_MASK (~0x1)
+
+ /*
+ * Array to hold the hashtab with variables local to each sourced script.
+***************
+*** 439,444 ****
+--- 442,448 ----
+ static void list_remove __ARGS((list_T *l, listitem_T *item, listitem_T *item2));
+ static char_u *list2string __ARGS((typval_T *tv, int copyID));
+ static int list_join __ARGS((garray_T *gap, list_T *l, char_u *sep, int echo, int copyID));
++ static int free_unref_items __ARGS((int copyID));
+ static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
+ static void set_ref_in_list __ARGS((list_T *l, int copyID));
+ static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
+***************
+*** 6494,6507 ****
+ int
+ garbage_collect()
+ {
+! dict_T *dd;
+! list_T *ll;
+! int copyID = ++current_copyID;
+ buf_T *buf;
+ win_T *wp;
+ int i;
+ funccall_T *fc, **pfc;
+! int did_free = FALSE;
+ #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+ #endif
+--- 6498,6510 ----
+ int
+ garbage_collect()
+ {
+! int copyID;
+ buf_T *buf;
+ win_T *wp;
+ int i;
+ funccall_T *fc, **pfc;
+! int did_free;
+! int did_free_funccal = FALSE;
+ #ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+ #endif
+***************
+*** 6511,6520 ****
+--- 6514,6538 ----
+ may_garbage_collect = FALSE;
+ garbage_collect_at_exit = FALSE;
+
++ /* We advance by two because we add one for items referenced through
++ * previous_funccal. */
++ current_copyID += COPYID_INC;
++ copyID = current_copyID;
++
+ /*
+ * 1. Go through all accessible variables and mark all lists and dicts
+ * with copyID.
+ */
++
++ /* Don't free variables in the previous_funccal list unless they are only
++ * referenced through previous_funccal. This must be first, because if
++ * the item is referenced elsewhere it must not be freed. */
++ for (fc = previous_funccal; fc != NULL; fc = fc->caller)
++ {
++ set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
++ set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID + 1);
++ }
++
+ /* script-local variables */
+ for (i = 1; i <= ga_scripts.ga_len; ++i)
+ set_ref_in_ht(&SCRIPT_VARS(i), copyID);
+***************
+*** 6546,6556 ****
+ /* v: vars */
+ set_ref_in_ht(&vimvarht, copyID);
+
+ /*
+! * 2. Go through the list of dicts and free items without the copyID.
+ */
+ for (dd = first_dict; dd != NULL; )
+! if (dd->dv_copyID != copyID)
+ {
+ /* Free the Dictionary and ordinary items it contains, but don't
+ * recurse into Lists and Dictionaries, they will be in the list
+--- 6564,6610 ----
+ /* v: vars */
+ set_ref_in_ht(&vimvarht, copyID);
+
++ /* Free lists and dictionaries that are not referenced. */
++ did_free = free_unref_items(copyID);
++
++ /* check if any funccal can be freed now */
++ for (pfc = &previous_funccal; *pfc != NULL; )
++ {
++ if (can_free_funccal(*pfc, copyID))
++ {
++ fc = *pfc;
++ *pfc = fc->caller;
++ free_funccal(fc, TRUE);
++ did_free = TRUE;
++ did_free_funccal = TRUE;
++ }
++ else
++ pfc = &(*pfc)->caller;
++ }
++ if (did_free_funccal)
++ /* When a funccal was freed some more items might be garbage
++ * collected, so run again. */
++ (void)garbage_collect();
++
++ return did_free;
++ }
++
++ /*
++ * Free lists and dictionaries that are no longer referenced.
++ */
++ static int
++ free_unref_items(copyID)
++ int copyID;
++ {
++ dict_T *dd;
++ list_T *ll;
++ int did_free = FALSE;
++
+ /*
+! * Go through the list of dicts and free items without the copyID.
+ */
+ for (dd = first_dict; dd != NULL; )
+! if ((dd->dv_copyID & COPYID_MASK) != (copyID & COPYID_MASK))
+ {
+ /* Free the Dictionary and ordinary items it contains, but don't
+ * recurse into Lists and Dictionaries, they will be in the list
+***************
+*** 6565,6576 ****
+ dd = dd->dv_used_next;
+
+ /*
+! * 3. Go through the list of lists and free items without the copyID.
+! * But don't free a list that has a watcher (used in a for loop), these
+! * are not referenced anywhere.
+ */
+ for (ll = first_list; ll != NULL; )
+! if (ll->lv_copyID != copyID && ll->lv_watch == NULL)
+ {
+ /* Free the List and ordinary items it contains, but don't recurse
+ * into Lists and Dictionaries, they will be in the list of dicts
+--- 6619,6631 ----
+ dd = dd->dv_used_next;
+
+ /*
+! * Go through the list of lists and free items without the copyID.
+! * But don't free a list that has a watcher (used in a for loop), these
+! * are not referenced anywhere.
+ */
+ for (ll = first_list; ll != NULL; )
+! if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
+! && ll->lv_watch == NULL)
+ {
+ /* Free the List and ordinary items it contains, but don't recurse
+ * into Lists and Dictionaries, they will be in the list of dicts
+***************
+*** 6584,6603 ****
+ else
+ ll = ll->lv_used_next;
+
+- /* check if any funccal can be freed now */
+- for (pfc = &previous_funccal; *pfc != NULL; )
+- {
+- if (can_free_funccal(*pfc, copyID))
+- {
+- fc = *pfc;
+- *pfc = fc->caller;
+- free_funccal(fc, TRUE);
+- did_free = TRUE;
+- }
+- else
+- pfc = &(*pfc)->caller;
+- }
+-
+ return did_free;
+ }
+
+--- 6639,6644 ----
+***************
+*** 18842,18847 ****
+--- 18883,18889 ----
+ {
+ hash_init(&dict->dv_hashtab);
+ dict->dv_refcount = DO_NOT_FREE_CNT;
++ dict->dv_copyID = 0;
+ dict_var->di_tv.vval.v_dict = dict;
+ dict_var->di_tv.v_type = VAR_DICT;
+ dict_var->di_tv.v_lock = VAR_FIXED;
+***************
+*** 21294,21301 ****
+ current_funccal = fc->caller;
+ --depth;
+
+! /* if the a:000 list and the a: dict are not referenced we can free the
+! * funccall_T and what's in it. */
+ if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
+ && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
+ && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
+--- 21336,21343 ----
+ current_funccal = fc->caller;
+ --depth;
+
+! /* If the a:000 list and the l: and a: dicts are not referenced we can
+! * free the funccall_T and what's in it. */
+ if (fc->l_varlist.lv_refcount == DO_NOT_FREE_CNT
+ && fc->l_vars.dv_refcount == DO_NOT_FREE_CNT
+ && fc->l_avars.dv_refcount == DO_NOT_FREE_CNT)
+***************
+*** 21334,21340 ****
+
+ /*
+ * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywhere.
+ */
+ static int
+ can_free_funccal(fc, copyID)
+--- 21376,21382 ----
+
+ /*
+ * Return TRUE if items in "fc" do not have "copyID". That means they are not
+! * referenced from anywhere that is in use.
+ */
+ static int
+ can_free_funccal(fc, copyID)
+*** ../vim-7.2.187/src/version.c 2009-05-23 14:27:43.000000000 +0200
+--- src/version.c 2009-05-24 13:20:49.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 188,
+ /**/
+
+--
+ARTHUR: ... and I am your king ....
+OLD WOMAN: Ooooh! I didn't know we had a king. I thought we were an
+ autonomous collective ...
+ "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.189 b/source/ap/vim/patches/7.2.189
new file mode 100644
index 000000000..c8ad9addb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.189
@@ -0,0 +1,86 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.189
+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.189
+Problem: Possible hang for deleting auto-indent. (Dominique Pelle)
+Solution: Make sure the position is not beyond the end of the line.
+Files: src/edit.c
+
+
+*** ../vim-7.2.188/src/edit.c 2009-05-16 16:36:25.000000000 +0200
+--- src/edit.c 2009-05-26 10:53:05.000000000 +0200
+***************
+*** 6420,6432 ****
+
+ /* If we just did an auto-indent, remove the white space from the end
+ * of the line, and put the cursor back.
+! * Do this when ESC was used or moving the cursor up/down. */
+ if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
+! && curwin->w_cursor.lnum != end_insert_pos->lnum)))
+ {
+ pos_T tpos = curwin->w_cursor;
+
+ curwin->w_cursor = *end_insert_pos;
+ for (;;)
+ {
+ if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
+--- 6420,6436 ----
+
+ /* If we just did an auto-indent, remove the white space from the end
+ * of the line, and put the cursor back.
+! * Do this when ESC was used or moving the cursor up/down.
+! * Check for the old position still being valid, just in case the text
+! * got changed unexpectedly. */
+ if (did_ai && (esc || (vim_strchr(p_cpo, CPO_INDENT) == NULL
+! && curwin->w_cursor.lnum != end_insert_pos->lnum))
+! && end_insert_pos->lnum <= curbuf->b_ml.ml_line_count)
+ {
+ pos_T tpos = curwin->w_cursor;
+
+ curwin->w_cursor = *end_insert_pos;
++ check_cursor_col(); /* make sure it is not past the line */
+ for (;;)
+ {
+ if (gchar_cursor() == NUL && curwin->w_cursor.col > 0)
+***************
+*** 6434,6440 ****
+ cc = gchar_cursor();
+ if (!vim_iswhite(cc))
+ break;
+! (void)del_char(TRUE);
+ }
+ if (curwin->w_cursor.lnum != tpos.lnum)
+ curwin->w_cursor = tpos;
+--- 6438,6445 ----
+ cc = gchar_cursor();
+ if (!vim_iswhite(cc))
+ break;
+! if (del_char(TRUE) == FAIL)
+! break; /* should not happen */
+ }
+ if (curwin->w_cursor.lnum != tpos.lnum)
+ curwin->w_cursor = tpos;
+*** ../vim-7.2.188/src/version.c 2009-05-24 13:40:17.000000000 +0200
+--- src/version.c 2009-05-26 10:50:53.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 189,
+ /**/
+
+--
+FIRST VILLAGER: We have found a witch. May we burn her?
+ "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.190 b/source/ap/vim/patches/7.2.190
new file mode 100644
index 000000000..2a0aee98e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.190
@@ -0,0 +1,182 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.190
+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.190
+Problem: The register executed by @@ isn't restored.
+Solution: Mark the executable register in the viminfo file.
+Files: src/ops.c
+
+
+*** ../vim-7.2.189/src/ops.c 2009-05-13 12:46:36.000000000 +0200
+--- src/ops.c 2009-05-26 18:05:23.000000000 +0200
+***************
+*** 1143,1148 ****
+--- 1143,1150 ----
+ return OK;
+ }
+
++ static int execreg_lastc = NUL;
++
+ /*
+ * execute a yank register: copy it into the stuff buffer
+ *
+***************
+*** 1155,1161 ****
+ int addcr; /* always add '\n' to end of line */
+ int silent; /* set "silent" flag in typeahead buffer */
+ {
+- static int lastc = NUL;
+ long i;
+ char_u *p;
+ int retval = OK;
+--- 1157,1162 ----
+***************
+*** 1163,1174 ****
+
+ if (regname == '@') /* repeat previous one */
+ {
+! if (lastc == NUL)
+ {
+ EMSG(_("E748: No previously used register"));
+ return FAIL;
+ }
+! regname = lastc;
+ }
+ /* check for valid regname */
+ if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE))
+--- 1164,1175 ----
+
+ if (regname == '@') /* repeat previous one */
+ {
+! if (execreg_lastc == NUL)
+ {
+ EMSG(_("E748: No previously used register"));
+ return FAIL;
+ }
+! regname = execreg_lastc;
+ }
+ /* check for valid regname */
+ if (regname == '%' || regname == '#' || !valid_yank_reg(regname, FALSE))
+***************
+*** 1176,1182 ****
+ emsg_invreg(regname);
+ return FAIL;
+ }
+! lastc = regname;
+
+ #ifdef FEAT_CLIPBOARD
+ regname = may_get_selection(regname);
+--- 1177,1183 ----
+ emsg_invreg(regname);
+ return FAIL;
+ }
+! execreg_lastc = regname;
+
+ #ifdef FEAT_CLIPBOARD
+ regname = may_get_selection(regname);
+***************
+*** 5337,5347 ****
+--- 5338,5351 ----
+
+ /* We only get here (hopefully) if line[0] == '"' */
+ str = virp->vir_line + 1;
++
++ /* If the line starts with "" this is the y_previous register. */
+ if (*str == '"')
+ {
+ set_prev = TRUE;
+ str++;
+ }
++
+ if (!ASCII_ISALNUM(*str) && *str != '-')
+ {
+ if (viminfo_error("E577: ", _("Illegal register name"), virp->vir_line))
+***************
+*** 5351,5356 ****
+--- 5355,5368 ----
+ get_yank_register(*str++, FALSE);
+ if (!force && y_current->y_array != NULL)
+ do_it = FALSE;
++
++ if (*str == '@')
++ {
++ /* "x@: register x used for @@ */
++ if (force || execreg_lastc == NUL)
++ execreg_lastc = str[-1];
++ }
++
+ size = 0;
+ limit = 100; /* Optimized for registers containing <= 100 lines */
+ if (do_it)
+***************
+*** 5360,5366 ****
+ vim_free(y_current->y_array);
+ array = y_current->y_array =
+ (char_u **)alloc((unsigned)(limit * sizeof(char_u *)));
+! str = skipwhite(str);
+ if (STRNCMP(str, "CHAR", 4) == 0)
+ y_current->y_type = MCHAR;
+ #ifdef FEAT_VISUAL
+--- 5372,5378 ----
+ vim_free(y_current->y_array);
+ array = y_current->y_array =
+ (char_u **)alloc((unsigned)(limit * sizeof(char_u *)));
+! str = skipwhite(skiptowhite(str));
+ if (STRNCMP(str, "CHAR", 4) == 0)
+ y_current->y_type = MCHAR;
+ #ifdef FEAT_VISUAL
+***************
+*** 5443,5448 ****
+--- 5455,5461 ----
+ max_kbyte = get_viminfo_parameter('s');
+ if (max_kbyte == 0)
+ return;
++
+ for (i = 0; i < NUM_REGISTERS; i++)
+ {
+ if (y_regs[i].y_array == NULL)
+***************
+*** 5497,5503 ****
+ if (y_previous == &y_regs[i])
+ fprintf(fp, "\"");
+ c = get_register_name(i);
+! fprintf(fp, "\"%c\t%s\t%d\n", c, type,
+ #ifdef FEAT_VISUAL
+ (int)y_regs[i].y_width
+ #else
+--- 5510,5519 ----
+ if (y_previous == &y_regs[i])
+ fprintf(fp, "\"");
+ c = get_register_name(i);
+! fprintf(fp, "\"%c", c);
+! if (c == execreg_lastc)
+! fprintf(fp, "@");
+! fprintf(fp, "\t%s\t%d\n", type,
+ #ifdef FEAT_VISUAL
+ (int)y_regs[i].y_width
+ #else
+*** ../vim-7.2.189/src/version.c 2009-05-26 11:01:43.000000000 +0200
+--- src/version.c 2009-05-26 18:10:13.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 190,
+ /**/
+
+--
+If you had to identify, in one word, the reason why the
+human race has not achieved, and never will achieve, its
+full potential, that word would be "meetings."
+
+ /// 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.191 b/source/ap/vim/patches/7.2.191
new file mode 100644
index 000000000..f9c33571d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.191
@@ -0,0 +1,3705 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.191
+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.191
+Problem: Mzscheme interface doesn't work on Ubuntu.
+Solution: Change autoconf rules. Define missing macro. Some changes to
+ avoid gcc warnings. Remove per-buffer namespace. (Sergey Khorev)
+Files: runtime/doc/if_mzsch.txt, src/Makefile, src/Make_ming.mak,
+ src/Make_mvc.mak, src/auto/configure, src/configure.in,
+ src/config.mk.in, src/eval.c, src/if_mzsch.c, src/if_mzsch.h,
+ src/main.c, src/proto/if_mzsch.pro
+
+
+*** ../vim-7.2.190/runtime/doc/if_mzsch.txt 2008-08-09 19:36:48.000000000 +0200
+--- runtime/doc/if_mzsch.txt 2009-05-26 18:49:53.000000000 +0200
+***************
+*** 1,4 ****
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2008 Jun 28
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+--- 1,4 ----
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 May 26
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+***************
+*** 42,51 ****
+
+ *:mzfile* *:mzf*
+ :[range]mzf[ile] {file} Execute the MzScheme script in {file}. {not in Vi}
+- All statements are executed in the namespace of the
+- buffer that was current during :mzfile start.
+- If you want to access other namespaces, use
+- 'parameterize'.
+
+ All of these commands do essentially the same thing - they execute a piece of
+ MzScheme code, with the "current range" set to the given line
+--- 42,47 ----
+***************
+*** 54,61 ****
+ In the case of :mzscheme, the code to execute is in the command-line.
+ In the case of :mzfile, the code to execute is the contents of the given file.
+
+- Each buffer has its own MzScheme namespace. Global namespace is bound to
+- the "global-namespace" value from the 'vimext' module.
+ MzScheme interface defines exception exn:vim, derived from exn.
+ It is raised for various Vim errors.
+
+--- 50,55 ----
+***************
+*** 79,118 ****
+ e.g.: >
+ :mzscheme (require (prefix vim- vimext))
+ <
+! All the examples below assume this naming scheme. Note that you need to do
+! this again for every buffer.
+
+- The auto-instantiation can be achieved with autocommands, e.g. you can put
+- something like this in your .vimrc (EOFs should not have indentation): >
+- function s:MzRequire()
+- if has("mzscheme")
+- :mz << EOF
+- (require (prefix vim- vimext))
+- (let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
+- (when (and buf (not (eq? buf (vim-curr-buff))))
+- (parameterize ((current-namespace (vim-get-buff-namespace buf)))
+- (namespace-attach-module vim-global-namespace 'vimext)
+- (namespace-require '(prefix vim vimext)))))
+- EOF
+- endif
+- endfunction
+-
+- function s:MzStartup()
+- if has("mzscheme")
+- au BufNew,BufNewFile,BufAdd,BufReadPre * :call s:MzRequire()
+- :mz << EOF
+- (current-library-collection-paths
+- (cons
+- (build-path (find-system-path 'addon-dir) (version) "collects")
+- (current-library-collection-paths)))
+- EOF
+- endif
+- endfunction
+-
+- call s:MzStartup()
+- <
+-
+- The global namespace just instantiated this module with the prefix "vimext:".
+ *mzscheme-sandbox*
+ When executed in the |sandbox|, access to some filesystem and Vim interface
+ procedures is restricted.
+--- 73,80 ----
+ e.g.: >
+ :mzscheme (require (prefix vim- vimext))
+ <
+! All the examples below assume this naming scheme.
+
+ *mzscheme-sandbox*
+ When executed in the |sandbox|, access to some filesystem and Vim interface
+ procedures is restricted.
+***************
+*** 121,135 ****
+ 2. Examples *mzscheme-examples*
+ >
+ :mzscheme (display "Hello")
+ :mzscheme (vim-set-buff-line 10 "This is line #10")
+ <
+ Inline script usage: >
+ function! <SID>SetFirstLine()
+ :mz << EOF
+ (display "!!!")
+ (vim-set-buff-line 1 "This is line #1")
+ (vim-beep)
+! EOF
+ endfunction
+
+ nmap <F9> :call <SID>SetFirstLine() <CR>
+--- 83,102 ----
+ 2. Examples *mzscheme-examples*
+ >
+ :mzscheme (display "Hello")
++ :mz (display (string-append "Using MzScheme version " (version)))
++ :mzscheme (require (prefix vim- vimext)) ; for MzScheme < 4.x
++ :mzscheme (require (prefix-in vim- 'vimext)) ; MzScheme 4.x
+ :mzscheme (vim-set-buff-line 10 "This is line #10")
+ <
+ Inline script usage: >
+ function! <SID>SetFirstLine()
+ :mz << EOF
+ (display "!!!")
++ (require (prefix vim- vimext))
++ ; for newer versions (require (prefix-in vim- 'vimext))
+ (vim-set-buff-line 1 "This is line #1")
+ (vim-beep)
+! EOF
+ endfunction
+
+ nmap <F9> :call <SID>SetFirstLine() <CR>
+***************
+*** 137,153 ****
+ File execution: >
+ :mzfile supascript.scm
+ <
+! Accessing the current buffer namespace from an MzScheme program running in
+! another buffer within |:mzfile|-executed script : >
+! ; Move to the window below
+! (vim-command "wincmd j")
+! ; execute in the context of buffer, to which window belongs
+! ; assume that buffer has 'textstring' defined
+! (parameterize ((current-namespace
+! (vim-get-buff-namespace (vim-curr-buff))))
+! (eval '(vim-set-buff-line 1 textstring)))
+! <
+
+ ==============================================================================
+ 3. Threads *mzscheme-threads*
+
+--- 104,136 ----
+ File execution: >
+ :mzfile supascript.scm
+ <
+! Vim exception handling: >
+! :mz << EOF
+! (require (prefix vim- vimext))
+! ; for newer versions (require (prefix-in vim- 'vimext))
+! (with-handlers
+! ([exn:vim? (lambda (e) (display (exn-message e)))])
+! (vim-eval "nonsense-string"))
+! EOF
+! <
+! Auto-instantiation of vimext module (can be placed in your |vimrc|): >
+! 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))
+! endif
+! endfunction
+
++ if has("mzscheme")
++ silent call MzRequire()
++ endif
++ <
+ ==============================================================================
+ 3. Threads *mzscheme-threads*
+
+***************
+*** 168,178 ****
+ Common
+ ------
+ (command {command-string}) Perform the vim ":Ex" style command.
+! (eval {expr-string}) Evaluate the vim expression to a string.
+! A |List| is turned into a string by
+! joining the items and inserting line
+! breaks.
+! NOTE clashes with MzScheme eval
+ (range-start) Start/End of the range passed with
+ (range-end) the Scheme command.
+ (beep) beep
+--- 151,161 ----
+ Common
+ ------
+ (command {command-string}) Perform the vim ":Ex" style command.
+! (eval {expr-string}) Evaluate the vim expression into
+! respective MzScheme object: |Lists| are
+! represented as Scheme lists,
+! |Dictionaries| as hash tables.
+! NOTE the name clashes with MzScheme eval
+ (range-start) Start/End of the range passed with
+ (range-end) the Scheme command.
+ (beep) beep
+***************
+*** 186,192 ****
+ be set. The symbol 'global can be passed
+ as {buffer-or-window}. Then |:setglobal|
+ will be used.
+- global-namespace The MzScheme main namespace.
+
+ Buffers *mzscheme-buffer*
+ -------
+--- 169,174 ----
+***************
+*** 228,234 ****
+ if there is no such buffer.
+ (get-buff-by-num {buffernum}) Get a buffer by its number (return #f if
+ there is no buffer with this number).
+- (get-buff-namespace [buffer]) Get buffer namespace.
+
+ Windows *mzscheme-window*
+ ------
+--- 210,215 ----
+***************
+*** 250,256 ****
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+--- 231,237 ----
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic* *E812*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+*** ../vim-7.2.190/src/Makefile 2009-05-26 18:12:19.000000000 +0200
+--- src/Makefile 2009-05-26 22:54:48.000000000 +0200
+***************
+*** 536,542 ****
+ # Use this with GCC to check for mistakes, unused arguments, etc.
+ #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code
+ #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+! #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code
+
+ # EFENCE - Electric-Fence malloc debugging: catches memory accesses beyond
+ # allocated memory (and makes every malloc()/free() very slow).
+--- 536,542 ----
+ # Use this with GCC to check for mistakes, unused arguments, etc.
+ #CFLAGS = -g -Wall -Wextra -Wmissing-prototypes -Wunreachable-code
+ #PYTHON_CFLAGS_EXTRA = -Wno-missing-field-initializers
+! #MZSCHEME_CFLAGS_EXTRA = -Wno-unreachable-code -Wno-unused-parameter
+
+ # EFENCE - Electric-Fence malloc debugging: catches memory accesses beyond
+ # allocated memory (and makes every malloc()/free() very slow).
+***************
+*** 2200,2205 ****
+--- 2200,2206 ----
+ -rm -f $(TOOLS) auto/osdef.h auto/pathdef.c auto/if_perl.c
+ -rm -f conftest* *~ auto/link.sed
+ -rm -rf $(APPDIR)
++ -rm -rf mzscheme_base.c
+ if test -d $(PODIR); then \
+ cd $(PODIR); $(MAKE) prefix=$(DESTDIR)$(prefix) clean; \
+ fi
+***************
+*** 2433,2440 ****
+ objects/if_xcmdsrv.o: if_xcmdsrv.c
+ $(CCC) -o $@ if_xcmdsrv.c
+
+! objects/if_mzsch.o: if_mzsch.c
+ $(CCC) -o $@ $(MZSCHEME_CFLAGS_EXTRA) if_mzsch.c
+
+ objects/if_perl.o: auto/if_perl.c
+ $(CCC) -o $@ auto/if_perl.c
+--- 2434,2444 ----
+ objects/if_xcmdsrv.o: if_xcmdsrv.c
+ $(CCC) -o $@ if_xcmdsrv.c
+
+! objects/if_mzsch.o: if_mzsch.c $(MZSCHEME_EXTRA)
+ $(CCC) -o $@ $(MZSCHEME_CFLAGS_EXTRA) if_mzsch.c
++
++ mzscheme_base.c:
++ $(MZSCHEME_MZC) --c-mods mzscheme_base.c ++lib scheme/base
+
+ objects/if_perl.o: auto/if_perl.c
+ $(CCC) -o $@ auto/if_perl.c
+*** ../vim-7.2.190/src/Make_ming.mak 2007-08-12 15:24:29.000000000 +0200
+--- src/Make_ming.mak 2009-05-26 18:54:15.000000000 +0200
+***************
+*** 115,122 ****
+--- 115,135 ----
+ MZSCHEME_VER=205_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 (no,$(DYNAMIC_MZSCHEME))
++ ifeq (yes,$(MZSCHEME_PRECISE_GC))
++ MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
++ else
+ MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
++ endif
+ # the modern MinGW can dynamically link to dlls directly.
+ # point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
+ ifndef MZSCHEME_DLLS
+***************
+*** 410,415 ****
+--- 423,435 ----
+ ifdef MZSCHEME
+ OBJ += $(OUTDIR)/if_mzsch.o
+ MZSCHEME_INCL = if_mzsch.h
++ ifeq (yes,$(MZSCHEME_GENERATE_BASE))
++ CFLAGS += -DINCLUDE_MZSCHEME_BASE
++ MZ_EXTRA_DEP += mzscheme_base.c
++ endif
++ ifeq (yes,$(MZSCHEME_PRECISE_GC))
++ CFLAGS += -DMZ_PRECISE_GC
++ endif
+ endif
+ ifdef PYTHON
+ OBJ += $(OUTDIR)/if_python.o
+***************
+*** 588,593 ****
+--- 608,619 ----
+ $(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+ $(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
++
++ 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.190/src/Make_mvc.mak 2009-02-04 18:34:54.000000000 +0100
+--- src/Make_mvc.mak 2009-05-26 18:54:51.000000000 +0200
+***************
+*** 34,39 ****
+--- 34,40 ----
+ # MZSCHEME=[Path to MzScheme directory]
+ # DYNAMIC_MZSCHEME=yes (to load the MzScheme DLLs dynamically)
+ # MZSCHEME_VER=[version, 205_000, ...]
++ # MZSCHEME_DEBUG=no
+ #
+ # Perl interface:
+ # PERL=[Path to Perl directory]
+***************
+*** 621,635 ****
+--- 622,658 ----
+ MZSCHEME_VER = 205_000
+ !endif
+ CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
++ !if EXIST("$(MZSCHEME)\collects\scheme\base.ss")
++ # for MzScheme 4.x we need to include byte code for basic Scheme stuff
++ MZSCHEME_EXTRA_DEP = mzscheme_base.c
++ CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE
++ !endif
++ !if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") \
++ && !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib")
++ !message Building with Precise GC
++ MZSCHEME_PRECISE_GC = yes
++ CFLAGS = $(CFLAGS) -DMZ_PRECISE_GC
++ !endif
+ !if "$(DYNAMIC_MZSCHEME)" == "yes"
++ !if "$(MZSCHEME_PRECISE_GC)" == "yes"
++ !error MzScheme with Precise GC cannot be loaded dynamically
++ !endif
+ !message MzScheme DLLs will be loaded dynamically
+ CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
+ -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
+ -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
+ !else
++ !if "$(MZSCHEME_DEBUG)" == "yes"
++ CFLAGS = $(CFLAGS) -DMZSCHEME_FORCE_GC
++ !endif
++ !if "$(MZSCHEME_PRECISE_GC)" == "yes"
++ # Precise GC does not use separate dll
++ MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
++ !else
+ MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \
+ $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
+ !endif
++ !endif
+ MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
+ !endif
+
+***************
+*** 930,938 ****
+ $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
+ $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c
+
+! $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(INCL)
+ $(CC) $(CFLAGS) if_mzsch.c \
+ -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\"
+
+ $(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c $(INCL)
+ $(CC) $(CFLAGS) $(PYTHON_INC) if_python.c
+--- 953,963 ----
+ $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c $(INCL)
+ $(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c
+
+! $(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c $(INCL) $(MZSCHEME_EXTRA_DEP)
+ $(CC) $(CFLAGS) if_mzsch.c \
+ -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\"
++ mzscheme_base.c:
++ $(MZSCHEME)\mzc --c-mods mzscheme_base.c ++lib scheme/base
+
+ $(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c $(INCL)
+ $(CC) $(CFLAGS) $(PYTHON_INC) if_python.c
+*** ../vim-7.2.190/src/auto/configure 2009-05-21 23:25:38.000000000 +0200
+--- src/auto/configure 2009-05-26 19:12:29.000000000 +0200
+***************
+*** 701,706 ****
+--- 701,708 ----
+ shrpenv
+ vi_cv_perllib
+ vi_cv_path_perl
++ MZSCHEME_MZC
++ MZSCHEME_EXTRA
+ MZSCHEME_CFLAGS
+ MZSCHEME_LIBS
+ MZSCHEME_PRO
+***************
+*** 4641,4648 ****
+ $as_echo "\"$PLTHOME\"" >&6; }
+ vi_cv_path_mzscheme_pfx="$PLTHOME"
+ else
+! { $as_echo "$as_me:$LINENO: result: \"not set\"" >&5
+! $as_echo "\"not set\"" >&6; }
+ # Extract the first word of "mzscheme", so it can be a program name with args.
+ set dummy mzscheme; ac_word=$2
+ { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+--- 4643,4650 ----
+ $as_echo "\"$PLTHOME\"" >&6; }
+ vi_cv_path_mzscheme_pfx="$PLTHOME"
+ else
+! { $as_echo "$as_me:$LINENO: result: not set" >&5
+! $as_echo "not set" >&6; }
+ # Extract the first word of "mzscheme", so it can be a program name with args.
+ set dummy mzscheme; ac_word=$2
+ { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+***************
+*** 4697,4712 ****
+ if test "${vi_cv_path_mzscheme_pfx+set}" = set; then
+ $as_echo_n "(cached) " >&6
+ else
+! vi_cv_path_mzscheme_pfx=`
+! ${vi_cv_path_mzscheme} -evm \
+! "(display (simplify-path \
+ (build-path (call-with-values \
+ (lambda () (split-path (find-system-path (quote exec-file)))) \
+! (lambda (base name must-be-dir?) base)) (quote up))))"`
+ fi
+ { $as_echo "$as_me:$LINENO: result: $vi_cv_path_mzscheme_pfx" >&5
+ $as_echo "$vi_cv_path_mzscheme_pfx" >&6; }
+! vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
+ fi
+ fi
+ fi
+--- 4699,4714 ----
+ if test "${vi_cv_path_mzscheme_pfx+set}" = set; then
+ $as_echo_n "(cached) " >&6
+ else
+! echo "(display (simplify-path \
+ (build-path (call-with-values \
+ (lambda () (split-path (find-system-path (quote exec-file)))) \
+! (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
+! vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
+! sed -e 's+/$++'`
+ fi
+ { $as_echo "$as_me:$LINENO: result: $vi_cv_path_mzscheme_pfx" >&5
+ $as_echo "$vi_cv_path_mzscheme_pfx" >&6; }
+! rm -f mzdirs.scm
+ fi
+ fi
+ fi
+***************
+*** 4716,4736 ****
+ { $as_echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include" >&5
+ $as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include... " >&6; }
+ if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
+! { $as_echo "$as_me:$LINENO: result: \"yes\"" >&5
+! $as_echo "\"yes\"" >&6; }
+ else
+! { $as_echo "$as_me:$LINENO: result: \"no\"" >&5
+! $as_echo "\"no\"" >&6; }
+! { $as_echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include" >&5
+! $as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include... " >&6; }
+ if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
+! { $as_echo "$as_me:$LINENO: result: \"yes\"" >&5
+! $as_echo "\"yes\"" >&6; }
+! SCHEME_INC=/plt
+ else
+! { $as_echo "$as_me:$LINENO: result: \"no\"" >&5
+! $as_echo "\"no\"" >&6; }
+! vi_cv_path_mzscheme_pfx=
+ fi
+ fi
+ fi
+--- 4718,4749 ----
+ { $as_echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include" >&5
+ $as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include... " >&6; }
+ if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
+! SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
+! { $as_echo "$as_me:$LINENO: result: yes" >&5
+! $as_echo "yes" >&6; }
+ else
+! { $as_echo "$as_me:$LINENO: result: no" >&5
+! $as_echo "no" >&6; }
+! { $as_echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt" >&5
+! $as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt... " >&6; }
+ if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
+! { $as_echo "$as_me:$LINENO: result: yes" >&5
+! $as_echo "yes" >&6; }
+! SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
+ else
+! { $as_echo "$as_me:$LINENO: result: no" >&5
+! $as_echo "no" >&6; }
+! { $as_echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5
+! $as_echo_n "checking if scheme.h can be found in /usr/include/plt/... " >&6; }
+! if test -f /usr/include/plt/scheme.h; then
+! { $as_echo "$as_me:$LINENO: result: yes" >&5
+! $as_echo "yes" >&6; }
+! SCHEME_INC=/usr/include/plt
+! else
+! { $as_echo "$as_me:$LINENO: result: no" >&5
+! $as_echo "no" >&6; }
+! vi_cv_path_mzscheme_pfx=
+! fi
+ fi
+ fi
+ fi
+***************
+*** 4738,4758 ****
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+ if test "x$MACOSX" = "xyes"; then
+ MZSCHEME_LIBS="-framework PLT_MzScheme"
+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+! MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+ if test "$GCC" = yes; then
+! MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
+ elif test "`(uname) 2>/dev/null`" = SunOS &&
+ uname -r | grep '^5' >/dev/null; then
+! MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
+ fi
+ fi
+ if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
+ SCHEME_COLLECTS=lib/plt/
+ fi
+! MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
+ -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
+ MZSCHEME_SRC="if_mzsch.c"
+ MZSCHEME_OBJ="objects/if_mzsch.o"
+--- 4751,4784 ----
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+ if test "x$MACOSX" = "xyes"; then
+ MZSCHEME_LIBS="-framework PLT_MzScheme"
++ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
++ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
++ MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+! if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
+! MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
+! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
+! else
+! MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+! fi
+ if test "$GCC" = yes; then
+! MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
+ elif test "`(uname) 2>/dev/null`" = SunOS &&
+ uname -r | grep '^5' >/dev/null; then
+! MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
+ fi
+ fi
+ if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
+ SCHEME_COLLECTS=lib/plt/
+ fi
+! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
+! MZSCHEME_EXTRA="mzscheme_base.c"
+! MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
+! MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
+! fi
+! MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
+ -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
+ MZSCHEME_SRC="if_mzsch.c"
+ MZSCHEME_OBJ="objects/if_mzsch.o"
+***************
+*** 4767,4772 ****
+--- 4793,4800 ----
+
+
+
++
++
+ fi
+
+
+*** ../vim-7.2.190/src/configure.in 2009-05-21 23:25:38.000000000 +0200
+--- src/configure.in 2009-05-26 18:57:35.000000000 +0200
+***************
+*** 414,420 ****
+ AC_MSG_RESULT("$PLTHOME")
+ vi_cv_path_mzscheme_pfx="$PLTHOME"
+ else
+! AC_MSG_RESULT("not set")
+ dnl -- try to find MzScheme executable
+ AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
+
+--- 414,420 ----
+ AC_MSG_RESULT("$PLTHOME")
+ vi_cv_path_mzscheme_pfx="$PLTHOME"
+ else
+! AC_MSG_RESULT(not set)
+ dnl -- try to find MzScheme executable
+ AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
+
+***************
+*** 430,443 ****
+ if test "X$vi_cv_path_mzscheme" != "X"; then
+ dnl -- find where MzScheme thinks it was installed
+ AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
+! [ vi_cv_path_mzscheme_pfx=`
+! ${vi_cv_path_mzscheme} -evm \
+! "(display (simplify-path \
+ (build-path (call-with-values \
+ (lambda () (split-path (find-system-path (quote exec-file)))) \
+! (lambda (base name must-be-dir?) base)) (quote up))))"` ])
+! dnl Remove a trailing slash.
+! vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
+ fi
+ fi
+ fi
+--- 430,445 ----
+ if test "X$vi_cv_path_mzscheme" != "X"; then
+ dnl -- find where MzScheme thinks it was installed
+ AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
+! dnl different versions of MzScheme differ in command line processing
+! dnl use universal approach
+! echo "(display (simplify-path \
+ (build-path (call-with-values \
+ (lambda () (split-path (find-system-path (quote exec-file)))) \
+! (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
+! dnl Remove a trailing slash
+! [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
+! sed -e 's+/$++'` ])
+! rm -f mzdirs.scm
+ fi
+ fi
+ fi
+***************
+*** 446,461 ****
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+ AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
+ if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
+! AC_MSG_RESULT("yes")
+ else
+! AC_MSG_RESULT("no")
+! AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
+ if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
+! AC_MSG_RESULT("yes")
+! SCHEME_INC=/plt
+ else
+! AC_MSG_RESULT("no")
+! vi_cv_path_mzscheme_pfx=
+ fi
+ fi
+ fi
+--- 448,471 ----
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+ AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
+ if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
+! SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
+! AC_MSG_RESULT(yes)
+ else
+! AC_MSG_RESULT(no)
+! AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
+ if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
+! AC_MSG_RESULT(yes)
+! SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
+ else
+! AC_MSG_RESULT(no)
+! AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
+! if test -f /usr/include/plt/scheme.h; then
+! AC_MSG_RESULT(yes)
+! SCHEME_INC=/usr/include/plt
+! else
+! AC_MSG_RESULT(no)
+! vi_cv_path_mzscheme_pfx=
+! fi
+ fi
+ fi
+ fi
+***************
+*** 463,485 ****
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+ if test "x$MACOSX" = "xyes"; then
+ MZSCHEME_LIBS="-framework PLT_MzScheme"
+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+! MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+ if test "$GCC" = yes; then
+ dnl Make Vim remember the path to the library. For when it's not in
+ dnl $LD_LIBRARY_PATH.
+! MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
+ elif test "`(uname) 2>/dev/null`" = SunOS &&
+ uname -r | grep '^5' >/dev/null; then
+! MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
+ fi
+ fi
+ if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
+ SCHEME_COLLECTS=lib/plt/
+ fi
+! MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
+ -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
+ MZSCHEME_SRC="if_mzsch.c"
+ MZSCHEME_OBJ="objects/if_mzsch.o"
+--- 473,510 ----
+ if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+ if test "x$MACOSX" = "xyes"; then
+ MZSCHEME_LIBS="-framework PLT_MzScheme"
++ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
++ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
++ MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
+ elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+ MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
+ else
+! dnl Using shared objects
+! if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
+! MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
+! MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
+! else
+! MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
+! fi
+ if test "$GCC" = yes; then
+ dnl Make Vim remember the path to the library. For when it's not in
+ dnl $LD_LIBRARY_PATH.
+! MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
+ elif test "`(uname) 2>/dev/null`" = SunOS &&
+ uname -r | grep '^5' >/dev/null; then
+! MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
+ fi
+ fi
+ if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
+ SCHEME_COLLECTS=lib/plt/
+ fi
+! if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
+! dnl need to generate bytecode for MzScheme base
+! MZSCHEME_EXTRA="mzscheme_base.c"
+! MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
+! MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
+! fi
+! MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
+ -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
+ MZSCHEME_SRC="if_mzsch.c"
+ MZSCHEME_OBJ="objects/if_mzsch.o"
+***************
+*** 491,496 ****
+--- 516,523 ----
+ AC_SUBST(MZSCHEME_PRO)
+ AC_SUBST(MZSCHEME_LIBS)
+ AC_SUBST(MZSCHEME_CFLAGS)
++ AC_SUBST(MZSCHEME_EXTRA)
++ AC_SUBST(MZSCHEME_MZC)
+ fi
+
+
+*** ../vim-7.2.190/src/config.mk.in 2008-06-25 00:49:03.000000000 +0200
+--- src/config.mk.in 2009-05-26 18:57:49.000000000 +0200
+***************
+*** 41,46 ****
+--- 41,48 ----
+ MZSCHEME_OBJ = @MZSCHEME_OBJ@
+ MZSCHEME_CFLAGS = @MZSCHEME_CFLAGS@
+ MZSCHEME_PRO = @MZSCHEME_PRO@
++ MZSCHEME_EXTRA = @MZSCHEME_EXTRA@
++ MZSCHEME_MZC = @MZSCHEME_MZC@
+
+ PERL = @vi_cv_path_perl@
+ PERLLIB = @vi_cv_perllib@
+*** ../vim-7.2.190/src/eval.c 2009-05-24 13:40:17.000000000 +0200
+--- src/eval.c 2009-05-26 18:58:20.000000000 +0200
+***************
+*** 5866,5872 ****
+ return item1 == NULL && item2 == NULL;
+ }
+
+! #if defined(FEAT_PYTHON) || defined(PROTO)
+ /*
+ * Return the dictitem that an entry in a hashtable points to.
+ */
+--- 5866,5872 ----
+ 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.
+ */
+*** ../vim-7.2.190/src/if_mzsch.c 2009-05-17 16:23:20.000000000 +0200
+--- src/if_mzsch.c 2009-05-26 19:24:18.000000000 +0200
+***************
+*** 4,9 ****
+--- 4,11 ----
+ * Original work by Brent Fulgham <bfulgham@debian.org>
+ * (Based on lots of help from Matthew Flatt)
+ *
++ * TODO Convert byte-strings to char strings?
++ *
+ * This consists of six parts:
+ * 1. MzScheme interpreter main program
+ * 2. Routines that handle the external interface between MzScheme and
+***************
+*** 18,24 ****
+ * garbage collector will do it self
+ * 2. Requires at least NORMAL features. I can't imagine why one may want
+ * to build with SMALL or TINY features but with MzScheme interface.
+! * 3. I don't use K&R-style functions. Anyway, MzScheme headers are ANSI.
+ */
+
+ #include "vim.h"
+--- 20,26 ----
+ * garbage collector will do it self
+ * 2. Requires at least NORMAL features. I can't imagine why one may want
+ * to build with SMALL or TINY features but with MzScheme interface.
+! * 3. I don't use K&R-style functions. Anyways, MzScheme headers are ANSI.
+ */
+
+ #include "vim.h"
+***************
+*** 29,42 ****
+ * depend". */
+ #if defined(FEAT_MZSCHEME) || defined(PROTO)
+
+ /* Base data structures */
+ #define SCHEME_VIMBUFFERP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type)
+ #define SCHEME_VIMWINDOWP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_window_type)
+
+ typedef struct
+ {
+! Scheme_Type tag;
+! Scheme_Env *env;
+ buf_T *buf;
+ } vim_mz_buffer;
+
+--- 31,45 ----
+ * depend". */
+ #if defined(FEAT_MZSCHEME) || defined(PROTO)
+
++ #include <assert.h>
++
+ /* Base data structures */
+ #define SCHEME_VIMBUFFERP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type)
+ #define SCHEME_VIMWINDOWP(obj) SAME_TYPE(SCHEME_TYPE(obj), mz_window_type)
+
+ typedef struct
+ {
+! Scheme_Object so;
+ buf_T *buf;
+ } vim_mz_buffer;
+
+***************
+*** 44,50 ****
+
+ typedef struct
+ {
+! Scheme_Type tag;
+ win_T *win;
+ } vim_mz_window;
+
+--- 47,53 ----
+
+ typedef struct
+ {
+! Scheme_Object so;
+ win_T *win;
+ } vim_mz_window;
+
+***************
+*** 67,85 ****
+ Scheme_Object *port;
+ } Port_Info;
+
+- /* info for closed prim */
+- /*
+- * data have different means:
+- * for do_eval it is char*
+- * for do_apply is Apply_Onfo*
+- * for do_load is Port_Info*
+- */
+- typedef struct
+- {
+- void *data;
+- Scheme_Env *env;
+- } Cmd_Info;
+-
+ /* info for do_apply */
+ typedef struct
+ {
+--- 70,75 ----
+***************
+*** 122,128 ****
+ static Scheme_Object *insert_buffer_line_list(void *, int, Scheme_Object **);
+ static Scheme_Object *get_range_start(void *, int, Scheme_Object **);
+ static Scheme_Object *get_range_end(void *, int, Scheme_Object **);
+- static Scheme_Object *get_buffer_namespace(void *, int, Scheme_Object **);
+ static vim_mz_buffer *get_vim_curr_buffer(void);
+
+ /* Window-related commands */
+--- 112,117 ----
+***************
+*** 163,170 ****
+ static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what);
+ static void startup_mzscheme(void);
+ static char *string_to_line(Scheme_Object *obj);
+- static int mzscheme_io_init(void);
+- static void mzscheme_interface_init(vim_mz_buffer *self);
+ static void do_output(char *mesg, long len);
+ static void do_printf(char *format, ...);
+ static void do_flush(void);
+--- 152,157 ----
+***************
+*** 174,192 ****
+ 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(Scheme_Env *env);
+ static vim_mz_buffer *get_buffer_arg(const char *fname, int argnum,
+ int argc, Scheme_Object **argv);
+ static vim_mz_window *get_window_arg(const char *fname, int argnum,
+ int argc, Scheme_Object **argv);
+- static void add_vim_exn(Scheme_Env *env);
+ static int line_in_range(linenr_T, buf_T *);
+ static void check_line_range(linenr_T, buf_T *);
+ static void mz_fix_cursor(int lo, int hi, int extra);
+
+! static int eval_in_namespace(void *, Scheme_Closed_Prim *, Scheme_Env *,
+! Scheme_Object **ret);
+! static void make_modules(Scheme_Env *);
+
+ #ifdef DYNAMIC_MZSCHEME
+
+--- 161,212 ----
+ 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);
+ static vim_mz_window *get_window_arg(const char *fname, int argnum,
+ int argc, Scheme_Object **argv);
+ static int line_in_range(linenr_T, buf_T *);
+ static void check_line_range(linenr_T, buf_T *);
+ static void mz_fix_cursor(int lo, int hi, int extra);
+
+! static int eval_with_exn_handling(void *, Scheme_Closed_Prim *,
+! Scheme_Object **ret);
+! static void make_modules(void);
+! static void init_exn_catching_apply(void);
+! static int mzscheme_env_main(Scheme_Env *env, int argc, char **argv);
+! static int mzscheme_init(void);
+! #ifdef FEAT_EVAL
+! static Scheme_Object *vim_to_mzscheme(typval_T *vim_value, int depth,
+! Scheme_Hash_Table *visited);
+! #endif
+!
+! #ifdef MZ_PRECISE_GC
+! static int buffer_size_proc(void *obj)
+! {
+! return gcBYTES_TO_WORDS(sizeof(vim_mz_buffer));
+! }
+! static int buffer_mark_proc(void *obj)
+! {
+! return buffer_size_proc(obj);
+! }
+! static int buffer_fixup_proc(void *obj)
+! {
+! return buffer_size_proc(obj);
+! }
+! static int window_size_proc(void *obj)
+! {
+! return gcBYTES_TO_WORDS(sizeof(vim_mz_window));
+! }
+! static int window_mark_proc(void *obj)
+! {
+! return window_size_proc(obj);
+! }
+! static int window_fixup_proc(void *obj)
+! {
+! return window_size_proc(obj);
+! }
+! #endif
+
+ #ifdef DYNAMIC_MZSCHEME
+
+***************
+*** 260,267 ****
+ (Scheme_Closed_Prim *prim, void *data, const char *name, mzshort mina,
+ mzshort maxa);
+ static Scheme_Object *(*dll_scheme_make_integer_value)(long i);
+- static Scheme_Object *(*dll_scheme_make_namespace)(int argc,
+- Scheme_Object *argv[]);
+ static Scheme_Object *(*dll_scheme_make_pair)(Scheme_Object *car,
+ Scheme_Object *cdr);
+ static Scheme_Object *(*dll_scheme_make_prim_w_arity)(Scheme_Prim *prim,
+--- 280,285 ----
+***************
+*** 311,316 ****
+--- 329,345 ----
+ static Scheme_Object *(*dll_scheme_char_string_to_path)
+ (Scheme_Object *s);
+ # endif
++ static Scheme_Hash_Table *(*dll_scheme_make_hash_table)(int type);
++ static void (*dll_scheme_hash_set)(Scheme_Hash_Table *table,
++ Scheme_Object *key, Scheme_Object *value);
++ static Scheme_Object *(*dll_scheme_hash_get)(Scheme_Hash_Table *table,
++ Scheme_Object *key);
++ static Scheme_Object *(*dll_scheme_make_double)(double d);
++ # ifdef INCLUDE_MZSCHEME_BASE
++ static Scheme_Object *(*dll_scheme_make_sized_byte_string)(char *chars,
++ long len, int copy);
++ static Scheme_Object *(*dll_scheme_namespace_require)(Scheme_Object *req);
++ # endif
+
+ /* arrays are imported directly */
+ # define scheme_eof dll_scheme_eof
+***************
+*** 368,374 ****
+ # define scheme_lookup_global dll_scheme_lookup_global
+ # define scheme_make_closed_prim_w_arity dll_scheme_make_closed_prim_w_arity
+ # define scheme_make_integer_value dll_scheme_make_integer_value
+- # define scheme_make_namespace dll_scheme_make_namespace
+ # define scheme_make_pair dll_scheme_make_pair
+ # define scheme_make_prim_w_arity dll_scheme_make_prim_w_arity
+ # if MZSCHEME_VERSION_MAJOR < 299
+--- 397,402 ----
+***************
+*** 403,408 ****
+--- 431,444 ----
+ # define scheme_char_string_to_path \
+ dll_scheme_char_string_to_path
+ # endif
++ # define scheme_make_hash_table dll_scheme_make_hash_table
++ # define scheme_hash_set dll_scheme_hash_set
++ # define scheme_hash_get dll_scheme_hash_get
++ # define scheme_make_double dll_scheme_make_double
++ # ifdef INCLUDE_MZSCHEME_BASE
++ # define scheme_make_sized_byte_string dll_scheme_make_sized_byte_string
++ # define scheme_namespace_require dll_scheme_namespace_require
++ # endif
+
+ typedef struct
+ {
+***************
+*** 468,474 ****
+ {"scheme_make_closed_prim_w_arity",
+ (void **)&dll_scheme_make_closed_prim_w_arity},
+ {"scheme_make_integer_value", (void **)&dll_scheme_make_integer_value},
+- {"scheme_make_namespace", (void **)&dll_scheme_make_namespace},
+ {"scheme_make_pair", (void **)&dll_scheme_make_pair},
+ {"scheme_make_prim_w_arity", (void **)&dll_scheme_make_prim_w_arity},
+ # if MZSCHEME_VERSION_MAJOR < 299
+--- 504,509 ----
+***************
+*** 502,510 ****
+ {"scheme_current_config", (void **)&dll_scheme_current_config},
+ {"scheme_char_string_to_byte_string",
+ (void **)&dll_scheme_char_string_to_byte_string},
+! {"scheme_char_string_to_path",
+! (void **)&dll_scheme_char_string_to_path},
+ # endif
+ {NULL, NULL}};
+
+ static HINSTANCE hMzGC = 0;
+--- 537,552 ----
+ {"scheme_current_config", (void **)&dll_scheme_current_config},
+ {"scheme_char_string_to_byte_string",
+ (void **)&dll_scheme_char_string_to_byte_string},
+! {"scheme_char_string_to_path", (void **)&dll_scheme_char_string_to_path},
+ # endif
++ {"scheme_make_hash_table", (void **)&dll_scheme_make_hash_table},
++ {"scheme_hash_set", (void **)&dll_scheme_hash_set},
++ {"scheme_hash_get", (void **)&dll_scheme_hash_get},
++ {"scheme_make_double", (void **)&dll_scheme_make_double},
++ # ifdef INCLUDE_MZSCHEME_BASE
++ {"scheme_make_sized_byte_string", (void **)&dll_scheme_make_sized_byte_string},
++ {"scheme_namespace_require", (void **)&dll_scheme_namespace_require},
++ #endif
+ {NULL, NULL}};
+
+ static HINSTANCE hMzGC = 0;
+***************
+*** 592,597 ****
+--- 634,644 ----
+ }
+ #endif /* DYNAMIC_MZSCHEME */
+
++ /* need to put it here for dynamic stuff to work */
++ #ifdef INCLUDE_MZSCHEME_BASE
++ # include "mzscheme_base.c"
++ #endif
++
+ /*
+ *========================================================================
+ * 1. MzScheme interpreter startup
+***************
+*** 601,621 ****
+ static Scheme_Type mz_buffer_type;
+ static Scheme_Type mz_window_type;
+
+! static int initialized = 0;
+
+ /* global environment */
+ static Scheme_Env *environment = NULL;
+ /* output/error handlers */
+ static Scheme_Object *curout = NULL;
+ static Scheme_Object *curerr = NULL;
+! /* vim:exn exception */
+ static Scheme_Object *exn_catching_apply = NULL;
+ static Scheme_Object *exn_p = NULL;
+ static Scheme_Object *exn_message = NULL;
+ static Scheme_Object *vim_exn = NULL; /* Vim Error exception */
+! /* values for exn:vim - constructor, predicate, accessors etc */
+! static Scheme_Object *vim_exn_names = NULL;
+! static Scheme_Object *vim_exn_values = NULL;
+
+ static long range_start;
+ static long range_end;
+--- 648,669 ----
+ static Scheme_Type mz_buffer_type;
+ static Scheme_Type mz_window_type;
+
+! static int initialized = FALSE;
+
+ /* global environment */
+ static Scheme_Env *environment = NULL;
+ /* output/error handlers */
+ static Scheme_Object *curout = NULL;
+ static Scheme_Object *curerr = NULL;
+! /* exn:vim exception */
+ static Scheme_Object *exn_catching_apply = NULL;
+ static Scheme_Object *exn_p = NULL;
+ static Scheme_Object *exn_message = NULL;
+ static Scheme_Object *vim_exn = NULL; /* Vim Error exception */
+!
+! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
+! static void *stack_base = NULL;
+! #endif
+
+ static long range_start;
+ static long range_end;
+***************
+*** 668,677 ****
+ timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
+ # elif defined(FEAT_GUI_GTK)
+ static gint
+! timer_proc(gpointer data UNUSED)
+ # elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+ static void
+! timer_proc(XtPointer timed_out UNUSED, XtIntervalId *interval_id UNUSED)
+ # elif defined(FEAT_GUI_MAC)
+ pascal void
+ timer_proc(EventLoopTimerRef theTimer, void *userData)
+--- 716,725 ----
+ timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
+ # elif defined(FEAT_GUI_GTK)
+ static gint
+! timer_proc(gpointer data)
+ # elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+ static void
+! timer_proc(XtPointer timed_out, XtIntervalId *interval_id)
+ # elif defined(FEAT_GUI_MAC)
+ pascal void
+ timer_proc(EventLoopTimerRef theTimer, void *userData)
+***************
+*** 751,762 ****
+ #endif
+ }
+
+ static void
+ startup_mzscheme(void)
+ {
+! Scheme_Object *proc_make_security_guard;
+!
+! scheme_set_stack_base(NULL, 1);
+
+ MZ_REGISTER_STATIC(environment);
+ MZ_REGISTER_STATIC(curout);
+--- 799,862 ----
+ #endif
+ }
+
++ void
++ mzscheme_main(void)
++ {
++ #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR >= 400
++ /* use trampoline for precise GC in MzScheme >= 4.x */
++ scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL);
++ #else
++ mzscheme_env_main(NULL, 0, NULL);
++ #endif
++ }
++
++ static int
++ mzscheme_env_main(Scheme_Env *env, int argc, char **argv)
++ {
++ /* neither argument nor return values are used */
++ #ifdef MZ_PRECISE_GC
++ # if MZSCHEME_VERSION_MAJOR < 400
++ /*
++ * Starting from version 4.x, embedding applications must use
++ * scheme_main_setup/scheme_main_stack_setup trampolines
++ * rather than setting stack base directly with scheme_set_stack_base
++ */
++ Scheme_Object *dummy = NULL;
++ MZ_GC_DECL_REG(1);
++ MZ_GC_VAR_IN_REG(0, dummy);
++
++ stack_base = &__gc_var_stack__;
++ # else
++ /* environment has been created by us by Scheme */
++ environment = env;
++ # endif
++ /*
++ * In 4.x, all activities must be performed inside trampoline
++ * so we are forced to initialise GC immediately
++ * This can be postponed in 3.x but I see no point in implementing
++ * a feature which will work in older versions only.
++ * One would better use conservative GC if he needs dynamic MzScheme
++ */
++ mzscheme_init();
++ #else
++ int dummy = 0;
++ stack_base = (void *)&dummy;
++ #endif
++ main_loop(FALSE, FALSE);
++ #if defined(MZ_PRECISE_GC) && MZSCHEME_VERSION_MAJOR < 400
++ /* releasing dummy */
++ MZ_GC_REG();
++ MZ_GC_UNREG();
++ #endif
++ return 0;
++ }
++
+ static void
+ startup_mzscheme(void)
+ {
+! #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
+! scheme_set_stack_base(stack_base, 1);
+! #endif
+
+ MZ_REGISTER_STATIC(environment);
+ MZ_REGISTER_STATIC(curout);
+***************
+*** 765,774 ****
+ MZ_REGISTER_STATIC(exn_p);
+ MZ_REGISTER_STATIC(exn_message);
+ MZ_REGISTER_STATIC(vim_exn);
+- MZ_REGISTER_STATIC(vim_exn_names);
+- MZ_REGISTER_STATIC(vim_exn_values);
+
+ environment = scheme_basic_env();
+
+ /* redirect output */
+ scheme_console_output = do_output;
+--- 865,899 ----
+ MZ_REGISTER_STATIC(exn_p);
+ MZ_REGISTER_STATIC(exn_message);
+ MZ_REGISTER_STATIC(vim_exn);
+
++ #if !defined(MZ_PRECISE_GC) || MZSCHEME_VERSION_MAJOR < 400
++ /* in newer versions of precise GC the initial env has been created */
+ environment = scheme_basic_env();
++ #endif
++ MZ_GC_CHECK();
++
++ #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();
++ scheme_namespace_require(scheme_base_symbol);
++ MZ_GC_CHECK();
++ MZ_GC_UNREG();
++ }
++ #endif
++ register_vim_exn();
++ /* use new environment to initialise exception handling */
++ init_exn_catching_apply();
+
+ /* redirect output */
+ scheme_console_output = do_output;
+***************
+*** 776,823 ****
+
+ #ifdef MZSCHEME_COLLECTS
+ /* setup 'current-library-collection-paths' parameter */
+- scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS,
+- scheme_make_pair(
+ # if MZSCHEME_VERSION_MAJOR >= 299
+! scheme_char_string_to_path(
+! scheme_byte_string_to_char_string(
+! scheme_make_byte_string(MZSCHEME_COLLECTS))),
+ # else
+! scheme_make_string(MZSCHEME_COLLECTS),
+ # endif
+- scheme_null));
+ #endif
+ #ifdef HAVE_SANDBOX
+! /* setup sandbox guards */
+! proc_make_security_guard = scheme_lookup_global(
+! scheme_intern_symbol("make-security-guard"),
+! environment);
+! if (proc_make_security_guard != NULL)
+! {
+! Scheme_Object *args[3];
+! Scheme_Object *guard;
+! args[0] = scheme_get_param(scheme_config, MZCONFIG_SECURITY_GUARD);
+! args[1] = scheme_make_prim_w_arity(sandbox_file_guard,
+! "sandbox-file-guard", 3, 3);
+! args[2] = scheme_make_prim_w_arity(sandbox_network_guard,
+! "sandbox-network-guard", 4, 4);
+! guard = scheme_apply(proc_make_security_guard, 3, args);
+! scheme_set_param(scheme_config, MZCONFIG_SECURITY_GUARD, guard);
+ }
+ #endif
+ /* Create buffer and window types for use in Scheme code */
+ mz_buffer_type = scheme_make_type("<vim-buffer>");
+ mz_window_type = scheme_make_type("<vim-window>");
+
+! register_vim_exn(environment);
+! make_modules(environment);
+
+ /*
+ * setup callback to receive notifications
+ * whether thread scheduling is (or not) required
+ */
+ scheme_notify_multithread = notify_multithread;
+- initialized = 1;
+ }
+
+ /*
+--- 901,1031 ----
+
+ #ifdef MZSCHEME_COLLECTS
+ /* setup 'current-library-collection-paths' parameter */
+ # if MZSCHEME_VERSION_MAJOR >= 299
+! {
+! Scheme_Object *coll_byte_string = NULL;
+! Scheme_Object *coll_char_string = NULL;
+! Scheme_Object *coll_path = NULL;
+! Scheme_Object *coll_pair = NULL;
+! Scheme_Config *config = NULL;
+!
+! MZ_GC_DECL_REG(5);
+! MZ_GC_VAR_IN_REG(0, coll_byte_string);
+! MZ_GC_VAR_IN_REG(1, coll_char_string);
+! MZ_GC_VAR_IN_REG(2, coll_path);
+! MZ_GC_VAR_IN_REG(3, coll_pair);
+! MZ_GC_VAR_IN_REG(4, config);
+! MZ_GC_REG();
+! coll_byte_string = scheme_make_byte_string(MZSCHEME_COLLECTS);
+! MZ_GC_CHECK();
+! coll_char_string = scheme_byte_string_to_char_string(coll_byte_string);
+! MZ_GC_CHECK();
+! coll_path = scheme_char_string_to_path(coll_char_string);
+! MZ_GC_CHECK();
+! coll_pair = scheme_make_pair(coll_path, scheme_null);
+! MZ_GC_CHECK();
+! config = scheme_config;
+! MZ_GC_CHECK();
+! scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair);
+! MZ_GC_CHECK();
+! MZ_GC_UNREG();
+! }
+ # else
+! {
+! Scheme_Object *coll_string = NULL;
+! Scheme_Object *coll_pair = NULL;
+! Scheme_Config *config = NULL;
+!
+! MZ_GC_DECL_REG(3);
+! MZ_GC_VAR_IN_REG(0, coll_string);
+! MZ_GC_VAR_IN_REG(1, coll_pair);
+! MZ_GC_VAR_IN_REG(2, config);
+! MZ_GC_REG();
+! coll_string = scheme_make_string(MZSCHEME_COLLECTS);
+! MZ_GC_CHECK();
+! coll_pair = scheme_make_pair(coll_string, scheme_null);
+! MZ_GC_CHECK();
+! config = scheme_config;
+! MZ_GC_CHECK();
+! scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair);
+! MZ_GC_CHECK();
+! MZ_GC_UNREG();
+! }
+ # endif
+ #endif
+ #ifdef HAVE_SANDBOX
+! {
+! Scheme_Object *make_security_guard = NULL;
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, make_security_guard);
+! MZ_GC_REG();
+!
+! #if MZSCHEME_VERSION_MAJOR < 400
+! {
+! Scheme_Object *make_security_guard_symbol = NULL;
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, make_security_guard_symbol);
+! MZ_GC_REG();
+! make_security_guard_symbol = scheme_intern_symbol("make-security-guard");
+! MZ_GC_CHECK();
+! make_security_guard = scheme_lookup_global(
+! make_security_guard_symbol, environment);
+! MZ_GC_UNREG();
+! }
+! #else
+! make_security_guard = scheme_builtin_value("make-security-guard");
+! MZ_GC_CHECK();
+! #endif
+!
+! /* setup sandbox guards */
+! if (make_security_guard != NULL)
+! {
+! Scheme_Object *args[3] = {NULL, NULL, NULL};
+! Scheme_Object *guard = NULL;
+! Scheme_Config *config = NULL;
+! MZ_GC_DECL_REG(5);
+! MZ_GC_ARRAY_VAR_IN_REG(0, args, 3);
+! MZ_GC_VAR_IN_REG(3, guard);
+! MZ_GC_VAR_IN_REG(4, config);
+! MZ_GC_REG();
+! config = scheme_config;
+! MZ_GC_CHECK();
+! args[0] = scheme_get_param(config, MZCONFIG_SECURITY_GUARD);
+! MZ_GC_CHECK();
+! args[1] = scheme_make_prim_w_arity(sandbox_file_guard,
+! "sandbox-file-guard", 3, 3);
+! args[2] = scheme_make_prim_w_arity(sandbox_network_guard,
+! "sandbox-network-guard", 4, 4);
+! guard = scheme_apply(make_security_guard, 3, args);
+! MZ_GC_CHECK();
+! scheme_set_param(config, MZCONFIG_SECURITY_GUARD, guard);
+! MZ_GC_CHECK();
+! MZ_GC_UNREG();
+! }
+! MZ_GC_UNREG();
+ }
+ #endif
+ /* Create buffer and window types for use in Scheme code */
+ mz_buffer_type = scheme_make_type("<vim-buffer>");
++ MZ_GC_CHECK();
+ mz_window_type = scheme_make_type("<vim-window>");
++ MZ_GC_CHECK();
++ #ifdef MZ_PRECISE_GC
++ GC_register_traversers(mz_buffer_type,
++ buffer_size_proc, buffer_mark_proc, buffer_fixup_proc,
++ TRUE, TRUE);
++ GC_register_traversers(mz_window_type,
++ window_size_proc, window_mark_proc, window_fixup_proc,
++ TRUE, TRUE);
++ #endif
+
+! make_modules();
+
+ /*
+ * setup callback to receive notifications
+ * whether thread scheduling is (or not) required
+ */
+ scheme_notify_multithread = notify_multithread;
+ }
+
+ /*
+***************
+*** 827,897 ****
+ static int
+ mzscheme_init(void)
+ {
+- int do_require = FALSE;
+-
+ if (!initialized)
+ {
+- do_require = TRUE;
+ #ifdef DYNAMIC_MZSCHEME
+ if (!mzscheme_enabled(TRUE))
+ {
+! EMSG(_("???: Sorry, this command is disabled, the MzScheme library could not be loaded."));
+ return -1;
+ }
+ #endif
+ startup_mzscheme();
+!
+! if (mzscheme_io_init())
+! return -1;
+!
+! }
+! /* recreate ports each call effectivelly clearing these ones */
+! curout = scheme_make_string_output_port();
+! curerr = scheme_make_string_output_port();
+! scheme_set_param(scheme_config, MZCONFIG_OUTPUT_PORT, curout);
+! scheme_set_param(scheme_config, MZCONFIG_ERROR_PORT, curerr);
+!
+! if (do_require)
+! {
+! /* auto-instantiate in basic env */
+! eval_in_namespace("(require (prefix vimext: vimext))", do_eval,
+! environment, NULL);
+ }
+-
+- return 0;
+- }
+-
+- /*
+- * This routine fills the namespace with various important routines that can
+- * be used within MzScheme.
+- */
+- static void
+- mzscheme_interface_init(vim_mz_buffer *mzbuff)
+- {
+- Scheme_Object *attach;
+-
+- mzbuff->env = (Scheme_Env *)scheme_make_namespace(0, NULL);
+-
+- /*
+- * attach instantiated modules from global namespace
+- * so they can be easily instantiated in the buffer namespace
+- */
+- attach = scheme_lookup_global(
+- scheme_intern_symbol("namespace-attach-module"),
+- environment);
+-
+- if (attach != NULL)
+ {
+! Scheme_Object *ret;
+! Scheme_Object *args[2];
+!
+! args[0] = (Scheme_Object *)environment;
+! args[1] = scheme_intern_symbol("vimext");
+!
+! ret = (Scheme_Object *)mzvim_apply(attach, 2, args);
+ }
+
+! add_vim_exn(mzbuff->env);
+ }
+
+ /*
+--- 1035,1072 ----
+ static int
+ mzscheme_init(void)
+ {
+ if (!initialized)
+ {
+ #ifdef DYNAMIC_MZSCHEME
+ if (!mzscheme_enabled(TRUE))
+ {
+! EMSG(_("E812: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
+ return -1;
+ }
+ #endif
+ startup_mzscheme();
+! initialized = TRUE;
+ }
+ {
+! Scheme_Config *config = NULL;
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, config);
+! 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();
+! MZ_GC_CHECK();
+! scheme_set_param(config, MZCONFIG_OUTPUT_PORT, curout);
+! MZ_GC_CHECK();
+! scheme_set_param(config, MZCONFIG_ERROR_PORT, curerr);
+! MZ_GC_CHECK();
+! MZ_GC_UNREG();
+ }
+
+! return 0;
+ }
+
+ /*
+***************
+*** 901,928 ****
+ */
+
+ /*
+! * Evaluate command in namespace with exception handling
+ */
+ static int
+! eval_in_namespace(void *data, Scheme_Closed_Prim *what, Scheme_Env *env,
+! Scheme_Object **ret)
+ {
+! Scheme_Object *value;
+! Scheme_Object *exn;
+! Cmd_Info info; /* closure info */
+!
+! info.data = data;
+! info.env = env;
+!
+! scheme_set_param(scheme_config, MZCONFIG_ENV,
+! (Scheme_Object *) env);
+! /*
+! * ensure all evaluations will be in current buffer namespace,
+! * the second argument to scheme_eval_string isn't enough!
+! */
+! value = _apply_thunk_catch_exceptions(
+! scheme_make_closed_prim_w_arity(what, &info, "mzvim", 0, 0),
+! &exn);
+
+ if (!value)
+ {
+--- 1076,1100 ----
+ */
+
+ /*
+! * Evaluate command with exception handling
+ */
+ static int
+! eval_with_exn_handling(void *data, Scheme_Closed_Prim *what, Scheme_Object **ret)
+ {
+! Scheme_Object *value = NULL;
+! Scheme_Object *exn = NULL;
+! Scheme_Object *prim = NULL;
+!
+! MZ_GC_DECL_REG(3);
+! MZ_GC_VAR_IN_REG(0, value);
+! MZ_GC_VAR_IN_REG(1, exn);
+! MZ_GC_VAR_IN_REG(2, prim);
+! MZ_GC_REG();
+!
+! prim = scheme_make_closed_prim_w_arity(what, data, "mzvim", 0, 0);
+! MZ_GC_CHECK();
+! value = _apply_thunk_catch_exceptions(prim, &exn);
+! MZ_GC_CHECK();
+
+ if (!value)
+ {
+***************
+*** 930,938 ****
+ /* Got an exn? */
+ if (value)
+ {
+! scheme_display(value, curerr); /* Send to stderr-vim */
+ do_flush();
+ }
+ /* `raise' was called on some arbitrary value */
+ return FAIL;
+ }
+--- 1102,1112 ----
+ /* Got an exn? */
+ if (value)
+ {
+! scheme_display(value, curerr); /* Send to stderr-vim */
+! MZ_GC_CHECK();
+ do_flush();
+ }
++ MZ_GC_UNREG();
+ /* `raise' was called on some arbitrary value */
+ return FAIL;
+ }
+***************
+*** 941,949 ****
+--- 1115,1127 ----
+ *ret = value;
+ /* Print any result, as long as it's not a void */
+ else if (!SCHEME_VOIDP(value))
++ {
+ scheme_display(value, curout); /* Send to stdout-vim */
++ MZ_GC_CHECK();
++ }
+
+ do_flush();
++ MZ_GC_UNREG();
+ return OK;
+ }
+
+***************
+*** 957,963 ****
+ range_start = eap->line1;
+ range_end = eap->line2;
+
+! return eval_in_namespace(data, what, get_vim_curr_buffer()->env, NULL);
+ }
+
+ /*
+--- 1135,1141 ----
+ range_start = eap->line1;
+ range_end = eap->line2;
+
+! return eval_with_exn_handling(data, what, NULL);
+ }
+
+ /*
+***************
+*** 974,979 ****
+--- 1152,1158 ----
+ bp->buf = INVALID_BUFFER_VALUE;
+ buf->b_mzscheme_ref = NULL;
+ scheme_gc_ptr_ok(bp);
++ MZ_GC_CHECK();
+ }
+ }
+
+***************
+*** 990,995 ****
+--- 1169,1175 ----
+ wp->win = INVALID_WINDOW_VALUE;
+ win->w_mzscheme_ref = NULL;
+ scheme_gc_ptr_ok(wp);
++ MZ_GC_CHECK();
+ }
+ }
+
+***************
+*** 1014,1031 ****
+ }
+ }
+
+- /* eval MzScheme string */
+- void *
+- mzvim_eval_string(char_u *str)
+- {
+- Scheme_Object *ret = NULL;
+- if (mzscheme_init())
+- return FAIL;
+-
+- eval_in_namespace(str, do_eval, get_vim_curr_buffer()->env, &ret);
+- return ret;
+- }
+-
+ /*
+ * apply MzScheme procedure with arguments,
+ * handling errors
+--- 1194,1199 ----
+***************
+*** 1033,1075 ****
+ Scheme_Object *
+ mzvim_apply(Scheme_Object *proc, int argc, Scheme_Object **argv)
+ {
+- Apply_Info data;
+- Scheme_Object *ret = NULL;
+-
+ if (mzscheme_init())
+ return FAIL;
+
+! data.proc = proc;
+! data.argc = argc;
+! data.argv = argv;
+!
+! eval_in_namespace(&data, do_apply, get_vim_curr_buffer()->env, &ret);
+! return ret;
+ }
+
+ static Scheme_Object *
+ do_load(void *data, int noargc, Scheme_Object **noargv)
+ {
+! Cmd_Info *info = (Cmd_Info *)data;
+! Scheme_Object *result = scheme_void;
+! Scheme_Object *expr;
+! char_u *file = scheme_malloc_fail_ok(
+! scheme_malloc_atomic, MAXPATHL + 1);
+! Port_Info *pinfo = (Port_Info *)(info->data);
+
+ /* make Vim expansion */
+! expand_env((char_u *)pinfo->name, file, MAXPATHL);
+! /* scheme_load looks strange working with namespaces and error handling*/
+ pinfo->port = scheme_open_input_file(file, "mzfile");
+! scheme_count_lines(pinfo->port); /* to get accurate read error location*/
+
+ /* Like REPL but print only last result */
+ while (!SCHEME_EOFP(expr = scheme_read(pinfo->port)))
+! result = scheme_eval(expr, info->env);
+
+ /* errors will be caught in do_mzscheme_comamnd and ex_mzfile */
+ scheme_close_input_port(pinfo->port);
+ pinfo->port = NULL;
+ return result;
+ }
+
+--- 1201,1265 ----
+ 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)
+ {
+! Scheme_Object *expr = NULL;
+! Scheme_Object *result = NULL;
+! char *file = NULL;
+! Port_Info *pinfo = (Port_Info *)data;
+!
+! MZ_GC_DECL_REG(3);
+! MZ_GC_VAR_IN_REG(0, expr);
+! MZ_GC_VAR_IN_REG(1, result);
+! MZ_GC_VAR_IN_REG(2, file);
+! MZ_GC_REG();
+!
+! file = (char *)scheme_malloc_fail_ok(scheme_malloc_atomic, MAXPATHL + 1);
+! MZ_GC_CHECK();
+
+ /* make Vim expansion */
+! expand_env((char_u *)pinfo->name, (char_u *)file, MAXPATHL);
+ pinfo->port = scheme_open_input_file(file, "mzfile");
+! MZ_GC_CHECK();
+! scheme_count_lines(pinfo->port); /* to get accurate read error location*/
+! MZ_GC_CHECK();
+
+ /* Like REPL but print only last result */
+ while (!SCHEME_EOFP(expr = scheme_read(pinfo->port)))
+! {
+! result = scheme_eval(expr, environment);
+! 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;
++ MZ_GC_UNREG();
+ return result;
+ }
+
+***************
+*** 1077,1089 ****
+ void
+ ex_mzfile(exarg_T *eap)
+ {
+! Port_Info pinfo;
+
+ pinfo.name = (char *)eap->arg;
+- pinfo.port = NULL;
+ if (do_mzscheme_command(eap, &pinfo, do_load) != OK
+ && pinfo.port != NULL) /* looks like port was not closed */
+ scheme_close_input_port(pinfo.port);
+ }
+
+
+--- 1267,1286 ----
+ void
+ ex_mzfile(exarg_T *eap)
+ {
+! Port_Info pinfo = {NULL, NULL};
+!
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, pinfo.port);
+! MZ_GC_REG();
+
+ pinfo.name = (char *)eap->arg;
+ if (do_mzscheme_command(eap, &pinfo, do_load) != OK
+ && pinfo.port != NULL) /* looks like port was not closed */
++ {
+ scheme_close_input_port(pinfo.port);
++ MZ_GC_CHECK();
++ }
++ MZ_GC_UNREG();
+ }
+
+
+***************
+*** 1103,1116 ****
+ "(with-handlers ([void (lambda (exn) (cons #f exn))]) "
+ "(cons #t (thunk))))";
+
+! /* make sure we have a namespace with the standard syntax: */
+! Scheme_Env *env = (Scheme_Env *)scheme_make_namespace(0, NULL);
+! add_vim_exn(env);
+!
+! exn_catching_apply = scheme_eval_string(e, env);
+! exn_p = scheme_lookup_global(scheme_intern_symbol("exn?"), env);
+! exn_message = scheme_lookup_global(
+! scheme_intern_symbol("exn-message"), env);
+ }
+ }
+
+--- 1300,1311 ----
+ "(with-handlers ([void (lambda (exn) (cons #f exn))]) "
+ "(cons #t (thunk))))";
+
+! exn_catching_apply = scheme_eval_string(e, environment);
+! MZ_GC_CHECK();
+! exn_p = scheme_builtin_value("exn?");
+! MZ_GC_CHECK();
+! exn_message = scheme_builtin_value("exn-message");
+! MZ_GC_CHECK();
+ }
+ }
+
+***************
+*** 1124,1131 ****
+ {
+ Scheme_Object *v;
+
+- init_exn_catching_apply();
+-
+ v = _scheme_apply(exn_catching_apply, 1, &f);
+ /* v is a pair: (cons #t value) or (cons #f exn) */
+
+--- 1319,1324 ----
+***************
+*** 1141,1148 ****
+ static Scheme_Object *
+ extract_exn_message(Scheme_Object *v)
+ {
+- init_exn_catching_apply();
+-
+ if (SCHEME_TRUEP(_scheme_apply(exn_p, 1, &v)))
+ return _scheme_apply(exn_message, 1, &v);
+ else
+--- 1334,1339 ----
+***************
+*** 1152,1167 ****
+ static Scheme_Object *
+ do_eval(void *s, int noargc, Scheme_Object **noargv)
+ {
+! Cmd_Info *info = (Cmd_Info *)s;
+!
+! return scheme_eval_string_all((char *)(info->data), info->env, TRUE);
+ }
+
+ static Scheme_Object *
+ do_apply(void *a, int noargc, Scheme_Object **noargv)
+ {
+! Apply_Info *info = (Apply_Info *)(((Cmd_Info *)a)->data);
+!
+ return scheme_apply(info->proc, info->argc, info->argv);
+ }
+
+--- 1343,1355 ----
+ static Scheme_Object *
+ do_eval(void *s, int noargc, Scheme_Object **noargv)
+ {
+! 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);
+ }
+
+***************
+*** 1219,1224 ****
+--- 1407,1413 ----
+ long length;
+
+ buff = scheme_get_sized_string_output(curerr, &length);
++ MZ_GC_CHECK();
+ if (length)
+ {
+ do_err_output(buff, length);
+***************
+*** 1226,1242 ****
+ }
+
+ buff = scheme_get_sized_string_output(curout, &length);
+ if (length)
+ do_output(buff, length);
+ }
+
+- static int
+- mzscheme_io_init(void)
+- {
+- /* Nothing needed so far... */
+- return 0;
+- }
+-
+ /*
+ *========================================================================
+ * 4. Implementation of the Vim Features for MzScheme
+--- 1415,1425 ----
+ }
+
+ buff = scheme_get_sized_string_output(curout, &length);
++ MZ_GC_CHECK();
+ if (length)
+ do_output(buff, length);
+ }
+
+ /*
+ *========================================================================
+ * 4. Implementation of the Vim Features for MzScheme
+***************
+*** 1263,1284 ****
+ vim_eval(void *data, int argc, Scheme_Object **argv)
+ {
+ #ifdef FEAT_EVAL
+! Vim_Prim *prim = (Vim_Prim *)data;
+! char *expr;
+! char *str;
+! Scheme_Object *result;
+
+! expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+! str = (char *)eval_to_string((char_u *)expr, NULL, TRUE);
+
+! if (str == NULL)
+ raise_vim_exn(_("invalid expression"));
+
+! result = scheme_make_string(str);
+!
+! vim_free(str);
+
+ return result;
+ #else
+ raise_vim_exn(_("expressions disabled at compile time"));
+--- 1446,1475 ----
+ vim_eval(void *data, int argc, Scheme_Object **argv)
+ {
+ #ifdef FEAT_EVAL
+! Vim_Prim *prim = (Vim_Prim *)data;
+! char *expr;
+! Scheme_Object *result;
+! /* hash table to store visited values to avoid infinite loops */
+! Scheme_Hash_Table *visited = NULL;
+! typval_T *vim_result;
+!
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, visited);
+! MZ_GC_REG();
+
+! visited = scheme_make_hash_table(SCHEME_hash_ptr);
+! MZ_GC_CHECK();
+
+! expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+! vim_result = eval_expr((char_u *)expr, NULL);
+
+! if (vim_result == NULL)
+ raise_vim_exn(_("invalid expression"));
+
+! result = vim_to_mzscheme(vim_result, 1, visited);
+! free_tv(vim_result);
+
++ MZ_GC_UNREG();
+ return result;
+ #else
+ raise_vim_exn(_("expressions disabled at compile time"));
+***************
+*** 1318,1324 ****
+ Vim_Prim *prim = (Vim_Prim *)data;
+ char_u *name;
+ long value;
+! char_u *strval;
+ int rc;
+ Scheme_Object *rval;
+ int opt_flags = 0;
+--- 1509,1515 ----
+ Vim_Prim *prim = (Vim_Prim *)data;
+ char_u *name;
+ long value;
+! char *strval;
+ int rc;
+ Scheme_Object *rval;
+ int opt_flags = 0;
+***************
+*** 1333,1338 ****
+--- 1524,1530 ----
+ {
+ MZ_REGISTER_STATIC(M_global);
+ M_global = scheme_intern_symbol("global");
++ MZ_GC_CHECK();
+ }
+
+ if (argv[1] == M_global)
+***************
+*** 1354,1360 ****
+ scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv);
+ }
+
+! rc = get_option_value(name, &value, &strval, opt_flags);
+ curbuf = save_curb;
+ curwin = save_curw;
+
+--- 1546,1552 ----
+ scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv);
+ }
+
+! rc = get_option_value(name, &value, (char_u **)&strval, opt_flags);
+ curbuf = save_curb;
+ curwin = save_curw;
+
+***************
+*** 1364,1369 ****
+--- 1556,1562 ----
+ return scheme_make_integer_value(value);
+ case 0:
+ rval = scheme_make_string(strval);
++ MZ_GC_CHECK();
+ vim_free(strval);
+ return rval;
+ case -1:
+***************
+*** 1393,1398 ****
+--- 1586,1592 ----
+ {
+ MZ_REGISTER_STATIC(M_global);
+ M_global = scheme_intern_symbol("global");
++ MZ_GC_CHECK();
+ }
+
+ if (argv[1] == M_global)
+***************
+*** 1463,1469 ****
+--- 1657,1666 ----
+
+ for (w = firstwin; w != NULL; w = w->w_next)
+ if (w->w_buffer == buf->buf)
++ {
+ list = scheme_make_pair(window_new(w), list);
++ MZ_GC_CHECK();
++ }
+
+ return list;
+ }
+***************
+*** 1471,1477 ****
+ static Scheme_Object *
+ window_new(win_T *win)
+ {
+! vim_mz_window *self;
+
+ /* We need to handle deletion of windows underneath us.
+ * If we add a "w_mzscheme_ref" field to the win_T structure,
+--- 1668,1678 ----
+ static Scheme_Object *
+ window_new(win_T *win)
+ {
+! vim_mz_window *self = NULL;
+!
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, self);
+! MZ_GC_REG();
+
+ /* We need to handle deletion of windows underneath us.
+ * If we add a "w_mzscheme_ref" field to the win_T structure,
+***************
+*** 1485,1497 ****
+ return win->w_mzscheme_ref;
+
+ self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_window));
+-
+ vim_memset(self, 0, sizeof(vim_mz_window));
+ scheme_dont_gc_ptr(self); /* because win isn't visible to GC */
+ win->w_mzscheme_ref = self;
+ self->win = win;
+! self->tag = mz_window_type;
+
+ return (Scheme_Object *)(self);
+ }
+
+--- 1686,1699 ----
+ return win->w_mzscheme_ref;
+
+ self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_window));
+ vim_memset(self, 0, sizeof(vim_mz_window));
+ scheme_dont_gc_ptr(self); /* because win isn't visible to GC */
++ MZ_GC_CHECK();
+ win->w_mzscheme_ref = self;
+ self->win = win;
+! self->so.type = mz_window_type;
+
++ MZ_GC_UNREG();
+ return (Scheme_Object *)(self);
+ }
+
+***************
+*** 1660,1666 ****
+ /*
+ *===========================================================================
+ * 6. Vim Buffer-related Manipulation Functions
+- * Note that each buffer should have its own private namespace.
+ *===========================================================================
+ */
+
+--- 1862,1867 ----
+***************
+*** 1669,1682 ****
+ mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv)
+ {
+ Vim_Prim *prim = (Vim_Prim *)data;
+! char *fname;
+ int num = 0;
+ Scheme_Object *onum;
+
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+! fname = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+ /* TODO make open existing file */
+ num = buflist_add(fname, BLN_LISTED | BLN_CURBUF);
+
+--- 1870,1883 ----
+ mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv)
+ {
+ Vim_Prim *prim = (Vim_Prim *)data;
+! char_u *fname;
+ int num = 0;
+ Scheme_Object *onum;
+
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+! fname = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+ /* TODO make open existing file */
+ num = buflist_add(fname, BLN_LISTED | BLN_CURBUF);
+
+***************
+*** 1712,1718 ****
+ buf_T *buf;
+ char_u *fname;
+
+! fname = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+ for (buf = firstbuf; buf; buf = buf->b_next)
+ if (buf->b_ffname == NULL || buf->b_sfname == NULL)
+--- 1913,1919 ----
+ buf_T *buf;
+ char_u *fname;
+
+! fname = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+ for (buf = firstbuf; buf; buf = buf->b_next)
+ if (buf->b_ffname == NULL || buf->b_sfname == NULL)
+***************
+*** 1783,1789 ****
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf = get_buffer_arg(prim->name, 0, argc, argv);
+
+! return scheme_make_string(buf->buf->b_ffname);
+ }
+
+ /* (curr-buff) */
+--- 1984,1990 ----
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf = get_buffer_arg(prim->name, 0, argc, argv);
+
+! return scheme_make_string((char *)buf->buf->b_ffname);
+ }
+
+ /* (curr-buff) */
+***************
+*** 1796,1802 ****
+ static Scheme_Object *
+ buffer_new(buf_T *buf)
+ {
+! vim_mz_buffer *self;
+
+ /* We need to handle deletion of buffers underneath us.
+ * If we add a "b_mzscheme_ref" field to the buf_T structure,
+--- 1997,2007 ----
+ static Scheme_Object *
+ buffer_new(buf_T *buf)
+ {
+! vim_mz_buffer *self = NULL;
+!
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, self);
+! MZ_GC_REG();
+
+ /* We need to handle deletion of buffers underneath us.
+ * If we add a "b_mzscheme_ref" field to the buf_T structure,
+***************
+*** 1806,1820 ****
+ return buf->b_mzscheme_ref;
+
+ self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_buffer));
+-
+ vim_memset(self, 0, sizeof(vim_mz_buffer));
+! scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */
+ buf->b_mzscheme_ref = self;
+ self->buf = buf;
+! self->tag = mz_buffer_type;
+!
+! mzscheme_interface_init(self); /* Set up namespace */
+
+ return (Scheme_Object *)(self);
+ }
+
+--- 2011,2024 ----
+ return buf->b_mzscheme_ref;
+
+ self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_buffer));
+ vim_memset(self, 0, sizeof(vim_mz_buffer));
+! scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */
+! MZ_GC_CHECK();
+ buf->b_mzscheme_ref = self;
+ self->buf = buf;
+! self->so.type = mz_buffer_type;
+
++ MZ_GC_UNREG();
+ return (Scheme_Object *)(self);
+ }
+
+***************
+*** 1845,1858 ****
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf;
+ int linenr;
+! char *line;
+
+ buf = get_buffer_arg(prim->name, 1, argc, argv);
+ linenr = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+ line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE);
+
+ raise_if_error();
+! return scheme_make_string(line);
+ }
+
+
+--- 2049,2062 ----
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf;
+ int linenr;
+! char_u *line;
+
+ buf = get_buffer_arg(prim->name, 1, argc, argv);
+ linenr = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+ line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE);
+
+ raise_if_error();
+! return scheme_make_string((char *)line);
+ }
+
+
+***************
+*** 1869,1875 ****
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf;
+ int i, hi, lo, n;
+! Scheme_Object *list;
+
+ buf = get_buffer_arg(prim->name, 2, argc, argv);
+ list = scheme_null;
+--- 2073,2083 ----
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf;
+ int i, hi, lo, n;
+! Scheme_Object *list = NULL;
+!
+! MZ_GC_DECL_REG(1);
+! MZ_GC_VAR_IN_REG(0, list);
+! MZ_GC_REG();
+
+ buf = get_buffer_arg(prim->name, 2, argc, argv);
+ list = scheme_null;
+***************
+*** 1897,1904 ****
+
+ /* Set the list item */
+ list = scheme_make_pair(str, list);
+ }
+!
+ return list;
+ }
+
+--- 2105,2113 ----
+
+ /* Set the list item */
+ list = scheme_make_pair(str, list);
++ MZ_GC_CHECK();
+ }
+! MZ_GC_UNREG();
+ return list;
+ }
+
+***************
+*** 1925,1935 ****
+ */
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf;
+! Scheme_Object *line;
+ char *save;
+- buf_T *savebuf;
+ int n;
+
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+--- 2134,2147 ----
+ */
+ Vim_Prim *prim = (Vim_Prim *)data;
+ vim_mz_buffer *buf;
+! Scheme_Object *line = NULL;
+ char *save;
+ int n;
+
++ MZ_GC_DECL_REG(1);
++ MZ_GC_VAR_IN_REG(0, line);
++ MZ_GC_REG();
++
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+***************
+*** 1943,1949 ****
+
+ if (SCHEME_FALSEP(line))
+ {
+! savebuf = curbuf;
+ curbuf = buf->buf;
+
+ if (u_savedel((linenr_T)n, 1L) == FAIL)
+--- 2155,2162 ----
+
+ if (SCHEME_FALSEP(line))
+ {
+! buf_T *savebuf = curbuf;
+!
+ curbuf = buf->buf;
+
+ if (u_savedel((linenr_T)n, 1L) == FAIL)
+***************
+*** 1962,1994 ****
+
+ curbuf = savebuf;
+
+ raise_if_error();
+ return scheme_void;
+ }
+
+! /* Otherwise it's a line */
+! save = string_to_line(line);
+! savebuf = curbuf;
+
+! curbuf = buf->buf;
+
+- if (u_savesub((linenr_T)n) == FAIL)
+- {
+- curbuf = savebuf;
+- raise_vim_exn(_("cannot save undo information"));
+- }
+- else if (ml_replace((linenr_T)n, (char_u *)save, TRUE) == FAIL)
+- {
+ curbuf = savebuf;
+- raise_vim_exn(_("cannot replace line"));
+- }
+- else
+- changed_bytes((linenr_T)n, 0);
+
+! curbuf = savebuf;
+
+! raise_if_error();
+! return scheme_void;
+ }
+
+ /*
+--- 2175,2230 ----
+
+ curbuf = savebuf;
+
++ MZ_GC_UNREG();
+ raise_if_error();
+ return scheme_void;
+ }
++ else
++ {
++ /* Otherwise it's a line */
++ buf_T *savebuf = curbuf;
+
+! save = string_to_line(line);
+
+! curbuf = buf->buf;
+!
+! if (u_savesub((linenr_T)n) == FAIL)
+! {
+! curbuf = savebuf;
+! vim_free(save);
+! raise_vim_exn(_("cannot save undo information"));
+! }
+! else if (ml_replace((linenr_T)n, (char_u *)save, TRUE) == FAIL)
+! {
+! curbuf = savebuf;
+! vim_free(save);
+! raise_vim_exn(_("cannot replace line"));
+! }
+! else
+! {
+! vim_free(save);
+! changed_bytes((linenr_T)n, 0);
+! }
+
+ curbuf = savebuf;
+
+! /* Check that the cursor is not beyond the end of the line now. */
+! if (buf->buf == curwin->w_buffer)
+! check_cursor_col();
+
+! MZ_GC_UNREG();
+! raise_if_error();
+! return scheme_void;
+! }
+! }
+!
+! static void
+! free_array(char **array)
+! {
+! char **curr = array;
+! while (*curr != NULL)
+! vim_free(*curr++);
+! vim_free(array);
+ }
+
+ /*
+***************
+*** 2013,2027 ****
+ * 3. Anything else - this is an error.
+ */
+ Vim_Prim *prim = (Vim_Prim *)data;
+! vim_mz_buffer *buf;
+! Scheme_Object *line_list;
+! Scheme_Object *line;
+! Scheme_Object *rest;
+! char **array;
+! buf_T *savebuf;
+ int i, old_len, new_len, hi, lo;
+ long extra;
+
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+--- 2249,2263 ----
+ * 3. Anything else - this is an error.
+ */
+ Vim_Prim *prim = (Vim_Prim *)data;
+! vim_mz_buffer *buf = NULL;
+! Scheme_Object *line_list = NULL;
+ int i, old_len, new_len, hi, lo;
+ long extra;
+
++ MZ_GC_DECL_REG(1);
++ MZ_GC_VAR_IN_REG(0, line_list);
++ MZ_GC_REG();
++
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+***************
+*** 2047,2053 ****
+
+ if (SCHEME_FALSEP(line_list) || SCHEME_NULLP(line_list))
+ {
+! savebuf = curbuf;
+ curbuf = buf->buf;
+
+ if (u_savedel((linenr_T)lo, (long)old_len) == FAIL)
+--- 2283,2289 ----
+
+ if (SCHEME_FALSEP(line_list) || SCHEME_NULLP(line_list))
+ {
+! buf_T *savebuf = curbuf;
+ curbuf = buf->buf;
+
+ if (u_savedel((linenr_T)lo, (long)old_len) == FAIL)
+***************
+*** 2070,2167 ****
+
+ curbuf = savebuf;
+
+ raise_if_error();
+ return scheme_void;
+ }
+
+! /* List */
+! new_len = scheme_proper_list_length(line_list);
+! if (new_len < 0) /* improper or cyclic list */
+! scheme_wrong_type(prim->name, "proper list",
+! 2, argc, argv);
+
+! /* Using MzScheme allocator, so we don't need to free this and
+! * can safely keep pointers to GC collected strings
+! */
+! array = (char **)scheme_malloc_fail_ok(scheme_malloc,
+! (unsigned)(new_len * sizeof(char *)));
+
+! rest = line_list;
+! for (i = 0; i < new_len; ++i)
+! {
+! line = SCHEME_CAR(rest);
+! rest = SCHEME_CDR(rest);
+! if (!SCHEME_STRINGP(line))
+! scheme_wrong_type(prim->name, "string-list", 2, argc, argv);
+! array[i] = string_to_line(line);
+! }
+
+! savebuf = curbuf;
+! curbuf = buf->buf;
+
+! if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
+! {
+! curbuf = savebuf;
+! raise_vim_exn(_("cannot save undo information"));
+! }
+
+! /*
+! * If the size of the range is reducing (ie, new_len < old_len) we
+! * need to delete some old_len. We do this at the start, by
+! * repeatedly deleting line "lo".
+! */
+! for (i = 0; i < old_len - new_len; ++i)
+! {
+! if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+! {
+! curbuf = savebuf;
+! raise_vim_exn(_("cannot delete line"));
+! }
+! extra--;
+! }
+
+! /*
+! * For as long as possible, replace the existing old_len with the
+! * new old_len. This is a more efficient operation, as it requires
+! * less memory allocation and freeing.
+! */
+! for (i = 0; i < old_len && i < new_len; i++)
+! if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], TRUE) == FAIL)
+! {
+! curbuf = savebuf;
+! raise_vim_exn(_("cannot replace line"));
+! }
+
+! /*
+! * Now we may need to insert the remaining new_len. We don't need to
+! * free the string passed back because MzScheme has control of that
+! * memory.
+! */
+! while (i < new_len)
+! {
+! if (ml_append((linenr_T)(lo + i - 1),
+! (char_u *)array[i], 0, FALSE) == FAIL)
+! {
+! curbuf = savebuf;
+! raise_vim_exn(_("cannot insert line"));
+ }
+- ++i;
+- ++extra;
+- }
+
+! /*
+! * Adjust marks. Invalidate any which lie in the
+! * changed range, and move any in the remainder of the buffer.
+! */
+! mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), (long)MAXLNUM, (long)extra);
+! changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+
+! if (buf->buf == curwin->w_buffer)
+! mz_fix_cursor(lo, hi, extra);
+! curbuf = savebuf;
+
+! raise_if_error();
+! return scheme_void;
+ }
+
+ /*
+--- 2306,2426 ----
+
+ curbuf = savebuf;
+
++ MZ_GC_UNREG();
+ raise_if_error();
+ return scheme_void;
+ }
++ else
++ {
++ buf_T *savebuf = curbuf;
+
+! /* List */
+! new_len = scheme_proper_list_length(line_list);
+! MZ_GC_CHECK();
+! if (new_len < 0) /* improper or cyclic list */
+! scheme_wrong_type(prim->name, "proper list",
+! 2, argc, argv);
+! else
+! {
+! char **array = NULL;
+! Scheme_Object *line = NULL;
+! Scheme_Object *rest = NULL;
+!
+! MZ_GC_DECL_REG(2);
+! MZ_GC_VAR_IN_REG(0, line);
+! MZ_GC_VAR_IN_REG(1, rest);
+! MZ_GC_REG();
+
+! array = (char **)alloc(new_len * sizeof(char *));
+! vim_memset(array, 0, new_len * sizeof(char *));
+
+! rest = line_list;
+! for (i = 0; i < new_len; ++i)
+! {
+! line = SCHEME_CAR(rest);
+! rest = SCHEME_CDR(rest);
+! if (!SCHEME_STRINGP(line))
+! {
+! free_array(array);
+! scheme_wrong_type(prim->name, "string-list", 2, argc, argv);
+! }
+! array[i] = string_to_line(line);
+! }
+
+! curbuf = buf->buf;
+
+! if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
+! {
+! curbuf = savebuf;
+! free_array(array);
+! raise_vim_exn(_("cannot save undo information"));
+! }
+
+! /*
+! * If the size of the range is reducing (ie, new_len < old_len) we
+! * need to delete some old_len. We do this at the start, by
+! * repeatedly deleting line "lo".
+! */
+! for (i = 0; i < old_len - new_len; ++i)
+! {
+! if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+! {
+! curbuf = savebuf;
+! free_array(array);
+! raise_vim_exn(_("cannot delete line"));
+! }
+! extra--;
+! }
+
+! /*
+! * For as long as possible, replace the existing old_len with the
+! * new old_len. This is a more efficient operation, as it requires
+! * less memory allocation and freeing.
+! */
+! for (i = 0; i < old_len && i < new_len; i++)
+! if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], TRUE) == FAIL)
+! {
+! curbuf = savebuf;
+! free_array(array);
+! raise_vim_exn(_("cannot replace line"));
+! }
+
+! /*
+! * Now we may need to insert the remaining new_len. We don't need to
+! * free the string passed back because MzScheme has control of that
+! * memory.
+! */
+! while (i < new_len)
+! {
+! if (ml_append((linenr_T)(lo + i - 1),
+! (char_u *)array[i], 0, FALSE) == FAIL)
+! {
+! curbuf = savebuf;
+! free_array(array);
+! raise_vim_exn(_("cannot insert line"));
+! }
+! ++i;
+! ++extra;
+! }
+! MZ_GC_UNREG();
+! free_array(array);
+ }
+
+! /*
+! * Adjust marks. Invalidate any which lie in the
+! * changed range, and move any in the remainder of the buffer.
+! */
+! mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), (long)MAXLNUM, (long)extra);
+! changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+
+! if (buf->buf == curwin->w_buffer)
+! mz_fix_cursor(lo, hi, extra);
+! curbuf = savebuf;
+
+! MZ_GC_UNREG();
+! raise_if_error();
+! return scheme_void;
+! }
+ }
+
+ /*
+***************
+*** 2179,2193 ****
+ insert_buffer_line_list(void *data, int argc, Scheme_Object **argv)
+ {
+ Vim_Prim *prim = (Vim_Prim *)data;
+! vim_mz_buffer *buf;
+! Scheme_Object *list;
+! Scheme_Object *line;
+! Scheme_Object *rest;
+! char **array;
+! char *str;
+! buf_T *savebuf;
+ int i, n, size;
+
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+--- 2438,2452 ----
+ insert_buffer_line_list(void *data, int argc, Scheme_Object **argv)
+ {
+ Vim_Prim *prim = (Vim_Prim *)data;
+! vim_mz_buffer *buf = NULL;
+! Scheme_Object *list = NULL;
+! char *str = NULL;
+ int i, n, size;
+
++ MZ_GC_DECL_REG(1);
++ MZ_GC_VAR_IN_REG(0, list);
++ MZ_GC_REG();
++
+ #ifdef HAVE_SANDBOX
+ sandbox_check();
+ #endif
+***************
+*** 2206,2294 ****
+ check_line_range(n, buf->buf);
+ if (SCHEME_STRINGP(list))
+ {
+! str = string_to_line(list);
+
+! savebuf = curbuf;
+ curbuf = buf->buf;
+
+ if (u_save((linenr_T)n, (linenr_T)(n+1)) == FAIL)
+ {
+ curbuf = savebuf;
+ raise_vim_exn(_("cannot save undo information"));
+ }
+ else if (ml_append((linenr_T)n, (char_u *)str, 0, FALSE) == FAIL)
+ {
+ curbuf = savebuf;
+ raise_vim_exn(_("cannot insert line"));
+ }
+ else
+ appended_lines_mark((linenr_T)n, 1L);
+
+ curbuf = savebuf;
+ update_screen(VALID);
+
+ raise_if_error();
+ return scheme_void;
+ }
+
+ /* List */
+ size = scheme_proper_list_length(list);
+ if (size < 0) /* improper or cyclic list */
+ scheme_wrong_type(prim->name, "proper list",
+ 2, argc, argv);
+!
+! /* Using MzScheme allocator, so we don't need to free this and
+! * can safely keep pointers to GC collected strings
+! */
+! array = (char **)scheme_malloc_fail_ok(
+! scheme_malloc, (unsigned)(size * sizeof(char *)));
+!
+! rest = list;
+! for (i = 0; i < size; ++i)
+ {
+! line = SCHEME_CAR(rest);
+! rest = SCHEME_CDR(rest);
+! array[i] = string_to_line(line);
+! }
+
+! savebuf = curbuf;
+! curbuf = buf->buf;
+
+! if (u_save((linenr_T)n, (linenr_T)(n + 1)) == FAIL)
+! {
+! curbuf = savebuf;
+! raise_vim_exn(_("cannot save undo information"));
+! }
+! else
+! {
+ for (i = 0; i < size; ++i)
+! if (ml_append((linenr_T)(n + i), (char_u *)array[i],
+! 0, FALSE) == FAIL)
+! {
+! curbuf = savebuf;
+! raise_vim_exn(_("cannot insert line"));
+! }
+
+! if (i > 0)
+! appended_lines_mark((linenr_T)n, (long)i);
+! }
+
+! curbuf = savebuf;
+! update_screen(VALID);
+
+ raise_if_error();
+ return scheme_void;
+ }
+
+- /* (get-buff-namespace [buffer]) */
+- static Scheme_Object *
+- get_buffer_namespace(void *data, int argc, Scheme_Object **argv)
+- {
+- Vim_Prim *prim = (Vim_Prim *)data;
+-
+- return (Scheme_Object *)get_buffer_arg(prim->name, 0, argc, argv)->env;
+- }
+-
+ /*
+ * Predicates
+ */
+--- 2465,2563 ----
+ check_line_range(n, buf->buf);
+ if (SCHEME_STRINGP(list))
+ {
+! buf_T *savebuf = curbuf;
+
+! str = string_to_line(list);
+ curbuf = buf->buf;
+
+ if (u_save((linenr_T)n, (linenr_T)(n+1)) == FAIL)
+ {
+ curbuf = savebuf;
++ vim_free(str);
+ raise_vim_exn(_("cannot save undo information"));
+ }
+ else if (ml_append((linenr_T)n, (char_u *)str, 0, FALSE) == FAIL)
+ {
+ curbuf = savebuf;
++ vim_free(str);
+ raise_vim_exn(_("cannot insert line"));
+ }
+ else
++ {
++ vim_free(str);
+ appended_lines_mark((linenr_T)n, 1L);
++ }
+
+ curbuf = savebuf;
+ update_screen(VALID);
+
++ MZ_GC_UNREG();
+ raise_if_error();
+ return scheme_void;
+ }
+
+ /* List */
+ size = scheme_proper_list_length(list);
++ MZ_GC_CHECK();
+ if (size < 0) /* improper or cyclic list */
+ scheme_wrong_type(prim->name, "proper list",
+ 2, argc, argv);
+! else
+ {
+! Scheme_Object *line = NULL;
+! Scheme_Object *rest = NULL;
+! char **array;
+! buf_T *savebuf = curbuf;
+!
+! MZ_GC_DECL_REG(2);
+! MZ_GC_VAR_IN_REG(0, line);
+! MZ_GC_VAR_IN_REG(1, rest);
+! MZ_GC_REG();
+
+! array = (char **)alloc(size * sizeof(char *));
+! vim_memset(array, 0, size * sizeof(char *));
+
+! rest = list;
+ for (i = 0; i < size; ++i)
+! {
+! line = SCHEME_CAR(rest);
+! rest = SCHEME_CDR(rest);
+! array[i] = string_to_line(line);
+! }
+
+! curbuf = buf->buf;
+
+! if (u_save((linenr_T)n, (linenr_T)(n + 1)) == FAIL)
+! {
+! curbuf = savebuf;
+! free_array(array);
+! raise_vim_exn(_("cannot save undo information"));
+! }
+! else
+! {
+! for (i = 0; i < size; ++i)
+! if (ml_append((linenr_T)(n + i), (char_u *)array[i],
+! 0, FALSE) == FAIL)
+! {
+! curbuf = savebuf;
+! free_array(array);
+! raise_vim_exn(_("cannot insert line"));
+! }
+!
+! if (i > 0)
+! appended_lines_mark((linenr_T)n, (long)i);
+! }
+! free_array(array);
+! MZ_GC_UNREG();
+! curbuf = savebuf;
+! update_screen(VALID);
+! }
+
++ MZ_GC_UNREG();
+ raise_if_error();
+ return scheme_void;
+ }
+
+ /*
+ * Predicates
+ */
+***************
+*** 2343,2383 ****
+ /*
+ * Convert an MzScheme string into a Vim line.
+ *
+! * The result is in allocated memory. All internal nulls are replaced by
+! * newline characters. It is an error for the string to contain newline
+! * characters.
+ *
+ */
+ static char *
+ string_to_line(Scheme_Object *obj)
+ {
+! char *str;
+ long len;
+ int i;
+
+! str = scheme_display_to_string(obj, &len);
+
+ /* Error checking: String must not contain newlines, as we
+ * are replacing a single line, and we must replace it with
+ * a single line.
+ */
+! if (memchr(str, '\n', len))
+ scheme_signal_error(_("string cannot contain newlines"));
+
+ /* Create a copy of the string, with internal nulls replaced by
+ * newline characters, as is the vim convention.
+ */
+ for (i = 0; i < len; ++i)
+ {
+! if (str[i] == '\0')
+! str[i] = '\n';
+ }
+
+! str[i] = '\0';
+
+! return str;
+ }
+
+ /*
+ * Check to see whether a Vim error has been reported, or a keyboard
+ * interrupt (from vim --> got_int) has been detected.
+--- 2612,2784 ----
+ /*
+ * Convert an MzScheme string into a Vim line.
+ *
+! * All internal nulls are replaced by newline characters.
+! * It is an error for the string to contain newline characters.
+ *
++ * Returns pointer to Vim allocated memory
+ */
+ static char *
+ string_to_line(Scheme_Object *obj)
+ {
+! char *scheme_str = NULL;
+! char *vim_str = NULL;
+ long len;
+ int i;
+
+! scheme_str = scheme_display_to_string(obj, &len);
+
+ /* Error checking: String must not contain newlines, as we
+ * are replacing a single line, and we must replace it with
+ * a single line.
+ */
+! if (memchr(scheme_str, '\n', len))
+ scheme_signal_error(_("string cannot contain newlines"));
+
++ vim_str = (char *)alloc(len + 1);
++
+ /* Create a copy of the string, with internal nulls replaced by
+ * newline characters, as is the vim convention.
+ */
+ for (i = 0; i < len; ++i)
+ {
+! if (scheme_str[i] == '\0')
+! vim_str[i] = '\n';
+! else
+! vim_str[i] = scheme_str[i];
+ }
+
+! vim_str[i] = '\0';
+
+! MZ_GC_CHECK();
+! return vim_str;
+ }
+
++ #ifdef FEAT_EVAL
++ /*
++ * Convert Vim value into MzScheme, adopted from if_python.c
++ */
++ static Scheme_Object *
++ vim_to_mzscheme(typval_T *vim_value, int depth, Scheme_Hash_Table *visited)
++ {
++ Scheme_Object *result = NULL;
++ int new_value = TRUE;
++
++ MZ_GC_DECL_REG(1);
++ MZ_GC_VAR_IN_REG(0, result);
++ MZ_GC_REG();
++
++ /* Avoid infinite recursion */
++ if (depth > 100)
++ {
++ MZ_GC_UNREG();
++ return scheme_void;
++ }
++
++ /* Check if we run into a recursive loop. The item must be in visited
++ * then and we can use it again.
++ */
++ result = scheme_hash_get(visited, (Scheme_Object *)vim_value);
++ MZ_GC_CHECK();
++ if (result != NULL) /* found, do nothing */
++ new_value = FALSE;
++ else if (vim_value->v_type == VAR_STRING)
++ {
++ result = scheme_make_string((char *)vim_value->vval.v_string);
++ MZ_GC_CHECK();
++ }
++ else if (vim_value->v_type == VAR_NUMBER)
++ {
++ result = scheme_make_integer((long)vim_value->vval.v_number);
++ MZ_GC_CHECK();
++ }
++ # ifdef FEAT_FLOAT
++ else if (vim_value->v_type == VAR_FLOAT)
++ {
++ result = scheme_make_double((double)vim_value->vval.v_float);
++ MZ_GC_CHECK();
++ }
++ # endif
++ else if (vim_value->v_type == VAR_LIST)
++ {
++ list_T *list = vim_value->vval.v_list;
++ listitem_T *curr;
++
++ if (list == NULL || list->lv_first == NULL)
++ result = scheme_null;
++ else
++ {
++ Scheme_Object *obj = NULL;
++
++ MZ_GC_DECL_REG(1);
++ MZ_GC_VAR_IN_REG(0, obj);
++ MZ_GC_REG();
++
++ curr = list->lv_last;
++ obj = vim_to_mzscheme(&curr->li_tv, depth + 1, visited);
++ result = scheme_make_pair(obj, scheme_null);
++ MZ_GC_CHECK();
++
++ while (curr != list->lv_first)
++ {
++ curr = curr->li_prev;
++ obj = vim_to_mzscheme(&curr->li_tv, depth + 1, visited);
++ result = scheme_make_pair(obj, result);
++ MZ_GC_CHECK();
++ }
++ }
++ MZ_GC_UNREG();
++ }
++ else if (vim_value->v_type == VAR_DICT)
++ {
++ Scheme_Object *key = NULL;
++ Scheme_Object *obj = NULL;
++
++ MZ_GC_DECL_REG(2);
++ MZ_GC_VAR_IN_REG(0, key);
++ MZ_GC_VAR_IN_REG(1, obj);
++ MZ_GC_REG();
++
++ result = (Scheme_Object *)scheme_make_hash_table(SCHEME_hash_ptr);
++ MZ_GC_CHECK();
++ if (vim_value->vval.v_dict != NULL)
++ {
++ hashtab_T *ht = &vim_value->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);
++ obj = vim_to_mzscheme(&di->di_tv, depth + 1, visited);
++ key = scheme_make_string((char *)hi->hi_key);
++ MZ_GC_CHECK();
++ scheme_hash_set((Scheme_Hash_Table *)result, key, obj);
++ MZ_GC_CHECK();
++ }
++ }
++ }
++ MZ_GC_UNREG();
++ }
++ else
++ {
++ result = scheme_void;
++ new_value = FALSE;
++ }
++ if (new_value)
++ {
++ scheme_hash_set(visited, (Scheme_Object *)vim_value, result);
++ MZ_GC_CHECK();
++ }
++ MZ_GC_UNREG();
++ return result;
++ }
++ #endif
++
+ /*
+ * Check to see whether a Vim error has been reported, or a keyboard
+ * interrupt (from vim --> got_int) has been detected.
+***************
+*** 2392,2441 ****
+ * register Scheme exn:vim
+ */
+ static void
+! register_vim_exn(Scheme_Env *env)
+ {
+! Scheme_Object *exn_name = scheme_intern_symbol("exn:vim");
+
+ if (vim_exn == NULL)
+ vim_exn = scheme_make_struct_type(exn_name,
+! scheme_builtin_value("struct:exn"), NULL, 0, 0, NULL, NULL
+ #if MZSCHEME_VERSION_MAJOR >= 299
+ , NULL
+ #endif
+ );
+
+- if (vim_exn_values == NULL)
+- {
+- int nc = 0;
+
+! Scheme_Object **exn_names = scheme_make_struct_names(
+! exn_name, scheme_null, 0, &nc);
+! Scheme_Object **exn_values = scheme_make_struct_values(
+! vim_exn, exn_names, nc, 0);
+!
+! vim_exn_names = scheme_make_vector(nc, scheme_false);
+! vim_exn_values = scheme_make_vector(nc, scheme_false);
+! /* remember names and values */
+! mch_memmove(SCHEME_VEC_ELS(vim_exn_names), exn_names,
+! nc * sizeof(Scheme_Object *));
+! mch_memmove(SCHEME_VEC_ELS(vim_exn_values), exn_values,
+! nc * sizeof(Scheme_Object *));
+ }
+!
+! add_vim_exn(env);
+! }
+!
+! /*
+! * Add stuff of exn:vim to env
+! */
+! static void
+! add_vim_exn(Scheme_Env *env)
+! {
+! int i;
+!
+! for (i = 0; i < SCHEME_VEC_SIZE(vim_exn_values); i++)
+! scheme_add_global_symbol(SCHEME_VEC_ELS(vim_exn_names)[i],
+! SCHEME_VEC_ELS(vim_exn_values)[i], env);
+ }
+
+ /*
+--- 2793,2851 ----
+ * register Scheme exn:vim
+ */
+ static void
+! register_vim_exn(void)
+ {
+! int nc = 0;
+! int i;
+! Scheme_Object *struct_exn = NULL;
+! Scheme_Object *exn_name = NULL;
+!
+! MZ_GC_DECL_REG(2);
+! MZ_GC_VAR_IN_REG(0, struct_exn);
+! MZ_GC_VAR_IN_REG(1, exn_name);
+! MZ_GC_REG();
+!
+! exn_name = scheme_intern_symbol("exn:vim");
+! MZ_GC_CHECK();
+! struct_exn = scheme_builtin_value("struct:exn");
+! MZ_GC_CHECK();
+
+ if (vim_exn == NULL)
+ vim_exn = scheme_make_struct_type(exn_name,
+! struct_exn, NULL, 0, 0, NULL, NULL
+ #if MZSCHEME_VERSION_MAJOR >= 299
+ , NULL
+ #endif
+ );
+
+
+! {
+! Scheme_Object **tmp = NULL;
+! Scheme_Object *exn_names[5] = {NULL, NULL, NULL, NULL, NULL};
+! Scheme_Object *exn_values[5] = {NULL, NULL, NULL, NULL, NULL};
+! MZ_GC_DECL_REG(6);
+! MZ_GC_ARRAY_VAR_IN_REG(0, exn_names, 5);
+! MZ_GC_ARRAY_VAR_IN_REG(3, exn_values, 5);
+! MZ_GC_REG();
+!
+! tmp = scheme_make_struct_names(exn_name, scheme_null, 0, &nc);
+! assert(nc <= 5);
+! mch_memmove(exn_names, tmp, nc * sizeof(Scheme_Object *));
+! MZ_GC_CHECK();
+!
+! tmp = scheme_make_struct_values(vim_exn, exn_names, nc, 0);
+! mch_memmove(exn_values, tmp, nc * sizeof(Scheme_Object *));
+! MZ_GC_CHECK();
+!
+! for (i = 0; i < nc; i++)
+! {
+! scheme_add_global_symbol(exn_names[i],
+! exn_values[i], environment);
+! MZ_GC_CHECK();
+! }
+! MZ_GC_UNREG();
+ }
+! MZ_GC_UNREG();
+ }
+
+ /*
+***************
+*** 2444,2469 ****
+ void
+ raise_vim_exn(const char *add_info)
+ {
+! Scheme_Object *argv[2];
+! char_u *fmt = _("Vim error: ~a");
+
+ if (add_info != NULL)
+ {
+! Scheme_Object *info = scheme_make_string(add_info);
+! argv[0] = scheme_byte_string_to_char_string(scheme_make_string(
+! scheme_format(fmt, strlen(fmt), 1, &info, NULL)));
+ SCHEME_SET_IMMUTABLE(argv[0]);
+ }
+ else
+ argv[0] = scheme_make_string(_("Vim error"));
+
+ #if MZSCHEME_VERSION_MAJOR < 360
+ argv[1] = scheme_current_continuation_marks();
+ #else
+ argv[1] = scheme_current_continuation_marks(NULL);
+ #endif
+
+! scheme_raise(scheme_make_struct_instance(vim_exn, 2, argv));
+ }
+
+ void
+--- 2854,2907 ----
+ void
+ raise_vim_exn(const char *add_info)
+ {
+! char *fmt = _("Vim error: ~a");
+! Scheme_Object *argv[2] = {NULL, NULL};
+! Scheme_Object *exn = NULL;
+!
+! MZ_GC_DECL_REG(4);
+! MZ_GC_ARRAY_VAR_IN_REG(0, argv, 2);
+! MZ_GC_VAR_IN_REG(3, exn);
+! MZ_GC_REG();
+
+ if (add_info != NULL)
+ {
+! char *c_string = NULL;
+! Scheme_Object *byte_string = NULL;
+! Scheme_Object *info = NULL;
+!
+! MZ_GC_DECL_REG(3);
+! MZ_GC_VAR_IN_REG(0, c_string);
+! MZ_GC_VAR_IN_REG(1, byte_string);
+! MZ_GC_VAR_IN_REG(2, info);
+! MZ_GC_REG();
+!
+! info = scheme_make_string(add_info);
+! MZ_GC_CHECK();
+! c_string = scheme_format(fmt, STRLEN(fmt), 1, &info, NULL);
+! MZ_GC_CHECK();
+! byte_string = scheme_make_string(c_string);
+! MZ_GC_CHECK();
+! argv[0] = scheme_byte_string_to_char_string(byte_string);
+! MZ_GC_CHECK();
+ SCHEME_SET_IMMUTABLE(argv[0]);
++ MZ_GC_UNREG();
+ }
+ else
+ argv[0] = scheme_make_string(_("Vim error"));
++ MZ_GC_CHECK();
+
+ #if MZSCHEME_VERSION_MAJOR < 360
+ argv[1] = scheme_current_continuation_marks();
++ MZ_GC_CHECK();
+ #else
+ argv[1] = scheme_current_continuation_marks(NULL);
++ MZ_GC_CHECK();
+ #endif
+
+! exn = scheme_make_struct_instance(vim_exn, 2, argv);
+! MZ_GC_CHECK();
+! scheme_raise(exn);
+! MZ_GC_UNREG();
+ }
+
+ void
+***************
+*** 2570,2575 ****
+--- 3008,3015 ----
+ curwin->w_cursor.lnum = lo;
+ check_cursor();
+ }
++ else
++ check_cursor_col();
+ changed_cline_bef_curs();
+ }
+ invalidate_botline();
+***************
+*** 2595,2601 ****
+ {mzscheme_open_buffer, "open-buff", 1, 1},
+ {get_buffer_by_name, "get-buff-by-name", 1, 1},
+ {get_buffer_by_num, "get-buff-by-num", 1, 1},
+- {get_buffer_namespace, "get-buff-namespace", 0, 1},
+ /*
+ * Window-related commands
+ */
+--- 3035,3040 ----
+***************
+*** 2653,2675 ****
+ }
+
+ static void
+! make_modules(Scheme_Env *env)
+ {
+! int i;
+! Scheme_Env *mod;
+!
+! mod = scheme_primitive_module(scheme_intern_symbol("vimext"), env);
+ /* all prims made closed so they can access their own names */
+! for (i = 0; i < sizeof(prims)/sizeof(prims[0]); i++)
+ {
+ Vim_Prim *prim = prims + i;
+! scheme_add_global(prim->name,
+! scheme_make_closed_prim_w_arity(prim->prim, prim, prim->name,
+! prim->mina, prim->maxa),
+! mod);
+ }
+- scheme_add_global("global-namespace", (Scheme_Object *)environment, mod);
+ scheme_finish_primitive_module(mod);
+ }
+
+ #ifdef HAVE_SANDBOX
+--- 3092,3126 ----
+ }
+
+ static void
+! make_modules()
+ {
+! int i;
+! Scheme_Env *mod = NULL;
+! Scheme_Object *vimext_symbol = NULL;
+! Scheme_Object *closed_prim = NULL;
+!
+! MZ_GC_DECL_REG(3);
+! MZ_GC_VAR_IN_REG(0, mod);
+! MZ_GC_VAR_IN_REG(1, vimext_symbol);
+! MZ_GC_VAR_IN_REG(2, closed_prim);
+! MZ_GC_REG();
+!
+! vimext_symbol = scheme_intern_symbol("vimext");
+! MZ_GC_CHECK();
+! mod = scheme_primitive_module(vimext_symbol, environment);
+! MZ_GC_CHECK();
+ /* all prims made closed so they can access their own names */
+! for (i = 0; i < (int)(sizeof(prims)/sizeof(prims[0])); i++)
+ {
+ Vim_Prim *prim = prims + i;
+! closed_prim = scheme_make_closed_prim_w_arity(prim->prim, prim, prim->name,
+! prim->mina, prim->maxa);
+! scheme_add_global(prim->name, closed_prim, mod);
+! MZ_GC_CHECK();
+ }
+ scheme_finish_primitive_module(mod);
++ MZ_GC_CHECK();
++ MZ_GC_UNREG();
+ }
+
+ #ifdef HAVE_SANDBOX
+***************
+*** 2697,2717 ****
+--- 3148,3172 ----
+ {
+ MZ_REGISTER_STATIC(M_write);
+ M_write = scheme_intern_symbol("write");
++ MZ_GC_CHECK();
+ }
+ if (M_read == NULL)
+ {
+ MZ_REGISTER_STATIC(M_read);
+ M_read = scheme_intern_symbol("read");
++ MZ_GC_CHECK();
+ }
+ if (M_execute == NULL)
+ {
+ MZ_REGISTER_STATIC(M_execute);
+ M_execute = scheme_intern_symbol("execute");
++ MZ_GC_CHECK();
+ }
+ if (M_delete == NULL)
+ {
+ MZ_REGISTER_STATIC(M_delete);
+ M_delete = scheme_intern_symbol("delete");
++ MZ_GC_CHECK();
+ }
+
+ while (!SCHEME_NULLP(requested_access))
+*** ../vim-7.2.190/src/if_mzsch.h 2006-03-24 23:43:11.000000000 +0100
+--- src/if_mzsch.h 2009-05-26 19:08:21.000000000 +0200
+***************
+*** 11,16 ****
+--- 11,17 ----
+
+ /* #ifdef needed for "make depend" */
+ #ifdef FEAT_MZSCHEME
++ # include <schvers.h>
+ # include <scheme.h>
+ #endif
+
+***************
+*** 46,49 ****
+--- 47,77 ----
+ # define scheme_byte_string_to_char_string(obj) (obj)
+ #endif
+
++ /* Precise GC macros */
++ #ifndef MZ_GC_DECL_REG
++ # define MZ_GC_DECL_REG(size) /* empty */
++ #endif
++ #ifndef MZ_GC_VAR_IN_REG
++ # define MZ_GC_VAR_IN_REG(x, v) /* empty */
++ #endif
++ #ifndef MZ_GC_ARRAY_VAR_IN_REG
++ # define MZ_GC_ARRAY_VAR_IN_REG(x, v, l) /* empty */
++ #endif
++ #ifndef MZ_GC_REG
++ # define MZ_GC_REG() /* empty */
++ #endif
++ #ifndef MZ_GC_UNREG
++ # define MZ_GC_UNREG() /* empty */
++ #endif
++
++ #ifdef MZSCHEME_FORCE_GC
++ /*
++ * force garbage collection to check all references are registered
++ * seg faults will indicate not registered refs
++ */
++ # define MZ_GC_CHECK() scheme_collect_garbage();
++ #else
++ # define MZ_GC_CHECK() /* empty */
++ #endif
++
+ #endif /* _IF_MZSCH_H_ */
+*** ../vim-7.2.190/src/main.c 2009-05-17 13:30:58.000000000 +0200
+--- src/main.c 2009-05-26 19:09:01.000000000 +0200
+***************
+*** 935,942 ****
+--- 935,948 ----
+
+ /*
+ * Call the main command loop. This never returns.
++ * For embedded MzScheme the main_loop will be called by Scheme
++ * for proper stack tracking
+ */
++ #ifndef FEAT_MZSCHEME
+ main_loop(FALSE, FALSE);
++ #else
++ mzscheme_main();
++ #endif
+
+ return 0;
+ }
+*** ../vim-7.2.190/src/proto/if_mzsch.pro 2004-07-12 17:51:52.000000000 +0200
+--- src/proto/if_mzsch.pro 2009-05-26 19:09:55.000000000 +0200
+***************
+*** 15,24 ****
+ 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 (void);
+! #ifdef FEAT_GUI_KDE
+! void timer_proc (void);
+! void mzscheme_kde_start_timer (void);
+! void mzscheme_kde_stop_timer (void);
+! #endif
+ /* vim: set ft=c : */
+--- 15,20 ----
+ 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 : */
+*** ../vim-7.2.190/src/version.c 2009-05-26 18:12:13.000000000 +0200
+--- src/version.c 2009-05-26 22:52:53.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 191,
+ /**/
+
+--
+Scientists decoded the first message from an alien civilization:
+ SIMPLY SEND 6 TIMES 10 TO THE 50 ATOMS OF HYDROGEN TO THE STAR
+SYSTEM AT THE TOP OF THE LIST, CROSS OFF THAT STAR SYSTEM, THEN PUT
+YOUR STAR SYSTEM AT THE BOTTOM OF THE LIST AND SEND IT TO 100 OTHER
+STAR SYSTEMS. WITHIN ONE TENTH GALACTIC ROTATION YOU WILL RECEIVE
+ENOUGH HYDROGREN TO POWER YOUR CIVILIZATION UNTIL ENTROPY REACHES ITS
+MAXIMUM! IT REALLY WORKS!
+
+ /// 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.192 b/source/ap/vim/patches/7.2.192
new file mode 100644
index 000000000..28cefd5bb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.192
@@ -0,0 +1,135 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.192
+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.192 (after 7.2.188)
+Problem: Still a crash in the garbage collector for a very rare situation.
+Solution: Make sure current_copyID is always incremented correctly. (Kent
+ Sibilev)
+Files: src/eval.c
+
+
+*** ../vim-7.2.191/src/eval.c 2009-05-26 22:58:43.000000000 +0200
+--- src/eval.c 2009-05-29 21:13:47.000000000 +0200
+***************
+*** 6526,6532 ****
+
+ /* Don't free variables in the previous_funccal list unless they are only
+ * referenced through previous_funccal. This must be first, because if
+! * the item is referenced elsewhere it must not be freed. */
+ for (fc = previous_funccal; fc != NULL; fc = fc->caller)
+ {
+ set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
+--- 6526,6532 ----
+
+ /* Don't free variables in the previous_funccal list unless they are only
+ * referenced through previous_funccal. This must be first, because if
+! * the item is referenced elsewhere the funccal must not be freed. */
+ for (fc = previous_funccal; fc != NULL; fc = fc->caller)
+ {
+ set_ref_in_ht(&fc->l_vars.dv_hashtab, copyID + 1);
+***************
+*** 6564,6573 ****
+ /* v: vars */
+ set_ref_in_ht(&vimvarht, copyID);
+
+! /* Free lists and dictionaries that are not referenced. */
+ did_free = free_unref_items(copyID);
+
+! /* check if any funccal can be freed now */
+ for (pfc = &previous_funccal; *pfc != NULL; )
+ {
+ if (can_free_funccal(*pfc, copyID))
+--- 6564,6577 ----
+ /* v: vars */
+ set_ref_in_ht(&vimvarht, copyID);
+
+! /*
+! * 2. Free lists and dictionaries that are not referenced.
+! */
+ did_free = free_unref_items(copyID);
+
+! /*
+! * 3. Check if any funccal can be freed now.
+! */
+ for (pfc = &previous_funccal; *pfc != NULL; )
+ {
+ if (can_free_funccal(*pfc, copyID))
+***************
+*** 9286,9292 ****
+ if (noref < 0 || noref > 1)
+ EMSG(_(e_invarg));
+ else
+! item_copy(&argvars[0], rettv, TRUE, noref == 0 ? ++current_copyID : 0);
+ }
+
+ /*
+--- 9290,9299 ----
+ if (noref < 0 || noref > 1)
+ EMSG(_(e_invarg));
+ else
+! {
+! current_copyID += COPYID_INC;
+! item_copy(&argvars[0], rettv, TRUE, noref == 0 ? current_copyID : 0);
+! }
+ }
+
+ /*
+***************
+*** 18966,18972 ****
+ char_u *s;
+ char_u numbuf[NUMBUFLEN];
+
+! s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID);
+ list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
+ s == NULL ? (char_u *)"" : s, first);
+ vim_free(tofree);
+--- 18973,18980 ----
+ char_u *s;
+ char_u numbuf[NUMBUFLEN];
+
+! current_copyID += COPYID_INC;
+! s = echo_string(&v->di_tv, &tofree, numbuf, current_copyID);
+ list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
+ s == NULL ? (char_u *)"" : s, first);
+ vim_free(tofree);
+***************
+*** 19401,19407 ****
+ }
+ else if (eap->cmdidx == CMD_echo)
+ msg_puts_attr((char_u *)" ", echo_attr);
+! p = echo_string(&rettv, &tofree, numbuf, ++current_copyID);
+ if (p != NULL)
+ for ( ; *p != NUL && !got_int; ++p)
+ {
+--- 19409,19416 ----
+ }
+ else if (eap->cmdidx == CMD_echo)
+ msg_puts_attr((char_u *)" ", echo_attr);
+! current_copyID += COPYID_INC;
+! p = echo_string(&rettv, &tofree, numbuf, current_copyID);
+ if (p != NULL)
+ for ( ; *p != NUL && !got_int; ++p)
+ {
+*** ../vim-7.2.191/src/version.c 2009-05-26 22:58:43.000000000 +0200
+--- src/version.c 2009-06-03 13:21:20.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 192,
+ /**/
+
+--
+Imagine a world without hypothetical situations.
+
+ /// 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.193 b/source/ap/vim/patches/7.2.193
new file mode 100644
index 000000000..175a6b886
--- /dev/null
+++ b/source/ap/vim/patches/7.2.193
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.193
+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.193
+Problem: Warning for uninitialized values.
+Solution: Initialize all the struct items.
+Files: src/eval.c
+
+
+*** ../vim-7.2.192/src/eval.c 2009-06-03 13:22:22.000000000 +0200
+--- src/eval.c 2009-05-29 21:13:47.000000000 +0200
+***************
+*** 286,292 ****
+ #define VV_RO 2 /* read-only */
+ #define VV_RO_SBX 4 /* read-only in the sandbox */
+
+! #define VV_NAME(s, t) s, {{t}}, {0}
+
+ static struct vimvar
+ {
+--- 286,292 ----
+ #define VV_RO 2 /* read-only */
+ #define VV_RO_SBX 4 /* read-only in the sandbox */
+
+! #define VV_NAME(s, t) s, {{t, 0, {0}}, 0, {0}}, {0}
+
+ static struct vimvar
+ {
+*** ../vim-7.2.192/src/version.c 2009-06-03 13:22:23.000000000 +0200
+--- src/version.c 2009-06-03 14:25:18.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 193,
+ /**/
+
+--
+No engineer can take a shower without wondering if some sort of Teflon coating
+would make showering unnecessary.
+ (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.194 b/source/ap/vim/patches/7.2.194
new file mode 100644
index 000000000..91d438f86
--- /dev/null
+++ b/source/ap/vim/patches/7.2.194
@@ -0,0 +1,44 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.194 (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.194 (extra)
+Problem: MSVC: rem commands are echoed.
+Solution: Add commands to switch off echo. (Wang Xu)
+Files: src/msvc2008.bat
+
+
+*** ../vim-7.2.193/src/msvc2008.bat 2008-06-24 22:55:23.000000000 +0200
+--- src/msvc2008.bat 2009-04-29 18:05:11.000000000 +0200
+***************
+*** 1,5 ****
+--- 1,7 ----
++ @echo off
+ rem To be used on MS-Windows for Visual C++ 2008 Express Edition
+ rem aka Microsoft Visual Studio 9.0.
+ rem See INSTALLpc.txt for information.
++ @echo on
+
+ call "%VS90COMNTOOLS%%vsvars32.bat"
+*** ../vim-7.2.193/src/version.c 2009-06-03 14:25:47.000000000 +0200
+--- src/version.c 2009-06-03 15:04:30.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 194,
+ /**/
+
+--
+I used to be indecisive, now I'm not sure.
+
+ /// 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.195 b/source/ap/vim/patches/7.2.195
new file mode 100644
index 000000000..5669a65f9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.195
@@ -0,0 +1,79 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.195
+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.195
+Problem: Leaking memory for the command Vim was started with.
+Solution: Remember the pointer and free it.
+Files: src/gui_gtk_x11.c
+
+
+*** ../vim-7.2.194/src/gui_gtk_x11.c 2009-05-17 16:23:20.000000000 +0200
+--- src/gui_gtk_x11.c 2009-06-03 12:44:31.000000000 +0200
+***************
+*** 412,417 ****
+--- 412,418 ----
+ #endif
+ #if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
+ static const char *restart_command = NULL;
++ static char *abs_restart_command = NULL;
+ #endif
+ static int found_iconic_arg = FALSE;
+
+***************
+*** 449,456 ****
+ char_u buf[MAXPATHL];
+
+ if (mch_FullName((char_u *)argv[0], buf, (int)sizeof(buf), TRUE) == OK)
+! /* Tiny leak; doesn't matter, and usually we don't even get here */
+! restart_command = (char *)vim_strsave(buf);
+ }
+ #endif
+
+--- 450,459 ----
+ char_u buf[MAXPATHL];
+
+ if (mch_FullName((char_u *)argv[0], buf, (int)sizeof(buf), TRUE) == OK)
+! {
+! abs_restart_command = (char *)vim_strsave(buf);
+! restart_command = abs_restart_command;
+! }
+ }
+ #endif
+
+***************
+*** 611,616 ****
+--- 614,622 ----
+ gui_mch_free_all()
+ {
+ vim_free(gui_argv);
++ #if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
++ vim_free(abs_restart_command);
++ #endif
+ }
+ #endif
+
+*** ../vim-7.2.194/src/version.c 2009-06-03 15:05:05.000000000 +0200
+--- src/version.c 2009-06-03 16:19:00.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 195,
+ /**/
+
+--
+I think that you'll agree that engineers are very effective in their social
+interactions. It's the "normal" people who are nuts.
+ (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.196 b/source/ap/vim/patches/7.2.196
new file mode 100644
index 000000000..7be8d95c4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.196
@@ -0,0 +1,84 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.196
+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.196 (after 7.2.167)
+Problem: Turns out splint doesn't work well enough to be usable.
+Solution: Remove splint support.
+Files: Filelist, src/cleanlint.vim
+
+
+*** ../vim-7.2.195/Filelist 2009-05-13 12:46:36.000000000 +0200
+--- Filelist 2009-05-21 14:42:46.000000000 +0200
+***************
+*** 139,145 ****
+ src/INSTALL \
+ src/INSTALLx.txt \
+ src/Makefile \
+- src/cleanlint.vim \
+ src/auto/configure \
+ src/config.aap.in \
+ src/config.h.in \
+--- 139,144 ----
+*** ../vim-7.2.195/src/cleanlint.vim 2009-05-13 18:54:14.000000000 +0200
+--- src/cleanlint.vim 1970-01-01 01:00:00.000000000 +0100
+***************
+*** 1,32 ****
+- " Vim tool: Filter output of splint
+- "
+- " Maintainer: Bram Moolenaar <Bram@vim.org>
+- " Last Change: 2009 May 13
+-
+- " Usage: redirect output of "make lint" to a file, edit that file with Vim and
+- " :call CleanLint()
+- " This deletes irrelevant messages. What remains might be valid warnings.
+-
+- fun! CleanLint()
+- g/Assignment of dev_t to __dev_t:/lockmarks d
+- g/Assignment of __dev_t to dev_t:/lockmarks d
+- g/Operands of == have incompatible types (__dev_t, dev_t): /lockmarks d
+- g/Operands of == have incompatible types (char_u, int): /lockmarks d
+- g/Assignment of char to char_u: /lockmarks d
+- g/Assignment of unsigned int to int: /lockmarks d
+- g/Assignment of int to unsigned int: /lockmarks d
+- g/Assignment of unsigned int to long int: /lockmarks d
+- g/Assignment of int to char_u: /lockmarks d
+- g/Function .* expects arg . to be wint_t gets int: /lockmarks d
+- g/Function .* expects arg . to be size_t gets int: /lockmarks d
+- g/Initial value of .* is type char, expects char_u: /lockmarks d
+- g/^ex_cmds.h:.* Function types are inconsistent. Parameter 1 is implicitly temp, but unqualified in assigned function:/lockmarks d
+- g/^ex_docmd.c:.* nospec_str/lockmarks d
+- g/^digraph.c.*Additional initialization errors for digraphdefault not reported/lockmarks d
+- g/Function strncasecmp expects arg 3 to be int gets size_t: /lockmarks d
+- g/^ Types are incompatible/lockmarks d
+- g/ To ignore signs in type comparisons use +ignoresigns/lockmarks d
+- g/ To allow arbitrary integral types to match any integral type, use +matchanyintegral./lockmarks d
+- g/ To allow arbitrary integral types to match long unsigned, use +longintegral./lockmarks d
+- g+ A variable is declared but never used. Use /.@unused@./ in front of declaration to suppress message.+lockmarks d
+- endfun
+--- 0 ----
+*** ../vim-7.2.195/src/version.c 2009-06-03 16:20:09.000000000 +0200
+--- src/version.c 2009-06-03 22:04:31.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 196,
+ /**/
+
+--
+It's totally unfair to suggest - as many have - that engineers are socially
+inept. Engineers simply have different objectives when it comes to social
+interaction.
+ (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.197 b/source/ap/vim/patches/7.2.197
new file mode 100644
index 000000000..8e49a5306
--- /dev/null
+++ b/source/ap/vim/patches/7.2.197
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.197
+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.197
+Problem: Warning for uninitialized values.
+Solution: Initialize all the struct items of typebuf.
+Files: src/globals.h
+
+
+*** ../vim-7.2.196/src/globals.h 2009-05-13 12:46:36.000000000 +0200
+--- src/globals.h 2009-06-10 15:52:18.000000000 +0200
+***************
+*** 960,966 ****
+ ;
+ EXTERN typebuf_T typebuf /* typeahead buffer */
+ #ifdef DO_INIT
+! = {NULL, NULL}
+ #endif
+ ;
+ #ifdef FEAT_EX_EXTRA
+--- 967,973 ----
+ ;
+ EXTERN typebuf_T typebuf /* typeahead buffer */
+ #ifdef DO_INIT
+! = {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}
+ #endif
+ ;
+ #ifdef FEAT_EX_EXTRA
+*** ../vim-7.2.196/src/version.c 2009-06-03 22:07:38.000000000 +0200
+--- src/version.c 2009-06-10 18:14:58.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 197,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+18. Your wife drapes a blond wig over your monitor to remind you of what she
+ looks like.
+
+ /// 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.198 b/source/ap/vim/patches/7.2.198
new file mode 100644
index 000000000..cae27ac3c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.198
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.198
+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.198
+Problem: Size of buffer used for tgetent() may be too small.
+Solution: Use the largest known size everywhere.
+Files: src/vim.h
+
+
+*** ../vim-7.2.197/src/vim.h 2009-05-14 22:19:19.000000000 +0200
+--- src/vim.h 2009-06-07 20:37:48.000000000 +0200
+***************
+*** 1345,1355 ****
+ # define MSG_BUF_CLEN MSG_BUF_LEN /* cell length */
+ #endif
+
+! #if defined(AMIGA) || defined(__linux__) || defined(__QNX__) || defined(__CYGWIN32__) || defined(_AIX)
+! # define TBUFSZ 2048 /* buffer size for termcap entry */
+! #else
+! # define TBUFSZ 1024 /* buffer size for termcap entry */
+! #endif
+
+ /*
+ * Maximum length of key sequence to be mapped.
+--- 1345,1355 ----
+ # define MSG_BUF_CLEN MSG_BUF_LEN /* cell length */
+ #endif
+
+! /* Size of the buffer used for tgetent(). Unfortunately this is largely
+! * undocumented, some systems use 1024. Using a buffer that is too small
+! * causes a buffer overrun and a crash. Use the maximum known value to stay
+! * on the safe side. */
+! #define TBUFSZ 2048 /* buffer size for termcap entry */
+
+ /*
+ * Maximum length of key sequence to be mapped.
+*** ../vim-7.2.197/src/version.c 2009-06-10 18:15:49.000000000 +0200
+--- src/version.c 2009-06-16 11:06:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 198,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+7. Finish all your sentences with "in accordance with the prophecy".
+
+ /// 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.199 b/source/ap/vim/patches/7.2.199
new file mode 100644
index 000000000..391ede6fa
--- /dev/null
+++ b/source/ap/vim/patches/7.2.199
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.199
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.199
+Problem: Strange character in comment.
+Solution: Change to "message". (Yongwei Wu)
+Files: src/term.c
+
+
+*** ../vim-7.2.198/src/term.c 2009-05-17 13:30:58.000000000 +0200
+--- src/term.c 2009-06-16 11:16:17.000000000 +0200
+***************
+*** 5555,5561 ****
+ * respects the current B/k/< settings of 'cpoption'.
+ *
+ * This function is called when expanding mappings/abbreviations on the
+! * command-line, and for building the "Ambiguous mapping..." error messæge.
+ *
+ * It uses a growarray to build the translation string since the
+ * latter can be wider than the original description. The caller has to
+--- 5555,5561 ----
+ * respects the current B/k/< settings of 'cpoption'.
+ *
+ * This function is called when expanding mappings/abbreviations on the
+! * command-line, and for building the "Ambiguous mapping..." error message.
+ *
+ * It uses a growarray to build the translation string since the
+ * latter can be wider than the original description. The caller has to
+*** ../vim-7.2.198/src/version.c 2009-06-16 11:08:13.000000000 +0200
+--- src/version.c 2009-06-16 14:31:03.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 199,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+10. Ask people what sex they are. Laugh hysterically after they answer.
+
+ /// 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.200 b/source/ap/vim/patches/7.2.200
new file mode 100644
index 000000000..65cc598e8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.200
@@ -0,0 +1,348 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.200
+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.200
+Problem: Reading past end of string when navigating the menu bar or
+ resizing the window.
+Solution: Add and use mb_ptr2len_len(). (partly by Dominique Pelle)
+ Also add mb_ptr2cells_len() to prevent more trouble.
+Files: src/gui_gtk_x11.c, src/os_unix.c, src/globals.h, src/mbyte.c,
+ src/proto/mbyte.pro
+
+
+*** ../vim-7.2.199/src/gui_gtk_x11.c 2009-06-03 16:20:09.000000000 +0200
+--- src/gui_gtk_x11.c 2009-06-16 14:44:19.000000000 +0200
+***************
+*** 6077,6088 ****
+ # ifdef FEAT_MBYTE
+ if (enc_utf8)
+ {
+! c = utf_ptr2char(p);
+ if (c >= 0x10000) /* show chars > 0xffff as ? */
+ c = 0xbf;
+ buf[textlen].byte1 = c >> 8;
+ buf[textlen].byte2 = c;
+! p += utf_ptr2len(p);
+ width += utf_char2cells(c);
+ }
+ else
+--- 6135,6149 ----
+ # ifdef FEAT_MBYTE
+ if (enc_utf8)
+ {
+! 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;
+ buf[textlen].byte2 = c;
+! p += utfc_ptr2len_len(p, len - (p - s));
+ width += utf_char2cells(c);
+ }
+ else
+***************
+*** 6106,6113 ****
+ if (has_mbyte)
+ {
+ width = 0;
+! for (p = s; p < s + len; p += (*mb_ptr2len)(p))
+! width += (*mb_ptr2cells)(p);
+ }
+ else
+ # endif
+--- 6167,6174 ----
+ if (has_mbyte)
+ {
+ width = 0;
+! for (p = s; p < s + len; p += (*mb_ptr2len_len)(p, len - (p - s)))
+! width += (*mb_ptr2cells_len)(p, len - (p - s));
+ }
+ else
+ # endif
+*** ../vim-7.2.199/src/os_unix.c 2009-05-17 13:30:58.000000000 +0200
+--- src/os_unix.c 2009-06-03 12:35:59.000000000 +0200
+***************
+*** 4305,4311 ****
+ ta_buf[i] = '\n';
+ # ifdef FEAT_MBYTE
+ if (has_mbyte)
+! i += (*mb_ptr2len)(ta_buf + i) - 1;
+ # endif
+ }
+
+--- 4305,4312 ----
+ ta_buf[i] = '\n';
+ # ifdef FEAT_MBYTE
+ if (has_mbyte)
+! i += (*mb_ptr2len_len)(ta_buf + i,
+! ta_len + len - i) - 1;
+ # endif
+ }
+
+*** ../vim-7.2.199/src/globals.h 2009-06-10 18:15:49.000000000 +0200
+--- src/globals.h 2009-06-12 21:10:30.000000000 +0200
+***************
+*** 810,820 ****
+--- 815,828 ----
+ */
+ /* length of char in bytes, including following composing chars */
+ EXTERN int (*mb_ptr2len) __ARGS((char_u *p)) INIT(= latin_ptr2len);
++ /* idem, with limit on string length */
++ EXTERN int (*mb_ptr2len_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2len_len);
+ /* byte length of char */
+ EXTERN int (*mb_char2len) __ARGS((int c)) INIT(= latin_char2len);
+ /* convert char to bytes, return the length */
+ EXTERN int (*mb_char2bytes) __ARGS((int c, char_u *buf)) INIT(= latin_char2bytes);
+ EXTERN int (*mb_ptr2cells) __ARGS((char_u *p)) INIT(= latin_ptr2cells);
++ EXTERN int (*mb_ptr2cells_len) __ARGS((char_u *p, int size)) INIT(= latin_ptr2cells_len);
+ EXTERN int (*mb_char2cells) __ARGS((int c)) INIT(= latin_char2cells);
+ EXTERN int (*mb_off2cells) __ARGS((unsigned off, unsigned max_off)) INIT(= latin_off2cells);
+ EXTERN int (*mb_ptr2char) __ARGS((char_u *p)) INIT(= latin_ptr2char);
+*** ../vim-7.2.199/src/mbyte.c 2009-05-17 13:30:58.000000000 +0200
+--- src/mbyte.c 2009-06-16 15:01:30.000000000 +0200
+***************
+*** 127,133 ****
+--- 127,136 ----
+ static int dbcs_char2len __ARGS((int c));
+ static int dbcs_char2bytes __ARGS((int c, char_u *buf));
+ static int dbcs_ptr2len __ARGS((char_u *p));
++ static int dbcs_ptr2len_len __ARGS((char_u *p, int size));
++ static int utf_ptr2cells_len __ARGS((char_u *p, int size));
+ static int dbcs_char2cells __ARGS((int c));
++ 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
+***************
+*** 606,614 ****
+--- 609,619 ----
+ if (enc_utf8)
+ {
+ mb_ptr2len = utfc_ptr2len;
++ mb_ptr2len_len = utfc_ptr2len_len;
+ mb_char2len = utf_char2len;
+ mb_char2bytes = utf_char2bytes;
+ mb_ptr2cells = utf_ptr2cells;
++ mb_ptr2cells_len = utf_ptr2cells_len;
+ mb_char2cells = utf_char2cells;
+ mb_off2cells = utf_off2cells;
+ mb_ptr2char = utf_ptr2char;
+***************
+*** 617,625 ****
+--- 622,632 ----
+ else if (enc_dbcs != 0)
+ {
+ mb_ptr2len = dbcs_ptr2len;
++ mb_ptr2len_len = dbcs_ptr2len_len;
+ mb_char2len = dbcs_char2len;
+ mb_char2bytes = dbcs_char2bytes;
+ mb_ptr2cells = dbcs_ptr2cells;
++ mb_ptr2cells_len = dbcs_ptr2cells_len;
+ mb_char2cells = dbcs_char2cells;
+ mb_off2cells = dbcs_off2cells;
+ mb_ptr2char = dbcs_ptr2char;
+***************
+*** 628,636 ****
+--- 635,645 ----
+ else
+ {
+ mb_ptr2len = latin_ptr2len;
++ mb_ptr2len_len = latin_ptr2len_len;
+ mb_char2len = latin_char2len;
+ mb_char2bytes = latin_char2bytes;
+ mb_ptr2cells = latin_ptr2cells;
++ mb_ptr2cells_len = latin_ptr2cells_len;
+ mb_char2cells = latin_char2cells;
+ mb_off2cells = latin_off2cells;
+ mb_ptr2char = latin_ptr2char;
+***************
+*** 1069,1075 ****
+ * Get byte length of character at "*p" but stop at a NUL.
+ * For UTF-8 this includes following composing characters.
+ * Returns 0 when *p is NUL.
+- *
+ */
+ int
+ latin_ptr2len(p)
+--- 1078,1083 ----
+***************
+*** 1091,1096 ****
+--- 1099,1138 ----
+ return len;
+ }
+
++ /*
++ * mb_ptr2len_len() function pointer.
++ * Like mb_ptr2len(), but limit to read "size" bytes.
++ * Returns 0 for an empty string.
++ * Returns 1 for an illegal char or an incomplete byte sequence.
++ */
++ int
++ latin_ptr2len_len(p, size)
++ char_u *p;
++ int size;
++ {
++ if (size < 1 || *p == NUL)
++ return 0;
++ return 1;
++ }
++
++ static int
++ dbcs_ptr2len_len(p, size)
++ char_u *p;
++ int size;
++ {
++ int len;
++
++ if (size < 1 || *p == NUL)
++ return 0;
++ if (size == 1)
++ return 1;
++ /* Check that second byte is not missing. */
++ len = MB_BYTE2LEN(*p);
++ if (len == 2 && p[1] == NUL)
++ len = 1;
++ return len;
++ }
++
+ struct interval
+ {
+ unsigned short first;
+***************
+*** 1287,1292 ****
+--- 1329,1383 ----
+ }
+
+ /*
++ * mb_ptr2cells_len() function pointer.
++ * Like mb_ptr2cells(), but limit string length to "size".
++ * For an empty string or truncated character returns 1.
++ */
++ int
++ latin_ptr2cells_len(p, size)
++ char_u *p UNUSED;
++ int size UNUSED;
++ {
++ return 1;
++ }
++
++ static int
++ utf_ptr2cells_len(p, size)
++ char_u *p;
++ int size;
++ {
++ int c;
++
++ /* Need to convert to a wide character. */
++ 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)
++ return 4;
++ /* If the char is ASCII it must be an overlong sequence. */
++ if (c < 0x80)
++ return char2cells(c);
++ return utf_char2cells(c);
++ }
++ return 1;
++ }
++
++ static int
++ dbcs_ptr2cells_len(p, size)
++ char_u *p;
++ int size;
++ {
++ /* Number of cells is equal to number of bytes, except for euc-jp when
++ * the first byte is 0x8e. */
++ if (size <= 1 || (enc_dbcs == DBCS_JPNU && *p == 0x8e))
++ return 1;
++ return MB_BYTE2LEN(*p);
++ }
++
++ /*
+ * mb_char2cells() function pointer.
+ * Return the number of display cells character "c" occupies.
+ * Only takes care of multi-byte chars, not "^C" and such.
+***************
+*** 1716,1721 ****
+--- 1807,1813 ----
+ /*
+ * Return the number of bytes the UTF-8 encoding of the character at "p[size]"
+ * takes. This includes following composing characters.
++ * Returns 0 for an empty string.
+ * Returns 1 for an illegal char or an incomplete byte sequence.
+ */
+ int
+***************
+*** 1728,1734 ****
+ int prevlen;
+ #endif
+
+! if (*p == NUL)
+ return 0;
+ if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) /* be quick for ASCII */
+ return 1;
+--- 1820,1826 ----
+ int prevlen;
+ #endif
+
+! if (size < 1 || *p == NUL)
+ return 0;
+ if (p[0] < 0x80 && (size == 1 || p[1] < 0x80)) /* be quick for ASCII */
+ return 1;
+*** ../vim-7.2.199/src/proto/mbyte.pro 2008-07-13 19:34:19.000000000 +0200
+--- src/proto/mbyte.pro 2009-06-16 14:58:39.000000000 +0200
+***************
+*** 7,16 ****
+--- 7,18 ----
+ int latin_char2len __ARGS((int c));
+ int latin_char2bytes __ARGS((int c, char_u *buf));
+ int latin_ptr2len __ARGS((char_u *p));
++ int latin_ptr2len_len __ARGS((char_u *p, int size));
+ int utf_char2cells __ARGS((int c));
+ int latin_ptr2cells __ARGS((char_u *p));
+ int utf_ptr2cells __ARGS((char_u *p));
+ int dbcs_ptr2cells __ARGS((char_u *p));
++ int latin_ptr2cells_len __ARGS((char_u *p, int size));
+ int latin_char2cells __ARGS((int c));
+ int latin_off2cells __ARGS((unsigned off, unsigned max_off));
+ int dbcs_off2cells __ARGS((unsigned off, unsigned max_off));
+***************
+*** 85,90 ****
+--- 87,93 ----
+ int preedit_get_status __ARGS((void));
+ int im_is_preediting __ARGS((void));
+ int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
++ int convert_setup_ext __ARGS((vimconv_T *vcp, char_u *from, int from_unicode_is_utf8, char_u *to, int to_unicode_is_utf8));
+ int convert_input __ARGS((char_u *ptr, int len, int maxlen));
+ int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
+ char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
+*** ../vim-7.2.199/src/version.c 2009-06-16 14:31:56.000000000 +0200
+--- src/version.c 2009-06-16 14:37:38.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 200,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+12. Sing along at the opera.
+
+ /// 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.201 b/source/ap/vim/patches/7.2.201
new file mode 100644
index 000000000..cd2df0798
--- /dev/null
+++ b/source/ap/vim/patches/7.2.201
@@ -0,0 +1,494 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.201
+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.201
+Problem: Cannot copy/paste HTML to/from Firefox via the clipboard.
+Solution: Implement this for GTK. Add the "html" value to 'clipboard'.
+Files: runtime/doc/options.txt, src/globals.h, src/gui_gtk_x11.c,
+ src/mbyte.c, src/proto/mbyte.pro, src/option.c
+
+
+*** ../vim-7.2.200/runtime/doc/options.txt 2009-02-21 20:27:00.000000000 +0100
+--- runtime/doc/options.txt 2009-06-12 22:25:22.000000000 +0200
+***************
+*** 1443,1448 ****
+--- 1444,1457 ----
+ autoselectml Like "autoselect", but for the modeless selection
+ only. Compare to the 'A' flag in 'guioptions'.
+
++ html When the clipboard contains HTML, use this when
++ pasting. When putting text on the clipboard, mark it
++ as HTML. This works to copy rendered HTML from
++ Firefox, paste it as raw HTML in Vim, select the HTML
++ in Vim and paste it in a rich edit box in Firefox.
++ Only supported for GTK version 2 and later.
++ Only available with the |+multi_byte| feature.
++
+ exclude:{pattern}
+ Defines a pattern that is matched against the name of
+ the terminal 'term'. If there is a match, no
+*** ../vim-7.2.200/src/globals.h 2009-06-16 15:12:11.000000000 +0200
+--- src/globals.h 2009-06-12 21:10:30.000000000 +0200
+***************
+*** 509,514 ****
+--- 509,515 ----
+ EXTERN int clip_unnamed INIT(= FALSE);
+ EXTERN int clip_autoselect INIT(= FALSE);
+ EXTERN int clip_autoselectml INIT(= FALSE);
++ EXTERN int clip_html INIT(= FALSE);
+ EXTERN regprog_T *clip_exclude_prog INIT(= NULL);
+ #endif
+
+*** ../vim-7.2.200/src/gui_gtk_x11.c 2009-06-16 15:12:11.000000000 +0200
+--- src/gui_gtk_x11.c 2009-06-16 14:44:19.000000000 +0200
+***************
+*** 107,112 ****
+--- 107,113 ----
+ TARGET_UTF8_STRING,
+ TARGET_STRING,
+ TARGET_COMPOUND_TEXT,
++ TARGET_HTML,
+ TARGET_TEXT,
+ TARGET_TEXT_URI_LIST,
+ TARGET_TEXT_PLAIN,
+***************
+*** 123,128 ****
+--- 124,130 ----
+ {VIMENC_ATOM_NAME, 0, TARGET_VIMENC},
+ {VIM_ATOM_NAME, 0, TARGET_VIM},
+ #ifdef FEAT_MBYTE
++ {"text/html", 0, TARGET_HTML},
+ {"UTF8_STRING", 0, TARGET_UTF8_STRING},
+ #endif
+ {"COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT},
+***************
+*** 140,145 ****
+--- 142,148 ----
+ {
+ {"text/uri-list", 0, TARGET_TEXT_URI_LIST},
+ # ifdef FEAT_MBYTE
++ {"text/html", 0, TARGET_HTML},
+ {"UTF8_STRING", 0, TARGET_UTF8_STRING},
+ # endif
+ {"STRING", 0, TARGET_STRING},
+***************
+*** 178,183 ****
+--- 181,187 ----
+ * Atoms used to control/reference X11 selections.
+ */
+ #ifdef FEAT_MBYTE
++ static GdkAtom html_atom = GDK_NONE;
+ static GdkAtom utf8_string_atom = GDK_NONE;
+ #endif
+ #ifndef HAVE_GTK2
+***************
+*** 1364,1369 ****
+--- 1368,1391 ----
+ else
+ text = tmpbuf_utf8;
+ }
++ else if (len >= 2 && text[0] == 0xff && text[1] == 0xfe)
++ {
++ vimconv_T conv;
++
++ /* UTF-16, we get this for HTML */
++ conv.vc_type = CONV_NONE;
++ convert_setup_ext(&conv, (char_u *)"utf-16le", FALSE, p_enc, TRUE);
++
++ if (conv.vc_type != CONV_NONE)
++ {
++ text += 2;
++ len -= 2;
++ tmpbuf = string_convert(&conv, text, &len);
++ convert_setup(&conv, NULL, NULL);
++ }
++ if (tmpbuf != NULL)
++ text = tmpbuf;
++ }
+ }
+ #else /* !HAVE_GTK2 */
+ # ifdef FEAT_MBYTE
+***************
+*** 1451,1456 ****
+--- 1473,1479 ----
+
+ if (info != (guint)TARGET_STRING
+ #ifdef FEAT_MBYTE
++ && (!clip_html || info != (guint)TARGET_HTML)
+ && info != (guint)TARGET_UTF8_STRING
+ && info != (guint)TARGET_VIMENC
+ #endif
+***************
+*** 1486,1491 ****
+--- 1509,1548 ----
+ }
+
+ #ifdef FEAT_MBYTE
++ else if (info == (guint)TARGET_HTML)
++ {
++ vimconv_T conv;
++
++ /* Since we get utf-16, we probably should set it as well. */
++ conv.vc_type = CONV_NONE;
++ convert_setup_ext(&conv, p_enc, TRUE, (char_u *)"utf-16le", FALSE);
++ if (conv.vc_type != CONV_NONE)
++ {
++ tmpbuf = string_convert(&conv, string, &length);
++ convert_setup(&conv, NULL, NULL);
++ vim_free(string);
++ string = tmpbuf;
++ }
++
++ /* Prepend the BOM: "fffe" */
++ if (string != NULL)
++ {
++ tmpbuf = alloc(length + 2);
++ tmpbuf[0] = 0xff;
++ tmpbuf[1] = 0xfe;
++ mch_memmove(tmpbuf + 2, string, (size_t)length);
++ vim_free(string);
++ string = tmpbuf;
++ length += 2;
++
++ selection_data->type = selection_data->target;
++ selection_data->format = 16; /* 16 bits per char */
++ gtk_selection_data_set(selection_data, html_atom, 16,
++ string, length);
++ vim_free(string);
++ }
++ return;
++ }
+ else if (info == (guint)TARGET_VIMENC)
+ {
+ int l = STRLEN(p_enc);
+***************
+*** 3464,3469 ****
+--- 3521,3527 ----
+
+ /* Initialise atoms */
+ #ifdef FEAT_MBYTE
++ html_atom = gdk_atom_intern("text/html", FALSE);
+ utf8_string_atom = gdk_atom_intern("UTF8_STRING", FALSE);
+ #endif
+ #ifndef HAVE_GTK2
+***************
+*** 6665,6670 ****
+--- 6723,6732 ----
+
+ for (i = 0; i < N_SELECTION_TARGETS; ++i)
+ {
++ #ifdef FEAT_MBYTE
++ if (!clip_html && selection_targets[i].info == TARGET_HTML)
++ continue;
++ #endif
+ received_selection = RS_NONE;
+ target = gdk_atom_intern(selection_targets[i].target, FALSE);
+
+*** ../vim-7.2.200/src/mbyte.c 2009-06-16 15:12:11.000000000 +0200
+--- src/mbyte.c 2009-06-16 15:01:30.000000000 +0200
+***************
+*** 3265,3271 ****
+
+ # if defined(USE_ICONV) || defined(PROTO)
+
+! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen, int *unconvlenp));
+
+ /*
+ * Call iconv_open() with a check if iconv() works properly (there are broken
+--- 3265,3271 ----
+
+ # if defined(USE_ICONV) || defined(PROTO)
+
+! static char_u *iconv_string __ARGS((vimconv_T *vcp, char_u *str, int slen, int *unconvlenp, int *resultlenp));
+
+ /*
+ * Call iconv_open() with a check if iconv() works properly (there are broken
+***************
+*** 3326,3338 ****
+ * If "unconvlenp" is not NULL handle the string ending in an incomplete
+ * sequence and set "*unconvlenp" to the length of it.
+ * Returns the converted string in allocated memory. NULL for an error.
+ */
+ static char_u *
+! iconv_string(vcp, str, slen, unconvlenp)
+ vimconv_T *vcp;
+ char_u *str;
+ int slen;
+ int *unconvlenp;
+ {
+ const char *from;
+ size_t fromlen;
+--- 3326,3340 ----
+ * If "unconvlenp" is not NULL handle the string ending in an incomplete
+ * sequence and set "*unconvlenp" to the length of it.
+ * Returns the converted string in allocated memory. NULL for an error.
++ * If resultlenp is not NULL, sets it to the result length in bytes.
+ */
+ static char_u *
+! iconv_string(vcp, str, slen, unconvlenp, resultlenp)
+ vimconv_T *vcp;
+ char_u *str;
+ int slen;
+ int *unconvlenp;
++ int *resultlenp;
+ {
+ const char *from;
+ size_t fromlen;
+***************
+*** 3418,3423 ****
+--- 3420,3428 ----
+ /* Not enough room or skipping illegal sequence. */
+ done = to - (char *)result;
+ }
++
++ if (resultlenp != NULL)
++ *resultlenp = (int)(to - (char *)result);
+ return result;
+ }
+
+***************
+*** 5837,5844 ****
+--- 5842,5866 ----
+ char_u *from;
+ char_u *to;
+ {
++ return convert_setup_ext(vcp, from, TRUE, to, TRUE);
++ }
++
++ /*
++ * As convert_setup(), but only when from_unicode_is_utf8 is TRUE will all
++ * "from" unicode charsets be considered utf-8. Same for "to".
++ */
++ int
++ convert_setup_ext(vcp, from, from_unicode_is_utf8, to, to_unicode_is_utf8)
++ vimconv_T *vcp;
++ char_u *from;
++ int from_unicode_is_utf8;
++ char_u *to;
++ int to_unicode_is_utf8;
++ {
+ int from_prop;
+ int to_prop;
++ int from_is_utf8;
++ int to_is_utf8;
+
+ /* Reset to no conversion. */
+ # ifdef USE_ICONV
+***************
+*** 5856,5892 ****
+
+ from_prop = enc_canon_props(from);
+ to_prop = enc_canon_props(to);
+! if ((from_prop & ENC_LATIN1) && (to_prop & ENC_UNICODE))
+ {
+ /* Internal latin1 -> utf-8 conversion. */
+ vcp->vc_type = CONV_TO_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+ }
+! else if ((from_prop & ENC_LATIN9) && (to_prop & ENC_UNICODE))
+ {
+ /* Internal latin9 -> utf-8 conversion. */
+ vcp->vc_type = CONV_9_TO_UTF8;
+ vcp->vc_factor = 3; /* up to three as long (euro sign) */
+ }
+! else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN1))
+ {
+ /* Internal utf-8 -> latin1 conversion. */
+ vcp->vc_type = CONV_TO_LATIN1;
+ }
+! else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN9))
+ {
+ /* Internal utf-8 -> latin9 conversion. */
+ vcp->vc_type = CONV_TO_LATIN9;
+ }
+ #ifdef WIN3264
+ /* Win32-specific codepage <-> codepage conversion without iconv. */
+! else if (((from_prop & ENC_UNICODE) || encname2codepage(from) > 0)
+! && ((to_prop & ENC_UNICODE) || encname2codepage(to) > 0))
+ {
+ vcp->vc_type = CONV_CODEPAGE;
+ vcp->vc_factor = 2; /* up to twice as long */
+! vcp->vc_cpfrom = (from_prop & ENC_UNICODE) ? 0 : encname2codepage(from);
+! vcp->vc_cpto = (to_prop & ENC_UNICODE) ? 0 : encname2codepage(to);
+ }
+ #endif
+ #ifdef MACOS_X
+--- 5878,5923 ----
+
+ from_prop = enc_canon_props(from);
+ to_prop = enc_canon_props(to);
+! if (from_unicode_is_utf8)
+! from_is_utf8 = from_prop & ENC_UNICODE;
+! else
+! from_is_utf8 = from_prop == ENC_UNICODE;
+! if (to_unicode_is_utf8)
+! to_is_utf8 = to_prop & ENC_UNICODE;
+! else
+! to_is_utf8 = to_prop == ENC_UNICODE;
+!
+! if ((from_prop & ENC_LATIN1) && to_is_utf8)
+ {
+ /* Internal latin1 -> utf-8 conversion. */
+ vcp->vc_type = CONV_TO_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+ }
+! else if ((from_prop & ENC_LATIN9) && to_is_utf8)
+ {
+ /* Internal latin9 -> utf-8 conversion. */
+ vcp->vc_type = CONV_9_TO_UTF8;
+ vcp->vc_factor = 3; /* up to three as long (euro sign) */
+ }
+! else if (from_is_utf8 && (to_prop & ENC_LATIN1))
+ {
+ /* Internal utf-8 -> latin1 conversion. */
+ vcp->vc_type = CONV_TO_LATIN1;
+ }
+! else if (from_is_utf8 && (to_prop & ENC_LATIN9))
+ {
+ /* Internal utf-8 -> latin9 conversion. */
+ vcp->vc_type = CONV_TO_LATIN9;
+ }
+ #ifdef WIN3264
+ /* Win32-specific codepage <-> codepage conversion without iconv. */
+! else if ((from_is_utf8 || encname2codepage(from) > 0)
+! && (to_is_utf8 || encname2codepage(to) > 0))
+ {
+ vcp->vc_type = CONV_CODEPAGE;
+ vcp->vc_factor = 2; /* up to twice as long */
+! vcp->vc_cpfrom = from_is_utf8 ? 0 : encname2codepage(from);
+! vcp->vc_cpto = to_is_utf8 ? 0 : encname2codepage(to);
+ }
+ #endif
+ #ifdef MACOS_X
+***************
+*** 5894,5900 ****
+ {
+ vcp->vc_type = CONV_MAC_LATIN1;
+ }
+! else if ((from_prop & ENC_MACROMAN) && (to_prop & ENC_UNICODE))
+ {
+ vcp->vc_type = CONV_MAC_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+--- 5925,5931 ----
+ {
+ vcp->vc_type = CONV_MAC_LATIN1;
+ }
+! else if ((from_prop & ENC_MACROMAN) && to_is_utf8)
+ {
+ vcp->vc_type = CONV_MAC_UTF8;
+ vcp->vc_factor = 2; /* up to twice as long */
+***************
+*** 5903,5909 ****
+ {
+ vcp->vc_type = CONV_LATIN1_MAC;
+ }
+! else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_MACROMAN))
+ {
+ vcp->vc_type = CONV_UTF8_MAC;
+ }
+--- 5934,5940 ----
+ {
+ vcp->vc_type = CONV_LATIN1_MAC;
+ }
+! else if (from_is_utf8 && (to_prop & ENC_MACROMAN))
+ {
+ vcp->vc_type = CONV_UTF8_MAC;
+ }
+***************
+*** 5913,5920 ****
+ {
+ /* Use iconv() for conversion. */
+ vcp->vc_fd = (iconv_t)my_iconv_open(
+! (to_prop & ENC_UNICODE) ? (char_u *)"utf-8" : to,
+! (from_prop & ENC_UNICODE) ? (char_u *)"utf-8" : from);
+ if (vcp->vc_fd != (iconv_t)-1)
+ {
+ vcp->vc_type = CONV_ICONV;
+--- 5944,5951 ----
+ {
+ /* Use iconv() for conversion. */
+ vcp->vc_fd = (iconv_t)my_iconv_open(
+! to_is_utf8 ? (char_u *)"utf-8" : to,
+! from_is_utf8 ? (char_u *)"utf-8" : from);
+ if (vcp->vc_fd != (iconv_t)-1)
+ {
+ vcp->vc_type = CONV_ICONV;
+***************
+*** 6170,6178 ****
+
+ # ifdef USE_ICONV
+ case CONV_ICONV: /* conversion with output_conv.vc_fd */
+! retval = iconv_string(vcp, ptr, len, unconvlenp);
+! if (retval != NULL && lenp != NULL)
+! *lenp = (int)STRLEN(retval);
+ break;
+ # endif
+ # ifdef WIN3264
+--- 6201,6207 ----
+
+ # ifdef USE_ICONV
+ case CONV_ICONV: /* conversion with output_conv.vc_fd */
+! retval = iconv_string(vcp, ptr, len, unconvlenp, lenp);
+ break;
+ # endif
+ # ifdef WIN3264
+*** ../vim-7.2.200/src/option.c 2009-05-17 13:30:58.000000000 +0200
+--- src/option.c 2009-06-12 21:09:51.000000000 +0200
+***************
+*** 7024,7029 ****
+--- 7024,7030 ----
+ int new_unnamed = FALSE;
+ int new_autoselect = FALSE;
+ int new_autoselectml = FALSE;
++ int new_html = FALSE;
+ regprog_T *new_exclude_prog = NULL;
+ char_u *errmsg = NULL;
+ char_u *p;
+***************
+*** 7047,7052 ****
+--- 7048,7058 ----
+ new_autoselectml = TRUE;
+ p += 12;
+ }
++ else if (STRNCMP(p, "html", 4) == 0 && (p[4] == ',' || p[4] == NUL))
++ {
++ new_html = TRUE;
++ p += 4;
++ }
+ else if (STRNCMP(p, "exclude:", 8) == 0 && new_exclude_prog == NULL)
+ {
+ p += 8;
+***************
+*** 7068,7073 ****
+--- 7074,7080 ----
+ clip_unnamed = new_unnamed;
+ clip_autoselect = new_autoselect;
+ clip_autoselectml = new_autoselectml;
++ clip_html = new_html;
+ vim_free(clip_exclude_prog);
+ clip_exclude_prog = new_exclude_prog;
+ }
+*** ../vim-7.2.200/src/version.c 2009-06-16 15:12:11.000000000 +0200
+--- src/version.c 2009-06-16 15:14:02.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 201,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+13. Go to a poetry recital and ask why the poems don't rhyme.
+
+ /// 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.202 b/source/ap/vim/patches/7.2.202
new file mode 100644
index 000000000..2c2490938
--- /dev/null
+++ b/source/ap/vim/patches/7.2.202
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.202
+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.202
+Problem: BufWipeout autocommand that edits another buffer causes problems.
+Solution: Check for the situation, give an error and quit the operation.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.201/src/fileio.c 2009-05-16 17:29:37.000000000 +0200
+--- src/fileio.c 2009-06-11 21:22:37.000000000 +0200
+***************
+*** 4824,4829 ****
+--- 4824,4831 ----
+ char_u *sfname;
+ {
+ #ifdef FEAT_AUTOCMD
++ buf_T *buf = curbuf;
++
+ /* It's like the unnamed buffer is deleted.... */
+ if (curbuf->b_p_bl)
+ apply_autocmds(EVENT_BUFDELETE, NULL, NULL, FALSE, curbuf);
+***************
+*** 4832,4837 ****
+--- 4834,4845 ----
+ if (aborting()) /* autocmds may abort script processing */
+ return FAIL;
+ # endif
++ if (curbuf != buf)
++ {
++ /* We are in another buffer now, don't do the renaming. */
++ EMSG(_(e_auchangedbuf));
++ return FAIL;
++ }
+ #endif
+
+ if (setfname(curbuf, fname, sfname, FALSE) == OK)
+*** ../vim-7.2.201/src/version.c 2009-06-16 15:23:07.000000000 +0200
+--- src/version.c 2009-06-16 15:28:31.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 202,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+14. Put mosquito netting around your work area. Play a tape of jungle
+ sounds all 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.203 b/source/ap/vim/patches/7.2.203
new file mode 100644
index 000000000..c1322488a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.203
@@ -0,0 +1,1496 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.203
+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.203
+Problem: When reloading a buffer or doing anything else with a buffer that
+ is not displayed in a visible window, autocommands may be applied
+ to the current window, folds messed up, etc.
+Solution: Instead of using the current window for the hidden buffer use a
+ special window, splitting the current one temporarily.
+Files: src/fileio.c, src/globals.h, src/gui.c, src/if_perl.xs,
+ src/proto/gui.pro, src/proto/window.pro, src/screen.c,
+ src/structs.h, src/window.c
+
+
+*** ../vim-7.2.202/src/fileio.c 2009-06-16 15:35:46.000000000 +0200
+--- src/fileio.c 2009-06-11 21:22:37.000000000 +0200
+***************
+*** 8365,8371 ****
+
+ /* Execute the modeline settings, but don't set window-local
+ * options if we are using the current window for another buffer. */
+! do_modelines(aco.save_curwin == NULL ? OPT_NOWIN : 0);
+
+ /* restore the current window */
+ aucmd_restbuf(&aco);
+--- 8365,8371 ----
+
+ /* Execute the modeline settings, but don't set window-local
+ * options if we are using the current window for another buffer. */
+! do_modelines(curwin == aucmd_win ? OPT_NOWIN : 0);
+
+ /* restore the current window */
+ aucmd_restbuf(&aco);
+***************
+*** 8381,8388 ****
+
+ /*
+ * Prepare for executing autocommands for (hidden) buffer "buf".
+! * Search a window for the current buffer. Save the cursor position and
+! * screen offset.
+ * Set "curbuf" and "curwin" to match "buf".
+ * When FEAT_AUTOCMD is not defined another version is used, see below.
+ */
+--- 8381,8388 ----
+
+ /*
+ * Prepare for executing autocommands for (hidden) buffer "buf".
+! * Search for a visible window containing the current buffer. If there isn't
+! * one then use "aucmd_win".
+ * Set "curbuf" and "curwin" to match "buf".
+ * When FEAT_AUTOCMD is not defined another version is used, see below.
+ */
+***************
+*** 8392,8399 ****
+ buf_T *buf; /* new curbuf */
+ {
+ win_T *win;
+!
+! aco->new_curbuf = buf;
+
+ /* Find a window that is for the new buffer */
+ if (buf == curbuf) /* be quick when buf is curbuf */
+--- 8392,8400 ----
+ buf_T *buf; /* new curbuf */
+ {
+ win_T *win;
+! #ifdef FEAT_WINDOWS
+! int save_ea;
+! #endif
+
+ /* Find a window that is for the new buffer */
+ if (buf == curbuf) /* be quick when buf is curbuf */
+***************
+*** 8407,8448 ****
+ win = NULL;
+ #endif
+
+! /*
+! * Prefer to use an existing window for the buffer, it has the least side
+! * effects (esp. if "buf" is curbuf).
+! * Otherwise, use curwin for "buf". It might make some items in the
+! * window invalid. At least save the cursor and topline.
+! */
+ if (win != NULL)
+ {
+! /* there is a window for "buf", make it the curwin */
+! aco->save_curwin = curwin;
+ curwin = win;
+- aco->save_buf = win->w_buffer;
+- aco->new_curwin = win;
+ }
+ else
+ {
+! /* there is no window for "buf", use curwin */
+! aco->save_curwin = NULL;
+! aco->save_buf = curbuf;
+! --curbuf->b_nwindows;
+ curwin->w_buffer = buf;
+ ++buf->b_nwindows;
+
+! /* save cursor and topline, set them to safe values */
+! aco->save_cursor = curwin->w_cursor;
+! curwin->w_cursor.lnum = 1;
+! curwin->w_cursor.col = 0;
+! aco->save_topline = curwin->w_topline;
+! curwin->w_topline = 1;
+! #ifdef FEAT_DIFF
+! aco->save_topfill = curwin->w_topfill;
+! curwin->w_topfill = 0;
+ #endif
+ }
+-
+ curbuf = buf;
+ }
+
+ /*
+--- 8408,8460 ----
+ win = NULL;
+ #endif
+
+! /* Allocate "aucmd_win" when needed. If this fails (out of memory) fall
+! * back to using the current window. */
+! if (win == NULL && aucmd_win == NULL)
+! {
+! win_alloc_aucmd_win();
+! if (aucmd_win == NULL)
+! win = curwin;
+! }
+!
+! aco->save_curwin = curwin;
+! aco->save_curbuf = curbuf;
+ if (win != NULL)
+ {
+! /* There is a window for "buf" in the current tab page, make it the
+! * curwin. This is preferred, it has the least side effects (esp. if
+! * "buf" is curbuf). */
+ curwin = win;
+ }
+ else
+ {
+! /* There is no window for "buf", use "aucmd_win". To minimize the side
+! * effects, insert it in a the current tab page.
+! * Anything related to a window (e.g., setting folds) may have
+! * unexpected results. */
+! curwin = aucmd_win;
+ curwin->w_buffer = buf;
+ ++buf->b_nwindows;
+
+! #ifdef FEAT_WINDOWS
+! /* Split the current window, put the aucmd_win in the upper half. */
+! make_snapshot(SNAP_AUCMD_IDX);
+! save_ea = p_ea;
+! p_ea = FALSE;
+! (void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
+! (void)win_comp_pos(); /* recompute window positions */
+! p_ea = save_ea;
+! #endif
+! /* set cursor and topline to safe values */
+! curwin_init();
+! #ifdef FEAT_VERTSPLIT
+! curwin->w_wincol = 0;
+! curwin->w_width = Columns;
+ #endif
+ }
+ curbuf = buf;
++ aco->new_curwin = curwin;
++ aco->new_curbuf = curbuf;
+ }
+
+ /*
+***************
+*** 8454,8474 ****
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! if (aco->save_curwin != NULL)
+ {
+ /* restore curwin */
+ #ifdef FEAT_WINDOWS
+ if (win_valid(aco->save_curwin))
+ #endif
+ {
+! /* restore the buffer which was previously edited by curwin, if
+! * it's still the same window and it's valid */
+ if (curwin == aco->new_curwin
+! && buf_valid(aco->save_buf)
+! && aco->save_buf->b_ml.ml_mfp != NULL)
+ {
+ --curbuf->b_nwindows;
+! curbuf = aco->save_buf;
+ curwin->w_buffer = curbuf;
+ ++curbuf->b_nwindows;
+ }
+--- 8466,8551 ----
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! #ifdef FEAT_WINDOWS
+! int dummy;
+! #endif
+!
+! if (aco->new_curwin == aucmd_win)
+! {
+! --curbuf->b_nwindows;
+! #ifdef FEAT_WINDOWS
+! /* Find "aucmd_win", it can't be closed, but it may be in another tab
+! * page. */
+! if (curwin != aucmd_win)
+! {
+! tabpage_T *tp;
+! win_T *wp;
+!
+! FOR_ALL_TAB_WINDOWS(tp, wp)
+! {
+! if (wp == aucmd_win)
+! {
+! if (tp != curtab)
+! goto_tabpage_tp(tp);
+! win_goto(aucmd_win);
+! break;
+! }
+! }
+! }
+!
+! /* Remove the window and frame from the tree of frames. */
+! (void)winframe_remove(curwin, &dummy, NULL);
+! win_remove(curwin, NULL);
+! last_status(FALSE); /* may need to remove last status line */
+! restore_snapshot(SNAP_AUCMD_IDX, FALSE);
+! (void)win_comp_pos(); /* recompute window positions */
+!
+! if (win_valid(aco->save_curwin))
+! curwin = aco->save_curwin;
+! else
+! /* Hmm, original window disappeared. Just use the first one. */
+! curwin = firstwin;
+! # ifdef FEAT_EVAL
+! vars_clear(&aucmd_win->w_vars.dv_hashtab); /* free all w: variables */
+! # endif
+! #else
+! curwin = aco->save_curwin;
+! #endif
+! curbuf = curwin->w_buffer;
+!
+! /* the buffer contents may have changed */
+! check_cursor();
+! if (curwin->w_topline > curbuf->b_ml.ml_line_count)
+! {
+! curwin->w_topline = curbuf->b_ml.ml_line_count;
+! #ifdef FEAT_DIFF
+! curwin->w_topfill = 0;
+! #endif
+! }
+! #if defined(FEAT_GUI)
+! /* Hide the scrollbars from the aucmd_win and update. */
+! gui_mch_enable_scrollbar(&aucmd_win->w_scrollbars[SBAR_LEFT], FALSE);
+! gui_mch_enable_scrollbar(&aucmd_win->w_scrollbars[SBAR_RIGHT], FALSE);
+! gui_may_update_scrollbars();
+! #endif
+! }
+! else
+ {
+ /* restore curwin */
+ #ifdef FEAT_WINDOWS
+ if (win_valid(aco->save_curwin))
+ #endif
+ {
+! /* Restore the buffer which was previously edited by curwin, if
+! * it was chagned, we are still the same window and the buffer is
+! * valid. */
+ if (curwin == aco->new_curwin
+! && curbuf != aco->new_curbuf
+! && buf_valid(aco->new_curbuf)
+! && aco->new_curbuf->b_ml.ml_mfp != NULL)
+ {
+ --curbuf->b_nwindows;
+! curbuf = aco->new_curbuf;
+ curwin->w_buffer = curbuf;
+ ++curbuf->b_nwindows;
+ }
+***************
+*** 8477,8510 ****
+ curbuf = curwin->w_buffer;
+ }
+ }
+- else
+- {
+- /* restore buffer for curwin if it still exists and is loaded */
+- if (buf_valid(aco->save_buf) && aco->save_buf->b_ml.ml_mfp != NULL)
+- {
+- --curbuf->b_nwindows;
+- curbuf = aco->save_buf;
+- curwin->w_buffer = curbuf;
+- ++curbuf->b_nwindows;
+- curwin->w_cursor = aco->save_cursor;
+- check_cursor();
+- /* check topline < line_count, in case lines got deleted */
+- if (aco->save_topline <= curbuf->b_ml.ml_line_count)
+- {
+- curwin->w_topline = aco->save_topline;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = aco->save_topfill;
+- #endif
+- }
+- else
+- {
+- curwin->w_topline = curbuf->b_ml.ml_line_count;
+- #ifdef FEAT_DIFF
+- curwin->w_topfill = 0;
+- #endif
+- }
+- }
+- }
+ }
+
+ static int autocmd_nested = FALSE;
+--- 8554,8559 ----
+***************
+*** 9419,9427 ****
+ aco_save_T *aco; /* structure to save values in */
+ buf_T *buf; /* new curbuf */
+ {
+! aco->save_buf = curbuf;
+ curbuf = buf;
+ curwin->w_buffer = buf;
+ }
+
+ /*
+--- 9468,9478 ----
+ aco_save_T *aco; /* structure to save values in */
+ buf_T *buf; /* new curbuf */
+ {
+! aco->save_curbuf = curbuf;
+! --curbuf->b_nwindows;
+ curbuf = buf;
+ curwin->w_buffer = buf;
++ ++curbuf->b_nwindows;
+ }
+
+ /*
+***************
+*** 9432,9439 ****
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! curbuf = aco->save_buf;
+ curwin->w_buffer = curbuf;
+ }
+
+ #endif /* FEAT_AUTOCMD */
+--- 9483,9492 ----
+ aucmd_restbuf(aco)
+ aco_save_T *aco; /* structure holding saved values */
+ {
+! --curbuf->b_nwindows;
+! curbuf = aco->save_curbuf;
+ curwin->w_buffer = curbuf;
++ ++curbuf->b_nwindows;
+ }
+
+ #endif /* FEAT_AUTOCMD */
+*** ../vim-7.2.202/src/globals.h 2009-06-16 15:23:07.000000000 +0200
+--- src/globals.h 2009-06-12 21:10:30.000000000 +0200
+***************
+*** 539,544 ****
+--- 539,548 ----
+
+ EXTERN win_T *curwin; /* currently active window */
+
++ #ifdef FEAT_AUTOCMD
++ EXTERN win_T *aucmd_win; /* window used in aucmd_prepbuf() */
++ #endif
++
+ /*
+ * The window layout is kept in a tree of frames. topframe points to the top
+ * of the tree.
+*** ../vim-7.2.202/src/gui.c 2009-05-21 23:25:38.000000000 +0200
+--- src/gui.c 2009-06-11 20:58:05.000000000 +0200
+***************
+*** 3879,3884 ****
+--- 3879,3899 ----
+ * Scrollbar stuff:
+ */
+
++ /*
++ * Called when something in the window layout has changed.
++ */
++ void
++ gui_may_update_scrollbars()
++ {
++ if (gui.in_use && starting == 0)
++ {
++ out_flush();
++ gui_init_which_components(NULL);
++ gui_update_scrollbars(TRUE);
++ }
++ need_mouse_correct = TRUE;
++ }
++
+ void
+ gui_update_scrollbars(force)
+ int force; /* Force all scrollbars to get updated */
+*** ../vim-7.2.202/src/if_perl.xs 2008-12-03 13:18:16.000000000 +0100
+--- src/if_perl.xs 2009-06-03 17:52:51.000000000 +0200
+***************
+*** 1234,1240 ****
+ {
+ ml_delete(lnum, 0);
+ deleted_lines_mark(lnum, 1L);
+! if (aco.save_buf == curbuf)
+ check_cursor();
+ }
+
+--- 1236,1242 ----
+ {
+ ml_delete(lnum, 0);
+ deleted_lines_mark(lnum, 1L);
+! if (aco.save_curbuf == curbuf)
+ check_cursor();
+ }
+
+*** ../vim-7.2.202/src/proto/gui.pro 2007-05-05 19:42:19.000000000 +0200
+--- src/proto/gui.pro 2009-06-11 20:58:08.000000000 +0200
+***************
+*** 43,48 ****
+--- 43,49 ----
+ void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp));
+ scrollbar_T *gui_find_scrollbar __ARGS((long ident));
+ void gui_drag_scrollbar __ARGS((scrollbar_T *sb, long value, int still_dragging));
++ void gui_may_update_scrollbars __ARGS((void));
+ void gui_update_scrollbars __ARGS((int force));
+ int gui_do_scroll __ARGS((void));
+ int gui_do_horiz_scroll __ARGS((void));
+*** ../vim-7.2.202/src/proto/window.pro 2007-07-26 22:57:45.000000000 +0200
+--- src/proto/window.pro 2009-06-10 21:20:39.000000000 +0200
+***************
+*** 1,6 ****
+--- 1,7 ----
+ /* window.c */
+ void do_window __ARGS((int nchar, long Prenum, int xchar));
+ int win_split __ARGS((int size, int flags));
++ int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+ int win_valid __ARGS((win_T *win));
+ int win_count __ARGS((void));
+ int make_windows __ARGS((int count, int vertical));
+***************
+*** 10,18 ****
+--- 11,21 ----
+ void win_close __ARGS((win_T *win, int free_buf));
+ void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
+ void win_free_all __ARGS((void));
++ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ void close_others __ARGS((int message, int forceit));
+ void curwin_init __ARGS((void));
+ int win_alloc_first __ARGS((void));
++ void win_alloc_aucmd_win __ARGS((void));
+ void win_init_size __ARGS((void));
+ void free_tabpage __ARGS((tabpage_T *tp));
+ int win_new_tabpage __ARGS((int after));
+***************
+*** 30,35 ****
+--- 33,40 ----
+ void win_enter __ARGS((win_T *wp, int undo_sync));
+ win_T *buf_jump_open_win __ARGS((buf_T *buf));
+ win_T *buf_jump_open_tab __ARGS((buf_T *buf));
++ void win_append __ARGS((win_T *after, win_T *wp));
++ void win_remove __ARGS((win_T *wp, tabpage_T *tp));
+ int win_alloc_lines __ARGS((win_T *wp));
+ void win_free_lsize __ARGS((win_T *wp));
+ void shell_new_rows __ARGS((void));
+***************
+*** 58,63 ****
+--- 63,70 ----
+ int min_rows __ARGS((void));
+ int only_one_window __ARGS((void));
+ void check_lnums __ARGS((int do_curwin));
++ void make_snapshot __ARGS((int idx));
++ void restore_snapshot __ARGS((int idx, int close_curwin));
+ int win_hasvertsplit __ARGS((void));
+ int match_add __ARGS((win_T *wp, char_u *grp, char_u *pat, int prio, int id));
+ int match_delete __ARGS((win_T *wp, int id, int perr));
+*** ../vim-7.2.202/src/screen.c 2009-05-17 13:30:58.000000000 +0200
+--- src/screen.c 2009-06-10 16:41:45.000000000 +0200
+***************
+*** 7495,7500 ****
+--- 7495,7504 ----
+ #endif
+ }
+ }
++ #ifdef FEAT_AUTOCMD
++ if (aucmd_win != NULL && win_alloc_lines(aucmd_win) == FAIL)
++ outofmem = TRUE;
++ #endif
+ #ifdef FEAT_WINDOWS
+ give_up:
+ #endif
+*** ../vim-7.2.202/src/structs.h 2009-05-16 16:36:25.000000000 +0200
+--- src/structs.h 2009-06-13 12:51:56.000000000 +0200
+***************
+*** 1621,1626 ****
+--- 1621,1634 ----
+ };
+ #endif
+
++ #define SNAP_HELP_IDX 0
++ #ifdef FEAT_AUTOCMD
++ # define SNAP_AUCMD_IDX 1
++ # define SNAP_COUNT 2
++ #else
++ # define SNAP_COUNT 1
++ #endif
++
+ /*
+ * Tab pages point to the top frame of each tab page.
+ * Note: Most values are NOT valid for the current tab page! Use "curwin",
+***************
+*** 1649,1655 ****
+ buf_T *(tp_diffbuf[DB_COUNT]);
+ int tp_diff_invalid; /* list of diffs is outdated */
+ #endif
+! frame_T *tp_snapshot; /* window layout snapshot */
+ #ifdef FEAT_EVAL
+ dictitem_T tp_winvar; /* variable for "t:" Dictionary */
+ dict_T tp_vars; /* internal variables, local to tab page */
+--- 1657,1663 ----
+ buf_T *(tp_diffbuf[DB_COUNT]);
+ int tp_diff_invalid; /* list of diffs is outdated */
+ #endif
+! frame_T *(tp_snapshot[SNAP_COUNT]); /* window layout snapshots */
+ #ifdef FEAT_EVAL
+ dictitem_T tp_winvar; /* variable for "t:" Dictionary */
+ dict_T tp_vars; /* internal variables, local to tab page */
+***************
+*** 2276,2291 ****
+ */
+ typedef struct
+ {
+! buf_T *save_buf; /* saved curbuf */
+ #ifdef FEAT_AUTOCMD
+! buf_T *new_curbuf; /* buffer to be used */
+! win_T *save_curwin; /* saved curwin, NULL if it didn't change */
+! win_T *new_curwin; /* new curwin if save_curwin != NULL */
+! pos_T save_cursor; /* saved cursor pos of save_curwin */
+! linenr_T save_topline; /* saved topline of save_curwin */
+! # ifdef FEAT_DIFF
+! int save_topfill; /* saved topfill of save_curwin */
+! # endif
+ #endif
+ } aco_save_T;
+
+--- 2284,2294 ----
+ */
+ typedef struct
+ {
+! buf_T *save_curbuf; /* saved curbuf */
+ #ifdef FEAT_AUTOCMD
+! win_T *save_curwin; /* saved curwin */
+! win_T *new_curwin; /* new curwin */
+! buf_T *new_curbuf; /* new curbuf */
+ #endif
+ } aco_save_T;
+
+*** ../vim-7.2.202/src/window.c 2009-05-21 23:25:38.000000000 +0200
+--- src/window.c 2009-06-12 22:29:33.000000000 +0200
+***************
+*** 11,18 ****
+
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+- static int win_split_ins __ARGS((int size, int flags, win_T *newwin, int dir));
+ static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
+ static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
+ static void frame_setheight __ARGS((frame_T *curfrp, int height));
+ #ifdef FEAT_VERTSPLIT
+--- 11,18 ----
+
+ static int path_is_url __ARGS((char_u *p));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static void win_init __ARGS((win_T *newp, win_T *oldp, int flags));
++ static void win_init_some __ARGS((win_T *newp, win_T *oldp));
+ static void frame_comp_pos __ARGS((frame_T *topfrp, int *row, int *col));
+ static void frame_setheight __ARGS((frame_T *curfrp, int height));
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 23,30 ****
+ static void win_totop __ARGS((int size, int flags));
+ static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+ static int last_window __ARGS((void));
+ static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+- static win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+ static tabpage_T *alt_tabpage __ARGS((void));
+ static win_T *frame2win __ARGS((frame_T *frp));
+--- 23,30 ----
+ static void win_totop __ARGS((int size, int flags));
+ static void win_equal_rec __ARGS((win_T *next_curwin, int current, frame_T *topfr, int dir, int col, int row, int width, int height));
+ static int last_window __ARGS((void));
++ static int one_window __ARGS((void));
+ static win_T *win_free_mem __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ static frame_T *win_altframe __ARGS((win_T *win, tabpage_T *tp));
+ static tabpage_T *alt_tabpage __ARGS((void));
+ static win_T *frame2win __ARGS((frame_T *frp));
+***************
+*** 41,46 ****
+--- 41,47 ----
+ #endif
+ #endif
+ static int win_alloc_firstwin __ARGS((win_T *oldwin));
++ static void new_frame __ARGS((win_T *wp));
+ #if defined(FEAT_WINDOWS) || defined(PROTO)
+ static tabpage_T *alloc_tabpage __ARGS((void));
+ static int leave_tabpage __ARGS((buf_T *new_curbuf));
+***************
+*** 49,56 ****
+ static int frame_minheight __ARGS((frame_T *topfrp, win_T *next_curwin));
+ static void win_enter_ext __ARGS((win_T *wp, int undo_sync, int no_curwin));
+ static void win_free __ARGS((win_T *wp, tabpage_T *tp));
+- static void win_append __ARGS((win_T *, win_T *));
+- static void win_remove __ARGS((win_T *, tabpage_T *tp));
+ static void frame_append __ARGS((frame_T *after, frame_T *frp));
+ static void frame_insert __ARGS((frame_T *before, frame_T *frp));
+ static void frame_remove __ARGS((frame_T *frp));
+--- 50,55 ----
+***************
+*** 62,78 ****
+ static void frame_add_height __ARGS((frame_T *frp, int n));
+ static void last_status_rec __ARGS((frame_T *fr, int statusline));
+
+- static void make_snapshot __ARGS((void));
+ static void make_snapshot_rec __ARGS((frame_T *fr, frame_T **frp));
+! static void clear_snapshot __ARGS((tabpage_T *tp));
+ static void clear_snapshot_rec __ARGS((frame_T *fr));
+- static void restore_snapshot __ARGS((int close_curwin));
+ static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+ static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+
+ #endif /* FEAT_WINDOWS */
+
+! static win_T *win_alloc __ARGS((win_T *after));
+ static void win_new_height __ARGS((win_T *, int));
+
+ #define URL_SLASH 1 /* path_is_url() has found "://" */
+--- 61,75 ----
+ static void frame_add_height __ARGS((frame_T *frp, int n));
+ static void last_status_rec __ARGS((frame_T *fr, int statusline));
+
+ static void make_snapshot_rec __ARGS((frame_T *fr, frame_T **frp));
+! static void clear_snapshot __ARGS((tabpage_T *tp, int idx));
+ static void clear_snapshot_rec __ARGS((frame_T *fr));
+ static int check_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+ static win_T *restore_snapshot_rec __ARGS((frame_T *sn, frame_T *fr));
+
+ #endif /* FEAT_WINDOWS */
+
+! static win_T *win_alloc __ARGS((win_T *after, int hidden));
+ static void win_new_height __ARGS((win_T *, int));
+
+ #define URL_SLASH 1 /* path_is_url() has found "://" */
+***************
+*** 259,265 ****
+ /* cursor to previous window with wrap around */
+ case 'W':
+ CHECK_CMDWIN
+! if (lastwin == firstwin && Prenum != 1) /* just one window */
+ beep_flush();
+ else
+ {
+--- 256,262 ----
+ /* cursor to previous window with wrap around */
+ case 'W':
+ CHECK_CMDWIN
+! if (firstwin == lastwin && Prenum != 1) /* just one window */
+ beep_flush();
+ else
+ {
+***************
+*** 343,349 ****
+
+ /* move window to new tab page */
+ case 'T':
+! if (firstwin == lastwin)
+ MSG(_(m_onlyone));
+ else
+ {
+--- 340,346 ----
+
+ /* move window to new tab page */
+ case 'T':
+! if (one_window())
+ MSG(_(m_onlyone));
+ else
+ {
+***************
+*** 679,687 ****
+ /* When creating the help window make a snapshot of the window layout.
+ * Otherwise clear the snapshot, it's now invalid. */
+ if (flags & WSP_HELP)
+! make_snapshot();
+ else
+! clear_snapshot(curtab);
+
+ return win_split_ins(size, flags, NULL, 0);
+ }
+--- 676,684 ----
+ /* When creating the help window make a snapshot of the window layout.
+ * Otherwise clear the snapshot, it's now invalid. */
+ if (flags & WSP_HELP)
+! make_snapshot(SNAP_HELP_IDX);
+ else
+! clear_snapshot(curtab, SNAP_HELP_IDX);
+
+ return win_split_ins(size, flags, NULL, 0);
+ }
+***************
+*** 692,698 ****
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+! static int
+ win_split_ins(size, flags, newwin, dir)
+ int size;
+ int flags;
+--- 689,695 ----
+ * top/left/right/bottom.
+ * return FAIL for failure, OK otherwise
+ */
+! int
+ win_split_ins(size, flags, newwin, dir)
+ int size;
+ int flags;
+***************
+*** 893,906 ****
+ {
+ /* new window below/right of current one */
+ if (newwin == NULL)
+! wp = win_alloc(oldwin);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+ if (newwin == NULL)
+! wp = win_alloc(oldwin->w_prev);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+--- 890,903 ----
+ {
+ /* new window below/right of current one */
+ if (newwin == NULL)
+! wp = win_alloc(oldwin, FALSE);
+ else
+ win_append(oldwin, wp);
+ }
+ else
+ {
+ if (newwin == NULL)
+! wp = win_alloc(oldwin->w_prev, FALSE);
+ else
+ win_append(oldwin->w_prev, wp);
+ }
+***************
+*** 910,915 ****
+--- 907,919 ----
+ if (wp == NULL)
+ return FAIL;
+
++ new_frame(wp);
++ if (wp->w_frame == NULL)
++ {
++ win_free(wp, NULL);
++ return FAIL;
++ }
++
+ /* make the contents of the new window the same as the current one */
+ win_init(wp, curwin, flags);
+ }
+***************
+*** 970,982 ****
+ }
+
+ if (newwin == NULL)
+! {
+! /* Create a frame for the new window. */
+! frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+! frp->fr_layout = FR_LEAF;
+! frp->fr_win = wp;
+! wp->w_frame = frp;
+! }
+ else
+ frp = newwin->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+--- 974,980 ----
+ }
+
+ if (newwin == NULL)
+! frp = wp->w_frame;
+ else
+ frp = newwin->w_frame;
+ frp->fr_parent = curfrp->fr_parent;
+***************
+*** 1156,1161 ****
+--- 1154,1160 ----
+ return OK;
+ }
+
++
+ /*
+ * Initialize window "newp" from window "oldp".
+ * Used when splitting a window and when creating a new tab page.
+***************
+*** 1204,1217 ****
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+
+! /* Use the same argument list. */
+! newp->w_alist = oldp->w_alist;
+! ++newp->w_alist->al_refcount;
+! newp->w_arg_idx = oldp->w_arg_idx;
+!
+! /*
+! * copy tagstack and options from existing window
+! */
+ for (i = 0; i < oldp->w_tagstacklen; i++)
+ {
+ newp->w_tagstack[i] = oldp->w_tagstack[i];
+--- 1203,1209 ----
+ if (oldp->w_localdir != NULL)
+ newp->w_localdir = vim_strsave(oldp->w_localdir);
+
+! /* copy tagstack and folds */
+ for (i = 0; i < oldp->w_tagstacklen; i++)
+ {
+ newp->w_tagstack[i] = oldp->w_tagstack[i];
+***************
+*** 1221,1230 ****
+ }
+ newp->w_tagstackidx = oldp->w_tagstackidx;
+ newp->w_tagstacklen = oldp->w_tagstacklen;
+- win_copy_options(oldp, newp);
+ # ifdef FEAT_FOLDING
+ copyFoldingState(oldp, newp);
+ # endif
+ }
+
+ #endif /* FEAT_WINDOWS */
+--- 1213,1241 ----
+ }
+ newp->w_tagstackidx = oldp->w_tagstackidx;
+ newp->w_tagstacklen = oldp->w_tagstacklen;
+ # ifdef FEAT_FOLDING
+ copyFoldingState(oldp, newp);
+ # endif
++
++ win_init_some(newp, oldp);
++ }
++
++ /*
++ * Initialize window "newp" from window"old".
++ * Only the essential things are copied.
++ */
++ static void
++ win_init_some(newp, oldp)
++ win_T *newp;
++ win_T *oldp;
++ {
++ /* Use the same argument list. */
++ newp->w_alist = oldp->w_alist;
++ ++newp->w_alist->al_refcount;
++ newp->w_arg_idx = oldp->w_arg_idx;
++
++ /* copy options from existing window */
++ win_copy_options(oldp, newp);
+ }
+
+ #endif /* FEAT_WINDOWS */
+***************
+*** 1565,1579 ****
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! if (gui.in_use)
+! {
+! out_flush();
+! gui_init_which_components(NULL);
+! gui_update_scrollbars(TRUE);
+! }
+! need_mouse_correct = TRUE;
+ #endif
+-
+ }
+
+ /*
+--- 1576,1583 ----
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! gui_may_update_scrollbars();
+ #endif
+ }
+
+ /*
+***************
+*** 2048,2060 ****
+ }
+
+ /*
+! * Return TRUE if the current window is the only window that exists.
+ * Returns FALSE if there is a window, possibly in another tab page.
+ */
+ static int
+ last_window()
+ {
+! return (lastwin == firstwin && first_tabpage->tp_next == NULL);
+ }
+
+ /*
+--- 2052,2091 ----
+ }
+
+ /*
+! * Return TRUE if the current window is the only window that exists (ignoring
+! * "aucmd_win").
+ * Returns FALSE if there is a window, possibly in another tab page.
+ */
+ static int
+ last_window()
+ {
+! return (one_window() && first_tabpage->tp_next == NULL);
+! }
+!
+! /*
+! * Return TRUE if there is only one window other than "aucmd_win" in the
+! * current tab page.
+! */
+! static int
+! one_window()
+! {
+! #ifdef FEAT_AUTOCMD
+! win_T *wp;
+! int seen_one = FALSE;
+!
+! FOR_ALL_WINDOWS(wp)
+! {
+! if (wp != aucmd_win)
+! {
+! if (seen_one)
+! return FALSE;
+! seen_one = TRUE;
+! }
+! }
+! return TRUE;
+! #else
+! return firstwin == lastwin;
+! #endif
+ }
+
+ /*
+***************
+*** 2083,2088 ****
+--- 2114,2132 ----
+ return;
+ }
+
++ #ifdef FEAT_AUTOCMD
++ if (win == aucmd_win)
++ {
++ EMSG(_("E813: Cannot close autocmd window"));
++ return;
++ }
++ if ((firstwin == aucmd_win || lastwin == aucmd_win) && one_window())
++ {
++ EMSG(_("E814: Cannot close window, only autocmd window would remain"));
++ return;
++ }
++ #endif
++
+ /*
+ * When closing the last window in a tab page first go to another tab
+ * page and then close the window and the tab page. This avoids that
+***************
+*** 2112,2118 ****
+ if (win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+! clear_snapshot(curtab);
+
+ #ifdef FEAT_AUTOCMD
+ if (win == curwin)
+--- 2156,2162 ----
+ if (win->w_buffer->b_help)
+ help_window = TRUE;
+ else
+! clear_snapshot(curtab, SNAP_HELP_IDX);
+
+ #ifdef FEAT_AUTOCMD
+ if (win == curwin)
+***************
+*** 2229,2235 ****
+ /* After closing the help window, try restoring the window layout from
+ * before it was opened. */
+ if (help_window)
+! restore_snapshot(close_curwin);
+
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove scrollbars. */
+--- 2273,2279 ----
+ /* After closing the help window, try restoring the window layout from
+ * before it was opened. */
+ if (help_window)
+! restore_snapshot(SNAP_HELP_IDX, close_curwin);
+
+ #if defined(FEAT_GUI) && defined(FEAT_VERTSPLIT)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove scrollbars. */
+***************
+*** 2344,2349 ****
+--- 2388,2401 ----
+
+ while (firstwin != NULL)
+ (void)win_free_mem(firstwin, &dummy, NULL);
++
++ # ifdef FEAT_AUTOCMD
++ if (aucmd_win != NULL)
++ {
++ (void)win_free_mem(aucmd_win, &dummy, NULL);
++ aucmd_win = NULL;
++ }
++ # endif
+ }
+ #endif
+
+***************
+*** 2351,2357 ****
+ * Remove a window and its frame from the tree of frames.
+ * Returns a pointer to the window that got the freed up space.
+ */
+! static win_T *
+ winframe_remove(win, dirp, tp)
+ win_T *win;
+ int *dirp UNUSED; /* set to 'v' or 'h' for direction if 'ea' */
+--- 2403,2409 ----
+ * Remove a window and its frame from the tree of frames.
+ * Returns a pointer to the window that got the freed up space.
+ */
+! win_T *
+ winframe_remove(win, dirp, tp)
+ win_T *win;
+ int *dirp UNUSED; /* set to 'v' or 'h' for direction if 'ea' */
+***************
+*** 3090,3096 ****
+ win_T *nextwp;
+ int r;
+
+! if (lastwin == firstwin)
+ {
+ if (message
+ #ifdef FEAT_AUTOCMD
+--- 3142,3148 ----
+ win_T *nextwp;
+ int r;
+
+! if (one_window())
+ {
+ if (message
+ #ifdef FEAT_AUTOCMD
+***************
+*** 3194,3202 ****
+--- 3246,3275 ----
+ first_tabpage->tp_topframe = topframe;
+ curtab = first_tabpage;
+ #endif
++
+ return OK;
+ }
+
++ #if defined(FEAT_AUTOCMD) || defined(PROTO)
++ /*
++ * Init "aucmd_win". This can only be done after the first
++ * window is fully initialized, thus it can't be in win_alloc_first().
++ */
++ void
++ win_alloc_aucmd_win()
++ {
++ aucmd_win = win_alloc(NULL, TRUE);
++ if (aucmd_win != NULL)
++ {
++ win_init_some(aucmd_win, curwin);
++ # ifdef FEAT_SCROLLBIND
++ aucmd_win->w_p_scb = FALSE;
++ # endif
++ new_frame(aucmd_win);
++ }
++ }
++ #endif
++
+ /*
+ * Allocate the first window or the first window in a new tab page.
+ * When "oldwin" is NULL create an empty buffer for it.
+***************
+*** 3208,3214 ****
+ win_alloc_firstwin(oldwin)
+ win_T *oldwin;
+ {
+! curwin = win_alloc(NULL);
+ if (oldwin == NULL)
+ {
+ /* Very first window, need to create an empty buffer for it and
+--- 3281,3287 ----
+ win_alloc_firstwin(oldwin)
+ win_T *oldwin;
+ {
+! curwin = win_alloc(NULL, FALSE);
+ if (oldwin == NULL)
+ {
+ /* Very first window, need to create an empty buffer for it and
+***************
+*** 3236,3256 ****
+ }
+ #endif
+
+! topframe = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
+! if (topframe == NULL)
+ return FAIL;
+! topframe->fr_layout = FR_LEAF;
+ #ifdef FEAT_VERTSPLIT
+ topframe->fr_width = Columns;
+ #endif
+ topframe->fr_height = Rows - p_ch;
+ topframe->fr_win = curwin;
+- curwin->w_frame = topframe;
+
+ return OK;
+ }
+
+ /*
+ * Initialize the window and frame size to the maximum.
+ */
+ void
+--- 3309,3344 ----
+ }
+ #endif
+
+! new_frame(curwin);
+! if (curwin->w_frame == NULL)
+ return FAIL;
+! topframe = curwin->w_frame;
+ #ifdef FEAT_VERTSPLIT
+ topframe->fr_width = Columns;
+ #endif
+ topframe->fr_height = Rows - p_ch;
+ topframe->fr_win = curwin;
+
+ return OK;
+ }
+
+ /*
++ * Create a frame for window "wp".
++ */
++ static void
++ new_frame(win_T *wp)
++ {
++ frame_T *frp = (frame_T *)alloc_clear((unsigned)sizeof(frame_T));
++
++ wp->w_frame = frp;
++ if (frp != NULL)
++ {
++ frp->fr_layout = FR_LEAF;
++ frp->fr_win = wp;
++ }
++ }
++
++ /*
+ * Initialize the window and frame size to the maximum.
+ */
+ void
+***************
+*** 3300,3309 ****
+ free_tabpage(tp)
+ tabpage_T *tp;
+ {
+ # ifdef FEAT_DIFF
+ diff_clear(tp);
+ # endif
+! clear_snapshot(tp);
+ #ifdef FEAT_EVAL
+ vars_clear(&tp->tp_vars.dv_hashtab); /* free all t: variables */
+ #endif
+--- 3388,3400 ----
+ free_tabpage(tp)
+ tabpage_T *tp;
+ {
++ int idx;
++
+ # ifdef FEAT_DIFF
+ diff_clear(tp);
+ # endif
+! for (idx = 0; idx < SNAP_COUNT; ++idx)
+! clear_snapshot(tp, idx);
+ #ifdef FEAT_EVAL
+ vars_clear(&tp->tp_vars.dv_hashtab); /* free all t: variables */
+ #endif
+***************
+*** 3370,3381 ****
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! if (gui.in_use && starting == 0)
+! {
+! gui_init_which_components(NULL);
+! gui_update_scrollbars(TRUE);
+! }
+! need_mouse_correct = TRUE;
+ #endif
+
+ redraw_all_later(CLEAR);
+--- 3461,3467 ----
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! gui_may_update_scrollbars();
+ #endif
+
+ redraw_all_later(CLEAR);
+***************
+*** 3593,3604 ****
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! if (gui.in_use && starting == 0)
+! {
+! gui_init_which_components(NULL);
+! gui_update_scrollbars(TRUE);
+! }
+! need_mouse_correct = TRUE;
+ #endif
+
+ redraw_all_later(CLEAR);
+--- 3679,3685 ----
+ #if defined(FEAT_GUI)
+ /* When 'guioptions' includes 'L' or 'R' may have to remove or add
+ * scrollbars. Have to update them anyway. */
+! gui_may_update_scrollbars();
+ #endif
+
+ redraw_all_later(CLEAR);
+***************
+*** 4150,4160 ****
+ #endif
+
+ /*
+! * allocate a window structure and link it in the window list
+ */
+ static win_T *
+! win_alloc(after)
+ win_T *after UNUSED;
+ {
+ win_T *newwin;
+
+--- 4231,4243 ----
+ #endif
+
+ /*
+! * Allocate a window structure and link it in the window list when "hidden" is
+! * FALSE.
+ */
+ static win_T *
+! win_alloc(after, hidden)
+ win_T *after UNUSED;
++ int hidden UNUSED;
+ {
+ win_T *newwin;
+
+***************
+*** 4180,4186 ****
+ * link the window in the window list
+ */
+ #ifdef FEAT_WINDOWS
+! win_append(after, newwin);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+ newwin->w_wincol = 0;
+--- 4263,4270 ----
+ * link the window in the window list
+ */
+ #ifdef FEAT_WINDOWS
+! if (!hidden)
+! win_append(after, newwin);
+ #endif
+ #ifdef FEAT_VERTSPLIT
+ newwin->w_wincol = 0;
+***************
+*** 4314,4320 ****
+ /*
+ * Append window "wp" in the window list after window "after".
+ */
+! static void
+ win_append(after, wp)
+ win_T *after, *wp;
+ {
+--- 4398,4404 ----
+ /*
+ * Append window "wp" in the window list after window "after".
+ */
+! void
+ win_append(after, wp)
+ win_T *after, *wp;
+ {
+***************
+*** 4340,4346 ****
+ /*
+ * Remove a window from the window list.
+ */
+! static void
+ win_remove(wp, tp)
+ win_T *wp;
+ tabpage_T *tp; /* tab page "win" is in, NULL for current */
+--- 4424,4430 ----
+ /*
+ * Remove a window from the window list.
+ */
+! void
+ win_remove(wp, tp)
+ win_T *wp;
+ tabpage_T *tp; /* tab page "win" is in, NULL for current */
+***************
+*** 6040,6045 ****
+--- 6124,6130 ----
+ /*
+ * Return TRUE if there is only one window (in the current tab page), not
+ * counting a help or preview window, unless it is the current window.
++ * Does not count "aucmd_win".
+ */
+ int
+ only_one_window()
+***************
+*** 6053,6063 ****
+ return FALSE;
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+! if (!((wp->w_buffer->b_help && !curbuf->b_help)
+ # ifdef FEAT_QUICKFIX
+ || wp->w_p_pvw
+ # endif
+ ) || wp == curwin)
+ ++count;
+ return (count <= 1);
+ #else
+--- 6138,6152 ----
+ return FALSE;
+
+ for (wp = firstwin; wp != NULL; wp = wp->w_next)
+! if ((!((wp->w_buffer->b_help && !curbuf->b_help)
+ # ifdef FEAT_QUICKFIX
+ || wp->w_p_pvw
+ # endif
+ ) || wp == curwin)
++ # ifdef FEAT_AUTOCMD
++ && wp != aucmd_win
++ # endif
++ )
+ ++count;
+ return (count <= 1);
+ #else
+***************
+*** 6112,6122 ****
+ /*
+ * Create a snapshot of the current frame sizes.
+ */
+! static void
+! make_snapshot()
+ {
+! clear_snapshot(curtab);
+! make_snapshot_rec(topframe, &curtab->tp_snapshot);
+ }
+
+ static void
+--- 6201,6212 ----
+ /*
+ * Create a snapshot of the current frame sizes.
+ */
+! void
+! make_snapshot(idx)
+! int idx;
+ {
+! clear_snapshot(curtab, idx);
+! make_snapshot_rec(topframe, &curtab->tp_snapshot[idx]);
+ }
+
+ static void
+***************
+*** 6144,6154 ****
+ * Remove any existing snapshot.
+ */
+ static void
+! clear_snapshot(tp)
+ tabpage_T *tp;
+ {
+! clear_snapshot_rec(tp->tp_snapshot);
+! tp->tp_snapshot = NULL;
+ }
+
+ static void
+--- 6234,6245 ----
+ * Remove any existing snapshot.
+ */
+ static void
+! clear_snapshot(tp, idx)
+ tabpage_T *tp;
++ int idx;
+ {
+! clear_snapshot_rec(tp->tp_snapshot[idx]);
+! tp->tp_snapshot[idx] = NULL;
+ }
+
+ static void
+***************
+*** 6168,6193 ****
+ * This is only done if the screen size didn't change and the window layout is
+ * still the same.
+ */
+! static void
+! restore_snapshot(close_curwin)
+ int close_curwin; /* closing current window */
+ {
+ win_T *wp;
+
+! if (curtab->tp_snapshot != NULL
+ # ifdef FEAT_VERTSPLIT
+! && curtab->tp_snapshot->fr_width == topframe->fr_width
+ # endif
+! && curtab->tp_snapshot->fr_height == topframe->fr_height
+! && check_snapshot_rec(curtab->tp_snapshot, topframe) == OK)
+ {
+! wp = restore_snapshot_rec(curtab->tp_snapshot, topframe);
+ win_comp_pos();
+ if (wp != NULL && close_curwin)
+ win_goto(wp);
+ redraw_all_later(CLEAR);
+ }
+! clear_snapshot(curtab);
+ }
+
+ /*
+--- 6259,6285 ----
+ * This is only done if the screen size didn't change and the window layout is
+ * still the same.
+ */
+! void
+! restore_snapshot(idx, close_curwin)
+! int idx;
+ int close_curwin; /* closing current window */
+ {
+ win_T *wp;
+
+! if (curtab->tp_snapshot[idx] != NULL
+ # ifdef FEAT_VERTSPLIT
+! && curtab->tp_snapshot[idx]->fr_width == topframe->fr_width
+ # endif
+! && curtab->tp_snapshot[idx]->fr_height == topframe->fr_height
+! && check_snapshot_rec(curtab->tp_snapshot[idx], topframe) == OK)
+ {
+! wp = restore_snapshot_rec(curtab->tp_snapshot[idx], topframe);
+ win_comp_pos();
+ if (wp != NULL && close_curwin)
+ win_goto(wp);
+ redraw_all_later(CLEAR);
+ }
+! clear_snapshot(curtab, idx);
+ }
+
+ /*
+*** ../vim-7.2.202/src/version.c 2009-06-16 15:35:46.000000000 +0200
+--- src/version.c 2009-06-16 15:37:16.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 203,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+15. Five days in advance, tell your friends you can't attend their
+ party because you're not in the mood.
+
+ /// 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.204 b/source/ap/vim/patches/7.2.204
new file mode 100644
index 000000000..ef99c5198
--- /dev/null
+++ b/source/ap/vim/patches/7.2.204
@@ -0,0 +1,137 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.204 (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.204 (extra)
+Problem: Win32: Can't build with Visual Studio 2010 beta 1.
+Solution: Fix the makefile. (George Reilly)
+Files: src/Make_mvc.mak
+
+
+*** ../vim-7.2.203/src/Make_mvc.mak 2009-05-26 22:58:43.000000000 +0200
+--- src/Make_mvc.mak 2009-06-16 16:27:59.000000000 +0200
+***************
+*** 1,18 ****
+ # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
+ # and Win64, using the Microsoft Visual C++ compilers. Known to work with
+ # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
+! # and VC9 (VS2008).
+ #
+ # To build using other Windows compilers, see INSTALLpc.txt
+ #
+ # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
+! # Python-enabled versions of vim for Win32 platforms.
+ #
+! # The basic command line to build vim is:
+ #
+ # nmake -f Make_mvc.mak
+ #
+! # This will build the console version of vim with no additional interfaces.
+ # To add features, define any of the following:
+ #
+ # !!!! After changing features do "nmake clean" first !!!!
+--- 1,18 ----
+ # Makefile for Vim on Win32 (Windows NT/2000/XP/2003 and Windows 95/98/Me)
+ # and Win64, using the Microsoft Visual C++ compilers. Known to work with
+ # VC5, VC6 (VS98), VC7.0 (VS2002), VC7.1 (VS2003), VC8 (VS2005),
+! # VC9 (VS2008), and VC10 (VS2010).
+ #
+ # To build using other Windows compilers, see INSTALLpc.txt
+ #
+ # This makefile can build the console, GUI, OLE-enable, Perl-enabled and
+! # Python-enabled versions of Vim for Win32 platforms.
+ #
+! # The basic command line to build Vim is:
+ #
+ # nmake -f Make_mvc.mak
+ #
+! # This will build the console version of Vim with no additional interfaces.
+ # To add features, define any of the following:
+ #
+ # !!!! After changing features do "nmake clean" first !!!!
+***************
+*** 358,363 ****
+--- 358,366 ----
+ !if "$(_NMAKE_VER)" == "9.00.30729.01"
+ MSVCVER = 9.0
+ !endif
++ !if "$(_NMAKE_VER)" == "10.00.20506.01"
++ MSVCVER = 10.0
++ !endif
+ !endif
+
+ # Abort bulding VIM if version of VC is unrecognised.
+***************
+*** 372,378 ****
+ !endif
+
+ # Convert processor ID to MVC-compatible number
+! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0")
+ !if "$(CPUNR)" == "i386"
+ CPUARG = /G3
+ !elseif "$(CPUNR)" == "i486"
+--- 375,381 ----
+ !endif
+
+ # Convert processor ID to MVC-compatible number
+! !if ("$(MSVCVER)" != "8.0") && ("$(MSVCVER)" != "9.0") && ("$(MSVCVER)" != "10.0")
+ !if "$(CPUNR)" == "i386"
+ CPUARG = /G3
+ !elseif "$(CPUNR)" == "i486"
+***************
+*** 405,411 ****
+ !else # MAXSPEED
+ OPTFLAG = /Ox
+ !endif
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+--- 408,414 ----
+ !else # MAXSPEED
+ OPTFLAG = /Ox
+ !endif
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
+ # Use link time code generation if not worried about size
+ !if "$(OPTIMIZE)" != "SPACE"
+ OPTFLAG = $(OPTFLAG) /GL
+***************
+*** 793,799 ****
+
+ # Report link time code generation progress if used.
+ !ifdef NODEBUG
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0")
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+--- 796,802 ----
+
+ # Report link time code generation progress if used.
+ !ifdef NODEBUG
+! !if ("$(MSVCVER)" == "8.0") || ("$(MSVCVER)" == "9.0") || ("$(MSVCVER)" == "10.0")
+ !if "$(OPTIMIZE)" != "SPACE"
+ LINKARGS1 = $(LINKARGS1) /LTCG:STATUS
+ !endif
+*** ../vim-7.2.203/src/version.c 2009-06-16 16:01:34.000000000 +0200
+--- src/version.c 2009-06-16 16:32:41.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 204,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+16. Have your coworkers address you by your wrestling name, Rock Hard Kim.
+
+ /// 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.205 b/source/ap/vim/patches/7.2.205
new file mode 100644
index 000000000..2af506782
--- /dev/null
+++ b/source/ap/vim/patches/7.2.205
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.205 (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.205 (extra)
+Problem: Win32: No support for High DPI awarenes.
+Solution: Fix the manifest file. (George Reilly)
+Files: src/Make_mvc.mak, src/gvim.exe.mnf
+
+
+*** ../vim-7.2.204/src/Make_mvc.mak 2009-06-16 16:34:12.000000000 +0200
+--- src/Make_mvc.mak 2009-06-16 16:36:32.000000000 +0200
+***************
+*** 1040,1046 ****
+ $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
+ $(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
+
+! $(OUTDIR)/vim.res: $(OUTDIR) vim.rc version.h tools.bmp tearoff.bmp \
+ vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
+ $(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
+
+--- 1040,1046 ----
+ $(OUTDIR)/xpm_w32.obj: $(OUTDIR) xpm_w32.c
+ $(CC) $(CFLAGS) $(XPM_INC) xpm_w32.c
+
+! $(OUTDIR)/vim.res: $(OUTDIR) vim.rc gvim.exe.mnf version.h tools.bmp tearoff.bmp \
+ vim.ico vim_error.ico vim_alert.ico vim_info.ico vim_quest.ico
+ $(RC) /l 0x409 /Fo$(OUTDIR)/vim.res $(RCFLAGS) vim.rc
+
+*** ../vim-7.2.204/src/gvim.exe.mnf 2008-08-09 19:37:29.000000000 +0200
+--- src/gvim.exe.mnf 2009-06-16 16:36:32.000000000 +0200
+***************
+*** 1,5 ****
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+! <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+ <assemblyIdentity
+ processorArchitecture="*"
+ version="7.2.0.0"
+--- 1,5 ----
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+! <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+ <assemblyIdentity
+ processorArchitecture="*"
+ version="7.2.0.0"
+***************
+*** 29,32 ****
+--- 29,38 ----
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
++ <!-- Vista High DPI aware -->
++ <asmv3:application>
++ <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
++ <dpiAware>true</dpiAware>
++ </asmv3:windowsSettings>
++ </asmv3:application>
+ </assembly>
+*** ../vim-7.2.204/src/version.c 2009-06-16 16:34:12.000000000 +0200
+--- src/version.c 2009-06-16 16:43:04.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 205,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+17. When the money comes out the ATM, scream "I won!, I won! 3rd
+ time this 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.206 b/source/ap/vim/patches/7.2.206
new file mode 100644
index 000000000..e16fb7e17
--- /dev/null
+++ b/source/ap/vim/patches/7.2.206
@@ -0,0 +1,46 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.206
+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.206
+Problem: Win32: Can't build netbeans interface with Visual Studio 2010.
+Solution: Undefine ECONNREFUSED. (George Reilly)
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.205/src/netbeans.c 2009-05-17 23:25:16.000000000 +0200
+--- src/netbeans.c 2009-06-16 16:39:17.000000000 +0200
+***************
+*** 32,37 ****
+--- 32,38 ----
+ /* WinSock API is separated from C API, thus we can't use read(), write(),
+ * errno... */
+ # define sock_errno WSAGetLastError()
++ # undef ECONNREFUSED
+ # define ECONNREFUSED WSAECONNREFUSED
+ # ifdef EINTR
+ # undef EINTR
+*** ../vim-7.2.205/src/version.c 2009-06-16 16:45:14.000000000 +0200
+--- src/version.c 2009-06-16 16:57:45.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 206,
+ /**/
+
+--
+How To Keep A Healthy Level Of Insanity:
+18. When leaving the zoo, start running towards the parking lot,
+ yelling "run for your lives, they're loose!!"
+
+ /// 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.207 b/source/ap/vim/patches/7.2.207
new file mode 100644
index 000000000..528d35da4
--- /dev/null
+++ b/source/ap/vim/patches/7.2.207
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.207
+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.207
+Problem: Using freed memory with ":redrawstatus" when it works recursively.
+Solution: Prevent recursively updating the status line. (partly by Dominique
+ Pelle)
+Files: src/screen.c
+
+
+*** ../vim-7.2.206/src/screen.c 2009-06-16 16:01:34.000000000 +0200
+--- src/screen.c 2009-06-16 17:04:53.000000000 +0200
+***************
+*** 5743,5748 ****
+--- 5743,5755 ----
+ int fillchar;
+ int attr;
+ int this_ru_col;
++ static int busy = FALSE;
++
++ /* It's possible to get here recursively when 'statusline' (indirectly)
++ * invokes ":redrawstatus". Simply ignore the call then. */
++ if (busy)
++ return;
++ busy = TRUE;
+
+ wp->w_redr_status = FALSE;
+ if (wp->w_status_height == 0)
+***************
+*** 5881,5886 ****
+--- 5888,5894 ----
+ attr);
+ }
+ #endif
++ busy = FALSE;
+ }
+
+ #ifdef FEAT_STL_OPT
+*** ../vim-7.2.206/src/version.c 2009-06-16 16:57:53.000000000 +0200
+--- src/version.c 2009-06-16 17:21:56.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 207,
+ /**/
+
+--
+In many of the more relaxed civilizations on the Outer Eastern Rim of the
+Galaxy, "The Hitchhiker's Guide to the Galaxy" has already supplanted the
+great "Encyclopedia Galactica" as the standard repository of all knowledge
+and wisdom, for though it has many omissions and contains much that is
+apocryphal, or at least wildly inaccurate, it scores over the older, more
+pedestrian work in two important respects.
+First, it is slightly cheaper; and second, it has the words "DON'T PANIC"
+inscribed in large friendly letters on its cover.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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.208 b/source/ap/vim/patches/7.2.208
new file mode 100644
index 000000000..930770d0d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.208
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.208
+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.208
+Problem: "set novice" gives an error message, it should be ignored.
+Solution: Don't see "no" in "novice" as unsetting an option. (Patrick
+ Texier)
+Files: src/option.c
+
+
+*** ../vim-7.2.207/src/option.c 2009-06-16 15:23:07.000000000 +0200
+--- src/option.c 2009-06-16 17:35:08.000000000 +0200
+***************
+*** 4006,4012 ****
+ else
+ {
+ prefix = 1;
+! if (STRNCMP(arg, "no", 2) == 0)
+ {
+ prefix = 0;
+ arg += 2;
+--- 4006,4012 ----
+ else
+ {
+ prefix = 1;
+! if (STRNCMP(arg, "no", 2) == 0 && STRNCMP(arg, "novice", 6) != 0)
+ {
+ prefix = 0;
+ arg += 2;
+***************
+*** 9757,9763 ****
+ }
+ --p;
+ }
+! if (STRNCMP(p, "no", 2) == 0)
+ {
+ xp->xp_context = EXPAND_BOOL_SETTINGS;
+ p += 2;
+--- 9757,9763 ----
+ }
+ --p;
+ }
+! if (STRNCMP(p, "no", 2) == 0 && STRNCMP(p, "novice", 6) != 0)
+ {
+ xp->xp_context = EXPAND_BOOL_SETTINGS;
+ p += 2;
+*** ../vim-7.2.207/src/version.c 2009-06-16 17:22:38.000000000 +0200
+--- src/version.c 2009-06-16 17:50:33.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 208,
+ /**/
+
+--
+Now it is such a bizarrely improbable coincidence that anything as
+mind-bogglingly useful as the Babel fish could have evolved purely by chance
+that some thinkers have chosen to see it as a final and clinching proof of the
+NON-existence of God.
+The argument goes something like this: 'I refuse to prove that I exist,' says
+God, 'for proof denies faith, and without faith I am nothing.'
+'But,' says Man, 'the Babel fish is a dead giveaway, isn't it? It could not
+have evolved by chance. It proves you exist, and so therefore, by your own
+arguments, you don't. QED.'
+'Oh dear,' says God, 'I hadn't thought of that,' and promptly vanishes in a
+puff of logic.
+'Oh, that was easy,' says Man, and for an encore goes on to prove that black
+is white and gets himself killed on the next pedestrian crossing.
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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.209 b/source/ap/vim/patches/7.2.209
new file mode 100644
index 000000000..1cc339357
--- /dev/null
+++ b/source/ap/vim/patches/7.2.209
@@ -0,0 +1,82 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.209
+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.209
+Problem: For xxd setmode() is undefined on Cygwin.
+Solution: Include io.h. (Dominique Pelle)
+Files: src/xxd/xxd.c
+
+
+*** ../vim-7.2.208/src/xxd/xxd.c 2007-12-03 21:32:21.000000000 +0100
+--- src/xxd/xxd.c 2009-06-16 18:03:14.000000000 +0200
+***************
+*** 64,69 ****
+--- 64,72 ----
+ # define _CRT_SECURE_NO_DEPRECATE
+ # define _CRT_NONSTDC_NO_DEPRECATE
+ #endif
++ #if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
++ # define CYGWIN
++ #endif
+
+ #include <stdio.h>
+ #ifdef VAXC
+***************
+*** 77,83 ****
+ #if !defined(OS2) && defined(__EMX__)
+ # define OS2
+ #endif
+! #if defined(MSDOS) || defined(WIN32) || defined(OS2) || defined(__BORLANDC__)
+ # include <io.h> /* for setmode() */
+ #else
+ # ifdef UNIX
+--- 80,87 ----
+ #if !defined(OS2) && defined(__EMX__)
+ # define OS2
+ #endif
+! #if defined(MSDOS) || defined(WIN32) || defined(OS2) || defined(__BORLANDC__) \
+! || defined(CYGWIN)
+ # include <io.h> /* for setmode() */
+ #else
+ # ifdef UNIX
+***************
+*** 150,158 ****
+ # endif
+ #endif
+
+- #if !defined(CYGWIN) && (defined(CYGWIN32) || defined(__CYGWIN__) || defined(__CYGWIN32__))
+- # define CYGWIN
+- #endif
+ #if defined(MSDOS) || defined(WIN32) || defined(OS2)
+ # define BIN_READ(yes) ((yes) ? "rb" : "rt")
+ # define BIN_WRITE(yes) ((yes) ? "wb" : "wt")
+--- 154,159 ----
+*** ../vim-7.2.208/src/version.c 2009-06-16 17:50:56.000000000 +0200
+--- src/version.c 2009-06-16 18:16:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 209,
+ /**/
+
+--
+"So this is it," said Arthur, "we are going to die."
+"Yes," said Ford, "except...no! Wait a minute!" He suddenly lunged across
+the chamber at something behind Arthur's line of vision. "What's this
+switch?" he cried.
+"What? Where?" cried Arthur, twisting around.
+"No, I was only fooling," said Ford, "we are going to die after all."
+ -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
+
+ /// 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.210 b/source/ap/vim/patches/7.2.210
new file mode 100644
index 000000000..9c51a1378
--- /dev/null
+++ b/source/ap/vim/patches/7.2.210
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.210
+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.210
+Problem: When a file that is being edited has its timestamp updated outside
+ of Vim and ":checktime" is used still get a warning when writing
+ the file. (Matt Mueller)
+Solution: Store the timestamp in b_mtime_read when the timestamp is the only
+ thing that changed.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.209/src/fileio.c 2009-06-16 16:01:34.000000000 +0200
+--- src/fileio.c 2009-06-20 13:29:41.000000000 +0200
+***************
+*** 6627,6633 ****
+ mesg = _("W16: Warning: Mode of file \"%s\" has changed since editing started");
+ mesg2 = _("See \":help W16\" for more info.");
+ }
+! /* Else: only timestamp changed, ignored */
+ }
+ }
+ }
+--- 6627,6636 ----
+ mesg = _("W16: Warning: Mode of file \"%s\" has changed since editing started");
+ mesg2 = _("See \":help W16\" for more info.");
+ }
+! else
+! /* Only timestamp changed, store it to avoid a warning
+! * in check_mtime() later. */
+! buf->b_mtime_read = buf->b_mtime;
+ }
+ }
+ }
+*** ../vim-7.2.209/src/version.c 2009-06-16 18:29:37.000000000 +0200
+--- src/version.c 2009-06-24 11:57:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 210,
+ /**/
+
+--
+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.211 b/source/ap/vim/patches/7.2.211
new file mode 100644
index 000000000..05101980b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.211
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.211
+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.211
+Problem: Memory leak when expanding a series of file names.
+Solution: Use ga_clear_strings() instead of ga_clear().
+Files: src/misc1.c
+
+
+*** ../vim-7.2.210/src/misc1.c 2009-05-17 13:30:58.000000000 +0200
+--- src/misc1.c 2009-06-24 16:16:17.000000000 +0200
+***************
+*** 9193,9199 ****
+ else if (vim_strpbrk(p, (char_u *)"$~") != NULL)
+ {
+ vim_free(p);
+! ga_clear(&ga);
+ i = mch_expand_wildcards(num_pat, pat, num_file, file,
+ flags);
+ recursive = FALSE;
+--- 9193,9199 ----
+ else if (vim_strpbrk(p, (char_u *)"$~") != NULL)
+ {
+ vim_free(p);
+! ga_clear_strings(&ga);
+ i = mch_expand_wildcards(num_pat, pat, num_file, file,
+ flags);
+ recursive = FALSE;
+*** ../vim-7.2.210/src/version.c 2009-06-24 11:57:53.000000000 +0200
+--- src/version.c 2009-06-24 16:24:32.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 211,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+34. You laugh at people with 14400 baud modems.
+
+ /// 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.212 b/source/ap/vim/patches/7.2.212
new file mode 100644
index 000000000..33fcb5c43
--- /dev/null
+++ b/source/ap/vim/patches/7.2.212
@@ -0,0 +1,62 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.212 (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.212 (extra)
+Problem: Warnings for redefining SIG macros.
+Solution: Don't define them if already defined. (Bjorn Winckler)
+Files: src/os_mac.h
+
+
+*** ../vim-7.2.211/src/os_mac.h 2008-06-24 22:27:34.000000000 +0200
+--- src/os_mac.h 2009-06-19 21:21:57.000000000 +0200
+***************
+*** 268,276 ****
+ */
+
+ #ifdef MACOS_X_UNIX
+! # define SIGPROTOARG (int)
+! # define SIGDEFARG(s) (s) int s;
+! # define SIGDUMMYARG 0
+ # undef HAVE_AVAIL_MEM
+ # ifndef HAVE_CONFIG_H
+ # define RETSIGTYPE void
+--- 268,282 ----
+ */
+
+ #ifdef MACOS_X_UNIX
+! # ifndef SIGPROTOARG
+! # define SIGPROTOARG (int)
+! # endif
+! # ifndef SIGDEFARG
+! # define SIGDEFARG(s) (s) int s UNUSED;
+! # endif
+! # ifndef SIGDUMMYARG
+! # define SIGDUMMYARG 0
+! # endif
+ # undef HAVE_AVAIL_MEM
+ # ifndef HAVE_CONFIG_H
+ # define RETSIGTYPE void
+*** ../vim-7.2.211/src/version.c 2009-06-24 16:25:23.000000000 +0200
+--- src/version.c 2009-06-24 16:40:18.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 212,
+ /**/
+
+--
+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.213 b/source/ap/vim/patches/7.2.213
new file mode 100644
index 000000000..74a0e1650
--- /dev/null
+++ b/source/ap/vim/patches/7.2.213
@@ -0,0 +1,53 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.213
+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.213
+Problem: Warning for using vsprintf().
+Solution: Use vim_vsnprintf().
+Files: src/netbeans.c
+
+
+*** ../vim-7.2.212/src/netbeans.c 2009-06-16 16:57:53.000000000 +0200
+--- src/netbeans.c 2009-06-24 11:26:43.000000000 +0200
+***************
+*** 2586,2592 ****
+ va_list ap;
+
+ va_start(ap, cmd);
+! vsprintf(buf, cmd, ap);
+ va_end(ap);
+
+ nbdebug((" COLONCMD %s\n", buf));
+--- 2586,2592 ----
+ va_list ap;
+
+ va_start(ap, cmd);
+! vim_vsnprintf(buf, sizeof(buf), cmd, ap, NULL);
+ va_end(ap);
+
+ nbdebug((" COLONCMD %s\n", buf));
+*** ../vim-7.2.212/src/version.c 2009-06-24 16:41:01.000000000 +0200
+--- src/version.c 2009-06-24 16:49:06.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 213,
+ /**/
+
+--
+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.214 b/source/ap/vim/patches/7.2.214
new file mode 100644
index 000000000..17cb1569c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.214
@@ -0,0 +1,65 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.214
+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.214
+Problem: Crash with complete function for user command. (Andy Wokula)
+Solution: Avoid using a NULL pointer (Dominique Pelle)
+Files: src/ex_getln.c
+
+
+*** ../vim-7.2.213/src/ex_getln.c 2009-05-16 17:29:37.000000000 +0200
+--- src/ex_getln.c 2009-06-24 16:57:28.000000000 +0200
+***************
+*** 4874,4887 ****
+ /* Loop over the items in the list. */
+ for (li = retlist->lv_first; li != NULL; li = li->li_next)
+ {
+! if (li->li_tv.v_type != VAR_STRING)
+! continue; /* Skip non-string items */
+
+ if (ga_grow(&ga, 1) == FAIL)
+ break;
+
+ ((char_u **)ga.ga_data)[ga.ga_len] =
+! vim_strsave(li->li_tv.vval.v_string);
+ ++ga.ga_len;
+ }
+ list_unref(retlist);
+--- 4874,4887 ----
+ /* Loop over the items in the list. */
+ for (li = retlist->lv_first; li != NULL; li = li->li_next)
+ {
+! if (li->li_tv.v_type != VAR_STRING || li->li_tv.vval.v_string == NULL)
+! continue; /* Skip non-string items and empty strings */
+
+ if (ga_grow(&ga, 1) == FAIL)
+ break;
+
+ ((char_u **)ga.ga_data)[ga.ga_len] =
+! vim_strsave(li->li_tv.vval.v_string);
+ ++ga.ga_len;
+ }
+ list_unref(retlist);
+*** ../vim-7.2.213/src/version.c 2009-06-24 16:49:50.000000000 +0200
+--- src/version.c 2009-06-24 17:03:58.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 214,
+ /**/
+
+--
+He who laughs last, thinks slowest.
+
+ /// 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.215 b/source/ap/vim/patches/7.2.215
new file mode 100644
index 000000000..90e746cea
--- /dev/null
+++ b/source/ap/vim/patches/7.2.215
@@ -0,0 +1,310 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.215
+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.215
+Problem: ml_get error when using ":vimgrep".
+Solution: Load the memfile for the hidden buffer before putting it in a
+ window. Correct the order of splitting the window and filling
+ the window and buffer with data.
+Files: src/fileio.c, src/proto/window.pro, src/quickfix.c, src/window.c
+
+
+*** ../vim-7.2.214/src/fileio.c 2009-06-24 11:57:53.000000000 +0200
+--- src/fileio.c 2009-06-24 12:53:19.000000000 +0200
+***************
+*** 710,716 ****
+ #endif
+ #ifdef UNIX
+ /* Set swap file protection bits after creating it. */
+! if (swap_mode > 0 && curbuf->b_ml.ml_mfp->mf_fname != NULL)
+ (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
+ #endif
+ }
+--- 710,717 ----
+ #endif
+ #ifdef UNIX
+ /* Set swap file protection bits after creating it. */
+! if (swap_mode > 0 && curbuf->b_ml.ml_mfp != NULL
+! && curbuf->b_ml.ml_mfp->mf_fname != NULL)
+ (void)mch_setperm(curbuf->b_ml.ml_mfp->mf_fname, (long)swap_mode);
+ #endif
+ }
+***************
+*** 8435,8443 ****
+ * effects, insert it in a the current tab page.
+ * Anything related to a window (e.g., setting folds) may have
+ * unexpected results. */
+! curwin = aucmd_win;
+! curwin->w_buffer = buf;
+ ++buf->b_nwindows;
+
+ #ifdef FEAT_WINDOWS
+ /* Split the current window, put the aucmd_win in the upper half. */
+--- 8436,8444 ----
+ * effects, insert it in a the current tab page.
+ * Anything related to a window (e.g., setting folds) may have
+ * unexpected results. */
+! aucmd_win->w_buffer = buf;
+ ++buf->b_nwindows;
++ win_init_empty(aucmd_win); /* set cursor and topline to safe values */
+
+ #ifdef FEAT_WINDOWS
+ /* Split the current window, put the aucmd_win in the upper half. */
+***************
+*** 8448,8459 ****
+ (void)win_comp_pos(); /* recompute window positions */
+ p_ea = save_ea;
+ #endif
+! /* set cursor and topline to safe values */
+! curwin_init();
+! #ifdef FEAT_VERTSPLIT
+! curwin->w_wincol = 0;
+! curwin->w_width = Columns;
+! #endif
+ }
+ curbuf = buf;
+ aco->new_curwin = curwin;
+--- 8449,8455 ----
+ (void)win_comp_pos(); /* recompute window positions */
+ p_ea = save_ea;
+ #endif
+! curwin = aucmd_win;
+ }
+ curbuf = buf;
+ aco->new_curwin = curwin;
+*** ../vim-7.2.214/src/proto/window.pro 2009-06-16 16:01:34.000000000 +0200
+--- src/proto/window.pro 2009-06-24 12:53:13.000000000 +0200
+***************
+*** 14,19 ****
+--- 14,20 ----
+ win_T *winframe_remove __ARGS((win_T *win, int *dirp, tabpage_T *tp));
+ void close_others __ARGS((int message, int forceit));
+ void curwin_init __ARGS((void));
++ void win_init_empty __ARGS((win_T *wp));
+ int win_alloc_first __ARGS((void));
+ void win_alloc_aucmd_win __ARGS((void));
+ void win_init_size __ARGS((void));
+*** ../vim-7.2.214/src/quickfix.c 2009-05-17 13:30:58.000000000 +0200
+--- src/quickfix.c 2009-06-24 15:30:06.000000000 +0200
+***************
+*** 3411,3424 ****
+ /* Init the options. */
+ buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
+
+! /* set curwin/curbuf to buf and save a few things */
+! aucmd_prepbuf(&aco, newbuf);
+
+! /* Need to set the filename for autocommands. */
+! (void)setfname(curbuf, fname, NULL, FALSE);
+
+- if (ml_open(curbuf) == OK)
+- {
+ /* Create swap file now to avoid the ATTENTION message. */
+ check_need_swap(TRUE);
+
+--- 3411,3425 ----
+ /* Init the options. */
+ buf_copy_options(newbuf, BCO_ENTER | BCO_NOHELP);
+
+! /* need to open the memfile before putting the buffer in a window */
+! if (ml_open(newbuf) == OK)
+! {
+! /* set curwin/curbuf to buf and save a few things */
+! aucmd_prepbuf(&aco, newbuf);
+
+! /* Need to set the filename for autocommands. */
+! (void)setfname(curbuf, fname, NULL, FALSE);
+
+ /* Create swap file now to avoid the ATTENTION message. */
+ check_need_swap(TRUE);
+
+***************
+*** 3441,3450 ****
+ newbuf = curbuf;
+ }
+ }
+- }
+
+! /* restore curwin/curbuf and a few other things */
+! aucmd_restbuf(&aco);
+
+ if (!buf_valid(newbuf))
+ return NULL;
+--- 3442,3451 ----
+ newbuf = curbuf;
+ }
+ }
+
+! /* restore curwin/curbuf and a few other things */
+! aucmd_restbuf(&aco);
+! }
+
+ if (!buf_valid(newbuf))
+ return NULL;
+*** ../vim-7.2.214/src/window.c 2009-06-16 16:01:34.000000000 +0200
+--- src/window.c 2009-06-24 14:35:16.000000000 +0200
+***************
+*** 2354,2366 ****
+ frame_T *frp;
+ win_T *wp;
+
+- #ifdef FEAT_FOLDING
+- clearFolding(win);
+- #endif
+-
+- /* reduce the reference count to the argument list. */
+- alist_unlink(win->w_alist);
+-
+ /* Remove the window and its frame from the tree of frames. */
+ frp = win->w_frame;
+ wp = winframe_remove(win, dirp, tp);
+--- 2354,2359 ----
+***************
+*** 2386,2394 ****
+ tabpage_close(TRUE);
+ # endif
+
+- while (firstwin != NULL)
+- (void)win_free_mem(firstwin, &dummy, NULL);
+-
+ # ifdef FEAT_AUTOCMD
+ if (aucmd_win != NULL)
+ {
+--- 2379,2384 ----
+***************
+*** 2396,2401 ****
+--- 2386,2394 ----
+ aucmd_win = NULL;
+ }
+ # endif
++
++ while (firstwin != NULL)
++ (void)win_free_mem(firstwin, &dummy, NULL);
+ }
+ #endif
+
+***************
+*** 3204,3230 ****
+ void
+ curwin_init()
+ {
+! redraw_win_later(curwin, NOT_VALID);
+! curwin->w_lines_valid = 0;
+! curwin->w_cursor.lnum = 1;
+! curwin->w_curswant = curwin->w_cursor.col = 0;
+ #ifdef FEAT_VIRTUALEDIT
+! curwin->w_cursor.coladd = 0;
+ #endif
+! curwin->w_pcmark.lnum = 1; /* pcmark not cleared but set to line 1 */
+! curwin->w_pcmark.col = 0;
+! curwin->w_prev_pcmark.lnum = 0;
+! curwin->w_prev_pcmark.col = 0;
+! curwin->w_topline = 1;
+ #ifdef FEAT_DIFF
+! curwin->w_topfill = 0;
+ #endif
+! curwin->w_botline = 2;
+ #ifdef FEAT_FKMAP
+! if (curwin->w_p_rl)
+! curwin->w_farsi = W_CONV + W_R_L;
+ else
+! curwin->w_farsi = W_CONV;
+ #endif
+ }
+
+--- 3197,3230 ----
+ void
+ curwin_init()
+ {
+! win_init_empty(curwin);
+! }
+!
+! void
+! win_init_empty(wp)
+! win_T *wp;
+! {
+! redraw_win_later(wp, NOT_VALID);
+! wp->w_lines_valid = 0;
+! wp->w_cursor.lnum = 1;
+! wp->w_curswant = wp->w_cursor.col = 0;
+ #ifdef FEAT_VIRTUALEDIT
+! wp->w_cursor.coladd = 0;
+ #endif
+! wp->w_pcmark.lnum = 1; /* pcmark not cleared but set to line 1 */
+! wp->w_pcmark.col = 0;
+! wp->w_prev_pcmark.lnum = 0;
+! wp->w_prev_pcmark.col = 0;
+! wp->w_topline = 1;
+ #ifdef FEAT_DIFF
+! wp->w_topfill = 0;
+ #endif
+! wp->w_botline = 2;
+ #ifdef FEAT_FKMAP
+! if (wp->w_p_rl)
+! wp->w_farsi = W_CONV + W_R_L;
+ else
+! wp->w_farsi = W_CONV;
+ #endif
+ }
+
+***************
+*** 4325,4330 ****
+--- 4325,4337 ----
+ {
+ int i;
+
++ #ifdef FEAT_FOLDING
++ clearFolding(wp);
++ #endif
++
++ /* reduce the reference count to the argument list. */
++ alist_unlink(wp->w_alist);
++
+ #ifdef FEAT_AUTOCMD
+ /* Don't execute autocommands while the window is halfway being deleted.
+ * gui_mch_destroy_scrollbar() may trigger a FocusGained event. */
+***************
+*** 4387,4393 ****
+ }
+ #endif /* FEAT_GUI */
+
+! win_remove(wp, tp);
+ vim_free(wp);
+
+ #ifdef FEAT_AUTOCMD
+--- 4394,4403 ----
+ }
+ #endif /* FEAT_GUI */
+
+! #ifdef FEAT_AUTOCMD
+! if (wp != aucmd_win)
+! #endif
+! win_remove(wp, tp);
+ vim_free(wp);
+
+ #ifdef FEAT_AUTOCMD
+*** ../vim-7.2.214/src/version.c 2009-06-24 17:04:40.000000000 +0200
+--- src/version.c 2009-06-24 17:27:38.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 215,
+ /**/
+
+--
+Micro$oft: where do you want to go today?
+ Linux: where do you want to go tomorrow?
+ FreeBSD: are you guys coming, or what?
+
+ /// 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.216 b/source/ap/vim/patches/7.2.216
new file mode 100644
index 000000000..5a7afdffc
--- /dev/null
+++ b/source/ap/vim/patches/7.2.216
@@ -0,0 +1,137 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.216
+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.216
+Problem: Two error messages have the same number E812.
+Solution: Give one message a different number.
+Files: runtime/doc/autocmd.txt, runtime/doc/if_mzsch.txt, src/if_mzsch.c
+
+
+*** ../vim-7.2.215/runtime/doc/autocmd.txt 2008-08-09 19:36:46.000000000 +0200
+--- runtime/doc/autocmd.txt 2009-06-24 17:49:04.000000000 +0200
+***************
+*** 335,340 ****
+--- 335,342 ----
+ NOTE: When this autocommand is executed, the
+ current buffer "%" may be different from the
+ buffer being deleted "<afile>" and "<abuf>".
++ Don't change to another buffer, it will cause
++ problems.
+ *BufEnter*
+ BufEnter After entering a buffer. Useful for setting
+ options for a file type. Also executed when
+***************
+*** 397,402 ****
+--- 399,406 ----
+ NOTE: When this autocommand is executed, the
+ current buffer "%" may be different from the
+ buffer being unloaded "<afile>".
++ Don't change to another buffer, it will cause
++ problems.
+ *BufWinEnter*
+ BufWinEnter After a buffer is displayed in a window. This
+ can be when the buffer is loaded (after
+***************
+*** 428,433 ****
+--- 432,439 ----
+ NOTE: When this autocommand is executed, the
+ current buffer "%" may be different from the
+ buffer being deleted "<afile>".
++ Don't change to another buffer, it will cause
++ problems.
+ *BufWrite* *BufWritePre*
+ BufWrite or BufWritePre Before writing the whole buffer to a file.
+ *BufWriteCmd*
+***************
+*** 748,755 ****
+ 'a' abort, like hitting CTRL-C
+ When set to an empty string the user will be
+ asked, as if there was no SwapExists autocmd.
+! Note: Do not try to change the buffer, the
+! results are unpredictable.
+ *Syntax*
+ Syntax When the 'syntax' option has been set. The
+ pattern is matched against the syntax name.
+--- 754,763 ----
+ 'a' abort, like hitting CTRL-C
+ When set to an empty string the user will be
+ asked, as if there was no SwapExists autocmd.
+! *E812*
+! It is not allowed to change to another buffer,
+! change a buffer name or change directory
+! here.
+ *Syntax*
+ Syntax When the 'syntax' option has been set. The
+ pattern is matched against the syntax name.
+*** ../vim-7.2.215/runtime/doc/if_mzsch.txt 2009-05-26 22:58:43.000000000 +0200
+--- runtime/doc/if_mzsch.txt 2009-06-24 12:08:20.000000000 +0200
+***************
+*** 1,4 ****
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 May 26
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+--- 1,4 ----
+! *if_mzsch.txt* For Vim version 7.2. Last change: 2009 Jun 24
+
+
+ VIM REFERENCE MANUAL by Sergey Khorev
+***************
+*** 231,237 ****
+ (set-cursor (line . col) [window]) Set cursor position.
+
+ ==============================================================================
+! 5. Dynamic loading *mzscheme-dynamic* *E812*
+
+ On MS-Windows the MzScheme libraries can be loaded dynamically. The |:version|
+ output then includes |+mzscheme/dyn|.
+--- 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|.
+*** ../vim-7.2.215/src/if_mzsch.c 2009-05-26 22:58:43.000000000 +0200
+--- src/if_mzsch.c 2009-06-24 12:08:23.000000000 +0200
+***************
+*** 1040,1046 ****
+ #ifdef DYNAMIC_MZSCHEME
+ if (!mzscheme_enabled(TRUE))
+ {
+! EMSG(_("E812: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
+ return -1;
+ }
+ #endif
+--- 1040,1046 ----
+ #ifdef DYNAMIC_MZSCHEME
+ if (!mzscheme_enabled(TRUE))
+ {
+! EMSG(_("E815: Sorry, this command is disabled, the MzScheme libraries could not be loaded."));
+ return -1;
+ }
+ #endif
+*** ../vim-7.2.215/src/version.c 2009-06-24 17:31:27.000000000 +0200
+--- src/version.c 2009-06-24 17:46:56.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 216,
+ /**/
+
+--
+Everyone has a photographic memory. Some don't have film.
+
+ /// 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.217 b/source/ap/vim/patches/7.2.217
new file mode 100644
index 000000000..30d8aa6a9
--- /dev/null
+++ b/source/ap/vim/patches/7.2.217
@@ -0,0 +1,57 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.217
+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.217
+Problem: Running tests with valgrind doesn't work as advertised.
+Solution: Fix the line in the Makefile.
+Files: src/testdir/Makefile
+
+
+*** ../vim-7.2.216/src/testdir/Makefile 2009-03-11 16:26:01.000000000 +0100
+--- src/testdir/Makefile 2009-06-24 14:59:42.000000000 +0200
+***************
+*** 4,12 ****
+
+ VIMPROG = ../vim
+
+! # Uncomment this line for using valgrind.
+! # The output goes into a file "valgrind.$PID" (sorry, no test number).
+! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --logfile=valgrind
+
+ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out test10.out test11.out \
+--- 4,14 ----
+
+ VIMPROG = ../vim
+
+! # Uncomment this line to use valgrind for memory leaks and extra warnings.
+! # The output goes into a file "valgrind.testN"
+! # Vim should be compiled with EXITFREE to avoid false warnings.
+! # This will make testing about 10 times as slow.
+! # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=15 --log-file=valgrind.$*
+
+ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
+ test7.out test8.out test9.out test10.out test11.out \
+*** ../vim-7.2.216/src/version.c 2009-06-24 17:51:01.000000000 +0200
+--- src/version.c 2009-06-24 18:07:07.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 217,
+ /**/
+
+--
+A day without sunshine is like, well, night.
+
+ /// 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.218 b/source/ap/vim/patches/7.2.218
new file mode 100644
index 000000000..b48d7180b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.218
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.218
+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.218
+Problem: Cannot build GTK with hangul_input feature. (Dominique Pelle)
+Solution: Adjuste #ifdef. (SungHyun Nam)
+Files: src/gui.c
+
+
+*** ../vim-7.2.217/src/gui.c 2009-06-16 16:01:34.000000000 +0200
+--- src/gui.c 2009-06-24 17:45:01.000000000 +0200
+***************
+*** 959,965 ****
+ guicolor_T fg, bg;
+
+ if (
+! # ifdef HAVE_GTK2
+ preedit_get_status()
+ # else
+ im_get_status()
+--- 959,965 ----
+ guicolor_T fg, bg;
+
+ if (
+! # if defined(HAVE_GTK2) && !defined(FEAT_HANGULIN)
+ preedit_get_status()
+ # else
+ im_get_status()
+*** ../vim-7.2.217/src/version.c 2009-06-24 18:07:55.000000000 +0200
+--- src/version.c 2009-06-24 18:31:06.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 218,
+ /**/
+
+--
+The users that I support would double-click on a landmine to find out
+what happens. -- A system administrator
+
+ /// 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.219 b/source/ap/vim/patches/7.2.219
new file mode 100644
index 000000000..f9bbec04d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.219
@@ -0,0 +1,71 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.219 (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.219 (extra)
+Problem: Photon GUI is outdated.
+Solution: Updates for QNX 6.4.0. (Sean Boudreau)
+Files: src/gui_photon.c
+
+
+*** ../vim-7.2.218/src/gui_photon.c 2007-05-10 20:23:35.000000000 +0200
+--- src/gui_photon.c 2009-07-01 16:08:36.000000000 +0200
+***************
+*** 838,844 ****
+--- 838,849 ----
+ static void
+ gui_ph_draw_start( void )
+ {
++ PhGC_t *gc;
++
++ gc = PgGetGC();
+ PgSetRegion( PtWidgetRid( PtFindDisjoint( gui.vimTextArea ) ) );
++ PgClearClippingsCx( gc );
++ PgClearTranslationCx( gc );
+
+ PtWidgetOffset( gui.vimTextArea, &gui_ph_raw_offset );
+ PhTranslatePoint( &gui_ph_raw_offset, PtWidgetPos( gui.vimTextArea, NULL ) );
+***************
+*** 2970,2976 ****
+ if( vim_font_name == NULL )
+ {
+ /* Default font */
+! vim_font_name = "PC Term";
+ }
+
+ if( STRCMP( vim_font_name, "*" ) == 0 )
+--- 2975,2981 ----
+ if( vim_font_name == NULL )
+ {
+ /* Default font */
+! vim_font_name = "PC Terminal";
+ }
+
+ if( STRCMP( vim_font_name, "*" ) == 0 )
+*** ../vim-7.2.218/src/version.c 2009-06-24 18:31:36.000000000 +0200
+--- src/version.c 2009-07-01 16:11:34.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 219,
+ /**/
+
+--
+"Oh, no! NOT the Spanish Inquisition!"
+"NOBODY expects the Spanish Inquisition!!!"
+ -- Monty Python sketch --
+"Oh, no! NOT another option!"
+"EVERYBODY expects another option!!!"
+ -- Discussion in vim-dev mailing list --
+
+ /// 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.220 b/source/ap/vim/patches/7.2.220
new file mode 100644
index 000000000..b3d63f35f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.220
@@ -0,0 +1,95 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.220
+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.220 (after 7.2.215)
+Problem: a BufEnter autocommand that changes directory causes problems.
+ (Ajit Thakkar)
+Solution: Disable autocommands when opening a hidden buffer in a window.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.219/src/fileio.c 2009-06-24 17:31:27.000000000 +0200
+--- src/fileio.c 2009-07-01 17:02:46.000000000 +0200
+***************
+*** 8441,8453 ****
+ win_init_empty(aucmd_win); /* set cursor and topline to safe values */
+
+ #ifdef FEAT_WINDOWS
+! /* Split the current window, put the aucmd_win in the upper half. */
+ make_snapshot(SNAP_AUCMD_IDX);
+ save_ea = p_ea;
+ p_ea = FALSE;
+ (void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
+ (void)win_comp_pos(); /* recompute window positions */
+ p_ea = save_ea;
+ #endif
+ curwin = aucmd_win;
+ }
+--- 8441,8456 ----
+ win_init_empty(aucmd_win); /* set cursor and topline to safe values */
+
+ #ifdef FEAT_WINDOWS
+! /* Split the current window, put the aucmd_win in the upper half.
+! * We don't want the BufEnter or WinEnter autocommands. */
+! block_autocmds();
+ make_snapshot(SNAP_AUCMD_IDX);
+ save_ea = p_ea;
+ p_ea = FALSE;
+ (void)win_split_ins(0, WSP_TOP, aucmd_win, 0);
+ (void)win_comp_pos(); /* recompute window positions */
+ p_ea = save_ea;
++ unblock_autocmds();
+ #endif
+ curwin = aucmd_win;
+ }
+***************
+*** 8474,8480 ****
+ --curbuf->b_nwindows;
+ #ifdef FEAT_WINDOWS
+ /* Find "aucmd_win", it can't be closed, but it may be in another tab
+! * page. */
+ if (curwin != aucmd_win)
+ {
+ tabpage_T *tp;
+--- 8477,8484 ----
+ --curbuf->b_nwindows;
+ #ifdef FEAT_WINDOWS
+ /* Find "aucmd_win", it can't be closed, but it may be in another tab
+! * page. Do not trigger autocommands here. */
+! block_autocmds();
+ if (curwin != aucmd_win)
+ {
+ tabpage_T *tp;
+***************
+*** 8498,8503 ****
+--- 8502,8508 ----
+ last_status(FALSE); /* may need to remove last status line */
+ restore_snapshot(SNAP_AUCMD_IDX, FALSE);
+ (void)win_comp_pos(); /* recompute window positions */
++ unblock_autocmds();
+
+ if (win_valid(aco->save_curwin))
+ curwin = aco->save_curwin;
+*** ../vim-7.2.219/src/version.c 2009-07-01 16:12:54.000000000 +0200
+--- src/version.c 2009-07-01 17:10:22.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 220,
+ /**/
+
+--
+Microsoft is to software what McDonalds is to gourmet cooking
+
+ /// 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.221 b/source/ap/vim/patches/7.2.221
new file mode 100644
index 000000000..3c6180e3c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.221
@@ -0,0 +1,247 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.221
+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.221
+Problem: X cut_buffer0 text is used as-is, it may be in the wrong encoding.
+Solution: Convert between 'enc' and latin1. (James Vega)
+Files: src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro,
+ src/ui.c
+
+
+*** ../vim-7.2.220/src/gui_gtk_x11.c 2009-06-16 15:23:07.000000000 +0200
+--- src/gui_gtk_x11.c 2009-07-01 11:55:34.000000000 +0200
+***************
+*** 6717,6724 ****
+ {
+ GdkAtom target;
+ unsigned i;
+- int nbytes;
+- char_u *buffer;
+ time_t start;
+
+ for (i = 0; i < N_SELECTION_TARGETS; ++i)
+--- 6717,6722 ----
+***************
+*** 6746,6767 ****
+ }
+
+ /* Final fallback position - use the X CUT_BUFFER0 store */
+! nbytes = 0;
+! buffer = (char_u *)XFetchBuffer(GDK_WINDOW_XDISPLAY(gui.mainwin->window),
+! &nbytes, 0);
+! if (nbytes > 0)
+! {
+! /* Got something */
+! clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
+! if (p_verbose > 0)
+! {
+! verbose_enter();
+! smsg((char_u *)_("Used CUT_BUFFER0 instead of empty selection"));
+! verbose_leave();
+! }
+! }
+! if (buffer != NULL)
+! XFree(buffer);
+ }
+
+ /*
+--- 6744,6750 ----
+ }
+
+ /* Final fallback position - use the X CUT_BUFFER0 store */
+! yank_cut_buffer0(GDK_WINDOW_XDISPLAY(gui.mainwin->window), cbd);
+ }
+
+ /*
+*** ../vim-7.2.220/src/message.c 2009-05-17 13:30:58.000000000 +0200
+--- src/message.c 2009-07-01 16:43:08.000000000 +0200
+***************
+*** 107,113 ****
+ }
+
+ #if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \
+! || defined(PROTO)
+ /*
+ * Like msg() but keep it silent when 'verbosefile' is set.
+ */
+--- 107,113 ----
+ }
+
+ #if defined(FEAT_EVAL) || defined(FEAT_X11) || defined(USE_XSMP) \
+! || defined(FEAT_GUI_GTK) || defined(PROTO)
+ /*
+ * Like msg() but keep it silent when 'verbosefile' is set.
+ */
+*** ../vim-7.2.220/src/ops.c 2009-05-26 18:12:13.000000000 +0200
+--- src/ops.c 2009-07-01 12:15:31.000000000 +0200
+***************
+*** 5591,5596 ****
+--- 5591,5619 ----
+ if (dpy != NULL && str != NULL && motion_type >= 0
+ && len < 1024*1024 && len > 0)
+ {
++ #ifdef FEAT_MBYTE
++ /* The CUT_BUFFER0 is supposed to always contain latin1. Convert from
++ * 'enc' when it is a multi-byte encoding. When 'enc' is an 8-bit
++ * encoding conversion usually doesn't work, so keep the text as-is.
++ */
++ 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)
++ {
++ conv_str = string_convert(&vc, str, (int*)&len);
++ if (conv_str != NULL)
++ {
++ vim_free(str);
++ str = conv_str;
++ }
++ convert_setup(&vc, NULL, NULL);
++ }
++ }
++ #endif
+ XStoreBuffer(dpy, (char *)str, (int)len, 0);
+ XFlush(dpy);
+ }
+*** ../vim-7.2.220/src/proto/ui.pro 2007-05-05 19:58:49.000000000 +0200
+--- src/proto/ui.pro 2009-07-01 11:48:11.000000000 +0200
+***************
+*** 48,53 ****
+--- 48,54 ----
+ void open_app_context __ARGS((void));
+ void x11_setup_atoms __ARGS((Display *dpy));
+ void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
++ void yank_cut_buffer0 __ARGS((Display *dpy, VimClipboard *cbd));
+ void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
+ int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
+ void clip_x11_set_selection __ARGS((VimClipboard *cbd));
+*** ../vim-7.2.220/src/ui.c 2009-05-17 13:30:58.000000000 +0200
+--- src/ui.c 2009-07-01 15:44:07.000000000 +0200
+***************
+*** 2104,2111 ****
+ Atom type;
+ static int success;
+ int i;
+- int nbytes = 0;
+- char_u *buffer;
+ time_t start_time;
+ int timed_out = FALSE;
+
+--- 2104,2109 ----
+***************
+*** 2185,2199 ****
+ }
+
+ /* Final fallback position - use the X CUT_BUFFER0 store */
+! buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0);
+! if (nbytes > 0)
+! {
+! /* Got something */
+! clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
+! XFree((void *)buffer);
+! if (p_verbose > 0)
+! verb_msg((char_u *)_("Used CUT_BUFFER0 instead of empty selection"));
+! }
+ }
+
+ static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
+--- 2183,2189 ----
+ }
+
+ /* Final fallback position - use the X CUT_BUFFER0 store */
+! yank_cut_buffer0(dpy, cbd);
+ }
+
+ static Boolean clip_x11_convert_selection_cb __ARGS((Widget, Atom *, Atom *, Atom *, XtPointer *, long_u *, int *));
+***************
+*** 2369,2374 ****
+--- 2359,2418 ----
+ }
+ #endif
+
++ #if defined(FEAT_XCLIPBOARD) || defined(FEAT_GUI_X11) \
++ || defined(FEAT_GUI_GTK) || defined(PROTO)
++ /*
++ * Get the contents of the X CUT_BUFFER0 and put it in "cbd".
++ */
++ void
++ yank_cut_buffer0(dpy, cbd)
++ Display *dpy;
++ VimClipboard *cbd;
++ {
++ int nbytes = 0;
++ char_u *buffer = (char_u *)XFetchBuffer(dpy, &nbytes, 0);
++
++ if (nbytes > 0)
++ {
++ #ifdef FEAT_MBYTE
++ int done = FALSE;
++
++ /* CUT_BUFFER0 is supposed to be always latin1. Convert to 'enc' when
++ * using a multi-byte encoding. Conversion between two 8-bit
++ * character sets usually fails and the text might actually be in
++ * 'enc' anyway. */
++ if (has_mbyte)
++ {
++ char_u *conv_buf = buffer;
++ vimconv_T vc;
++
++ vc.vc_type = CONV_NONE;
++ if (convert_setup(&vc, (char_u *)"latin1", p_enc) == OK)
++ {
++ conv_buf = string_convert(&vc, buffer, &nbytes);
++ if (conv_buf != NULL)
++ {
++ clip_yank_selection(MCHAR, conv_buf, (long)nbytes, cbd);
++ vim_free(conv_buf);
++ done = TRUE;
++ }
++ convert_setup(&vc, NULL, NULL);
++ }
++ }
++ if (!done) /* use the text without conversion */
++ #endif
++ clip_yank_selection(MCHAR, buffer, (long)nbytes, cbd);
++ XFree((void *)buffer);
++ if (p_verbose > 0)
++ {
++ verbose_enter();
++ verb_msg((char_u *)_("Used CUT_BUFFER0 instead of empty selection"));
++ verbose_leave();
++ }
++ }
++ }
++ #endif
++
+ #if defined(FEAT_MOUSE) || defined(PROTO)
+
+ /*
+*** ../vim-7.2.220/src/version.c 2009-07-01 17:11:40.000000000 +0200
+--- src/version.c 2009-07-01 17:56:02.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 221,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+40. You tell the cab driver you live at
+ http://123.elm.street/house/bluetrim.html
+41. You actually try that 123.elm.street 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.222 b/source/ap/vim/patches/7.2.222
new file mode 100644
index 000000000..dcf0b36c6
--- /dev/null
+++ b/source/ap/vim/patches/7.2.222
@@ -0,0 +1,59 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.222
+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.222
+Problem: ":mksession" doesn't work properly with 'acd' set.
+Solution: Make it work. (Yakov Lerner)
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.221/src/ex_docmd.c 2009-05-16 17:29:37.000000000 +0200
+--- src/ex_docmd.c 2009-07-01 20:18:22.000000000 +0200
+***************
+*** 8686,8691 ****
+--- 8693,8700 ----
+ }
+
+ #ifdef FEAT_SESSION
++ /* Use the short file name until ":lcd" is used. We also don't use the
++ * short file name when 'acd' is set, that is checked later. */
+ did_lcd = FALSE;
+
+ /* ":mkview" or ":mkview 9": generate file name with 'viewdir' */
+***************
+*** 10573,10578 ****
+--- 10582,10590 ----
+ if (buf->b_sfname != NULL
+ && flagp == &ssop_flags
+ && (ssop_flags & (SSOP_CURDIR | SSOP_SESDIR))
++ #ifdef FEAT_AUTOCHDIR
++ && !p_acd
++ #endif
+ && !did_lcd)
+ name = buf->b_sfname;
+ else
+*** ../vim-7.2.221/src/version.c 2009-07-01 18:04:30.000000000 +0200
+--- src/version.c 2009-07-01 20:16:19.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 222,
+ /**/
+
+--
+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.223 b/source/ap/vim/patches/7.2.223
new file mode 100644
index 000000000..cac2126cf
--- /dev/null
+++ b/source/ap/vim/patches/7.2.223
@@ -0,0 +1,165 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.223
+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.223
+Problem: When a script is run with ":silent" it is not able to give warning
+ messages.
+Solution: Add the ":unsilent" command.
+Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c
+
+
+*** ../vim-7.2.222/runtime/doc/various.txt 2008-08-09 19:36:54.000000000 +0200
+--- runtime/doc/various.txt 2009-07-09 15:52:54.000000000 +0200
+***************
+*** 508,513 ****
+--- 508,524 ----
+ messages though. Use ":silent" in the command itself
+ to avoid that: ":silent menu .... :silent command".
+
++ *:uns* *:unsilent*
++ :uns[ilent] {command} Execute {command} not silently. Only makes a
++ difference when |:silent| was used to get to this
++ command.
++ Use this for giving a message even when |:silent| was
++ used. In this example |:silent| is used to avoid the
++ message about reading the file and |:unsilent| to be
++ able to list the first line of each file. >
++ :silent argdo unsilent echo expand('%') . ": " . getline(1)
++ <
++
+ *:verb* *:verbose*
+ :[count]verb[ose] {command}
+ Execute {command} with 'verbose' set to [count]. If
+*** ../vim-7.2.222/src/ex_cmds.h 2008-11-09 13:43:25.000000000 +0100
+--- src/ex_cmds.h 2009-07-01 18:12:55.000000000 +0200
+***************
+*** 991,996 ****
+--- 991,998 ----
+ BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
+ EX(CMD_unmenu, "unmenu", ex_menu,
+ BANG|EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
++ EX(CMD_unsilent, "unsilent", ex_wrongmodifier,
++ NEEDARG|EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
+ EX(CMD_update, "update", ex_update,
+ RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR),
+ EX(CMD_vglobal, "vglobal", ex_global,
+*** ../vim-7.2.222/src/ex_docmd.c 2009-07-01 20:18:43.000000000 +0200
+--- src/ex_docmd.c 2009-07-09 15:24:03.000000000 +0200
+***************
+*** 1677,1684 ****
+ char_u *errormsg = NULL; /* error message */
+ exarg_T ea; /* Ex command arguments */
+ long verbose_save = -1;
+! int save_msg_scroll = 0;
+! int did_silent = 0;
+ int did_esilent = 0;
+ #ifdef HAVE_SANDBOX
+ int did_sandbox = FALSE;
+--- 1677,1684 ----
+ char_u *errormsg = NULL; /* error message */
+ exarg_T ea; /* Ex command arguments */
+ long verbose_save = -1;
+! int save_msg_scroll = msg_scroll;
+! int save_msg_silent = -1;
+ int did_esilent = 0;
+ #ifdef HAVE_SANDBOX
+ int did_sandbox = FALSE;
+***************
+*** 1856,1864 ****
+ }
+ if (!checkforcmd(&ea.cmd, "silent", 3))
+ break;
+! ++did_silent;
+ ++msg_silent;
+- save_msg_scroll = msg_scroll;
+ if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1]))
+ {
+ /* ":silent!", but not "silent !cmd" */
+--- 1856,1864 ----
+ }
+ if (!checkforcmd(&ea.cmd, "silent", 3))
+ break;
+! if (save_msg_silent == -1)
+! save_msg_silent = msg_silent;
+ ++msg_silent;
+ if (*ea.cmd == '!' && !vim_iswhite(ea.cmd[-1]))
+ {
+ /* ":silent!", but not "silent !cmd" */
+***************
+*** 1886,1891 ****
+--- 1886,1898 ----
+ #endif
+ continue;
+
++ case 'u': if (!checkforcmd(&ea.cmd, "unsilent", 3))
++ break;
++ if (save_msg_silent == -1)
++ save_msg_silent = msg_silent;
++ msg_silent = 0;
++ continue;
++
+ case 'v': if (checkforcmd(&ea.cmd, "vertical", 4))
+ {
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 2684,2696 ****
+
+ cmdmod = save_cmdmod;
+
+! if (did_silent > 0)
+ {
+ /* messages could be enabled for a serious error, need to check if the
+ * counters don't become negative */
+! msg_silent -= did_silent;
+! if (msg_silent < 0)
+! msg_silent = 0;
+ emsg_silent -= did_esilent;
+ if (emsg_silent < 0)
+ emsg_silent = 0;
+--- 2691,2702 ----
+
+ cmdmod = save_cmdmod;
+
+! if (save_msg_silent != -1)
+ {
+ /* 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)
+ emsg_silent = 0;
+***************
+*** 2987,2992 ****
+--- 2993,2999 ----
+ {"silent", 3, FALSE},
+ {"tab", 3, TRUE},
+ {"topleft", 2, FALSE},
++ {"unsilent", 3, FALSE},
+ {"verbose", 4, TRUE},
+ {"vertical", 4, FALSE},
+ };
+*** ../vim-7.2.222/src/version.c 2009-07-01 20:18:43.000000000 +0200
+--- src/version.c 2009-07-09 15:53:05.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 223,
+ /**/
+
+--
+Q: How many legs does a giraffe have?
+A: Eight: two in front, two behind, two on the left and two on the right
+
+ /// 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.224 b/source/ap/vim/patches/7.2.224
new file mode 100644
index 000000000..d988eedad
--- /dev/null
+++ b/source/ap/vim/patches/7.2.224
@@ -0,0 +1,88 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.224
+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.224
+Problem: Crash when using 'completefunc'. (Ingo Karkat)
+Solution: Disallow entering edit() recursively when doing completion.
+Files: src/edit.c
+
+
+*** ../vim-7.2.223/src/edit.c 2009-05-26 11:01:43.000000000 +0200
+--- src/edit.c 2009-07-09 18:01:49.000000000 +0200
+***************
+*** 114,119 ****
+--- 114,123 ----
+ * FALSE the word to be completed must be located. */
+ static int compl_started = FALSE;
+
++ /* Set when doing something for completion that may call edit() recursively,
++ * which is not allowed. */
++ static int compl_busy = FALSE;
++
+ static int compl_matches = 0;
+ static char_u *compl_pattern = NULL;
+ static int compl_direction = FORWARD;
+***************
+*** 346,352 ****
+
+ #ifdef FEAT_INS_EXPAND
+ /* Don't allow recursive insert mode when busy with completion. */
+! if (compl_started || pum_visible())
+ {
+ EMSG(_(e_secure));
+ return FALSE;
+--- 350,356 ----
+
+ #ifdef FEAT_INS_EXPAND
+ /* Don't allow recursive insert mode when busy with completion. */
+! if (compl_started || compl_busy || pum_visible())
+ {
+ EMSG(_(e_secure));
+ return FALSE;
+***************
+*** 1340,1347 ****
+--- 1344,1353 ----
+ goto normalchar;
+
+ docomplete:
++ compl_busy = TRUE;
+ if (ins_complete(c) == FAIL)
+ compl_cont_status = 0;
++ compl_busy = FALSE;
+ break;
+ #endif /* FEAT_INS_EXPAND */
+
+***************
+*** 3172,3177 ****
+--- 3178,3184 ----
+ vim_free(match);
+ } while (compl_curr_match != NULL && compl_curr_match != compl_first_match);
+ compl_first_match = compl_curr_match = NULL;
++ compl_shown_match = NULL;
+ }
+
+ static void
+*** ../vim-7.2.223/src/version.c 2009-07-09 15:55:34.000000000 +0200
+--- src/version.c 2009-07-09 18:14:16.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 224,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+77. The phone company asks you to test drive their new PBX 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.225 b/source/ap/vim/patches/7.2.225
new file mode 100644
index 000000000..32a4d357b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.225
@@ -0,0 +1,97 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.225
+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.225
+Problem: When using ":normal" a saved character may be executed.
+Solution: Also store old_char when saving typeahead.
+Files: src/getchar.c, src/structs.h
+
+
+*** ../vim-7.2.224/src/getchar.c 2009-02-22 23:42:08.000000000 +0100
+--- src/getchar.c 2009-07-09 18:09:13.000000000 +0200
+***************
+*** 1309,1314 ****
+--- 1309,1317 ----
+ return OK;
+ }
+
++ static int old_char = -1; /* character put back by vungetc() */
++ static int old_mod_mask; /* mod_mask for ungotten character */
++
+ #if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO)
+
+ /*
+***************
+*** 1323,1328 ****
+--- 1326,1335 ----
+ if (!tp->typebuf_valid)
+ typebuf = tp->save_typebuf;
+
++ tp->old_char = old_char;
++ tp->old_mod_mask = old_mod_mask;
++ old_char = -1;
++
+ tp->save_stuffbuff = stuffbuff;
+ stuffbuff.bh_first.b_next = NULL;
+ # ifdef USE_INPUT_BUF
+***************
+*** 1344,1349 ****
+--- 1351,1359 ----
+ typebuf = tp->save_typebuf;
+ }
+
++ old_char = tp->old_char;
++ old_mod_mask = tp->old_mod_mask;
++
+ free_buff(&stuffbuff);
+ stuffbuff = tp->save_stuffbuff;
+ # ifdef USE_INPUT_BUF
+***************
+*** 1499,1507 ****
+ #define KL_PART_KEY -1 /* keylen value for incomplete key-code */
+ #define KL_PART_MAP -2 /* keylen value for incomplete mapping */
+
+- static int old_char = -1; /* character put back by vungetc() */
+- static int old_mod_mask; /* mod_mask for ungotten character */
+-
+ /*
+ * Get the next input character.
+ * Can return a special key or a multi-byte character.
+--- 1509,1514 ----
+*** ../vim-7.2.224/src/structs.h 2009-06-16 16:01:34.000000000 +0200
+--- src/structs.h 2009-07-09 18:09:20.000000000 +0200
+***************
+*** 882,887 ****
+--- 882,889 ----
+ {
+ typebuf_T save_typebuf;
+ int typebuf_valid; /* TRUE when save_typebuf valid */
++ int old_char;
++ int old_mod_mask;
+ struct buffheader save_stuffbuff;
+ #ifdef USE_INPUT_BUF
+ char_u *save_inputbuf;
+*** ../vim-7.2.224/src/version.c 2009-07-09 18:15:19.000000000 +0200
+--- src/version.c 2009-07-09 18:21:56.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 225,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+78. You find yourself dialing IP numbers on the 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.226 b/source/ap/vim/patches/7.2.226
new file mode 100644
index 000000000..d922a080f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.226
@@ -0,0 +1,268 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.226
+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.226
+Problem: ml_get error after deleting the last line. (Xavier de Gaye)
+Solution: When adjusting marks a callback may be invoked. Adjust the cursor
+ position before invoking deleted_lines_mark().
+Files: src/ex_cmds.c, src/ex_docmd.c, src/if_mzsch.c, src/if_python.c,
+ src/if_perl.xs, src/misc1.c
+
+
+*** ../vim-7.2.225/src/ex_cmds.c 2009-05-17 13:30:58.000000000 +0200
+--- src/ex_cmds.c 2009-07-09 12:56:51.000000000 +0200
+***************
+*** 4013,4018 ****
+--- 4013,4021 ----
+ break;
+ ml_delete(eap->line1, FALSE);
+ }
++
++ /* make sure the cursor is not beyond the end of the file now */
++ check_cursor_lnum();
+ deleted_lines_mark(eap->line1, (long)(eap->line2 - lnum));
+
+ /* ":append" on the line above the deleted lines. */
+*** ../vim-7.2.225/src/ex_docmd.c 2009-07-09 15:55:34.000000000 +0200
+--- src/ex_docmd.c 2009-07-09 15:24:03.000000000 +0200
+***************
+*** 7845,7854 ****
+ if (*ml_get(lnum) == NUL && u_savedel(lnum, 1L) == OK)
+ {
+ ml_delete(lnum, FALSE);
+- deleted_lines_mark(lnum, 1L);
+ if (curwin->w_cursor.lnum > 1
+ && curwin->w_cursor.lnum >= lnum)
+ --curwin->w_cursor.lnum;
+ }
+ }
+ redraw_curbuf_later(VALID);
+--- 7845,7854 ----
+ if (*ml_get(lnum) == NUL && u_savedel(lnum, 1L) == OK)
+ {
+ ml_delete(lnum, FALSE);
+ if (curwin->w_cursor.lnum > 1
+ && curwin->w_cursor.lnum >= lnum)
+ --curwin->w_cursor.lnum;
++ deleted_lines_mark(lnum, 1L);
+ }
+ }
+ redraw_curbuf_later(VALID);
+*** ../vim-7.2.225/src/if_mzsch.c 2009-06-24 17:51:01.000000000 +0200
+--- src/if_mzsch.c 2009-07-09 12:59:17.000000000 +0200
+***************
+*** 2169,2177 ****
+ curbuf = savebuf;
+ raise_vim_exn(_("cannot delete line"));
+ }
+- deleted_lines_mark((linenr_T)n, 1L);
+ if (buf->buf == curwin->w_buffer)
+ mz_fix_cursor(n, n + 1, -1);
+
+ curbuf = savebuf;
+
+--- 2169,2177 ----
+ curbuf = savebuf;
+ raise_vim_exn(_("cannot delete line"));
+ }
+ if (buf->buf == curwin->w_buffer)
+ mz_fix_cursor(n, n + 1, -1);
++ deleted_lines_mark((linenr_T)n, 1L);
+
+ curbuf = savebuf;
+
+***************
+*** 2299,2307 ****
+ curbuf = savebuf;
+ raise_vim_exn(_("cannot delete line"));
+ }
+- deleted_lines_mark((linenr_T)lo, (long)old_len);
+ if (buf->buf == curwin->w_buffer)
+ mz_fix_cursor(lo, hi, -old_len);
+ }
+
+ curbuf = savebuf;
+--- 2299,2307 ----
+ curbuf = savebuf;
+ raise_vim_exn(_("cannot delete line"));
+ }
+ if (buf->buf == curwin->w_buffer)
+ mz_fix_cursor(lo, hi, -old_len);
++ deleted_lines_mark((linenr_T)lo, (long)old_len);
+ }
+
+ curbuf = savebuf;
+*** ../vim-7.2.225/src/if_python.c 2009-05-21 23:25:38.000000000 +0200
+--- src/if_python.c 2009-07-09 12:59:45.000000000 +0200
+***************
+*** 2497,2505 ****
+ PyErr_SetVim(_("cannot delete line"));
+ else
+ {
+- deleted_lines_mark((linenr_T)n, 1L);
+ if (buf == curwin->w_buffer)
+ py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
+ }
+
+ curbuf = savebuf;
+--- 2497,2505 ----
+ PyErr_SetVim(_("cannot delete line"));
+ else
+ {
+ if (buf == curwin->w_buffer)
+ py_fix_cursor((linenr_T)n, (linenr_T)n + 1, (linenr_T)-1);
++ deleted_lines_mark((linenr_T)n, 1L);
+ }
+
+ curbuf = savebuf;
+***************
+*** 2596,2605 ****
+ break;
+ }
+ }
+- deleted_lines_mark((linenr_T)lo, (long)i);
+-
+ if (buf == curwin->w_buffer)
+ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
+ }
+
+ curbuf = savebuf;
+--- 2596,2604 ----
+ break;
+ }
+ }
+ if (buf == curwin->w_buffer)
+ py_fix_cursor((linenr_T)lo, (linenr_T)hi, (linenr_T)-n);
++ deleted_lines_mark((linenr_T)lo, (long)i);
+ }
+
+ curbuf = savebuf;
+*** ../vim-7.2.225/src/if_perl.xs 2009-06-16 16:01:34.000000000 +0200
+--- src/if_perl.xs 2009-07-09 13:02:16.000000000 +0200
+***************
+*** 1233,1241 ****
+ if (u_savedel(lnum, 1) == OK)
+ {
+ ml_delete(lnum, 0);
+ deleted_lines_mark(lnum, 1L);
+- if (aco.save_curbuf == curbuf)
+- check_cursor();
+ }
+
+ /* restore curwin/curbuf and a few other things */
+--- 1235,1242 ----
+ if (u_savedel(lnum, 1) == OK)
+ {
+ ml_delete(lnum, 0);
++ check_cursor();
+ deleted_lines_mark(lnum, 1L);
+ }
+
+ /* restore curwin/curbuf and a few other things */
+*** ../vim-7.2.225/src/misc1.c 2009-06-24 16:25:23.000000000 +0200
+--- src/misc1.c 2009-07-09 13:00:59.000000000 +0200
+***************
+*** 2345,2356 ****
+ int undo; /* if TRUE, prepare for undo */
+ {
+ long n;
+
+ if (nlines <= 0)
+ return;
+
+ /* save the deleted lines for undo */
+! if (undo && u_savedel(curwin->w_cursor.lnum, nlines) == FAIL)
+ return;
+
+ for (n = 0; n < nlines; )
+--- 2345,2357 ----
+ int undo; /* if TRUE, prepare for undo */
+ {
+ long n;
++ linenr_T first = curwin->w_cursor.lnum;
+
+ if (nlines <= 0)
+ return;
+
+ /* save the deleted lines for undo */
+! if (undo && u_savedel(first, nlines) == FAIL)
+ return;
+
+ for (n = 0; n < nlines; )
+***************
+*** 2358,2375 ****
+ if (curbuf->b_ml.ml_flags & ML_EMPTY) /* nothing to delete */
+ break;
+
+! ml_delete(curwin->w_cursor.lnum, TRUE);
+ ++n;
+
+ /* If we delete the last line in the file, stop */
+! if (curwin->w_cursor.lnum > curbuf->b_ml.ml_line_count)
+ break;
+ }
+- /* adjust marks, mark the buffer as changed and prepare for displaying */
+- deleted_lines_mark(curwin->w_cursor.lnum, n);
+
+ curwin->w_cursor.col = 0;
+ check_cursor_lnum();
+ }
+
+ int
+--- 2359,2379 ----
+ if (curbuf->b_ml.ml_flags & ML_EMPTY) /* nothing to delete */
+ break;
+
+! ml_delete(first, TRUE);
+ ++n;
+
+ /* If we delete the last line in the file, stop */
+! if (first > curbuf->b_ml.ml_line_count)
+ break;
+ }
+
++ /* Correct the cursor position before calling deleted_lines_mark(), it may
++ * trigger a callback to display the cursor. */
+ curwin->w_cursor.col = 0;
+ check_cursor_lnum();
++
++ /* adjust marks, mark the buffer as changed and prepare for displaying */
++ deleted_lines_mark(first, n);
+ }
+
+ int
+***************
+*** 2621,2626 ****
+--- 2625,2632 ----
+
+ /*
+ * Like deleted_lines(), but adjust marks first.
++ * Make sure the cursor is on a valid line before calling, a GUI callback may
++ * be triggered to display the cursor.
+ */
+ void
+ deleted_lines_mark(lnum, count)
+*** ../vim-7.2.225/src/version.c 2009-07-09 18:24:24.000000000 +0200
+--- src/version.c 2009-07-09 20:01:16.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 226,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+80. At parties, you introduce your spouse as your "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.227 b/source/ap/vim/patches/7.2.227
new file mode 100644
index 000000000..84992128c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.227
@@ -0,0 +1,52 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.227
+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.227
+Problem: When using ":cd" in a script there is no way to track this.
+Solution: Display the directory when 'verbose' is 5 or higher.
+Files: src/ex_docmd.c
+
+
+*** ../vim-7.2.226/src/ex_docmd.c 2009-07-09 20:06:30.000000000 +0200
+--- src/ex_docmd.c 2009-07-09 15:24:03.000000000 +0200
+***************
+*** 7964,7970 ****
+ shorten_fnames(TRUE);
+
+ /* Echo the new current directory if the command was typed. */
+! if (KeyTyped)
+ ex_pwd(eap);
+ }
+ vim_free(tofree);
+--- 7964,7970 ----
+ shorten_fnames(TRUE);
+
+ /* Echo the new current directory if the command was typed. */
+! if (KeyTyped || p_verbose >= 5)
+ ex_pwd(eap);
+ }
+ vim_free(tofree);
+*** ../vim-7.2.226/src/version.c 2009-07-09 20:06:30.000000000 +0200
+--- src/version.c 2009-07-09 20:13:13.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 227,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+83. Batteries in the TV remote now last for 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.228 b/source/ap/vim/patches/7.2.228
new file mode 100644
index 000000000..a906bef40
--- /dev/null
+++ b/source/ap/vim/patches/7.2.228
@@ -0,0 +1,573 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.228
+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.228
+Problem: Cscope is limited to 8 connections.
+Solution: Allocated the connection array to handle any number of
+ connections. (Dominique Pelle)
+Files: runtime/doc/if_cscop.txt, src/if_cscope.h, src/if_cscope.c
+
+
+*** ../vim-7.2.227/runtime/doc/if_cscop.txt 2009-03-18 14:30:46.000000000 +0100
+--- runtime/doc/if_cscop.txt 2009-07-09 15:40:48.000000000 +0200
+***************
+*** 355,367 ****
+ The DJGPP-built version from http://cscope.sourceforge.net is known to not
+ work with Vim.
+
+! There are a couple of hard-coded limitations:
+!
+! 1. The maximum number of cscope connections allowed is 8. Do you
+! really need more?
+!
+! 2. Doing a |:tjump| when |:cstag| searches the tag files is not
+! configurable (e.g., you can't do a tselect instead).
+
+ ==============================================================================
+ 6. Suggested usage *cscope-suggestions*
+--- 355,362 ----
+ The DJGPP-built version from http://cscope.sourceforge.net is known to not
+ work with Vim.
+
+! Hard-coded limitation: doing a |:tjump| when |:cstag| searches the tag files
+! is not configurable (e.g., you can't do a tselect instead).
+
+ ==============================================================================
+ 6. Suggested usage *cscope-suggestions*
+*** ../vim-7.2.227/src/if_cscope.h 2008-08-25 04:35:13.000000000 +0200
+--- src/if_cscope.h 2009-07-09 15:39:32.000000000 +0200
+***************
+*** 25,31 ****
+
+ #define CSCOPE_SUCCESS 0
+ #define CSCOPE_FAILURE -1
+- #define CSCOPE_MAX_CONNECTIONS 8 /* you actually need more? */
+
+ #define CSCOPE_DBFILE "cscope.out"
+ #define CSCOPE_PROMPT ">> "
+--- 25,30 ----
+*** ../vim-7.2.227/src/if_cscope.c 2009-05-16 17:29:37.000000000 +0200
+--- src/if_cscope.c 2009-07-09 15:39:32.000000000 +0200
+***************
+*** 46,52 ****
+ static int cs_find __ARGS((exarg_T *eap));
+ static int cs_find_common __ARGS((char *opt, char *pat, int, int, int));
+ static int cs_help __ARGS((exarg_T *eap));
+- static void cs_init __ARGS((void));
+ static void clear_csinfo __ARGS((int i));
+ static int cs_insert_filelist __ARGS((char *, char *, char *,
+ struct stat *));
+--- 46,51 ----
+***************
+*** 66,72 ****
+ static int cs_show __ARGS((exarg_T *eap));
+
+
+! static csinfo_T csinfo[CSCOPE_MAX_CONNECTIONS];
+ static int eap_arg_len; /* length of eap->arg, set in
+ cs_lookup_cmd() */
+ static cscmd_T cs_cmds[] =
+--- 65,74 ----
+ static int cs_show __ARGS((exarg_T *eap));
+
+
+! static csinfo_T * csinfo = NULL;
+! static int csinfo_size = 0; /* number of items allocated in
+! csinfo[] */
+!
+ static int eap_arg_len; /* length of eap->arg, set in
+ cs_lookup_cmd() */
+ static cscmd_T cs_cmds[] =
+***************
+*** 144,166 ****
+ }
+ case EXP_CSCOPE_KILL:
+ {
+! static char_u connection[2];
+
+ /* ":cscope kill" accepts connection numbers or partial names of
+ * the pathname of the cscope database as argument. Only complete
+ * with connection numbers. -1 can also be used to kill all
+ * connections. */
+! for (i = 0, current_idx = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+ if (current_idx++ == idx)
+ {
+! /* Connection number fits in one character since
+! * CSCOPE_MAX_CONNECTIONS is < 10 */
+! connection[0] = i + '0';
+! connection[1] = NUL;
+! return connection;
+ }
+ }
+ return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
+--- 146,165 ----
+ }
+ case EXP_CSCOPE_KILL:
+ {
+! static char connection[5];
+
+ /* ":cscope kill" accepts connection numbers or partial names of
+ * the pathname of the cscope database as argument. Only complete
+ * with connection numbers. -1 can also be used to kill all
+ * connections. */
+! for (i = 0, current_idx = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+ if (current_idx++ == idx)
+ {
+! vim_snprintf(connection, sizeof(connection), "%d", i);
+! return (char_u *)connection;
+ }
+ }
+ return (current_idx == idx && idx > 0) ? (char_u *)"-1" : NULL;
+***************
+*** 223,229 ****
+ {
+ cscmd_T *cmdp;
+
+- cs_init();
+ if ((cmdp = cs_lookup_cmd(eap)) == NULL)
+ {
+ cs_help(eap);
+--- 222,227 ----
+***************
+*** 284,291 ****
+ {
+ int ret = FALSE;
+
+- cs_init();
+-
+ if (*eap->arg == NUL)
+ {
+ (void)EMSG(_("E562: Usage: cstag <ident>"));
+--- 282,287 ----
+***************
+*** 441,447 ****
+ if (num < 0 || num > 4 || (num > 0 && !dbpath))
+ return FALSE;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (!csinfo[i].fname)
+ continue;
+--- 437,443 ----
+ if (num < 0 || num > 4 || (num > 0 && !dbpath))
+ return FALSE;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (!csinfo[i].fname)
+ continue;
+***************
+*** 684,690 ****
+ short i;
+ short cnt = 0;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname != NULL)
+ cnt++;
+--- 680,686 ----
+ short i;
+ short cnt = 0;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname != NULL)
+ cnt++;
+***************
+*** 1112,1118 ****
+ {
+ int i;
+ char *cmd;
+! int nummatches[CSCOPE_MAX_CONNECTIONS], totmatches;
+ #ifdef FEAT_QUICKFIX
+ char cmdletter;
+ char *qfpos;
+--- 1108,1115 ----
+ {
+ int i;
+ char *cmd;
+! int *nummatches;
+! int totmatches;
+ #ifdef FEAT_QUICKFIX
+ char cmdletter;
+ char *qfpos;
+***************
+*** 1123,1135 ****
+ if (cmd == NULL)
+ return FALSE;
+
+ /* send query to all open connections, then count the total number
+ * of matches so we can alloc matchesp all in one swell foop
+ */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ nummatches[i] = 0;
+ totmatches = 0;
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL || csinfo[i].to_fp == NULL)
+ continue;
+--- 1120,1136 ----
+ if (cmd == NULL)
+ return FALSE;
+
++ nummatches = (int *)alloc(sizeof(int)*csinfo_size);
++ if (nummatches == NULL)
++ return FALSE;
++
+ /* send query to all open connections, then count the total number
+ * of matches so we can alloc matchesp all in one swell foop
+ */
+! for (i = 0; i < csinfo_size; i++)
+ nummatches[i] = 0;
+ totmatches = 0;
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname == NULL || csinfo[i].to_fp == NULL)
+ continue;
+***************
+*** 1154,1160 ****
+--- 1155,1164 ----
+ char *buf;
+
+ if (!verbose)
++ {
++ vim_free(nummatches);
+ return FALSE;
++ }
+
+ buf = (char *)alloc((unsigned)(strlen(opt) + strlen(pat) + strlen(nf)));
+ if (buf == NULL)
+***************
+*** 1165,1170 ****
+--- 1169,1175 ----
+ (void)EMSG(buf);
+ vim_free(buf);
+ }
++ vim_free(nummatches);
+ return FALSE;
+ }
+
+***************
+*** 1217,1222 ****
+--- 1222,1228 ----
+ (void)EMSG(buf);
+ vim_free(buf);
+ }
++ vim_free(nummatches);
+ return FALSE;
+ }
+ }
+***************
+*** 1264,1269 ****
+--- 1270,1276 ----
+ }
+ mch_remove(tmp);
+ vim_free(tmp);
++ vim_free(nummatches);
+ return TRUE;
+ }
+ else
+***************
+*** 1275,1280 ****
+--- 1282,1288 ----
+ /* read output */
+ cs_fill_results((char *)pat, totmatches, nummatches, &matches,
+ &contexts, &matched);
++ vim_free(nummatches);
+ if (matches == NULL)
+ return FALSE;
+
+***************
+*** 1328,1353 ****
+ } /* cs_help */
+
+
+- /*
+- * PRIVATE: cs_init
+- *
+- * initialize cscope structure if not already
+- */
+- static void
+- cs_init()
+- {
+- short i;
+- static int init_already = FALSE;
+-
+- if (init_already)
+- return;
+-
+- for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+- clear_csinfo(i);
+-
+- init_already = TRUE;
+- } /* cs_init */
+-
+ static void
+ clear_csinfo(i)
+ int i;
+--- 1336,1341 ----
+***************
+*** 1444,1450 ****
+ #endif
+
+ i = -1; /* can be set to the index of an empty item in csinfo */
+! for (j = 0; j < CSCOPE_MAX_CONNECTIONS; j++)
+ {
+ if (csinfo[j].fname != NULL
+ #if defined(UNIX)
+--- 1432,1438 ----
+ #endif
+
+ i = -1; /* can be set to the index of an empty item in csinfo */
+! for (j = 0; j < csinfo_size; j++)
+ {
+ if (csinfo[j].fname != NULL
+ #if defined(UNIX)
+***************
+*** 1471,1479 ****
+
+ if (i == -1)
+ {
+! if (p_csverbose)
+! (void)EMSG(_("E569: maximum number of cscope connections reached"));
+! return -1;
+ }
+
+ if ((csinfo[i].fname = (char *)alloc((unsigned)strlen(fname)+1)) == NULL)
+--- 1459,1483 ----
+
+ if (i == -1)
+ {
+! i = csinfo_size;
+! if (csinfo_size == 0)
+! {
+! /* First time allocation: allocate only 1 connection. It should
+! * be enough for most users. If more is needed, csinfo will be
+! * reallocated. */
+! csinfo_size = 1;
+! csinfo = (csinfo_T *)alloc_clear(sizeof(csinfo_T));
+! }
+! else
+! {
+! /* Reallocate space for more connections. */
+! csinfo_size *= 2;
+! csinfo = vim_realloc(csinfo, sizeof(csinfo_T)*csinfo_size);
+! }
+! if (csinfo == NULL)
+! return -1;
+! for (j = csinfo_size/2; j < csinfo_size; j++)
+! clear_csinfo(j);
+ }
+
+ if ((csinfo[i].fname = (char *)alloc((unsigned)strlen(fname)+1)) == NULL)
+***************
+*** 1580,1594 ****
+ /* It must be part of a name. We will try to find a match
+ * within all the names in the csinfo data structure
+ */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname != NULL && strstr(csinfo[i].fname, stok))
+ break;
+ }
+ }
+
+! if ((i >= CSCOPE_MAX_CONNECTIONS || i < -1 || csinfo[i].fname == NULL)
+! && i != -1)
+ {
+ if (p_csverbose)
+ (void)EMSG2(_("E261: cscope connection %s not found"), stok);
+--- 1584,1597 ----
+ /* It must be part of a name. We will try to find a match
+ * within all the names in the csinfo data structure
+ */
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname != NULL && strstr(csinfo[i].fname, stok))
+ break;
+ }
+ }
+
+! if ((i != -1) && (i >= csinfo_size || i < -1 || csinfo[i].fname == NULL))
+ {
+ if (p_csverbose)
+ (void)EMSG2(_("E261: cscope connection %s not found"), stok);
+***************
+*** 1597,1603 ****
+ {
+ if (i == -1)
+ {
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname)
+ cs_kill_execute(i, csinfo[i].fname);
+--- 1600,1606 ----
+ {
+ if (i == -1)
+ {
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname)
+ cs_kill_execute(i, csinfo[i].fname);
+***************
+*** 1857,1863 ****
+ if (buf == NULL)
+ return;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+--- 1860,1866 ----
+ if (buf == NULL)
+ return;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+***************
+*** 1929,1935 ****
+ if ((cntxts = (char **)alloc(sizeof(char *) * totmatches)) == NULL)
+ goto parse_out;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+--- 1932,1938 ----
+ if ((cntxts = (char **)alloc(sizeof(char *) * totmatches)) == NULL)
+ goto parse_out;
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (nummatches_a[i] < 1)
+ continue;
+***************
+*** 2383,2392 ****
+ int i;
+ char buf[20]; /* for sprintf " (#%d)" */
+
+ /* malloc our db and ppath list */
+! dblist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
+! pplist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
+! fllist = (char **)alloc(CSCOPE_MAX_CONNECTIONS * sizeof(char *));
+ if (dblist == NULL || pplist == NULL || fllist == NULL)
+ {
+ vim_free(dblist);
+--- 2386,2398 ----
+ int i;
+ char buf[20]; /* for sprintf " (#%d)" */
+
++ if (csinfo_size == 0)
++ return CSCOPE_SUCCESS;
++
+ /* malloc our db and ppath list */
+! dblist = (char **)alloc(csinfo_size * sizeof(char *));
+! pplist = (char **)alloc(csinfo_size * sizeof(char *));
+! fllist = (char **)alloc(csinfo_size * sizeof(char *));
+ if (dblist == NULL || pplist == NULL || fllist == NULL)
+ {
+ vim_free(dblist);
+***************
+*** 2395,2401 ****
+ return CSCOPE_FAILURE;
+ }
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ dblist[i] = csinfo[i].fname;
+ pplist[i] = csinfo[i].ppath;
+--- 2401,2407 ----
+ return CSCOPE_FAILURE;
+ }
+
+! for (i = 0; i < csinfo_size; i++)
+ {
+ dblist[i] = csinfo[i].fname;
+ pplist[i] = csinfo[i].ppath;
+***************
+*** 2405,2411 ****
+ }
+
+ /* rebuild the cscope connection list */
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (dblist[i] != NULL)
+ {
+--- 2411,2417 ----
+ }
+
+ /* rebuild the cscope connection list */
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (dblist[i] != NULL)
+ {
+***************
+*** 2502,2508 ****
+ MSG_PUTS_ATTR(
+ _(" # pid database name prepend path\n"),
+ hl_attr(HLF_T));
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+--- 2508,2514 ----
+ MSG_PUTS_ATTR(
+ _(" # pid database name prepend path\n"),
+ hl_attr(HLF_T));
+! for (i = 0; i < csinfo_size; i++)
+ {
+ if (csinfo[i].fname == NULL)
+ continue;
+***************
+*** 2531,2538 ****
+ {
+ int i;
+
+! for (i = 0; i < CSCOPE_MAX_CONNECTIONS; i++)
+ cs_release_csp(i, TRUE);
+ }
+
+ #endif /* FEAT_CSCOPE */
+--- 2537,2546 ----
+ {
+ int i;
+
+! for (i = 0; i < csinfo_size; i++)
+ cs_release_csp(i, TRUE);
++ vim_free(csinfo);
++ csinfo_size = 0;
+ }
+
+ #endif /* FEAT_CSCOPE */
+*** ../vim-7.2.227/src/version.c 2009-07-09 20:13:59.000000000 +0200
+--- src/version.c 2009-07-09 21:21:48.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 228,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+84. Books in your bookcase bear the names Bongo, WinSock and Inside OLE
+
+ /// 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.229 b/source/ap/vim/patches/7.2.229
new file mode 100644
index 000000000..bafaef0b8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.229
@@ -0,0 +1,60 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.229
+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.229
+Problem: Warning for shadowed variable.
+Solution: Rename "wait" to "wait_time".
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.228/src/os_unix.c 2009-06-16 15:12:11.000000000 +0200
+--- src/os_unix.c 2009-07-09 16:24:14.000000000 +0200
+***************
+*** 1138,1147 ****
+ * to happen).
+ */
+ {
+! long wait;
+! for (wait = 0; !sigcont_received && wait <= 3L; wait++)
+ /* Loop is not entered most of the time */
+! mch_delay(wait, FALSE);
+ }
+ # endif
+
+--- 1138,1147 ----
+ * to happen).
+ */
+ {
+! long wait_time;
+! for (wait_time = 0; !sigcont_received && wait_time <= 3L; wait_time++)
+ /* Loop is not entered most of the time */
+! mch_delay(wait_time, FALSE);
+ }
+ # endif
+
+*** ../vim-7.2.228/src/version.c 2009-07-09 21:22:36.000000000 +0200
+--- src/version.c 2009-07-14 12:18:21.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 229,
+ /**/
+
+--
+From "know your smileys":
+ :-) Funny
+ |-) Funny Oriental
+ (-: Funny Australian
+
+ /// 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.230 b/source/ap/vim/patches/7.2.230
new file mode 100644
index 000000000..32379d2c2
--- /dev/null
+++ b/source/ap/vim/patches/7.2.230
@@ -0,0 +1,87 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.230
+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.230
+Problem: A few old lint-style ARGUSED comments.
+Solution: Change to the new UNUSED style.
+Files: src/getchar.c
+
+
+*** ../vim-7.2.229/src/getchar.c 2009-07-09 18:24:24.000000000 +0200
+--- src/getchar.c 2009-07-09 18:09:13.000000000 +0200
+***************
+*** 3708,3718 ****
+ * Clear all mappings or abbreviations.
+ * 'abbr' should be FALSE for mappings, TRUE for abbreviations.
+ */
+- /*ARGSUSED*/
+ void
+ map_clear(cmdp, arg, forceit, abbr)
+ char_u *cmdp;
+! char_u *arg;
+ int forceit;
+ int abbr;
+ {
+--- 3708,3717 ----
+ * Clear all mappings or abbreviations.
+ * 'abbr' should be FALSE for mappings, TRUE for abbreviations.
+ */
+ void
+ map_clear(cmdp, arg, forceit, abbr)
+ char_u *cmdp;
+! char_u *arg UNUSED;
+ int forceit;
+ int abbr;
+ {
+***************
+*** 3741,3753 ****
+ /*
+ * Clear all mappings in "mode".
+ */
+- /*ARGSUSED*/
+ void
+ map_clear_int(buf, mode, local, abbr)
+! buf_T *buf; /* buffer for local mappings */
+! int mode; /* mode in which to delete */
+! int local; /* TRUE for buffer-local mappings */
+! int abbr; /* TRUE for abbreviations */
+ {
+ mapblock_T *mp, **mpp;
+ int hash;
+--- 3740,3751 ----
+ /*
+ * Clear all mappings in "mode".
+ */
+ void
+ map_clear_int(buf, mode, local, abbr)
+! buf_T *buf UNUSED; /* buffer for local mappings */
+! int mode; /* mode in which to delete */
+! int local UNUSED; /* TRUE for buffer-local mappings */
+! int abbr; /* TRUE for abbreviations */
+ {
+ mapblock_T *mp, **mpp;
+ int hash;
+*** ../vim-7.2.229/src/version.c 2009-07-14 12:20:28.000000000 +0200
+--- src/version.c 2009-07-14 13:44:05.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 230,
+ /**/
+
+--
+From "know your smileys":
+ :~) A man with a tape recorder up his nose
+
+ /// 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.231 b/source/ap/vim/patches/7.2.231
new file mode 100644
index 000000000..0f9a6d1e8
--- /dev/null
+++ b/source/ap/vim/patches/7.2.231
@@ -0,0 +1,49 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.231
+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.231
+Problem: Warning for unreacheable code.
+Solution: Add #ifdef.
+Files: src/if_perl.xs
+
+
+*** ../vim-7.2.230/src/if_perl.xs 2009-07-09 20:06:30.000000000 +0200
+--- src/if_perl.xs 2009-07-09 13:02:16.000000000 +0200
+***************
+*** 720,728 ****
+--- 720,730 ----
+ #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
+ {
+ PUSHMARK(SP);
+ XPUSHs(safe);
+*** ../vim-7.2.230/src/version.c 2009-07-14 13:44:43.000000000 +0200
+--- src/version.c 2009-07-14 16:04:07.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 231,
+ /**/
+
+--
+From "know your smileys":
+ ~#:-( I just washed my hair, and I can't do nuthin' with 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.232 b/source/ap/vim/patches/7.2.232
new file mode 100644
index 000000000..02727c741
--- /dev/null
+++ b/source/ap/vim/patches/7.2.232
@@ -0,0 +1,102 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.232
+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.232
+Problem: Cannot debug problems with being in a wrong directory.
+Solution: When 'verbose' is 5 or higher report directory changes.
+Files: src/os_unix.c, src/os_unix.h, src/proto/os_unix.pro
+
+
+*** ../vim-7.2.231/src/os_unix.c 2009-07-14 12:20:28.000000000 +0200
+--- src/os_unix.c 2009-07-14 17:13:15.000000000 +0200
+***************
+*** 319,324 ****
+--- 319,341 ----
+ {-1, "Unknown!", FALSE}
+ };
+
++ int
++ mch_chdir(path)
++ char *path;
++ {
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ smsg((char_u *)"chdir(%s)", path);
++ verbose_leave();
++ }
++ # ifdef VMS
++ return chdir(vms_fixfilename(path));
++ # else
++ return chdir(path);
++ # endif
++ }
++
+ /*
+ * Write s[len] to the screen.
+ */
+***************
+*** 2424,2429 ****
+--- 2441,2452 ----
+ #ifdef HAVE_FCHDIR
+ if (fd >= 0)
+ {
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ MSG("fchdir() to previous dir");
++ verbose_leave();
++ }
+ l = fchdir(fd);
+ close(fd);
+ }
+*** ../vim-7.2.231/src/os_unix.h 2009-05-16 16:36:25.000000000 +0200
+--- src/os_unix.h 2009-07-14 16:55:05.000000000 +0200
+***************
+*** 482,492 ****
+ # else
+ int mch_rename __ARGS((const char *src, const char *dest));
+ # endif
+- # ifdef VMS
+- # define mch_chdir(s) chdir(vms_fixfilename(s))
+- # else
+- # define mch_chdir(s) chdir(s)
+- # endif
+ # ifndef VMS
+ # ifdef __MVS__
+ /* on OS390 Unix getenv() doesn't return a pointer to persistent
+--- 482,487 ----
+*** ../vim-7.2.231/src/proto/os_unix.pro 2008-06-24 23:58:57.000000000 +0200
+--- src/proto/os_unix.pro 2009-07-14 16:58:08.000000000 +0200
+***************
+*** 1,4 ****
+--- 1,5 ----
+ /* os_unix.c */
++ int mch_chdir __ARGS((char *path));
+ void mch_write __ARGS((char_u *s, int len));
+ int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+ int mch_char_avail __ARGS((void));
+*** ../vim-7.2.231/src/version.c 2009-07-14 16:05:14.000000000 +0200
+--- src/version.c 2009-07-14 17:37:15.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 232,
+ /**/
+
+--
+From "know your smileys":
+ O:-) Saint
+
+ /// 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.233 b/source/ap/vim/patches/7.2.233
new file mode 100644
index 000000000..f9fbd848d
--- /dev/null
+++ b/source/ap/vim/patches/7.2.233
@@ -0,0 +1,96 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.233 (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.233 (extra part of 7.2.232)
+Problem: Cannot debug problems with being in a wrong directory.
+Solution: When 'verbose' is 5 or higher report directory changes.
+Files: src/os_msdos.c, src/os_mswin.c, src/os_riscos.c, src/os_mac.h
+
+
+*** ../vim-7.2.232/src/os_msdos.c 2008-06-24 23:30:18.000000000 +0200
+--- src/os_msdos.c 2009-07-14 16:50:57.000000000 +0200
+***************
+*** 2039,2044 ****
+--- 2039,2050 ----
+ {
+ if (path[0] == NUL) /* just checking... */
+ return 0;
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ smsg((char_u *)"chdir(%s)", path);
++ verbose_leave();
++ }
+ if (path[1] == ':') /* has a drive name */
+ {
+ if (change_drive(TOLOWER_ASC(path[0]) - 'a' + 1))
+*** ../vim-7.2.232/src/os_mswin.c 2009-05-14 22:00:37.000000000 +0200
+--- src/os_mswin.c 2009-07-14 16:53:03.000000000 +0200
+***************
+*** 653,658 ****
+--- 653,664 ----
+ if (path[0] == NUL) /* just checking... */
+ return -1;
+
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ smsg((char_u *)"chdir(%s)", path);
++ verbose_leave();
++ }
+ if (isalpha(path[0]) && path[1] == ':') /* has a drive name */
+ {
+ /* If we can change to the drive, skip that part of the path. If we
+*** ../vim-7.2.232/src/os_riscos.c 2006-03-07 23:25:50.000000000 +0100
+--- src/os_riscos.c 2009-07-14 16:53:35.000000000 +0200
+***************
+*** 1203,1208 ****
+--- 1203,1214 ----
+ int retval;
+ char_u *new_dir;
+
++ if (p_verbose >= 5)
++ {
++ verbose_enter();
++ smsg((char_u *)"chdir(%s)", dir);
++ verbose_leave();
++ }
+ length = strlen(dir);
+ if (dir[length - 1] != '.')
+ return chdir(dir); /* No trailing dots - nothing to do. */
+*** ../vim-7.2.232/src/os_mac.h 2009-06-24 16:41:01.000000000 +0200
+--- src/os_mac.h 2009-07-14 16:54:33.000000000 +0200
+***************
+*** 291,297 ****
+ # define HAVE_SETENV
+ # define HAVE_RENAME
+ # endif
+- # define mch_chdir(s) chdir(s)
+ #endif
+
+ #if defined(MACOS_X) && !defined(HAVE_CONFIG_H)
+--- 291,296 ----
+*** ../vim-7.2.232/src/version.c 2009-07-14 17:38:51.000000000 +0200
+--- src/version.c 2009-07-14 18:35:30.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 233,
+ /**/
+
+--
+From "know your smileys":
+ :-O>-o Smiley American tourist (note big mouth and camera)
+
+ /// 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.234 b/source/ap/vim/patches/7.2.234
new file mode 100644
index 000000000..dd44d5d00
--- /dev/null
+++ b/source/ap/vim/patches/7.2.234
@@ -0,0 +1,111 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.234
+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.234
+Problem: It is not possible to ignore file names without a suffix.
+Solution: Use an empty entry in 'suffixes' for file names without a dot.
+Files: runtime/doc/cmdline.txt, src/misc1.c
+
+
+*** ../vim-7.2.233/runtime/doc/cmdline.txt 2008-11-09 13:43:25.000000000 +0100
+--- runtime/doc/cmdline.txt 2009-07-14 13:35:56.000000000 +0200
+***************
+*** 441,453 ****
+ those files with an extension that is in the 'suffixes' option are ignored.
+ The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
+ in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
+! It is impossible to ignore suffixes with two dots. Examples:
+
+ pattern: files: match: ~
+ test* test.c test.h test.o test.c
+ test* test.h test.o test.h and test.o
+ test* test.i test.h test.c test.i and test.c
+
+ If there is more than one matching file (after ignoring the ones matching
+ the 'suffixes' option) the first file name is inserted. You can see that
+ there is only one match when you type 'wildchar' twice and the completed
+--- 439,458 ----
+ those files with an extension that is in the 'suffixes' option are ignored.
+ The default is ".bak,~,.o,.h,.info,.swp,.obj", which means that files ending
+ in ".bak", "~", ".o", ".h", ".info", ".swp" and ".obj" are sometimes ignored.
+!
+! An empty entry, two consecutive commas, match a file name that does not
+! contain a ".", thus has no suffix. This is useful to ignore "prog" and prefer
+! "prog.c".
+!
+! Examples:
+
+ pattern: files: match: ~
+ test* test.c test.h test.o test.c
+ test* test.h test.o test.h and test.o
+ test* test.i test.h test.c test.i and test.c
+
++ It is impossible to ignore suffixes with two dots.
++
+ If there is more than one matching file (after ignoring the ones matching
+ the 'suffixes' option) the first file name is inserted. You can see that
+ there is only one match when you type 'wildchar' twice and the completed
+*** ../vim-7.2.233/src/misc1.c 2009-07-09 20:06:30.000000000 +0200
+--- src/misc1.c 2009-07-14 15:51:55.000000000 +0200
+***************
+*** 8533,8543 ****
+ for (setsuf = p_su; *setsuf; )
+ {
+ setsuflen = copy_option_part(&setsuf, suf_buf, MAXSUFLEN, ".,");
+! if (fnamelen >= setsuflen
+! && fnamencmp(suf_buf, fname + fnamelen - setsuflen,
+! (size_t)setsuflen) == 0)
+! break;
+! setsuflen = 0;
+ }
+ return (setsuflen != 0);
+ }
+--- 8534,8558 ----
+ for (setsuf = p_su; *setsuf; )
+ {
+ setsuflen = copy_option_part(&setsuf, suf_buf, MAXSUFLEN, ".,");
+! if (setsuflen == 0)
+! {
+! char_u *tail = gettail(fname);
+!
+! /* empty entry: match name without a '.' */
+! if (vim_strchr(tail, '.') == NULL)
+! {
+! setsuflen = 1;
+! break;
+! }
+! }
+! else
+! {
+! if (fnamelen >= setsuflen
+! && fnamencmp(suf_buf, fname + fnamelen - setsuflen,
+! (size_t)setsuflen) == 0)
+! break;
+! setsuflen = 0;
+! }
+ }
+ return (setsuflen != 0);
+ }
+*** ../vim-7.2.233/src/version.c 2009-07-14 18:38:09.000000000 +0200
+--- src/version.c 2009-07-14 21:38:30.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 234,
+ /**/
+
+--
+How many light bulbs does it take to change a person?
+
+ /// 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.235 b/source/ap/vim/patches/7.2.235
new file mode 100644
index 000000000..6aa8338eb
--- /dev/null
+++ b/source/ap/vim/patches/7.2.235
@@ -0,0 +1,94 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.235
+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.235
+Problem: Using CTRL-O z= in Insert mode has a delay before redrawing.
+Solution: Reset msg_didout and msg_scroll.
+Files: src/misc1.c, src/spell.c
+
+
+*** ../vim-7.2.234/src/misc1.c 2009-07-14 21:40:30.000000000 +0200
+--- src/misc1.c 2009-07-14 15:51:55.000000000 +0200
+***************
+*** 3276,3281 ****
+--- 3276,3282 ----
+ cmdline_row = msg_row - 1;
+ need_wait_return = FALSE;
+ msg_didany = FALSE;
++ msg_didout = FALSE;
+ }
+ else
+ cmdline_row = save_cmdline_row;
+*** ../vim-7.2.234/src/spell.c 2009-05-17 13:30:58.000000000 +0200
+--- src/spell.c 2009-07-14 15:57:55.000000000 +0200
+***************
+*** 10252,10257 ****
+--- 10252,10258 ----
+ int limit;
+ int selected = count;
+ int badlen = 0;
++ int msg_scroll_save = msg_scroll;
+
+ if (no_spell_checking(curwin))
+ return;
+***************
+*** 10416,10422 ****
+ selected = prompt_for_number(&mouse_used);
+ if (mouse_used)
+ selected -= lines_left;
+! lines_left = Rows; /* avoid more prompt */
+ }
+
+ if (selected > 0 && selected <= sug.su_ga.ga_len && u_save_cursor() == OK)
+--- 10417,10425 ----
+ selected = prompt_for_number(&mouse_used);
+ if (mouse_used)
+ selected -= lines_left;
+! lines_left = Rows; /* avoid more prompt */
+! /* don't delay for 'smd' in normal_cmd() */
+! msg_scroll = msg_scroll_save;
+ }
+
+ if (selected > 0 && selected <= sug.su_ga.ga_len && u_save_cursor() == OK)
+***************
+*** 10441,10447 ****
+ }
+
+ /* Replace the word. */
+! p = alloc((unsigned)STRLEN(line) - stp->st_orglen + stp->st_wordlen + 1);
+ if (p != NULL)
+ {
+ c = (int)(sug.su_badptr - line);
+--- 10444,10451 ----
+ }
+
+ /* Replace the word. */
+! p = alloc((unsigned)STRLEN(line) - stp->st_orglen
+! + stp->st_wordlen + 1);
+ if (p != NULL)
+ {
+ c = (int)(sug.su_badptr - line);
+*** ../vim-7.2.234/src/version.c 2009-07-14 21:40:30.000000000 +0200
+--- src/version.c 2009-07-22 11:00:34.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 235,
+ /**/
+
+--
+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.236 b/source/ap/vim/patches/7.2.236
new file mode 100644
index 000000000..aeb1f57d0
--- /dev/null
+++ b/source/ap/vim/patches/7.2.236
@@ -0,0 +1,81 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.236
+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.236
+Problem: Mac: Compiling with Ruby doesn't always work.
+Solution: In configure filter out the --arch argument (Bjorn Winckler)
+Files: src/configure.in, src/auto/configure
+
+
+*** ../vim-7.2.235/src/configure.in 2009-05-26 22:58:43.000000000 +0200
+--- src/configure.in 2009-07-14 16:09:34.000000000 +0200
+***************
+*** 984,990 ****
+ fi
+ rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
+ if test "X$rubyldflags" != "X"; then
+! LDFLAGS="$rubyldflags $LDFLAGS"
+ fi
+ RUBY_SRC="if_ruby.c"
+ RUBY_OBJ="objects/if_ruby.o"
+--- 984,996 ----
+ fi
+ rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
+ if test "X$rubyldflags" != "X"; then
+! dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
+! dnl be included if requested by passing --with-mac-arch to
+! dnl configure, so strip these flags first (if present)
+! rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
+! if test "X$rubyldflags" != "X"; then
+! LDFLAGS="$rubyldflags $LDFLAGS"
+! fi
+ fi
+ RUBY_SRC="if_ruby.c"
+ RUBY_OBJ="objects/if_ruby.o"
+*** ../vim-7.2.235/src/auto/configure 2009-05-26 22:58:43.000000000 +0200
+--- src/auto/configure 2009-07-14 16:11:58.000000000 +0200
+***************
+*** 5780,5786 ****
+ fi
+ rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'`
+ if test "X$rubyldflags" != "X"; then
+! LDFLAGS="$rubyldflags $LDFLAGS"
+ fi
+ RUBY_SRC="if_ruby.c"
+ RUBY_OBJ="objects/if_ruby.o"
+--- 5780,5789 ----
+ fi
+ rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG["LDFLAGS"]'`
+ if test "X$rubyldflags" != "X"; then
+! rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
+! if test "X$rubyldflags" != "X"; then
+! LDFLAGS="$rubyldflags $LDFLAGS"
+! fi
+ fi
+ RUBY_SRC="if_ruby.c"
+ RUBY_OBJ="objects/if_ruby.o"
+*** ../vim-7.2.235/src/version.c 2009-07-22 11:03:38.000000000 +0200
+--- src/version.c 2009-07-22 11:14:38.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 236,
+ /**/
+
+--
+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.237 b/source/ap/vim/patches/7.2.237
new file mode 100644
index 000000000..3592d3d6a
--- /dev/null
+++ b/source/ap/vim/patches/7.2.237
@@ -0,0 +1,76 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.237
+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.237
+Problem: Crash on exit when window icon not set.
+Solution: Copy terminal name when using it for the icon name.
+Files: src/os_unix.c
+
+
+*** ../vim-7.2.236/src/os_unix.c 2009-07-14 17:38:51.000000000 +0200
+--- src/os_unix.c 2009-07-14 18:30:04.000000000 +0200
+***************
+*** 1734,1742 ****
+ if (oldicon == NULL && !test_only)
+ {
+ if (STRNCMP(T_NAME, "builtin_", 8) == 0)
+! oldicon = T_NAME + 8;
+ else
+! oldicon = T_NAME;
+ }
+
+ return retval;
+--- 1734,1742 ----
+ if (oldicon == NULL && !test_only)
+ {
+ if (STRNCMP(T_NAME, "builtin_", 8) == 0)
+! oldicon = vim_strsave(T_NAME + 8);
+ else
+! oldicon = vim_strsave(T_NAME);
+ }
+
+ return retval;
+***************
+*** 1939,1947 ****
+ if (!test_only)
+ {
+ if (STRNCMP(T_NAME, "builtin_", 8) == 0)
+! oldicon = T_NAME + 8;
+ else
+! oldicon = T_NAME;
+ }
+ return FALSE;
+ }
+--- 1939,1947 ----
+ if (!test_only)
+ {
+ if (STRNCMP(T_NAME, "builtin_", 8) == 0)
+! oldicon = vim_strsave(T_NAME + 8);
+ else
+! oldicon = vim_strsave(T_NAME);
+ }
+ return FALSE;
+ }
+*** ../vim-7.2.236/src/version.c 2009-07-22 11:16:54.000000000 +0200
+--- src/version.c 2009-07-22 13:26:30.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 237,
+ /**/
+
+--
+Common sense is what tells you that the world is flat.
+
+ /// 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.238 b/source/ap/vim/patches/7.2.238
new file mode 100644
index 000000000..a70976d8f
--- /dev/null
+++ b/source/ap/vim/patches/7.2.238
@@ -0,0 +1,117 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.238
+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.238
+Problem: Leaking memory when setting term to "builtin_dumb".
+Solution: Free memory when resetting term option t_Co.
+Files: src/option.c, src/proto/option.pro, src/term.c
+
+
+*** ../vim-7.2.237/src/option.c 2009-06-16 17:50:56.000000000 +0200
+--- src/option.c 2009-07-22 12:49:19.000000000 +0200
+***************
+*** 403,410 ****
+ #define P_NUM 0x02 /* the option is numeric */
+ #define P_STRING 0x04 /* the option is a string */
+ #define P_ALLOCED 0x08 /* the string option is in allocated memory,
+! must use vim_free() when assigning new
+! value. Not set if default is the same. */
+ #define P_EXPAND 0x10 /* environment expansion. NOTE: P_EXPAND can
+ never be used for local or hidden options! */
+ #define P_NODEFAULT 0x40 /* don't set to default value */
+--- 403,411 ----
+ #define P_NUM 0x02 /* the option is numeric */
+ #define P_STRING 0x04 /* the option is a string */
+ #define P_ALLOCED 0x08 /* the string option is in allocated memory,
+! must use free_string_option() when
+! assigning new value. Not set if default is
+! the same. */
+ #define P_EXPAND 0x10 /* environment expansion. NOTE: P_EXPAND can
+ never be used for local or hidden options! */
+ #define P_NODEFAULT 0x40 /* don't set to default value */
+***************
+*** 8927,8932 ****
+--- 8928,8955 ----
+ }
+
+ /*
++ * Free the string for one term option, if it was allocated.
++ * Set the string to empty_option and clear allocated flag.
++ * "var" points to the option value.
++ */
++ void
++ free_one_termoption(var)
++ char_u *var;
++ {
++ struct vimoption *p;
++
++ for (p = &options[0]; p->fullname != NULL; p++)
++ if (p->var == var)
++ {
++ if (p->flags & P_ALLOCED)
++ free_string_option(*(char_u **)(p->var));
++ *(char_u **)(p->var) = empty_option;
++ p->flags &= ~P_ALLOCED;
++ break;
++ }
++ }
++
++ /*
+ * Set the terminal option defaults to the current value.
+ * Used after setting the terminal name.
+ */
+*** ../vim-7.2.237/src/proto/option.pro 2009-02-21 20:27:00.000000000 +0100
+--- src/proto/option.pro 2009-07-22 12:52:31.000000000 +0200
+***************
+*** 29,34 ****
+--- 29,35 ----
+ int makefoldset __ARGS((FILE *fd));
+ void clear_termoptions __ARGS((void));
+ void free_termoptions __ARGS((void));
++ void free_one_termoption __ARGS((char_u *var));
+ void set_term_defaults __ARGS((void));
+ void comp_col __ARGS((void));
+ char_u *get_equalprg __ARGS((void));
+*** ../vim-7.2.237/src/term.c 2009-06-16 14:31:56.000000000 +0200
+--- src/term.c 2009-07-22 13:19:59.000000000 +0200
+***************
+*** 2881,2887 ****
+
+ /* if 'Sb' and 'AB' are not defined, reset "Co" */
+ if (*T_CSB == NUL && *T_CAB == NUL)
+! T_CCO = empty_option;
+
+ /* Set 'weirdinvert' according to value of 't_xs' */
+ p_wiv = (*T_XS != NUL);
+--- 2881,2887 ----
+
+ /* if 'Sb' and 'AB' are not defined, reset "Co" */
+ if (*T_CSB == NUL && *T_CAB == NUL)
+! free_one_termoption(T_CCO);
+
+ /* Set 'weirdinvert' according to value of 't_xs' */
+ p_wiv = (*T_XS != NUL);
+*** ../vim-7.2.237/src/version.c 2009-07-22 13:27:50.000000000 +0200
+--- src/version.c 2009-07-22 14:25:44.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 238,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+95. Only communication in your household is through email.
+
+ /// 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.239 b/source/ap/vim/patches/7.2.239
new file mode 100644
index 000000000..26b80ee28
--- /dev/null
+++ b/source/ap/vim/patches/7.2.239
@@ -0,0 +1,145 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.239
+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.239
+Problem: Using :diffpatch twice or when patching fails causes memory
+ corruption and/or a crash. (Bryan Venteicher)
+Solution: Detect missing output file. Avoid using non-existing buffer.
+Files: src/diff.c
+
+
+*** ../vim-7.2.238/src/diff.c 2009-05-14 22:19:19.000000000 +0200
+--- src/diff.c 2009-07-22 16:06:21.000000000 +0200
+***************
+*** 893,898 ****
+--- 893,899 ----
+ char_u *browseFile = NULL;
+ int browse_flag = cmdmod.browse;
+ #endif
++ struct stat st;
+
+ #ifdef FEAT_BROWSE
+ if (cmdmod.browse)
+***************
+*** 999,1042 ****
+ STRCAT(buf, ".rej");
+ mch_remove(buf);
+
+! if (curbuf->b_fname != NULL)
+ {
+! newname = vim_strnsave(curbuf->b_fname,
+ (int)(STRLEN(curbuf->b_fname) + 4));
+! if (newname != NULL)
+! STRCAT(newname, ".new");
+! }
+
+ #ifdef FEAT_GUI
+! need_mouse_correct = TRUE;
+ #endif
+! /* don't use a new tab page, each tab page has its own diffs */
+! cmdmod.tab = 0;
+!
+! if (win_split(0, (diff_flags & DIFF_VERTICAL) ? WSP_VERT : 0) != FAIL)
+! {
+! /* Pretend it was a ":split fname" command */
+! eap->cmdidx = CMD_split;
+! eap->arg = tmp_new;
+! do_exedit(eap, old_curwin);
+
+! if (curwin != old_curwin) /* split must have worked */
+ {
+! /* Set 'diff', 'scrollbind' on and 'wrap' off. */
+! diff_win_options(curwin, TRUE);
+! diff_win_options(old_curwin, TRUE);
+
+! if (newname != NULL)
+ {
+! /* do a ":file filename.new" on the patched buffer */
+! eap->arg = newname;
+! ex_file(eap);
+
+ #ifdef FEAT_AUTOCMD
+! /* Do filetype detection with the new name. */
+! if (au_has_group((char_u *)"filetypedetect"))
+! do_cmdline_cmd((char_u *)":doau filetypedetect BufRead");
+ #endif
+ }
+ }
+ }
+--- 1000,1050 ----
+ STRCAT(buf, ".rej");
+ mch_remove(buf);
+
+! /* Only continue if the output file was created. */
+! if (mch_stat((char *)tmp_new, &st) < 0 || st.st_size == 0)
+! EMSG(_("E816: Cannot read patch output"));
+! else
+ {
+! if (curbuf->b_fname != NULL)
+! {
+! newname = vim_strnsave(curbuf->b_fname,
+ (int)(STRLEN(curbuf->b_fname) + 4));
+! if (newname != NULL)
+! STRCAT(newname, ".new");
+! }
+
+ #ifdef FEAT_GUI
+! need_mouse_correct = TRUE;
+ #endif
+! /* don't use a new tab page, each tab page has its own diffs */
+! cmdmod.tab = 0;
+
+! if (win_split(0, (diff_flags & DIFF_VERTICAL) ? WSP_VERT : 0) != FAIL)
+ {
+! /* Pretend it was a ":split fname" command */
+! eap->cmdidx = CMD_split;
+! eap->arg = tmp_new;
+! do_exedit(eap, old_curwin);
+
+! /* check that split worked and editing tmp_new */
+! if (curwin != old_curwin && win_valid(old_curwin))
+ {
+! /* Set 'diff', 'scrollbind' on and 'wrap' off. */
+! diff_win_options(curwin, TRUE);
+! diff_win_options(old_curwin, TRUE);
+!
+! if (newname != NULL)
+! {
+! /* do a ":file filename.new" on the patched buffer */
+! eap->arg = newname;
+! ex_file(eap);
+
+ #ifdef FEAT_AUTOCMD
+! /* Do filetype detection with the new name. */
+! if (au_has_group((char_u *)"filetypedetect"))
+! do_cmdline_cmd((char_u *)":doau filetypedetect BufRead");
+ #endif
++ }
+ }
+ }
+ }
+*** ../vim-7.2.238/src/version.c 2009-07-22 14:27:33.000000000 +0200
+--- src/version.c 2009-07-22 16:21:29.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 239,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+97. Your mother tells you to remember something, and you look for
+ a File/Save command.
+
+ /// 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.240 b/source/ap/vim/patches/7.2.240
new file mode 100644
index 000000000..7a1c22e2b
--- /dev/null
+++ b/source/ap/vim/patches/7.2.240
@@ -0,0 +1,69 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.240
+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.240
+Problem: Crash when using find/replace dialog repeatedly. (Michiel
+ Hartsuiker)
+Solution: Avoid doing the operation while busy or recursively. Also refuse
+ replace when text is locked.
+Files: src/gui.c
+
+
+*** ../vim-7.2.239/src/gui.c 2009-06-24 18:31:36.000000000 +0200
+--- src/gui.c 2009-07-22 16:54:16.000000000 +0200
+***************
+*** 5004,5009 ****
+--- 5004,5022 ----
+ char_u *p;
+ regmatch_T regmatch;
+ int save_did_emsg = did_emsg;
++ static int busy = FALSE;
++
++ /* When the screen is being updated we should not change buffers and
++ * windows structures, it may cause freed memory to be used. Also don't
++ * do this recursively (pressing "Find" quickly several times. */
++ if (updating_screen || busy)
++ return FALSE;
++
++ /* refuse replace when text cannot be changed */
++ if ((type == FRD_REPLACE || type == FRD_REPLACEALL) && text_locked())
++ return FALSE;
++
++ busy = TRUE;
+
+ ga_init2(&ga, 1, 100);
+ if (type == FRD_REPLACEALL)
+***************
+*** 5094,5099 ****
+--- 5107,5113 ----
+ }
+
+ vim_free(ga.ga_data);
++ busy = FALSE;
+ return (ga.ga_len > 0);
+ }
+
+*** ../vim-7.2.239/src/version.c 2009-07-22 16:22:33.000000000 +0200
+--- src/version.c 2009-07-29 11:09:13.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 240,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+113. You are asked about a bus schedule, you wonder if it is 16 or 32 bits.
+
+ /// 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.241 b/source/ap/vim/patches/7.2.241
new file mode 100644
index 000000000..42e9ade39
--- /dev/null
+++ b/source/ap/vim/patches/7.2.241
@@ -0,0 +1,169 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.241
+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.241
+Problem: When using a combination of ":bufdo" and "doautoall" we may end up
+ in the wrong directory. (Ajit Thakkar)
+ Crash when triggering an autocommand in ":vimgrep". (Yukihiro
+ Nakadaira)
+Solution: Clear w_localdir and globaldir when using the aucmd_win.
+ Use a separate flag to decide aucmd_win needs to be restored.
+Files: src/fileio.c, src/globals.h, src/structs.h
+
+
+*** ../vim-7.2.240/src/fileio.c 2009-07-01 17:11:40.000000000 +0200
+--- src/fileio.c 2009-07-22 19:08:55.000000000 +0200
+***************
+*** 8420,8425 ****
+--- 8420,8429 ----
+ if (aucmd_win == NULL)
+ win = curwin;
+ }
++ if (win == NULL && aucmd_win_used)
++ /* Strange recursive autocommand, fall back to using the current
++ * window. Expect a few side effects... */
++ win = curwin;
+
+ aco->save_curwin = curwin;
+ aco->save_curbuf = curbuf;
+***************
+*** 8428,8433 ****
+--- 8432,8438 ----
+ /* There is a window for "buf" in the current tab page, make it the
+ * curwin. This is preferred, it has the least side effects (esp. if
+ * "buf" is curbuf). */
++ aco->use_aucmd_win = FALSE;
+ curwin = win;
+ }
+ else
+***************
+*** 8436,8444 ****
+--- 8441,8460 ----
+ * effects, insert it in a the current tab page.
+ * Anything related to a window (e.g., setting folds) may have
+ * unexpected results. */
++ aco->use_aucmd_win = TRUE;
++ aucmd_win_used = TRUE;
+ aucmd_win->w_buffer = buf;
+ ++buf->b_nwindows;
+ win_init_empty(aucmd_win); /* set cursor and topline to safe values */
++ vim_free(aucmd_win->w_localdir);
++ aucmd_win->w_localdir = NULL;
++
++ /* Make sure w_localdir and globaldir are NULL to avoid a chdir() in
++ * win_enter_ext(). */
++ aucmd_win->w_localdir = NULL;
++ aco->globaldir = globaldir;
++ globaldir = NULL;
++
+
+ #ifdef FEAT_WINDOWS
+ /* Split the current window, put the aucmd_win in the upper half.
+***************
+*** 8472,8478 ****
+ int dummy;
+ #endif
+
+! if (aco->new_curwin == aucmd_win)
+ {
+ --curbuf->b_nwindows;
+ #ifdef FEAT_WINDOWS
+--- 8488,8494 ----
+ int dummy;
+ #endif
+
+! if (aco->use_aucmd_win)
+ {
+ --curbuf->b_nwindows;
+ #ifdef FEAT_WINDOWS
+***************
+*** 8499,8504 ****
+--- 8515,8521 ----
+ /* Remove the window and frame from the tree of frames. */
+ (void)winframe_remove(curwin, &dummy, NULL);
+ win_remove(curwin, NULL);
++ aucmd_win_used = FALSE;
+ last_status(FALSE); /* may need to remove last status line */
+ restore_snapshot(SNAP_AUCMD_IDX, FALSE);
+ (void)win_comp_pos(); /* recompute window positions */
+***************
+*** 8517,8522 ****
+--- 8534,8542 ----
+ #endif
+ curbuf = curwin->w_buffer;
+
++ vim_free(globaldir);
++ globaldir = aco->globaldir;
++
+ /* the buffer contents may have changed */
+ check_cursor();
+ if (curwin->w_topline > curbuf->b_ml.ml_line_count)
+***************
+*** 8541,8547 ****
+ #endif
+ {
+ /* Restore the buffer which was previously edited by curwin, if
+! * it was chagned, we are still the same window and the buffer is
+ * valid. */
+ if (curwin == aco->new_curwin
+ && curbuf != aco->new_curbuf
+--- 8561,8567 ----
+ #endif
+ {
+ /* Restore the buffer which was previously edited by curwin, if
+! * it was changed, we are still the same window and the buffer is
+ * valid. */
+ if (curwin == aco->new_curwin
+ && curbuf != aco->new_curbuf
+*** ../vim-7.2.240/src/globals.h 2009-06-16 16:01:34.000000000 +0200
+--- src/globals.h 2009-07-22 19:50:53.000000000 +0200
+***************
+*** 541,546 ****
+--- 541,547 ----
+
+ #ifdef FEAT_AUTOCMD
+ EXTERN win_T *aucmd_win; /* window used in aucmd_prepbuf() */
++ EXTERN int aucmd_win_used INIT(= FALSE); /* aucmd_win is being used */
+ #endif
+
+ /*
+*** ../vim-7.2.240/src/structs.h 2009-07-09 18:24:24.000000000 +0200
+--- src/structs.h 2009-07-22 18:58:35.000000000 +0200
+***************
+*** 2288,2296 ****
+--- 2288,2298 ----
+ {
+ buf_T *save_curbuf; /* saved curbuf */
+ #ifdef FEAT_AUTOCMD
++ int use_aucmd_win; /* using aucmd_win */
+ win_T *save_curwin; /* saved curwin */
+ win_T *new_curwin; /* new curwin */
+ buf_T *new_curbuf; /* new curbuf */
++ char_u *globaldir; /* saved value of globaldir */
+ #endif
+ } aco_save_T;
+
+*** ../vim-7.2.240/src/version.c 2009-07-29 11:10:31.000000000 +0200
+--- src/version.c 2009-07-29 12:06:31.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 241,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+114. You are counting items, you go "0,1,2,3,4,5,6,7,8,9,A,B,C,D...".
+
+ /// 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.242 b/source/ap/vim/patches/7.2.242
new file mode 100644
index 000000000..22341cd2e
--- /dev/null
+++ b/source/ap/vim/patches/7.2.242
@@ -0,0 +1,89 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.242
+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.242
+Problem: Setting 'lazyredraw' causes the cursor column to be recomputed.
+ (Tom Link)
+Solution: Only recompute the cursor column for a boolean option if changes
+ the cursor position.
+Files: src/option.c
+
+
+*** ../vim-7.2.241/src/option.c 2009-07-22 14:27:33.000000000 +0200
+--- src/option.c 2009-07-29 10:03:39.000000000 +0200
+***************
+*** 7194,7199 ****
+--- 7194,7207 ----
+ compatible_set();
+ }
+
++ /* 'list', 'number' */
++ else if ((int *)varp == &curwin->w_p_list
++ || (int *)varp == &curwin->w_p_nu)
++ {
++ if (curwin->w_curswant != MAXCOL)
++ curwin->w_set_curswant = TRUE;
++ }
++
+ else if ((int *)varp == &curbuf->b_p_ro)
+ {
+ /* when 'readonly' is reset globally, also reset readonlymode */
+***************
+*** 7645,7650 ****
+--- 7653,7666 ----
+ curbuf->b_p_imsearch = B_IMODE_USE_INSERT;
+ # endif
+ }
++ if (curwin->w_curswant != MAXCOL)
++ curwin->w_set_curswant = TRUE;
++ }
++
++ else if ((int *)varp == &p_arshape)
++ {
++ if (curwin->w_curswant != MAXCOL)
++ curwin->w_set_curswant = TRUE;
+ }
+ #endif
+
+***************
+*** 7655,7662 ****
+ options[opt_idx].flags |= P_WAS_SET;
+
+ comp_col(); /* in case 'ruler' or 'showcmd' changed */
+! if (curwin->w_curswant != MAXCOL)
+! curwin->w_set_curswant = TRUE; /* in case 'list' changed */
+ check_redraw(options[opt_idx].flags);
+
+ return NULL;
+--- 7671,7677 ----
+ options[opt_idx].flags |= P_WAS_SET;
+
+ comp_col(); /* in case 'ruler' or 'showcmd' changed */
+!
+ check_redraw(options[opt_idx].flags);
+
+ return NULL;
+*** ../vim-7.2.241/src/version.c 2009-07-29 12:09:49.000000000 +0200
+--- src/version.c 2009-07-29 15:40:43.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 242,
+ /**/
+
+--
+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.243 b/source/ap/vim/patches/7.2.243
new file mode 100644
index 000000000..92a6580db
--- /dev/null
+++ b/source/ap/vim/patches/7.2.243
@@ -0,0 +1,67 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.243
+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.243
+Problem: Memory leak when using :vimgrep and resizing. (Dominique Pelle)
+Solution: Free memory for aucmd_win when resizing and don't allocate it
+ twice.
+Files: src/screen.c
+
+
+*** ../vim-7.2.242/src/screen.c 2009-06-16 17:22:38.000000000 +0200
+--- src/screen.c 2009-07-29 15:59:37.000000000 +0200
+***************
+*** 7467,7472 ****
+--- 7467,7476 ----
+ */
+ FOR_ALL_TAB_WINDOWS(tp, wp)
+ win_free_lsize(wp);
++ #ifdef FEAT_AUTOCMD
++ if (aucmd_win != NULL)
++ win_free_lsize(aucmd_win);
++ #endif
+
+ new_ScreenLines = (schar_T *)lalloc((long_u)(
+ (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
+***************
+*** 7504,7510 ****
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+! if (aucmd_win != NULL && win_alloc_lines(aucmd_win) == FAIL)
+ outofmem = TRUE;
+ #endif
+ #ifdef FEAT_WINDOWS
+--- 7508,7515 ----
+ }
+ }
+ #ifdef FEAT_AUTOCMD
+! if (aucmd_win != NULL && aucmd_win->w_lines == NULL
+! && win_alloc_lines(aucmd_win) == FAIL)
+ outofmem = TRUE;
+ #endif
+ #ifdef FEAT_WINDOWS
+*** ../vim-7.2.242/src/version.c 2009-07-29 15:41:32.000000000 +0200
+--- src/version.c 2009-07-29 16:07:47.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 243,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+118. You are on a first-name basis with your ISP's staff.
+
+ /// 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.244 b/source/ap/vim/patches/7.2.244
new file mode 100644
index 000000000..6c9b1fb80
--- /dev/null
+++ b/source/ap/vim/patches/7.2.244
@@ -0,0 +1,174 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.244
+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.244
+Problem: When 'enc' is utf-8 and 'fenc' is latin1, writing a non-latin1
+ character gives a conversion error without any hint what is wrong.
+Solution: When known add the line number to the error message.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.243/src/fileio.c 2009-07-29 12:09:49.000000000 +0200
+--- src/fileio.c 2009-07-29 17:04:06.000000000 +0200
+***************
+*** 121,126 ****
+--- 121,128 ----
+ char_u *bw_conv_buf; /* buffer for writing converted chars */
+ int bw_conv_buflen; /* size of bw_conv_buf */
+ int bw_conv_error; /* set for conversion error */
++ linenr_T bw_conv_error_lnum; /* first line with error or zero */
++ linenr_T bw_start_lnum; /* line number at start of buffer */
+ # ifdef USE_ICONV
+ iconv_t bw_iconv_fd; /* descriptor for iconv() or -1 */
+ # endif
+***************
+*** 2924,2929 ****
+--- 2925,2931 ----
+ linenr_T lnum;
+ long nchars;
+ char_u *errmsg = NULL;
++ int errmsg_allocated = FALSE;
+ char_u *errnum = NULL;
+ char_u *buffer;
+ char_u smallbuf[SMBUFSIZE];
+***************
+*** 2987,2992 ****
+--- 2989,2995 ----
+ /* must init bw_conv_buf and bw_iconv_fd before jumping to "fail" */
+ write_info.bw_conv_buf = NULL;
+ write_info.bw_conv_error = FALSE;
++ write_info.bw_conv_error_lnum = 0;
+ write_info.bw_restlen = 0;
+ # ifdef USE_ICONV
+ write_info.bw_iconv_fd = (iconv_t)-1;
+***************
+*** 4243,4248 ****
+--- 4245,4251 ----
+ nchars += write_info.bw_len;
+ }
+ }
++ write_info.bw_start_lnum = start;
+ #endif
+
+ write_info.bw_len = bufsize;
+***************
+*** 4278,4283 ****
+--- 4281,4289 ----
+ nchars += bufsize;
+ s = buffer;
+ len = 0;
++ #ifdef FEAT_MBYTE
++ write_info.bw_start_lnum = lnum;
++ #endif
+ }
+ /* write failed or last line has no EOL: stop here */
+ if (end == 0
+***************
+*** 4474,4480 ****
+ {
+ #ifdef FEAT_MBYTE
+ if (write_info.bw_conv_error)
+! errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
+ else
+ #endif
+ if (got_int)
+--- 4480,4496 ----
+ {
+ #ifdef FEAT_MBYTE
+ if (write_info.bw_conv_error)
+! {
+! if (write_info.bw_conv_error_lnum == 0)
+! errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
+! else
+! {
+! errmsg_allocated = TRUE;
+! errmsg = alloc(300);
+! vim_snprintf((char *)errmsg, 300, _("E513: write error, conversion failed in line %ld (make 'fenc' empty to override)"),
+! (long)write_info.bw_conv_error_lnum);
+! }
+! }
+ else
+ #endif
+ if (got_int)
+***************
+*** 4550,4555 ****
+--- 4566,4577 ----
+ {
+ STRCAT(IObuff, _(" CONVERSION ERROR"));
+ 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);
++ }
+ }
+ else if (notconverted)
+ {
+***************
+*** 4746,4751 ****
+--- 4768,4775 ----
+ }
+ STRCAT(IObuff, errmsg);
+ emsg(IObuff);
++ if (errmsg_allocated)
++ vim_free(errmsg);
+
+ retval = FAIL;
+ if (end == 0)
+***************
+*** 5105,5111 ****
+ c = buf[wlen];
+ }
+
+! ip->bw_conv_error |= ucs2bytes(c, &p, flags);
+ }
+ if (flags & FIO_LATIN1)
+ len = (int)(p - buf);
+--- 5129,5141 ----
+ c = buf[wlen];
+ }
+
+! if (ucs2bytes(c, &p, flags) && !ip->bw_conv_error)
+! {
+! ip->bw_conv_error = TRUE;
+! ip->bw_conv_error_lnum = ip->bw_start_lnum;
+! }
+! if (c == NL)
+! ++ip->bw_start_lnum;
+ }
+ if (flags & FIO_LATIN1)
+ len = (int)(p - buf);
+***************
+*** 5386,5391 ****
+--- 5416,5422 ----
+ #ifdef FEAT_MBYTE
+ /*
+ * Convert a Unicode character to bytes.
++ * Return TRUE for an error, FALSE when it's OK.
+ */
+ static int
+ ucs2bytes(c, pp, flags)
+*** ../vim-7.2.243/src/version.c 2009-07-29 16:13:35.000000000 +0200
+--- src/version.c 2009-07-29 18:01:27.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 244,
+ /**/
+
+--
+Support your right to bare arms! Wear short sleeves!
+
+ /// 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.245 b/source/ap/vim/patches/7.2.245
new file mode 100644
index 000000000..d046c97f1
--- /dev/null
+++ b/source/ap/vim/patches/7.2.245
@@ -0,0 +1,165 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.245
+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.245
+Problem: When 'enc' is "utf-16" and 'fenc' is "utf-8" writing a file does
+ conversion while none should be done. (Yukihiro Nakadaira) When
+ 'fenc' is empty the file is written as utf-8 instead of utf-16.
+Solution: Do proper comparison of encodings, taking into account that all
+ Unicode values for 'enc' use utf-8 internally.
+Files: src/fileio.c
+
+
+*** ../vim-7.2.244/src/fileio.c 2009-07-29 18:05:57.000000000 +0200
+--- src/fileio.c 2009-07-29 17:04:06.000000000 +0200
+***************
+*** 134,140 ****
+ #ifdef FEAT_MBYTE
+ static linenr_T readfile_linenr __ARGS((linenr_T linecnt, char_u *p, char_u *endp));
+ static int ucs2bytes __ARGS((unsigned c, char_u **pp, int flags));
+! static int same_encoding __ARGS((char_u *a, char_u *b));
+ static int get_fio_flags __ARGS((char_u *ptr));
+ static char_u *check_for_bom __ARGS((char_u *p, long size, int *lenp, int flags));
+ static int make_bom __ARGS((char_u *buf, char_u *name));
+--- 134,140 ----
+ #ifdef FEAT_MBYTE
+ static linenr_T readfile_linenr __ARGS((linenr_T linecnt, char_u *p, char_u *endp));
+ static int ucs2bytes __ARGS((unsigned c, char_u **pp, int flags));
+! static int need_conversion __ARGS((char_u *fenc));
+ static int get_fio_flags __ARGS((char_u *ptr));
+ static char_u *check_for_bom __ARGS((char_u *p, long size, int *lenp, int flags));
+ static int make_bom __ARGS((char_u *buf, char_u *name));
+***************
+*** 1043,1055 ****
+ }
+
+ /*
+! * Conversion is required when the encoding of the file is different
+! * from 'encoding' or 'encoding' is UTF-16, UCS-2 or UCS-4 (requires
+! * conversion to UTF-8).
+ */
+ fio_flags = 0;
+! converted = (*fenc != NUL && !same_encoding(p_enc, fenc));
+! if (converted || enc_unicode != 0)
+ {
+
+ /* "ucs-bom" means we need to check the first bytes of the file
+--- 1043,1054 ----
+ }
+
+ /*
+! * Conversion may be required when the encoding of the file is different
+! * from 'encoding' or 'encoding' is UTF-16, UCS-2 or UCS-4.
+ */
+ fio_flags = 0;
+! converted = need_conversion(fenc);
+! if (converted)
+ {
+
+ /* "ucs-bom" means we need to check the first bytes of the file
+***************
+*** 3969,3978 ****
+ fenc = buf->b_p_fenc;
+
+ /*
+! * The file needs to be converted when 'fileencoding' is set and
+! * 'fileencoding' differs from 'encoding'.
+ */
+! converted = (*fenc != NUL && !same_encoding(p_enc, fenc));
+
+ /*
+ * Check if UTF-8 to UCS-2/4 or Latin1 conversion needs to be done. Or
+--- 3968,3976 ----
+ fenc = buf->b_p_fenc;
+
+ /*
+! * Check if the file needs to be converted.
+ */
+! converted = need_conversion(fenc);
+
+ /*
+ * Check if UTF-8 to UCS-2/4 or Latin1 conversion needs to be done. Or
+***************
+*** 5502,5521 ****
+ }
+
+ /*
+! * Return TRUE if "a" and "b" are the same 'encoding'.
+! * Ignores difference between "ansi" and "latin1", "ucs-4" and "ucs-4be", etc.
+ */
+ static int
+! same_encoding(a, b)
+! char_u *a;
+! char_u *b;
+ {
+! int f;
+
+! if (STRCMP(a, b) == 0)
+! return TRUE;
+! f = get_fio_flags(a);
+! return (f != 0 && get_fio_flags(b) == f);
+ }
+
+ /*
+--- 5500,5536 ----
+ }
+
+ /*
+! * Return TRUE if file encoding "fenc" requires conversion from or to
+! * 'encoding'.
+ */
+ static int
+! need_conversion(fenc)
+! char_u *fenc;
+ {
+! int same_encoding;
+! int enc_flags;
+! int fenc_flags;
+
+! if (*fenc == NUL || STRCMP(p_enc, fenc) == 0)
+! same_encoding = TRUE;
+! else
+! {
+! /* Ignore difference between "ansi" and "latin1", "ucs-4" and
+! * "ucs-4be", etc. */
+! enc_flags = get_fio_flags(p_enc);
+! fenc_flags = get_fio_flags(fenc);
+! same_encoding = (enc_flags != 0 && fenc_flags == enc_flags);
+! }
+! if (same_encoding)
+! {
+! /* Specified encoding matches with 'encoding'. This requires
+! * conversion when 'encoding' is Unicode but not UTF-8. */
+! return enc_unicode != 0;
+! }
+!
+! /* Encodings differ. However, conversion is not needed when 'enc' is any
+! * Unicode encoding and the file is UTF-8. */
+! return !(enc_utf8 && fenc_flags == FIO_UTF8);
+ }
+
+ /*
+*** ../vim-7.2.244/src/version.c 2009-07-29 18:05:57.000000000 +0200
+--- src/version.c 2009-07-29 18:20:08.000000000 +0200
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 245,
+ /**/
+
+--
+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/slack-desc.vim b/source/ap/vim/slack-desc.vim
new file mode 100644
index 000000000..04b1d5eb4
--- /dev/null
+++ b/source/ap/vim/slack-desc.vim
@@ -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------------------------------------------------------|
+vim: vim (Vi IMproved)
+vim:
+vim: Vim is an almost compatible version of the UNIX editor vi. Many new
+vim: features have been added: multi level undo, command line history,
+vim: filename completion, block operations, and more.
+vim:
+vim: Vim's development is led by Bram Moolenaar.
+vim:
+vim: This package also contains the Exuberant Ctags program
+vim: written by Darren Hiebert.
+vim:
diff --git a/source/ap/vim/slack-desc.vim-gvim b/source/ap/vim/slack-desc.vim-gvim
new file mode 100644
index 000000000..27efae73c
--- /dev/null
+++ b/source/ap/vim/slack-desc.vim-gvim
@@ -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------------------------------------------------------|
+vim-gvim: vim-gvim (gvim, the X/GTK2 enabled version of vim)
+vim-gvim:
+vim-gvim: Gvim is a graphical version of vim. Vim is an almost compatible
+vim-gvim: version of the UNIX editor vi. Many new features have been added,
+vim-gvim: such as multi level undo, command line history, filename completion,
+vim-gvim: block operations, and more.
+vim-gvim:
+vim-gvim: The main vim package in the AP series is required to use this package.
+vim-gvim:
+vim-gvim: Vim's development is led by Bram Moolenaar.
+vim-gvim:
diff --git a/source/ap/vim/vim-gvim.SlackBuild b/source/ap/vim/vim-gvim.SlackBuild
new file mode 100755
index 000000000..8c24b51d9
--- /dev/null
+++ b/source/ap/vim/vim-gvim.SlackBuild
@@ -0,0 +1,193 @@
+#!/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.
+
+
+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}
+
+PYVER=$(python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d.)
+
+if [ "$ARCH" = "x86_64" ]; then
+ export SLKCFLAGS="-O2 -fPIC"
+ export LIBDIRSUFFIX="64"
+else
+ export SLKCFLAGS="-O2"
+ export LIBDIRSUFFIX=""
+fi
+export SLKLDFLAGS="-L/usr/lib${LIBDIRSUFFIX}"
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-vim-gvim
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Determine VIM patchlevel:
+if [ -d $CWD/patches ] ; then
+ cd $CWD/patches
+ PATCHLEVEL=$(/bin/ls 2> /dev/null | tail -1 | cut -f 3 -d . )
+ if [ "$PATCHLEVEL" = "" ]; then
+ PATCHLEVEL=000
+ fi
+ cd $CWD
+fi
+
+cd $TMP
+rm -rf vim$DIRVER
+tar xvf $CWD/vim-$VIMVER.tar.?z* || exit 1
+tar xvf $CWD/vim-$VIMVER-lang.tar.?z* || exit 1
+
+config_vim() {
+CFLAGS="$SLKCFLAGS" LDFLAGS="$SLKLDFLAGS" \
+./configure \
+ $* \
+ --prefix=/usr \
+ --enable-pythoninterp \
+ --with-python-config-dir=/usr/lib${LIBDIRSUFFIX}/python$PYVER/config \
+ --enable-perlinterp \
+ --disable-tclinterp \
+ --enable-multibyte \
+ --enable-cscope \
+ --with-features=huge \
+ --with-compiledby="<volkerdi@slackware.com>" \
+ --build=$ARCH-slackware-linux
+
+ # I had been adding this, but got 100% complaints and 0% kudos:
+ # --enable-rubyinterp
+
+}
+
+cd $TMP/vim$DIRVER
+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 file in $CWD/patches/* ; do
+ ( zcat $file 2> /dev/null | patch -p0 --verbose --batch )
+done
+
+config_vim --with-x --enable-gui=gtk2
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+rsync -lprvt $PKG/usr/share/man/ $PKG/usr/man/
+rm -r $PKG/usr/share/man
+
+# Fix manpage symlinks:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Legacy binary links:
+( cd $PKG/usr/bin ; rm -rf ex )
+( cd $PKG/usr/bin ; ln -sf vim ex )
+( cd $PKG/usr/bin ; rm -rf rview )
+( cd $PKG/usr/bin ; ln -sf vim rview )
+( cd $PKG/usr/bin ; rm -rf rvim )
+( cd $PKG/usr/bin ; ln -sf vim rvim )
+( cd $PKG/usr/bin ; rm -rf view )
+( cd $PKG/usr/bin ; ln -sf vim view )
+( cd $PKG/usr/bin ; rm -rf eview )
+( cd $PKG/usr/bin ; ln -sf vim eview )
+( cd $PKG/usr/bin ; rm -rf evim )
+( cd $PKG/usr/bin ; ln -sf vim evim )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc.vim-gvim > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# You'll have to run "gvim" to get the graphical version.
+# Seems like this is the common way for console and gui versions
+# of vim to co-exist. If your "vi" symlink isn't pointed in a
+# way that suits you, it is fully user serviceable. :-)
+( cd $PKG/usr/bin
+ rm -f gvim
+ mv vim gvim
+ for programlink in $(find . -type l | cut -b3-) ; do
+ rm $programlink
+ ln -sf gvim $programlink
+ done
+)
+rm -f vimtutor xxd
+
+# Perfect!
+# Now we get rid of everything that's not in the other vim package.
+# Let's assume (dangerous ;-) that we just built that in $TMP
+# and use it as a reference:
+if ! /bin/ls $TMP/vim-${VIMVER}*txz 1> /dev/null 2> /dev/null ; then
+ echo "FATAL: VIM package needed in $TMP"
+ exit 1
+fi
+mkdir $PKG/vim
+( cd $PKG
+ ( cd vim
+ echo "Extracting reference package $TMP/vim-${VIMVER}*txz:"
+ explodepkg $TMP/vim-${VIMVER}*txz 1> /dev/null
+ sh install/doinst.sh
+ )
+)
+rm -r $PKG/vim/install
+( cd $PKG
+ find vim | cut -b4- | while read sharedfile ; do
+ if [ ! -d $sharedfile ]; then
+ rm --verbose $PKG/$sharedfile
+ fi
+ done
+)
+
+# Finally, reference purge:
+rm -rf $PKG/vim
+
+# Perhaps we would be better off without this - forcing folks to run kappfinder
+# or something. It seems better than starting with nothing, but might force
+# people into defaults they don't want. Another nifty catch-22...
+mkdir -p $PKG/usr/share/applications
+cp -a $CWD/gvim.desktop $PKG/usr/share/applications
+mkdir -p $PKG/usr/share/pixmaps
+cp -a $CWD/gvim.png $PKG/usr/share/pixmaps
+
+# Remove empty directories:
+find $PKG -type d -exec rmdir -p {} \; 2> /dev/null
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/vim-gvim-$VIMVER.$PATCHLEVEL-$ARCH-$BUILD.txz
+
diff --git a/source/ap/vim/vim.SlackBuild b/source/ap/vim/vim.SlackBuild
new file mode 100755
index 000000000..460b07a1e
--- /dev/null
+++ b/source/ap/vim/vim.SlackBuild
@@ -0,0 +1,196 @@
+#!/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.
+
+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}
+
+PYVER=$(python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d.)
+
+if [ "$ARCH" = "x86_64" ]; then
+ export SLKCFLAGS="-O2 -fPIC"
+ export LIBDIRSUFFIX="64"
+else
+ export SLKCFLAGS="-O2"
+ export LIBDIRSUFFIX=""
+fi
+export SLKLDFLAGS="-L/usr/lib${LIBDIRSUFFIX}"
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-vim
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Determine VIM patchlevel:
+if [ -d $CWD/patches ] ; then
+ cd $CWD/patches
+ PATCHLEVEL=$(/bin/ls 2> /dev/null | tail -1 | cut -f 3 -d . )
+ if [ "$PATCHLEVEL" = "" ]; then
+ PATCHLEVEL=000
+ fi
+ cd $CWD
+fi
+
+# ctags was once a part of vim,
+# but now we have to bundle it in
+cd $TMP
+rm -rf ctags-$CTAGSVER
+tar xvf $CWD/ctags-$CTAGSVER.tar.gz || exit 1
+cd ctags-$CTAGSVER
+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" LDFLAGS="$SLKLDFLAGS" \
+./configure \
+ --prefix=/usr \
+ --build=$ARCH-slackware-linux
+make $NUMJOBS || make || exit 1
+mkdir -p $PKG/usr/bin
+cat ctags > $PKG/usr/bin/ctags
+chmod 755 $PKG/usr/bin/ctags
+mkdir -p $PKG/usr/man/man1
+cat ctags.1 | gzip -9c > $PKG/usr/man/man1/ctags.1.gz
+mkdir -p $PKG/usr/doc/ctags-$CTAGSVER
+cp -a \
+ COPYING EXTENDING.html FAQ INSTALL INSTALL.oth NEWS README \
+ $PKG/usr/doc/ctags-$CTAGSVER
+chmod 644 $PKG/usr/doc/ctags-$CTAGSVER/*
+
+cd $TMP
+rm -rf vim$DIRVER
+tar xvf $CWD/vim-$VIMVER.tar.?z* || exit 1
+tar xvf $CWD/vim-$VIMVER-lang.tar.?z* || exit 1
+
+config_vim() {
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ $* \
+ --prefix=/usr \
+ --enable-pythoninterp \
+ --with-python-config-dir=/usr/lib${LIBDIRSUFFIX}/python$PYVER/config \
+ --enable-perlinterp \
+ --disable-tclinterp \
+ --enable-multibyte \
+ --enable-cscope \
+ --with-features=huge \
+ --with-compiledby="<volkerdi@slackware.com>" \
+ --build=$ARCH-slackware-linux
+
+ # I had been adding this, but got 100% complaints and 0% kudos:
+ # --enable-rubyinterp
+}
+
+cd $TMP/vim$DIRVER
+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 file in $CWD/patches/* ; do
+ ( zcat $file 2> /dev/null | patch -p0 --verbose --batch )
+done
+
+config_vim --without-x --disable-gui
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+rsync -lprvt $PKG/usr/share/man/ $PKG/usr/man/
+rm -r $PKG/usr/share/man
+
+cp -a runtime/vimrc_example.vim runtime/vimrc.new
+
+# Don't make backups in /var/spool/cron/*, which fixes "crontab -e":
+zcat $CWD/vim.vimrc.diff.gz | patch -p1 --verbose || exit 1
+
+# Add patched vimrc to the package:
+cat runtime/vimrc.new > $PKG/usr/share/vim/vimrc.new
+
+# Fix manpage symlinks:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Legacy binary links:
+( cd $PKG/usr/bin ; rm -rf ex )
+( cd $PKG/usr/bin ; ln -sf vim ex )
+( cd $PKG/usr/bin ; rm -rf rview )
+( cd $PKG/usr/bin ; ln -sf vim rview )
+( cd $PKG/usr/bin ; rm -rf rvim )
+( cd $PKG/usr/bin ; ln -sf vim rvim )
+( cd $PKG/usr/bin ; rm -rf view )
+( cd $PKG/usr/bin ; ln -sf vim view )
+( cd $PKG/usr/bin ; rm -rf eview )
+( cd $PKG/usr/bin ; ln -sf vim eview )
+( cd $PKG/usr/bin ; rm -rf evim )
+( cd $PKG/usr/bin ; ln -sf vim evim )
+
+mkdir -p $PKG/usr/doc/vim-$VIMVER.$PATCHLEVEL
+cp -a README.txt $PKG/usr/doc/vim-$VIMVER.$PATCHLEVEL
+find $PKG/usr/doc/vim-$VIMVER.$PATCHLEVEL -type f | xargs chmod 644
+( cd $PKG/usr/doc/vim-$VIMVER.$PATCHLEVEL ; rm -rf doc )
+( cd $PKG/usr/doc/vim-$VIMVER.$PATCHLEVEL ; ln -sf /usr/share/vim/vim$DIRVER doc )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc.vim > $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 usr/share/vim/vimrc.new
+EOF
+zcat $CWD/doinst.sh.gz >> $PKG/install/doinst.sh
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/vim-$VIMVER.$PATCHLEVEL-$ARCH-$BUILD.txz
+
diff --git a/source/ap/vim/vim.vimrc.diff b/source/ap/vim/vim.vimrc.diff
new file mode 100644
index 000000000..c94104a5f
--- /dev/null
+++ b/source/ap/vim/vim.vimrc.diff
@@ -0,0 +1,12 @@
+--- ./runtime/vimrc.new.orig 2008-07-02 15:11:53.000000000 -0500
++++ ./runtime/vimrc.new 2009-05-28 13:19:24.000000000 -0500
+@@ -87,6 +87,9 @@
+
+ endif " has("autocmd")
+
++" Make vim work with the 'crontab -e' command
++set backupskip+=/var/spool/cron/*
++
+ " Convenient command to see the difference between the current buffer and the
+ " file it was loaded from, thus the changes you made.
+ " Only define it when not defined already.
diff --git a/source/ap/vorbis-tools/slack-desc b/source/ap/vorbis-tools/slack-desc
new file mode 100644
index 000000000..c55a780cd
--- /dev/null
+++ b/source/ap/vorbis-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------------------------------------------------------|
+vorbis-tools: vorbis-tools (Ogg Vorbis Tools)
+vorbis-tools:
+vorbis-tools: The vorbis-tools package contains several basic tools for working with
+vorbis-tools: compressed audio files in the Ogg Vorbis (.ogg) format:
+vorbis-tools:
+vorbis-tools: oggenc (an .ogg encoder), ogg123 (a playback tool), vorbiscomment
+vorbis-tools: (add comments to vorbis files), ogginfo (show information about an
+vorbis-tools: ogg file), oggdec (a command line decoder), and vcut (a tool for
+vorbis-tools: splitting vorbis files).
+vorbis-tools:
+vorbis-tools: These tools require the libao, libogg, and libvorbis libraries.
diff --git a/source/ap/vorbis-tools/vorbis-tools.SlackBuild b/source/ap/vorbis-tools/vorbis-tools.SlackBuild
new file mode 100755
index 000000000..65c551a8d
--- /dev/null
+++ b/source/ap/vorbis-tools/vorbis-tools.SlackBuild
@@ -0,0 +1,80 @@
+#!/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=1.2.0
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-vorbis-tools
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf vorbis-tools-$VERSION
+tar xvf $CWD/vorbis-tools-$VERSION.tar.bz2 || exit 1
+cd vorbis-tools-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --program-prefix="" \
+ --program-suffix="" \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# No idea why this isn't built automatically any more...
+if [ ! -r $PKG/usr/bin/vcut ]; then
+ ( cd vcut
+ make
+ make install DESTDIR=$PKG
+ )
+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?/*.?
+
+mv $PKG/usr/share/doc $PKG/usr
+cp -a \
+ AUTHORS COPYING README \
+ $PKG/usr/doc/vorbis-tools-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/vorbis-tools-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/workbone/slack-desc b/source/ap/workbone/slack-desc
new file mode 100644
index 000000000..322e280f2
--- /dev/null
+++ b/source/ap/workbone/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------------------------------------------------------|
+workbone: workbone (text-based CD player)
+workbone:
+workbone: WorkBone is a simple interactive tool for for playing audio CDs from
+workbone: the Linux console.
+workbone:
+workbone:
+workbone:
+workbone:
+workbone:
+workbone:
+workbone:
diff --git a/source/ap/workbone/workbone.1.diff b/source/ap/workbone/workbone.1.diff
new file mode 100644
index 000000000..31ecbb50b
--- /dev/null
+++ b/source/ap/workbone/workbone.1.diff
@@ -0,0 +1,11 @@
+--- ./workbone.1.orig 1997-12-02 14:33:22.000000000 -0800
++++ ./workbone.1 2003-02-14 00:22:20.000000000 -0800
+@@ -78,7 +78,7 @@
+ Note that total CD elapsed time includes times for non-audio data
+ tracks in addition to playable tracks. Pushing the
+ DEL key on the numeric pad will bring up a help screen.
+-.bp
++.PP
+ .ft CW
+ .nf
+ +---- number pad -----+
diff --git a/source/ap/workbone/workbone.SlackBuild b/source/ap/workbone/workbone.SlackBuild
new file mode 100755
index 000000000..b2de0b48f
--- /dev/null
+++ b/source/ap/workbone/workbone.SlackBuild
@@ -0,0 +1,69 @@
+#!/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.
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-workbone
+
+VERSION=2.40
+SRCVER=2.4
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-3}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+tar xvf $CWD/workbone_$VERSION.orig.tar.gz || exit 1
+cd workbone-$SRCVER || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/workbone_$VERSION-3.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/workbone.1.diff.gz | patch -p1 --verbose || exit 1
+
+make $NUMJOBS || make || exit 1
+
+strip workbone
+mkdir -p $PKG/usr/bin
+cat workbone > $PKG/usr/bin/workbone
+chmod 755 $PKG/usr/bin/workbone
+
+mkdir -p $PKG/usr/man/man1
+cat workbone.1 | gzip -9c > $PKG/usr/man/man1/workbone.1.gz
+
+mkdir -p $PKG/usr/doc/workbone-$VERSION
+cp -a README $PKG/usr/doc/workbone-$VERSION
+chmod 644 $PKG/usr/doc/workbone-$VERSION/README
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/workbone-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/ap/workbone/workbone_2.40-3.diff b/source/ap/workbone/workbone_2.40-3.diff
new file mode 100644
index 000000000..ed32b2695
--- /dev/null
+++ b/source/ap/workbone/workbone_2.40-3.diff
@@ -0,0 +1,294 @@
+--- workbone-2.40.orig/hardware.c
++++ workbone-2.40/hardware.c
+@@ -177,7 +177,7 @@
+ if (cd_fd < 0)
+ {
+
+- if ((cd_fd = open(cd_device, 0)) < 0)
++ if ((cd_fd = open(cd_device, O_RDONLY | O_NONBLOCK)) < 0)
+ {
+
+ if (errno == EACCES)
+@@ -611,7 +611,7 @@
+ if (fcntl(fd, F_SETLK, &fl) < 0)
+ exit(0);
+
+- if (open(cd_device, 0) >= 0)
++ if (open(cd_device, O_RDONLY | O_NONBLOCK) >= 0)
+ {
+ brk(&end);
+ pause();
+--- workbone-2.40.orig/workbone.c
++++ workbone-2.40/workbone.c
+@@ -96,7 +96,7 @@
+ {
+
+ int sss, sel_stat, dly;
+- int fastin = FALSE;
++ int fastin = TRUE;
+ int scmd = 0, tmppos = 0;
+ int save_track = 1;
+ fd_set rset;
+@@ -166,6 +166,22 @@
+ /* set graphics */
+ if(play_track<0) setgraf ();
+ /* check if drive is mounted (from Mark Buckaway's cdplayer code) */
++ /* link reading code from cdtool */
++
++ /* find out if the device is a link, resolve link name */
++ {
++
++ char *pszTest;
++ char caB[100];
++ int ii;
++
++ ii = readlink(cd_device, caB, sizeof(caB)-1);
++ if (ii < 0) {
++ pszTest = cd_device;
++ }else {
++ pszTest = &caB[0];
++ caB[ii] = '\0';
++ }
+ if ((fp = setmntent (MOUNTED, "r")) == NULL)
+ {
+ fprintf (stderr, "Couldn't open %s: %s\n", MOUNTED, strerror (errno));
+@@ -173,7 +189,7 @@
+ }
+ while ((mnt = getmntent (fp)) != NULL)
+ {
+- if (strcmp (mnt->mnt_type, "iso9660") == 0)
++ if (strstr (mnt->mnt_fsname, pszTest) != NULL)
+ {
+ fputs ("CDROM already mounted. Operation aborted.\n", stderr);
+ endmntent (fp);
+@@ -181,6 +197,7 @@
+ }
+ }
+ endmntent (fp);
++ } /* end mount checking block */
+
+ /* display control panel template */
+ if(play_track<0) control_panel ();
+--- workbone-2.40.orig/debian/README.debian
++++ workbone-2.40/debian/README.debian
+@@ -0,0 +1,14 @@
++workbone for DEBIAN
++----------------------
++
++Workbone for Debian is a nice CD player. I've created a login called
++cdplay that has workman as its shell. That way I can enjoy the
++benefits of workman without the security hassle of leaving a virtual
++console open.
++
++Stephen Pitts <pitts2@memphisonline.com>, Tue, 29 Oct 1996 18:27:01 -0600
++
++Workbone no longer has a delay at startup. This was annoying and seems to
++serve no purpose with modern cdroms.
++
++Martin Mitchell <martin@debian.org>
+--- workbone-2.40.orig/debian/changelog
++++ workbone-2.40/debian/changelog
+@@ -0,0 +1,64 @@
++workbone (2.40-3) unstable; urgency=low
++
++ * Update to standards version 3.5.6.
++ * Update copyright file.
++ * Fix typo in package description. (closes: #125506)
++ * Add symlink to doc directory. (closes: #58785)
++ * Add open nonblocking patch from Chris Waters. (closes: #88641)
++
++ -- Martin Mitchell <martin@debian.org> Thu, 25 Apr 2002 00:45:59 +1000
++
++workbone (2.40-2) unstable; urgency=low
++
++ * Update to standards version 3.0.1.
++ * Update copyright file.
++ * Fix cd mounted detection to ignore iso9660 fs. (closes: #32056, #33973)
++
++ -- Martin Mitchell <martin@debian.org> Fri, 22 Oct 1999 03:04:38 +1000
++
++workbone (2.40-1) unstable; urgency=low
++
++ * New upstream release.
++ * Update copyright file.
++ * Update to standards version 2.4.1.
++ * Clean up rules file.
++
++ -- Martin Mitchell <martin@debian.org> Wed, 14 Oct 1998 02:11:49 +1000
++
++workbone (2.31-5) unstable; urgency=low
++
++ * Libc6 compile.
++ * Remove startup delay. (#10958)
++ * New maintainer.
++
++ -- Martin Mitchell <martin@debian.org> Tue, 11 Nov 1997 02:17:24 +1100
++
++workbone (2.31-4) unstable; urgency=low
++
++ * Added a postinst to let you know if you have a /dev/cdrom
++ * Closed all pending bugs
++
++ -- Stephen Pitts <pitts2@memphisonline.com> Sat, 16 Nov 1996 13:27:57 -0600
++
++workbone (2.31-3) unstable; urgency=low
++
++ * Changed architecture from i386 to any
++
++ -- Stephen Pitts <pitts2@memphisonline.com> Mon, 11 Nov 1996 20:02:03 -0600
++
++workbone (2.31-2) unstable; urgency=low
++
++ * Workbone was installed as /usr/bin instead of in /usr/bin. Whoops!
++
++ -- Stephen Pitts <pitts2@memphisonline.com> Fri, 8 Nov 1996 20:39:05 -0600
++
++workbone (2.31-1) unstable; urgency=low
++
++ * Version number incremented because of questionable handling of epoch
++ by dpkg/dselect
++ * New maintainer
++ * Package rebuilt from upstream sources using deb-make!
++
++ -- Stephen Pitts <pitts2@memphisonline.com> Tue, 29 Oct 1996 18:27:01 -0600
++
++
+--- workbone-2.40.orig/debian/control
++++ workbone-2.40/debian/control
+@@ -0,0 +1,14 @@
++Source: workbone
++Section: sound
++Priority: optional
++Maintainer: Martin Mitchell <martin@debian.org>
++Standards-Version: 3.5.6
++
++Package: workbone
++Architecture: any
++Depends: ${shlibs:Depends}
++Suggests: cdtool
++Description: A simple text-based CD player
++ Workbone is a simple, curses-based CD player that is controlled by
++ the num-lock keys. The cdtool package can be used to determine the
++ contents of a CD before playing it.
+--- workbone-2.40.orig/debian/copyright
++++ workbone-2.40/debian/copyright
+@@ -0,0 +1,11 @@
++This package was debianized by Stephen Pitts pitts2@memphisonline.com on
++Tue, 29 Oct 1996 18:27:01 -0600.
++
++It was downloaded from ftp.ibiblio.org:/pub/linux/apps/sound/cdrom/curses
++
++This package is now maintained by Martin Mitchell <martin@debian.org>.
++
++Copyright:
++
++workbone is copyrighted under the GNU General Public License,
++version 2. A copy can be found in /usr/share/common-licenses/GPL.
+--- workbone-2.40.orig/debian/rules
++++ workbone-2.40/debian/rules
+@@ -0,0 +1,76 @@
++#!/usr/bin/make -f
++# Sample debian.rules file - for GNU Hello (1.3).
++# Copyright 1994,1995 by Ian Jackson.
++# I hereby give you perpetual unlimited permission to copy,
++# modify and relicense this file, provided that you do not remove
++# my name from the file itself. (I assert my moral right of
++# paternity under the Copyright, Designs and Patents Act 1988.)
++# This file may have to be extensively modified
++
++package=workbone
++STRIP=strip --strip-unneeded --remove-section=.note --remove-section=.comment
++
++build:
++ $(checkdir)
++ make CFLAGS="-O2 -g" LDFLAGS=""
++ touch build
++
++clean:
++ $(checkdir)
++ -rm -f build
++ make clean
++ -rm -rf *~ debian/tmp debian/*~ debian/files debian/substvars
++
++binary-indep: checkroot build
++ $(checkdir)
++# There are no architecture-independent files to be uploaded
++# generated by this package. If there were any they would be
++# made here.
++
++binary-arch: checkroot build
++ $(checkdir)
++ -rm -rf debian/tmp
++ install -d debian/tmp/DEBIAN debian/tmp/usr/share/man/man1 debian/tmp/usr/share/doc/workbone debian/tmp/usr/bin
++ install -m 0755 workbone debian/tmp/usr/bin/workbone
++ $(STRIP) debian/tmp/usr/bin/workbone
++ install -m 0644 workbone.1 debian/tmp/usr/share/man/man1
++ gzip -9v debian/tmp/usr/share/man/man1/*
++ install -m 0644 CHANGES README debian/README.debian debian/tmp/usr/share/doc/workbone
++ install -m 0644 debian/changelog debian/tmp/usr/share/doc/workbone/changelog.Debian
++ gzip -9v debian/tmp/usr/share/doc/workbone/*
++ ( cd debian/tmp/usr/share/doc/workbone && ln -s CHANGES.gz changelog.gz )
++ install -m 0644 debian/copyright debian/tmp/usr/share/doc/workbone
++ install -m 0755 debian/postinst debian/tmp/DEBIAN
++ dpkg-shlibdeps debian/tmp/usr/bin/workbone
++
++ # Manage /usr/share/doc/* -> /usr/doc/* links
++ for name in workbone; \
++ do \
++ sed -e "s/PKG/$$name/g" debian/postinst > debian/$$name.postinst ; \
++ sed -e "s/PKG/$$name/g" debian/prerm > debian/$$name.prerm ; \
++ install -m 0755 debian/$$name.postinst debian/tmp/DEBIAN/postinst ; \
++ install -m 0755 debian/$$name.prerm debian/tmp/DEBIAN/prerm ; \
++ rm -f debian/$$name.postinst debian/$$name.prerm; \
++ done
++
++ dpkg-gencontrol -isp
++ chown -R root.root debian/tmp
++ chmod -R g-ws debian/tmp
++ dpkg --build debian/tmp ..
++
++define checkdir
++ test -f debian/rules
++endef
++
++# Below here is fairly generic really
++
++binary: binary-indep binary-arch
++
++source diff:
++ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
++
++checkroot:
++ $(checkdir)
++ test root = "`whoami`"
++
++.PHONY: binary binary-arch binary-indep clean checkroot
+--- workbone-2.40.orig/debian/postinst
++++ workbone-2.40/debian/postinst
+@@ -0,0 +1,15 @@
++#!/bin/sh
++
++set -e
++
++if [ "$1" = "configure" ]; then
++ if [ -d /usr/doc -a ! -e /usr/doc/PKG -a -d /usr/share/doc/PKG ]
++ then
++ ln -sf ../share/doc/PKG /usr/doc/PKG
++ fi
++fi
++
++if [ ! -e /dev/cdrom ]
++then
++echo "Please link /dev/cdrom to your CDROM device before running workbone."
++fi
+--- workbone-2.40.orig/debian/prerm
++++ workbone-2.40/debian/prerm
+@@ -0,0 +1,8 @@
++#!/bin/sh
++
++set -e
++
++if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/PKG ]
++then
++ rm -f /usr/doc/PKG
++fi
diff --git a/source/ap/xfsdump/slack-desc b/source/ap/xfsdump/slack-desc
new file mode 100644
index 000000000..040b64cd8
--- /dev/null
+++ b/source/ap/xfsdump/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------------------------------------------------------|
+xfsdump: xfsdump (backup tools for the XFS filesystem)
+xfsdump:
+xfsdump: The xfsdump package contains the xfsdump and xfsrestore utilities for
+xfsdump: backing up and restoring XFS partitions. xfsdump examines files in a
+xfsdump: filesystem, determines which need to be backed up, and copies those
+xfsdump: files to a specified disk, tape or other storage medium. xfsrestore
+xfsdump: performs the inverse function of xfsdump; it can restore a full
+xfsdump: or incremental backup of a filesystem.
+xfsdump:
+xfsdump:
+xfsdump:
diff --git a/source/ap/xfsdump/xfsdump.SlackBuild b/source/ap/xfsdump/xfsdump.SlackBuild
new file mode 100755
index 000000000..378d46de2
--- /dev/null
+++ b/source/ap/xfsdump/xfsdump.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+VERSION=3.0.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-xfsdump
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf xfsdump-$(echo $VERSION | cut -f 1 -d '-')
+tar xvf $CWD/xfsdump-$VERSION.tar.?z* || exit 1
+cd xfsdump-$(echo $VERSION | cut -f 1 -d '-') || exit 1
+
+zcat $CWD/xfsdump.destdir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Make sure you have the same version of autoconf as the
+# developers did... ;-)
+autoconf
+
+./configure \
+ --prefix=/usr \
+ --sbindir=/sbin \
+ --bindir=/usr/sbin \
+ --enable-gettext=yes \
+ --mandir=/usr/man \
+ --datadir=/usr/share \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG/usr/sbin
+ rm -f xfsdump xfsrestore
+ ln -sf /sbin/xfsdump xfsdump
+ ln -sf /sbin/xfsrestore xfsrestore
+)
+
+# Strip libraries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# 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
+
+mv $PKG/usr/share/doc $PKG/usr
+( cd $PKG/usr/doc ; mv xfsdump xfsdump-$VERSION )
+cp -a \
+ README doc/COPYING doc/CREDITS doc/PORTING \
+ $PKG/usr/doc/xfsdump-$VERSION
+mkdir -p $PKG/usr/doc/xfsdump-$VERSION/html
+( cd doc
+ cp -a *.gif *.html $PKG/usr/doc/xfsdump-$VERSION/html
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/xfsdump-$(echo $VERSION | tr - _ )-$ARCH-$BUILD.txz
+
diff --git a/source/ap/xfsdump/xfsdump.destdir.diff b/source/ap/xfsdump/xfsdump.destdir.diff
new file mode 100644
index 000000000..1772465dc
--- /dev/null
+++ b/source/ap/xfsdump/xfsdump.destdir.diff
@@ -0,0 +1,36 @@
+--- ./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
+
+ 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_INC_DIR = @includedir@
+-PKG_MAN_DIR = @mandir@
+-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
+-PKG_LOCALE_DIR = @datadir@/locale
++PKG_BIN_DIR = $(DESTDIR)@bindir@
++PKG_SBIN_DIR = $(DESTDIR)@sbindir@
++PKG_LIB_DIR = $(DESTDIR)@libdir@@libdirsuffix@
++PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@@libdirsuffix@
++PKG_INC_DIR = $(DESTDIR)@includedir@
++PKG_MAN_DIR = $(DESTDIR)@mandir@
++PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@
++PKG_LOCALE_DIR = $(DESTDIR)@datadir@/locale
+
+ CC = @cc@
+ AWK = @awk@
diff --git a/source/ap/zsh/doinst.sh b/source/ap/zsh/doinst.sh
new file mode 100644
index 000000000..5a862deb6
--- /dev/null
+++ b/source/ap/zsh/doinst.sh
@@ -0,0 +1,6 @@
+if ! grep zsh etc/shells 1> /dev/null 2> /dev/null; then
+ echo "/bin/zsh" >> etc/shells
+fi
+if [ ! -e etc/zprofile ]; then
+ ( cd etc ; ln -sf profile zprofile )
+fi
diff --git a/source/ap/zsh/slack-desc b/source/ap/zsh/slack-desc
new file mode 100644
index 000000000..8d9290001
--- /dev/null
+++ b/source/ap/zsh/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------------------------------------------------------|
+zsh: zsh (the Z shell)
+zsh:
+zsh: Zsh is a UNIX command interpreter (shell) which of the standard shells
+zsh: most resembles the Korn shell (ksh), although it is not completely
+zsh: compatible. It includes enhancements of many types, notably in the
+zsh: command-line editor, options for customizing its behavior, filename
+zsh: globbing, features to make C-shell (csh) users feel more at home and
+zsh: extra features drawn from tcsh (another 'custom' shell). Zsh was
+zsh: written by Paul Falstad.
+zsh:
+zsh:
diff --git a/source/ap/zsh/zsh-4.3.10-add_new_pkg_completion.diff b/source/ap/zsh/zsh-4.3.10-add_new_pkg_completion.diff
new file mode 100644
index 000000000..a30665a0e
--- /dev/null
+++ b/source/ap/zsh/zsh-4.3.10-add_new_pkg_completion.diff
@@ -0,0 +1,26 @@
+diff -Naur zsh-4.3.10.old/Completion/Linux/Command/_pkgtool zsh-4.3.10/Completion/Linux/Command/_pkgtool
+--- zsh-4.3.10.old/Completion/Linux/Command/_pkgtool 2005-06-24 10:15:27.000000000 -0400
++++ zsh-4.3.10/Completion/Linux/Command/_pkgtool 2009-07-07 20:39:01.000000000 -0400
+@@ -12,7 +12,7 @@
+ "-ask[always ask on package installation regardless of package's priority]" \
+ '-priority[provide a priority for the entire package list to use]:priority list:(ADD REC OPT SKP)' \
+ '-tagfile[specify a different file to use for package priorities]:tagfile:_files -/' \
+- '*:package file:_files -g "*.tgz(-.)"'
++ '*:package file:_files -g "*.t[gblx]z(-.)"'
+ ;;
+
+ removepkg)
+@@ -29,11 +29,11 @@
+ '--install-new[install new packages in addition to upgrading existing ones]' \
+ '--reinstall[upgrade even when the same version is already installed]' \
+ '--verbose[show all the gory details of the upgrade]' \
+- '*:package file:_files -g "*.tgz(-.)"'
++ '*:package file:_files -g "*.t[gblx]z(-.)"'
+ ;;
+
+ explodepkg)
+- _wanted file expl 'package file' _files -g '*.tgz(-.)'
++ _wanted file expl 'package file' _files -g '*.t[gblx]z(-.)'
+ ;;
+
+ makepkg)
diff --git a/source/ap/zsh/zsh.SlackBuild b/source/ap/zsh/zsh.SlackBuild
new file mode 100755
index 000000000..2a874fbf3
--- /dev/null
+++ b/source/ap/zsh/zsh.SlackBuild
@@ -0,0 +1,116 @@
+#!/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=4.3.10
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-zsh
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf zsh-$VERSION
+tar xvf $CWD/zsh-$VERSION.tar.?z* || exit 1
+tar xvf $CWD/zsh-$VERSION-doc.tar.?z* || exit 1
+cd zsh-$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 {} \;
+
+# Add t[blx]z to the zsh tab completion stuff
+zcat $CWD/zsh-4.3.10-add_new_pkg_completion.diff.gz | patch -p1 || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/zsh-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mv $PKG/usr/bin $PKG
+( cd $PKG/bin ; ln -sf zsh zsh-$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/etc
+
+mkdir -p $PKG/usr/doc/zsh-$VERSION/html-docs
+cp -a INSTALL LICENCE META-FAQ README $PKG/usr/doc/zsh-$VERSION
+cp -a Doc/*.html $PKG/usr/doc/zsh-$VERSION/html-docs
+
+mkdir -p $PKG/usr/info
+cp -a Doc/*info* $PKG/usr/info
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir $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/zsh-$VERSION-$ARCH-$BUILD.txz
+