aboutsummaryrefslogtreecommitdiffstats
path: root/patch_cmds
diff options
context:
space:
mode:
Diffstat (limited to 'patch_cmds')
-rw-r--r--patch_cmds/diffstat/CHANGES373
-rw-r--r--patch_cmds/diffstat/aclocal.m41306
-rw-r--r--patch_cmds/diffstat/config.guess1508
-rw-r--r--patch_cmds/diffstat/config.h38
-rw-r--r--patch_cmds/diffstat/config.sub1739
-rw-r--r--patch_cmds/diffstat/config_h.in8
-rw-r--r--patch_cmds/diffstat/configure7291
-rw-r--r--patch_cmds/diffstat/configure.in54
-rw-r--r--patch_cmds/diffstat/diffstat.1235
-rw-r--r--patch_cmds/diffstat/diffstat.c2491
-rw-r--r--patch_cmds/diffstat/install-sh294
-rw-r--r--patch_cmds/diffstat/makefile.in144
-rw-r--r--patch_cmds/diffstat/makefile.wnt35
-rw-r--r--patch_cmds/diffstat/package/debian/changelog25
-rw-r--r--patch_cmds/diffstat/package/debian/compat1
-rw-r--r--patch_cmds/diffstat/package/debian/control15
-rw-r--r--patch_cmds/diffstat/package/debian/copyright109
-rw-r--r--patch_cmds/diffstat/package/debian/docs1
-rw-r--r--patch_cmds/diffstat/package/debian/rules92
-rw-r--r--patch_cmds/diffstat/package/debian/source/format1
-rw-r--r--patch_cmds/diffstat/package/debian/watch4
-rw-r--r--patch_cmds/diffstat/package/diffstat.spec54
-rw-r--r--patch_cmds/diffstat/porting/getopt.c79
-rw-r--r--patch_cmds/diffstat/porting/getopt.h4
-rw-r--r--patch_cmds/diffstat/porting/system.h85
-rw-r--r--patch_cmds/diffstat/porting/wildcard.c109
-rw-r--r--patch_cmds/diffstat/testing/case01.pat417
-rw-r--r--patch_cmds/diffstat/testing/case01.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01R.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01Rp0.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01b.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01f0.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01k.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01p1.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01p9.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01r1.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01r2.ref28
-rw-r--r--patch_cmds/diffstat/testing/case01u.ref28
-rw-r--r--patch_cmds/diffstat/testing/case02.pat486
-rw-r--r--patch_cmds/diffstat/testing/case02.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02R.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02Rp0.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02b.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02f0.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02k.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02p1.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02p9.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02r1.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02r2.ref4
-rw-r--r--patch_cmds/diffstat/testing/case02u.ref4
-rw-r--r--patch_cmds/diffstat/testing/case03.pat35
-rw-r--r--patch_cmds/diffstat/testing/case03.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03R.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03Rp0.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03b.ref4
-rw-r--r--patch_cmds/diffstat/testing/case03f0.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03k.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03p1.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03p9.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03r1.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03r2.ref6
-rw-r--r--patch_cmds/diffstat/testing/case03u.ref6
-rw-r--r--patch_cmds/diffstat/testing/case04.pat352
-rw-r--r--patch_cmds/diffstat/testing/case04.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04R.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04Rp0.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04b.ref39
-rw-r--r--patch_cmds/diffstat/testing/case04f0.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04k.ref81
-rw-r--r--patch_cmds/diffstat/testing/case04p1.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04p9.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04r1.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04r2.ref41
-rw-r--r--patch_cmds/diffstat/testing/case04u.ref41
-rw-r--r--patch_cmds/diffstat/testing/case05.pat17
-rw-r--r--patch_cmds/diffstat/testing/case05.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case05u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case06.pat323
-rw-r--r--patch_cmds/diffstat/testing/case06.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06R.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06Rp0.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06b.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06f0.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06k.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06p1.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06p9.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06r1.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06r2.ref6
-rw-r--r--patch_cmds/diffstat/testing/case06u.ref6
-rw-r--r--patch_cmds/diffstat/testing/case07.pat107
-rw-r--r--patch_cmds/diffstat/testing/case07.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case07Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case07b.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07f0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07k.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07p1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07p9.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07r1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07r2.ref3
-rw-r--r--patch_cmds/diffstat/testing/case07u.ref3
-rw-r--r--patch_cmds/diffstat/testing/case08.pat343
-rw-r--r--patch_cmds/diffstat/testing/case08.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08R.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08Rp0.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08b.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08f0.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08k.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08p1.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08p9.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08r1.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08r2.ref9
-rw-r--r--patch_cmds/diffstat/testing/case08u.ref9
-rw-r--r--patch_cmds/diffstat/testing/case09.pat13
-rw-r--r--patch_cmds/diffstat/testing/case09.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09R.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09Rp0.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09b.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09f0.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09k.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09p1.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09p9.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09r1.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09r2.ref1
-rw-r--r--patch_cmds/diffstat/testing/case09u.ref1
-rw-r--r--patch_cmds/diffstat/testing/case10.pat67
-rw-r--r--patch_cmds/diffstat/testing/case10.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10R.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10Rp0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10b.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10f0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10k.ref4
-rw-r--r--patch_cmds/diffstat/testing/case10p1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10p9.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10r1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10r2.ref3
-rw-r--r--patch_cmds/diffstat/testing/case10u.ref3
-rw-r--r--patch_cmds/diffstat/testing/case11.pat12
-rw-r--r--patch_cmds/diffstat/testing/case11.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case11u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case12.pat163
-rw-r--r--patch_cmds/diffstat/testing/case12.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12R.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12Rp0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12b.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12f0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12k.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12p1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12p9.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12r1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12r2.ref3
-rw-r--r--patch_cmds/diffstat/testing/case12u.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13.pat303
-rw-r--r--patch_cmds/diffstat/testing/case13.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13R.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13Rp0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13b.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13f0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13k.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13p1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13p9.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13r1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13r2.ref3
-rw-r--r--patch_cmds/diffstat/testing/case13u.ref3
-rw-r--r--patch_cmds/diffstat/testing/case14.pat12
-rw-r--r--patch_cmds/diffstat/testing/case14.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case14u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case15.pat443
-rw-r--r--patch_cmds/diffstat/testing/case15.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15R.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15Rp0.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15b.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15f0.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15k.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15p1.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15p9.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15r1.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15r2.ref13
-rw-r--r--patch_cmds/diffstat/testing/case15u.ref13
-rw-r--r--patch_cmds/diffstat/testing/case16.pat2036
-rw-r--r--patch_cmds/diffstat/testing/case16.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16R.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16Rp0.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16b.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16f0.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16k.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16p1.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16p9.ref25
-rw-r--r--patch_cmds/diffstat/testing/case16r1.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16r2.ref30
-rw-r--r--patch_cmds/diffstat/testing/case16u.ref30
-rw-r--r--patch_cmds/diffstat/testing/case17.pat115
-rw-r--r--patch_cmds/diffstat/testing/case17.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17R.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17Rp0.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17b.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17f0.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17k.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17p1.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17p9.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17r1.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17r2.ref4
-rw-r--r--patch_cmds/diffstat/testing/case17u.ref4
-rw-r--r--patch_cmds/diffstat/testing/case18.pat7
-rw-r--r--patch_cmds/diffstat/testing/case18.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case18u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19.pat14
-rw-r--r--patch_cmds/diffstat/testing/case19.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case19u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case20.pat111
-rw-r--r--patch_cmds/diffstat/testing/case20.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20R.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20Rp0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20b.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20f0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20k.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20p1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20p9.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20r1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20r2.ref3
-rw-r--r--patch_cmds/diffstat/testing/case20u.ref3
-rw-r--r--patch_cmds/diffstat/testing/case21.pat74
-rw-r--r--patch_cmds/diffstat/testing/case21.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case21u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case22.pat651
-rw-r--r--patch_cmds/diffstat/testing/case22.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22R.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22Rp0.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22b.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22f0.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22k.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22p1.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22p9.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22r1.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22r2.ref37
-rw-r--r--patch_cmds/diffstat/testing/case22u.ref37
-rw-r--r--patch_cmds/diffstat/testing/case23.pat227
-rw-r--r--patch_cmds/diffstat/testing/case23.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23R.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23Rp0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23b.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23f0.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23k.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23p1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23p9.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23r1.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23r2.ref3
-rw-r--r--patch_cmds/diffstat/testing/case23u.ref3
-rw-r--r--patch_cmds/diffstat/testing/case24.pat217
-rw-r--r--patch_cmds/diffstat/testing/case24.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24R.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24Rp0.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24b.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24f0.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24k.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24p1.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24p9.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24r1.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24r2.ref6
-rw-r--r--patch_cmds/diffstat/testing/case24u.ref6
-rw-r--r--patch_cmds/diffstat/testing/case25.pat471
-rw-r--r--patch_cmds/diffstat/testing/case25.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25R.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25Rp0.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25b.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25f0.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25k.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25p1.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25p9.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25r1.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25r2.ref7
-rw-r--r--patch_cmds/diffstat/testing/case25u.ref7
-rw-r--r--patch_cmds/diffstat/testing/case26.pat1901
-rw-r--r--patch_cmds/diffstat/testing/case26.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26R.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26Rp0.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26b.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26f0.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26k.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26p1.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26p9.ref27
-rw-r--r--patch_cmds/diffstat/testing/case26r1.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26r2.ref35
-rw-r--r--patch_cmds/diffstat/testing/case26u.ref35
-rw-r--r--patch_cmds/diffstat/testing/case27.pat409
-rw-r--r--patch_cmds/diffstat/testing/case27.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27R.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27Rp0.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27b.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27f0.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27k.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27p1.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27p9.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27r1.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27r2.ref8
-rw-r--r--patch_cmds/diffstat/testing/case27u.ref8
-rw-r--r--patch_cmds/diffstat/testing/case28.pat326
-rw-r--r--patch_cmds/diffstat/testing/case28.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case28u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29.pat193
-rw-r--r--patch_cmds/diffstat/testing/case29.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case29u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31.pat22
-rw-r--r--patch_cmds/diffstat/testing/case31.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31l.pat8
-rw-r--r--patch_cmds/diffstat/testing/case31l.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lR.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lRp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lb.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lf0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lk.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lp1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lp9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lr1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lr2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31lu.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31u.pat51
-rw-r--r--patch_cmds/diffstat/testing/case31u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31uR.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31uRp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31ub.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31uf0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31uk.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31up1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31up9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31ur1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31ur2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case31uu.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32.pat13
-rw-r--r--patch_cmds/diffstat/testing/case32.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case32u.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33.pat13
-rw-r--r--patch_cmds/diffstat/testing/case33.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33R.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33Rp0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33b.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33f0.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33k.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33p1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33p9.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33r1.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33r2.ref2
-rw-r--r--patch_cmds/diffstat/testing/case33u.ref2
-rw-r--r--patch_cmds/diffstat/testing/run_atac.sh6
-rw-r--r--patch_cmds/diffstat/testing/run_test.sh51
-rw-r--r--patch_cmds/patch/Makefile6
-rw-r--r--patch_cmds/patch/backupfile.c235
-rw-r--r--patch_cmds/patch/backupfile.h38
-rw-r--r--patch_cmds/patch/common.h117
-rw-r--r--patch_cmds/patch/inp.c471
-rw-r--r--patch_cmds/patch/inp.h31
-rw-r--r--patch_cmds/patch/mkpath.c74
-rw-r--r--patch_cmds/patch/patch.1698
-rw-r--r--patch_cmds/patch/patch.c1058
-rw-r--r--patch_cmds/patch/pathnames.h11
-rw-r--r--patch_cmds/patch/pch.c1544
-rw-r--r--patch_cmds/patch/pch.h56
-rw-r--r--patch_cmds/patch/util.c420
-rw-r--r--patch_cmds/patch/util.h50
-rw-r--r--patch_cmds/patch_cmds.plist54
-rw-r--r--patch_cmds/patch_cmds.txt50
-rw-r--r--patch_cmds/patch_cmds.xcodeproj/project.pbxproj398
452 files changed, 34504 insertions, 0 deletions
diff --git a/patch_cmds/diffstat/CHANGES b/patch_cmds/diffstat/CHANGES
new file mode 100644
index 0000000..00f95ca
--- /dev/null
+++ b/patch_cmds/diffstat/CHANGES
@@ -0,0 +1,373 @@
+-- $Id: CHANGES,v 1.73 2012/01/03 09:38:29 tom Exp $
+
+2012/01/03 (diffstat 1.55)
+ + add -R option, like patch's, to reverse the order of the comparison.
+
+ + FreeBSD ports/148604, ports/149500 reported that lzcat may not
+ support extracting files compressed in xz format (patch by Frederic
+ Culot, FreeBSD #149500).
+
+ + address documentation issue raised in Novell #739210
+
+ + correct typo s/Solaris/Solar/.
+
+ + updated configure script macros:
+ CF_ANSI_CC_CHECK CF_DISABLE_LEAKS CF_GCC_ATTRIBUTES CF_GCC_WARNINGS
+ CF_MAKE_TAGS CF_MSG_LOG CF_PATH_PROG CF_WITH_INSTALL_PREFIX
+ CF_XOPEN_SOURCE
+
+ + update config.guess, config.sub
+
+2010/10/10 (diffstat 1.54)
+ + change Debian package script to use native format.
+
+ + correct counts used for new files when -S/-D options are used.
+
+ + minor typography improvement to manpage (patch by Solar Designer)
+
+ + remove the temporary directory on error, introduced in 1.48+ (patch
+ by Solar Designer).
+
+2010/07/19 (diffstat 1.53)
+
+ + add missing "break" statement which left "-c" option falling-through
+ into "-C".
+
+2010/07/16 (diffstat 1.52)
+
+ + add "-C" option to show the histogram using SGR colors.
+
+ + add "-s" option to show only the summary line.
+
+ + add configure check for "xz", using this in preference to "lzcat"
+ (FreeBSD #148604).
+
+ + also escape literal dashes used as part of the histogram in the
+ manpage.
+
+ + modify hyphens vs dashes in manpage per
+ http://lintian.debian.org/tags/hyphen-used-as-minus-sign.html
+ (patch by Francois Marier).
+
+ + drop mkdirs.sh, use "mkdir -p"
+
+ + add configure checks for ctags and lint.
+
+ + updated configure macros
+
+ + reformat CHANGES to work with metrics script.
+
+ + fix strict gcc warnings, e.g., using const.
+
+ + improve a case where filenames have embedded blanks (patch by Reinier
+ Post).
+
+ + update config.guess, config.sub
+
+2009/11/07 (diffstat 1.51)
+
+ + correct suffix-check for ".xz" files as command-line parameters
+ rather than as piped input (report by Moritz Barsnick).
+
+2009/11/6 (diffstat 1.50)
+
+ + build/test fixes for MSYS, i.e., MinGW.
+
+ + improve configure check for get_unlocked function.
+
+ + use $TMPDIR for path of temporary file used in decompression.
+
+ + correct else-condition for detecting compression type (patch by Zach
+ Hirsch).
+
+2009/08/31 (diffstat 1.49)
+
+ + improve lzma support, add support for xz (patch by Eric Blake).
+
+ + add special case for no-newline message from some diff's (Ubuntu
+ #269895).
+
+ + improve configure check for getopt header.
+
+ + add configure special case for HPUX 11 with _XOPEN_SOURCE definition.
+
+ + update config.guess, config.sub
+
+2009/08/11 (diffstat 1.48)
+
+ + add decompression tests for lzma and pack file types.
+
+ + check for zcat and uncompress in preference to "compress -dc".
+
+ + modify to check the first few bytes of standard input, and use a
+ corresponding decompression utility if the stream appears to be
+ compressed. This requires making a temporary copy of the data
+ (Debian #491575).
+
+ + add -N option, to truncate filenames.
+
+ + use getc_unlocked() rather than fgetc_unlocked()
+
+ + modify to recognize Perforce-style diffs (patch by Ed Schouten).
+
+ + updated configure macros to improve compiler warning checks, use
+ $PATH_SEPARATOR rather than $PATH_SEP (for consistency with some
+ autoconf versions),
+
+ + fix typo in configure --with-install-prefix option (report by
+ Dagobert Michelsen).
+
+ + update config.guess, config.sub
+
+2009/03/29 (diffstat 1.47)
+
+ modify to work with patch ".rej" files, which do not have a header to
+ tell which file is affected.
+
+ fix typo in usage message (reports by Moritz Barsnick, John McNamara,
+ Richard Quadling).
+
+2008-08-06 (diffstat 1.46)
+
+ + add "-S", "-D" and "-m" options to provide a way to show the amount
+ of difference relative to the total sizes of the files.
+
+ + add "-q" option (Debian #488248, patch by Greg Norris).
+
+2007/09/04 (diffstat 1.45)
+
+ + add "-b" option (Debian #379380, patch by Greg Norris).
+
+2007/08/26 (diffstat 1.44)
+
+ + add a check for default-diff output, e.g., "diff foo bar|diffstat",
+ which has no "diff" command in the output for diffstat to guess that
+ a diff is beginning.
+
+ + add a check after completing a chunk for unified diff to ensure that
+ the next line either begins another chunk for the diff, or starts
+ another diff, e.g., a context diff (report by Adrian Bunk).
+
+ + add configure options for leak-checking valgrind, etc.
+
+ + use install-sh rather than install.sh
+
+ + updated config.guess and config.sub
+
+ + updated configure macros CF_GCC_ATTRIBUTES CF_GCC_WARNINGS CF_MSG_LOG
+ CF_PATH_SYNTAX CF_VERBOSE CF_XOPEN_SOURCE
+
+2006/07/16 (diffstat 1.43)
+
+ + fix to avoid modifying data which is being used by tsearch() for
+ ordering the binary tree (report by Adrian Bunk).
+
+2006/07/02 (diffstat 1.42)
+
+ + do not ignore pathnames in /tmp/, since some tools create usable
+ for both old/new files there (Debian #376086).
+
+ + correct ifdef for fgetc_unlocked().
+
+ + updated configure macros CF_GCC_VERSION, CF_PATH_SYNTAX and
+ CF_XOPEN_SOURCE
+
+ + add configure check for compress, gzip and bzip2 programs that may be
+ used to decompress files.
+
+2005/08/24 (diffstat 1.41)
+
+ + update usage message for options added in 1.40 (report by Eric Blake).
+
+2005-08-15 (diffstat 1.40)
+
+ + add options -l, -r and -t. add to -f option (patch, comments by
+ Jean Delvare, Michael Burian).
+
+ + improve I/O on Linux using fgetc_locked().
+
+ + improve searching of long sorted lists using tsearch()
+
+ + improve configure-script checks for Intel compiler warnings.
+
+2005-04-10 (diffstat 1.39)
+
+ + change order of merging and prefix-stripping so stripping all prefixes,
+ e.g., with -p9, will be sorted as expected (patch by Jean Delvare).
+
+ + correct a reference to freed memory after merging found with valgrind.
+
+2005-01-16 (diffstat 1.38)
+
+ + add makefile.wnt, etc., for win32 port.
+
+ + fix "make check" to work even when PATH or the build directory has
+ spaces in it (patch by Eric Blake).
+
+ + add support for '--help' and '--version' command line arguments, for a
+ consistent interface with GNU tools, and still compatible to POSIX
+ requirements on utility options (patch by Eric Blake).
+
+2004-12-18
+
+ + modify makefile.in and run_test.sh to allow "make check" to be run
+ from a build directory which is not the same as the source directory,
+ i.e., when the configure --srcdir option is used (request by Eric
+ Blake).
+
+ + modify distribution to include sample of regression tests, so a
+ "make check" will work (request by Eric Blake).
+
+2004-12-16 (diffstat 1.37)
+
+ + fix a different case for data beginning with "--" which was treated
+ as a header line.
+
+2004-12-14 (diffstat 1.36)
+
+ + Fix allocation problems. Open files in binary mode for reading.
+ Getopt returns -1, not necessarily EOF. Add const where useful. Use
+ NO_IDENT where necessary. malloc() comes from <stdlib.h> in standard
+ systems (Patch by Eric Blake <ebb9@byu.net>.)
+
+2004-11-08 (diffstat 1.35)
+
+ + modify makefile.in to work with configure --srcdir option (report by
+ Eric Blake).
+
+ + minor fix for resync of unified diffs checks for range (line beginning
+ with '@' without header lines (successive lines beginning with "---"
+ and "+++") (Debian #264098).
+
+ + miscellaneous updates for configure script
+
+2003-11-09 (diffstat 1.34)
+
+ + improve check for certain lines (not those that begin a chunk) that
+ begin with '-', treating all except "---" as a delete (report by
+ James Rowe <Jay@jnrowe.uklinux.net>).
+
+ + minor updates to configure script.
+
+2003-02-14 (diffstat 1.33)
+
+ + modified to work around a case where the filename+date was incomplete,
+ i.e., missing one of the components such as the day of the month.
+ While diffstat does not use the date directly, it helps distinguish
+ some lines from non-patches (report by Moritz Barsnick
+ <moritz@barsnick.net>).
+
+ + add "-h" option (request by Moritz Barsnick).
+
+ + fix a typo in usage message (report by Moritz Barsnick).
+
+ + add "-e" and "-o" options to simplify testing on OS/2 EMX.
+
+2003-01-04 (diffstat 1.32)
+
+ + modified to handle patches generated by makepatch-2.00_09, which uses
+ both "Index" and "diff" lines (report by D Roland Walker). As a side
+ effect, the additional merging eliminates occasional reports with
+ zero differences.
+
+ + modified to avoid buffer overflows.
+
+ + fixes for Debian #155000 (did not handle a '-' in first content-column
+ of a unified diff) and #170947 (option to turn the progress messages
+ off).
+
+ + updated configure script using aclocal.m4 macros
+
+ + update makefile.in to improve use of autoconf (report/patch by Nix
+ <nix@esperi.demon.co.uk>).
+
+2002-08-20 (diffstat 1.31)
+
+ + add -u, -k options to override diffstat's normal sorting (-u) and
+ merging (-k) of identical filenames. (-u requested by H Peter Anvin
+ <hpa@zytor.com>).
+
+2002-08-09 (diffstat 1.30)
+
+ + allow either '/' or '-' as delimiters in dates, to accommodate
+ gendiff (report by Rik van Riel <riel@conectiva.com.br>). This
+ corresponds to the time format used in diffutils 2.8 whose changelog
+ states that this is ISO 8601 (though online references differ).
+
+2001-10-10 (diffstat 1.29)
+
+ + add bzip2 (.bz2) suffix (suggested by Gregory T Norris
+ <haphazard@socket.net>, Debian #82969).
+
+ + add check for diff from RCS archive where the "diff" lines do not
+ reference a filename.
+
+2000-03-29 (diffstat 1.28)
+
+ + Add -c option (to prefix output with '#' comment), eliminating a step
+ in my script that combines diffstat output with a patch. This is a
+ workaround for OSF1's broken sed utility.
+
+ + Check for compressed file suffixes .Z and .gz, read uncompressed data
+ via pipe (Debian wishlist item #53975 by ch@lathspell.westend.com).
+
+ + Simplified makefile based on comments by M Sweger
+ <mikesw@whiterose.net>
+
+ + Adapted changes from Troy Engel <tengel@sonic.net> as "-f" option.
+
+1998-05-27 (diffstat 1.27)
+
+ + Debian diff's don't show dates on the lines where we expect to see
+ filenames.
+
+1998-01-16 (diffstat 1.26, Patch 5)
+
+ + Change copyright terms.
+
+ + Accommodate patches w/o tabs in header lines (e.g., from cut/paste).
+ Still prefer the tabs because otherwise we cannot have spaces in
+ filenames.
+
+ + Strip suffixes such as ".orig", to avoid confusing output.
+
+1996-03-16 (diffstat 1.24, Patch 4)
+
+ + Corrected state-transition after "Binary".
+
+ + Added testing subdirectory
+
+ + Added -p option.
+
+ + Handle differences from /tmp (e.g., for X11R5 patches).
+
+1995-05-06 (diffstat 1.17 Patch 3)
+
+ + Repost whole program to comp.sources.misc (1.17)
+
+ + Mods to scaling: limit to 1:1 if only a few changes were made; added
+ logic to accumulate error across +/-/! calls.
+
+ + added logic to recognize 'rcsdiff -u' output.
+
+1994-12-26 (diffstat 1.15, Patch 2)
+
+ + Strip common pathname prefix (1.15)
+
+1994-11-13 (diffstat 1.14, Patch 1)
+
+ + Test for <string.h> vs <strings.h>
+
+ + Corrected error in 'match()' that didn't handle properly the case
+ when an argument was a null string (i.e., blank lines in a unified
+ diff).
+
+ + Added options '-n' and '-V'
+
+ + Added patchlev.h, CHANGES files.
+
+ + Added install.sh, for autoconf 2.1
+
+1994-06-13 (diffstat 1.12, Patch 0)
+
+ + Initial release of 'diffstat' (1.12).
diff --git a/patch_cmds/diffstat/aclocal.m4 b/patch_cmds/diffstat/aclocal.m4
new file mode 100644
index 0000000..1f93487
--- /dev/null
+++ b/patch_cmds/diffstat/aclocal.m4
@@ -0,0 +1,1306 @@
+dnl $Id: aclocal.m4,v 1.21 2012/01/03 09:37:14 tom Exp $
+dnl autoconf macros for 'diffstat'
+dnl
+dnl Copyright 2003-2010,2012 Thomas E. Dickey
+dnl
+dnl See also
+dnl http://invisible-island.net/autoconf/
+dnl
+dnl ---------------------------------------------------------------------------
+dnl ---------------------------------------------------------------------------
+dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42
+dnl -------------
+dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
+dnl The second parameter if given makes this macro verbose.
+dnl
+dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
+dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
+dnl confused by the quotes (which require backslashes to keep them usable).
+AC_DEFUN([CF_ADD_CFLAGS],
+[
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $1
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+ CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+ ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+ ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+ ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+AC_SUBST(EXTRA_CPPFLAGS)
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ANSI_CC_CHECK version: 11 updated: 2011/07/01 19:47:45
+dnl ----------------
+dnl This was originally adapted from the macros 'fp_PROG_CC_STDC' and
+dnl 'fp_C_PROTOTYPES' in the sharutils 4.2 distribution.
+AC_DEFUN([CF_ANSI_CC_CHECK],
+[
+# This should have been defined by AC_PROG_CC
+: ${CC:=cc}
+
+# Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
+# into CC. This will not help with broken scripts that wrap the compiler with
+# options, but eliminates a more common category of user confusion.
+AC_MSG_CHECKING(\$CC variable)
+case "$CC" in #(vi
+*[[\ \ ]]-[[IUD]]*)
+ AC_MSG_RESULT(broken)
+ AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
+ # humor him...
+ cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'`
+ CC=`echo "$CC" | sed -e 's/[[ ]].*//'`
+ CF_ADD_CFLAGS($cf_flags)
+ ;;
+*)
+ AC_MSG_RESULT(ok)
+ ;;
+esac
+
+AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[
+cf_cv_ansi_cc=no
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX -Aa -D_HPUX_SOURCE
+# SVR4 -Xc
+# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
+for cf_arg in "-DCC_HAS_PROTOS" \
+ "" \
+ -qlanglvl=ansi \
+ -std1 \
+ -Ae \
+ "-Aa -D_HPUX_SOURCE" \
+ -Xc
+do
+ CF_ADD_CFLAGS($cf_arg)
+ AC_TRY_COMPILE(
+[
+#ifndef CC_HAS_PROTOS
+#if !defined(__STDC__) || (__STDC__ != 1)
+choke me
+#endif
+#endif
+],[
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};],
+ [cf_cv_ansi_cc="$cf_arg"; break])
+done
+CFLAGS="$cf_save_CFLAGS"
+CPPFLAGS="$cf_save_CPPFLAGS"
+])
+
+if test "$cf_cv_ansi_cc" != "no"; then
+if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
+ CF_ADD_CFLAGS($cf_cv_ansi_cc)
+else
+ AC_DEFINE(CC_HAS_PROTOS)
+fi
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ANSI_CC_REQD version: 4 updated: 2008/03/23 14:48:54
+dnl ---------------
+dnl For programs that must use an ANSI compiler, obtain compiler options that
+dnl will make it recognize prototypes. We'll do preprocessor checks in other
+dnl macros, since tools such as unproto can fake prototypes, but only part of
+dnl the preprocessor.
+AC_DEFUN([CF_ANSI_CC_REQD],
+[AC_REQUIRE([CF_ANSI_CC_CHECK])
+if test "$cf_cv_ansi_cc" = "no"; then
+ AC_MSG_ERROR(
+[Your compiler does not appear to recognize prototypes.
+You have the following choices:
+ a. adjust your compiler options
+ b. get an up-to-date compiler
+ c. use a wrapper such as unproto])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
+dnl --------------
+dnl Allow user to disable a normally-on option.
+AC_DEFUN([CF_ARG_DISABLE],
+[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42
+dnl -------------
+dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
+dnl values.
+dnl
+dnl Parameters:
+dnl $1 = option name
+dnl $2 = help-string
+dnl $3 = action to perform if option is not default
+dnl $4 = action if perform if option is default
+dnl $5 = default option value (either 'yes' or 'no')
+AC_DEFUN([CF_ARG_OPTION],
+[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
+ if test "$enableval" != "$5" ; then
+ifelse([$3],,[ :]dnl
+,[ $3]) ifelse([$4],,,[
+ else
+ $4])
+ fi],[enableval=$5 ifelse([$4],,,[
+ $4
+])dnl
+ ])])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59
+dnl --------------
+dnl Check if we're accidentally using a cache from a different machine.
+dnl Derive the system name, as a check for reusing the autoconf cache.
+dnl
+dnl If we've packaged config.guess and config.sub, run that (since it does a
+dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
+dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
+dnl which is useful in cross-compiles.
+dnl
+dnl Note: we would use $ac_config_sub, but that is one of the places where
+dnl autoconf 2.5x broke compatibility with autoconf 2.13
+AC_DEFUN([CF_CHECK_CACHE],
+[
+if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
+ ifelse([$1],,[AC_CANONICAL_HOST],[$1])
+ system_name="$host_os"
+else
+ system_name="`(uname -s -r) 2>/dev/null`"
+ if test -z "$system_name" ; then
+ system_name="`(hostname) 2>/dev/null`"
+ fi
+fi
+test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name")
+AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
+
+test -z "$system_name" && system_name="$cf_cv_system_name"
+test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
+
+if test ".$system_name" != ".$cf_cv_system_name" ; then
+ AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
+ AC_MSG_ERROR("Please remove config.cache and try again.")
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_DISABLE_ECHO version: 11 updated: 2009/12/13 13:16:57
+dnl ---------------
+dnl You can always use "make -n" to see the actual options, but it's hard to
+dnl pick out/analyze warning messages when the compile-line is long.
+dnl
+dnl Sets:
+dnl ECHO_LT - symbol to control if libtool is verbose
+dnl ECHO_LD - symbol to prefix "cc -o" lines
+dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
+dnl SHOW_CC - symbol to put before explicit "cc -c" lines
+dnl ECHO_CC - symbol to put before any "cc" line
+dnl
+AC_DEFUN([CF_DISABLE_ECHO],[
+AC_MSG_CHECKING(if you want to see long compiling messages)
+CF_ARG_DISABLE(echo,
+ [ --disable-echo display "compiling" commands],
+ [
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking [$]@;'
+ RULE_CC='@echo compiling [$]<'
+ SHOW_CC='@echo compiling [$]@'
+ ECHO_CC='@'
+],[
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
+])
+AC_MSG_RESULT($enableval)
+AC_SUBST(ECHO_LT)
+AC_SUBST(ECHO_LD)
+AC_SUBST(RULE_CC)
+AC_SUBST(SHOW_CC)
+AC_SUBST(ECHO_CC)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_DISABLE_LEAKS version: 6 updated: 2010/07/23 04:14:32
+dnl ----------------
+dnl Combine no-leak checks with the libraries or tools that are used for the
+dnl checks.
+AC_DEFUN([CF_DISABLE_LEAKS],[
+
+AC_REQUIRE([CF_WITH_DMALLOC])
+AC_REQUIRE([CF_WITH_DBMALLOC])
+AC_REQUIRE([CF_WITH_VALGRIND])
+
+AC_MSG_CHECKING(if you want to perform memory-leak testing)
+AC_ARG_ENABLE(leaks,
+ [ --disable-leaks test: free permanent memory, analyze leaks],
+ [if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi],
+ : ${with_no_leaks:=no})
+AC_MSG_RESULT($with_no_leaks)
+
+if test "$with_no_leaks" = yes ; then
+ AC_DEFINE(NO_LEAKS)
+ AC_DEFINE(YY_NO_LEAKS)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32
+dnl -----------------
+dnl Test for availability of useful gcc __attribute__ directives to quiet
+dnl compiler warnings. Though useful, not all are supported -- and contrary
+dnl to documentation, unrecognized directives cause older compilers to barf.
+AC_DEFUN([CF_GCC_ATTRIBUTES],
+[
+if test "$GCC" = yes
+then
+cat > conftest.i <<EOF
+#ifndef GCC_PRINTF
+#define GCC_PRINTF 0
+#endif
+#ifndef GCC_SCANF
+#define GCC_SCANF 0
+#endif
+#ifndef GCC_NORETURN
+#define GCC_NORETURN /* nothing */
+#endif
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+EOF
+if test "$GCC" = yes
+then
+ AC_CHECKING([for $CC __attribute__ directives])
+cat > conftest.$ac_ext <<EOF
+#line __oline__ "${as_me:-configure}"
+#include "confdefs.h"
+#include "conftest.h"
+#include "conftest.i"
+#if GCC_PRINTF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+#else
+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
+#endif
+#if GCC_SCANF
+#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
+#else
+#define GCC_SCANFLIKE(fmt,var) /*nothing*/
+#endif
+extern void wow(char *,...) GCC_SCANFLIKE(1,2);
+extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
+extern void foo(void) GCC_NORETURN;
+int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
+EOF
+ cf_printf_attribute=no
+ cf_scanf_attribute=no
+ for cf_attribute in scanf printf unused noreturn
+ do
+ CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
+ cf_directive="__attribute__(($cf_attribute))"
+ echo "checking for $CC $cf_directive" 1>&AC_FD_CC
+
+ case $cf_attribute in #(vi
+ printf) #(vi
+ cf_printf_attribute=yes
+ cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+ ;;
+ scanf) #(vi
+ cf_scanf_attribute=yes
+ cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+ ;;
+ *) #(vi
+ cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE $cf_directive
+EOF
+ ;;
+ esac
+
+ if AC_TRY_EVAL(ac_compile); then
+ test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
+ cat conftest.h >>confdefs.h
+ case $cf_attribute in #(vi
+ printf) #(vi
+ if test "$cf_printf_attribute" = no ; then
+ cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) /* nothing */
+EOF
+ else
+ cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+EOF
+ fi
+ ;;
+ scanf) #(vi
+ if test "$cf_scanf_attribute" = no ; then
+ cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) /* nothing */
+EOF
+ else
+ cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
+EOF
+ fi
+ ;;
+ esac
+ fi
+ done
+else
+ fgrep define conftest.i >>confdefs.h
+fi
+rm -rf conftest*
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31
+dnl --------------
+dnl Find version of gcc
+AC_DEFUN([CF_GCC_VERSION],[
+AC_REQUIRE([AC_PROG_CC])
+GCC_VERSION=none
+if test "$GCC" = yes ; then
+ AC_MSG_CHECKING(version of $CC)
+ GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+ test -z "$GCC_VERSION" && GCC_VERSION=unknown
+ AC_MSG_RESULT($GCC_VERSION)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GCC_WARNINGS version: 27 updated: 2010/10/23 15:52:32
+dnl ---------------
+dnl Check if the compiler supports useful warning options. There's a few that
+dnl we don't use, simply because they're too noisy:
+dnl
+dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
+dnl -Wredundant-decls (system headers make this too noisy)
+dnl -Wtraditional (combines too many unrelated messages, only a few useful)
+dnl -Wwrite-strings (too noisy, but should review occasionally). This
+dnl is enabled for ncurses using "--enable-const".
+dnl -pedantic
+dnl
+dnl Parameter:
+dnl $1 is an optional list of gcc warning flags that a particular
+dnl application might want to use, e.g., "no-unused" for
+dnl -Wno-unused
+dnl Special:
+dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
+dnl
+AC_DEFUN([CF_GCC_WARNINGS],
+[
+AC_REQUIRE([CF_GCC_VERSION])
+CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+
+cat > conftest.$ac_ext <<EOF
+#line __oline__ "${as_me:-configure}"
+int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
+EOF
+
+if test "$INTEL_COMPILER" = yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #279: controlling expression is constant
+
+ AC_CHECKING([for $CC warning options])
+ cf_save_CFLAGS="$CFLAGS"
+ EXTRA_CFLAGS="-Wall"
+ for cf_opt in \
+ wd1419 \
+ wd1683 \
+ wd1684 \
+ wd193 \
+ wd593 \
+ wd279 \
+ wd810 \
+ wd869 \
+ wd981
+ do
+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+ if AC_TRY_EVAL(ac_compile); then
+ test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
+
+elif test "$GCC" = yes
+then
+ AC_CHECKING([for $CC warning options])
+ cf_save_CFLAGS="$CFLAGS"
+ EXTRA_CFLAGS=
+ cf_warn_CONST=""
+ test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
+ for cf_opt in W Wall \
+ Wbad-function-cast \
+ Wcast-align \
+ Wcast-qual \
+ Winline \
+ Wmissing-declarations \
+ Wmissing-prototypes \
+ Wnested-externs \
+ Wpointer-arith \
+ Wshadow \
+ Wstrict-prototypes \
+ Wundef $cf_warn_CONST $1
+ do
+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+ if AC_TRY_EVAL(ac_compile); then
+ test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+ case $cf_opt in #(vi
+ Wcast-qual) #(vi
+ CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
+ ;;
+ Winline) #(vi
+ case $GCC_VERSION in
+ [[34]].*)
+ CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
+ continue;;
+ esac
+ ;;
+ esac
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
+fi
+rm -rf conftest*
+
+AC_SUBST(EXTRA_CFLAGS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GETOPT_HEADER version: 4 updated: 2009/08/31 20:07:52
+dnl ----------------
+dnl Check for getopt's variables which are commonly defined in stdlib.h,
+dnl unistd.h or (nonstandard) in getopt.h
+AC_DEFUN([CF_GETOPT_HEADER],
+[
+AC_HAVE_HEADERS(unistd.h getopt.h)
+AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
+cf_cv_getopt_header=none
+for cf_header in stdio.h stdlib.h unistd.h getopt.h
+do
+AC_TRY_COMPILE([
+#include <$cf_header>],
+[int x = optind; char *y = optarg],
+[cf_cv_getopt_header=$cf_header
+ break])
+done
+])
+if test $cf_cv_getopt_header != none ; then
+ AC_DEFINE(HAVE_GETOPT_HEADER)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+dnl -------------
+dnl Check if we must define _GNU_SOURCE to get a reasonable value for
+dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
+dnl (or misfeature) of glibc2, which breaks portability of many applications,
+dnl since it is interwoven with GNU extensions.
+dnl
+dnl Well, yes we could work around it...
+AC_DEFUN([CF_GNU_SOURCE],
+[
+AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_gnu_source=no],
+ [cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_gnu_source=no],
+ [cf_cv_gnu_source=yes])
+ CPPFLAGS="$cf_save"
+ ])
+])
+test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+dnl -------------
+dnl Check if we must define _GNU_SOURCE to get a reasonable value for
+dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
+dnl (or misfeature) of glibc2, which breaks portability of many applications,
+dnl since it is interwoven with GNU extensions.
+dnl
+dnl Well, yes we could work around it...
+AC_DEFUN([CF_GNU_SOURCE],
+[
+AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
+AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_gnu_source=no],
+ [cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_gnu_source=no],
+ [cf_cv_gnu_source=yes])
+ CPPFLAGS="$cf_save"
+ ])
+])
+test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42
+dnl -----------------
+dnl Check if the given compiler is really the Intel compiler for Linux. It
+dnl tries to imitate gcc, but does not return an error when it finds a mismatch
+dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
+dnl
+dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
+dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
+dnl the wrappers for gcc and g++ warnings.
+dnl
+dnl $1 = GCC (default) or GXX
+dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
+dnl $3 = CFLAGS (default) or CXXFLAGS
+AC_DEFUN([CF_INTEL_COMPILER],[
+ifelse([$2],,INTEL_COMPILER,[$2])=no
+
+if test "$ifelse([$1],,[$1],GCC)" = yes ; then
+ case $host_os in
+ linux*|gnu*)
+ AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
+ cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
+ ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
+ AC_TRY_COMPILE([],[
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+],[])
+ ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
+ AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
+ ;;
+ esac
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
+dnl ------------
+dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
+dnl a monocase filesystem.
+AC_DEFUN([CF_MAKE_TAGS],[
+AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
+
+AC_CHECK_PROGS(CTAGS, exctags ctags)
+AC_CHECK_PROGS(ETAGS, exetags etags)
+
+AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
+
+if test "$cf_cv_mixedcase" = yes ; then
+ AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
+else
+ MAKE_UPPER_TAGS=no
+fi
+
+if test "$MAKE_UPPER_TAGS" = yes ; then
+ MAKE_UPPER_TAGS=
+else
+ MAKE_UPPER_TAGS="#"
+fi
+
+if test "$MAKE_LOWER_TAGS" = yes ; then
+ MAKE_LOWER_TAGS=
+else
+ MAKE_LOWER_TAGS="#"
+fi
+
+AC_SUBST(CTAGS)
+AC_SUBST(ETAGS)
+
+AC_SUBST(MAKE_UPPER_TAGS)
+AC_SUBST(MAKE_LOWER_TAGS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55
+dnl ----------------------
+dnl Check if the file-system supports mixed-case filenames. If we're able to
+dnl create a lowercase name and see it as uppercase, it doesn't support that.
+AC_DEFUN([CF_MIXEDCASE_FILENAMES],
+[
+AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
+if test "$cross_compiling" = yes ; then
+ case $target_alias in #(vi
+ *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
+ cf_cv_mixedcase=no
+ ;;
+ *)
+ cf_cv_mixedcase=yes
+ ;;
+ esac
+else
+ rm -f conftest CONFTEST
+ echo test >conftest
+ if test -f CONFTEST ; then
+ cf_cv_mixedcase=no
+ else
+ cf_cv_mixedcase=yes
+ fi
+ rm -f conftest CONFTEST
+fi
+])
+test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
+dnl ----------
+dnl Write a debug message to config.log, along with the line number in the
+dnl configure script.
+AC_DEFUN([CF_MSG_LOG],[
+echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05
+dnl ------------------
+dnl see CF_WITH_NO_LEAKS
+AC_DEFUN([CF_NO_LEAKS_OPTION],[
+AC_MSG_CHECKING(if you want to use $1 for testing)
+AC_ARG_WITH($1,
+ [$2],
+ [AC_DEFINE($3)ifelse([$4],,[
+ $4
+])
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_$1=yes],
+ [with_$1=])
+AC_MSG_RESULT(${with_$1:-no})
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+ CF_ADD_CFLAGS([-g])
+ ;;
+ esac
+ ;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PATHSEP version: 5 updated: 2010/05/26 05:38:42
+dnl ----------
+dnl Provide a value for the $PATH and similar separator
+AC_DEFUN([CF_PATHSEP],
+[
+ case $cf_cv_system_name in
+ os2*) PATH_SEPARATOR=';' ;;
+ *) PATH_SEPARATOR=':' ;;
+ esac
+ifelse([$1],,,[$1=$PATH_SEPARATOR])
+ AC_SUBST(PATH_SEPARATOR)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PATH_PROG version: 8 updated: 2010/10/23 16:12:25
+dnl ------------
+dnl Check for a given program, defining corresponding symbol.
+dnl $1 = environment variable, which is suffixed by "_PATH" in the #define.
+dnl $2 = program name to find.
+dnl $3 = optional list of additional program names to test.
+dnl
+dnl If there is more than one token in the result, #define the remaining tokens
+dnl to $1_ARGS. We need this for 'install' in particular.
+dnl
+dnl FIXME: we should allow this to be overridden by environment variables
+dnl
+AC_DEFUN([CF_PATH_PROG],[
+AC_REQUIRE([CF_PATHSEP])
+test -z "[$]$1" && $1=$2
+AC_PATH_PROGS($1,[$]$1 $2 $3,[$]$1)
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_$1
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+ CF_PATH_SYNTAX(cf_temp,break)
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+ CF_MSG_LOG(defining path for ${cf_path_prog})
+ AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog")
+ test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args")
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PATH_SYNTAX version: 13 updated: 2010/05/26 05:38:42
+dnl --------------
+dnl Check the argument to see that it looks like a pathname. Rewrite it if it
+dnl begins with one of the prefix/exec_prefix variables, and then again if the
+dnl result begins with 'NONE'. This is necessary to work around autoconf's
+dnl delayed evaluation of those symbols.
+AC_DEFUN([CF_PATH_SYNTAX],[
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".[$]$1" in #(vi
+.\[$]\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
+ ;;
+.\[$]{*prefix}*) #(vi
+ eval $1="[$]$1"
+ case ".[$]$1" in #(vi
+ .NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
+ ;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42
+dnl -----------------
+dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
+dnl
+dnl POSIX.1-1990 _POSIX_SOURCE
+dnl POSIX.1-1990 and _POSIX_SOURCE and
+dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
+dnl Bindings Option
+dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
+dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
+dnl X/Open 2000 _POSIX_C_SOURCE=200112L
+dnl
+dnl Parameters:
+dnl $1 is the nominal value for _POSIX_C_SOURCE
+AC_DEFUN([CF_POSIX_C_SOURCE],
+[
+cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
+
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+
+CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
+CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
+
+AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
+ CF_MSG_LOG(if the symbol is already defined go no further)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif],
+ [cf_cv_posix_c_source=no],
+ [cf_want_posix_source=no
+ case .$cf_POSIX_C_SOURCE in #(vi
+ .[[12]]??*) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ ;;
+ .2) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ cf_want_posix_source=yes
+ ;;
+ .*)
+ cf_want_posix_source=yes
+ ;;
+ esac
+ if test "$cf_want_posix_source" = yes ; then
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _POSIX_SOURCE
+make an error
+#endif],[],
+ cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
+ fi
+ CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+ CF_MSG_LOG(if the second compile does not leave our definition intact error)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif],,
+ [cf_cv_posix_c_source=no])
+ CFLAGS="$cf_save_CFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ ])
+])
+
+if test "$cf_cv_posix_c_source" != no ; then
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+ CF_ADD_CFLAGS($cf_cv_posix_c_source)
+fi
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_CC_U_D version: 1 updated: 2005/07/14 16:59:30
+dnl --------------
+dnl Check if C (preprocessor) -U and -D options are processed in the order
+dnl given rather than by type of option. Some compilers insist on apply all
+dnl of the -U options after all of the -D options. Others allow mixing them,
+dnl and may predefine symbols that conflict with those we define.
+AC_DEFUN([CF_PROG_CC_U_D],
+[
+AC_CACHE_CHECK(if $CC -U and -D options work together,cf_cv_cc_u_d_options,[
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS"
+ AC_TRY_COMPILE([],[
+#ifndef U_D_OPTIONS
+make an undefined-error
+#endif
+#ifdef D_U_OPTIONS
+make a defined-error
+#endif
+ ],[
+ cf_cv_cc_u_d_options=yes],[
+ cf_cv_cc_u_d_options=no])
+ CPPFLAGS="$cf_save_CPPFLAGS"
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18
+dnl -----------
+dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
+AC_DEFUN([CF_PROG_EXT],
+[
+AC_REQUIRE([CF_CHECK_CACHE])
+case $cf_cv_system_name in
+os2*)
+ CFLAGS="$CFLAGS -Zmt"
+ CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
+ CXXFLAGS="$CXXFLAGS -Zmt"
+ # autoconf's macro sets -Zexe and suffix both, which conflict:w
+ LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
+ ac_cv_exeext=.exe
+ ;;
+esac
+
+AC_EXEEXT
+AC_OBJEXT
+
+PROG_EXT="$EXEEXT"
+AC_SUBST(PROG_EXT)
+test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT")
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14
+dnl ------------
+AC_DEFUN([CF_PROG_LINT],
+[
+AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint)
+AC_SUBST(LINT_OPTS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
+dnl ----------------
+dnl Remove all -U and -D options that refer to the given symbol from a list
+dnl of C compiler options. This works around the problem that not all
+dnl compilers process -U and -D options from left-to-right, so a -U option
+dnl cannot be used to cancel the effect of a preceding -D option.
+dnl
+dnl $1 = target (which could be the same as the source variable)
+dnl $2 = source (including '$')
+dnl $3 = symbol to remove
+define([CF_REMOVE_DEFINE],
+[
+$1=`echo "$2" | \
+ sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \
+ -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'`
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_STDIO_UNLOCKED version: 3 updated: 2009/10/06 19:54:39
+dnl -----------------
+dnl The four functions getc_unlocked(), getchar_unlocked(), putc_unlocked(),
+dnl putchar_unlocked() are in POSIX.1-2001.
+dnl
+dnl Test for one or more of the "unlocked" stdio getc/putc functions, and (if
+dnl the system requires it to declare the prototype) define _REENTRANT
+dnl
+dnl $1 = one or more stdio functions to check for existence and prototype.
+AC_DEFUN([CF_STDIO_UNLOCKED],
+[
+cf_stdio_unlocked=no
+AC_CHECK_FUNCS(ifelse([$1],,[getc_unlocked putc_unlocked],[$1]),
+ [cf_stdio_unlocked=$ac_func])
+if test "$cf_stdio_unlocked" != no ; then
+ case "$CPPFLAGS" in #(vi
+ *-D_REENTRANT*) #(vi
+ ;;
+ *)
+ AC_CACHE_CHECK(if we should define _REENTRANT,cf_cv_stdio_unlocked,[
+ AC_TRY_COMPILE([#include <stdio.h>],[
+ extern void *$cf_stdio_unlocked(void *);
+ void *dummy = $cf_stdio_unlocked(0)],
+ [cf_cv_stdio_unlocked=yes],
+ [cf_cv_stdio_unlocked=no])])
+ if test "$cf_cv_stdio_unlocked" = yes ; then
+ AC_DEFINE(_REENTRANT)
+ fi
+ ;;
+ esac
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
+dnl -------------------
+dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
+dnl can define it successfully.
+AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
+AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_xopen_source=no],
+ [cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+],[
+#ifdef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_xopen_source=no],
+ [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
+ CPPFLAGS="$cf_save"
+ ])
+])
+
+if test "$cf_cv_xopen_source" != no ; then
+ CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
+ CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
+ cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
+ CF_ADD_CFLAGS($cf_temp_xopen_source)
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
+dnl --------
+dnl Make an uppercase version of a variable
+dnl $1=uppercase($2)
+AC_DEFUN([CF_UPPER],
+[
+$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
+dnl ----------
+dnl Use AC_VERBOSE w/o the warnings
+AC_DEFUN([CF_VERBOSE],
+[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
+CF_MSG_LOG([$1])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
+dnl ----------------
+dnl Configure-option for dbmalloc. The optional parameter is used to override
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DBMALLOC],[
+CF_NO_LEAKS_OPTION(dbmalloc,
+ [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
+ [USE_DBMALLOC])
+
+if test "$with_dbmalloc" = yes ; then
+ AC_CHECK_HEADER(dbmalloc.h,
+ [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
+dnl ---------------
+dnl Configure-option for dmalloc. The optional parameter is used to override
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DMALLOC],[
+CF_NO_LEAKS_OPTION(dmalloc,
+ [ --with-dmalloc test: use Gray Watson's dmalloc library],
+ [USE_DMALLOC])
+
+if test "$with_dmalloc" = yes ; then
+ AC_CHECK_HEADER(dmalloc.h,
+ [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_INSTALL_PREFIX version: 4 updated: 2010/10/23 15:52:32
+dnl ----------------------
+dnl Configure-script option to give a default value for the poorly-chosen name
+dnl $(DESTDIR).
+AC_DEFUN([CF_WITH_INSTALL_PREFIX],
+[
+AC_MSG_CHECKING(for install-prefix)
+AC_ARG_WITH(install-prefix,
+ [ --with-install-prefix=XXX sets DESTDIR, useful for packaging],
+ [cf_opt_with_install_prefix=$withval],
+ [cf_opt_with_install_prefix=${DESTDIR:-no}])
+AC_MSG_RESULT($cf_opt_with_install_prefix)
+if test "$cf_opt_with_install_prefix" != no ; then
+ CF_PATH_SYNTAX(cf_opt_with_install_prefix)
+ DESTDIR=$cf_opt_with_install_prefix
+fi
+AC_SUBST(DESTDIR)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PURIFY version: 2 updated: 2006/12/14 18:43:43
+dnl --------------
+AC_DEFUN([CF_WITH_PURIFY],[
+CF_NO_LEAKS_OPTION(purify,
+ [ --with-purify test: use Purify],
+ [USE_PURIFY],
+ [LINK_PREFIX="$LINK_PREFIX purify"])
+AC_SUBST(LINK_PREFIX)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
+dnl ----------------
+AC_DEFUN([CF_WITH_VALGRIND],[
+CF_NO_LEAKS_OPTION(valgrind,
+ [ --with-valgrind test: use valgrind],
+ [USE_VALGRIND])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_WARNINGS version: 5 updated: 2004/07/23 14:40:34
+dnl ----------------
+dnl Combine the checks for gcc features into a configure-script option
+dnl
+dnl Parameters:
+dnl $1 - see CF_GCC_WARNINGS
+AC_DEFUN([CF_WITH_WARNINGS],
+[
+if ( test "$GCC" = yes || test "$GXX" = yes )
+then
+AC_MSG_CHECKING(if you want to check for gcc warnings)
+AC_ARG_WITH(warnings,
+ [ --with-warnings test: turn on gcc warnings],
+ [cf_opt_with_warnings=$withval],
+ [cf_opt_with_warnings=no])
+AC_MSG_RESULT($cf_opt_with_warnings)
+if test "$cf_opt_with_warnings" != no ; then
+ CF_GCC_ATTRIBUTES
+ CF_GCC_WARNINGS([$1])
+fi
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_XOPEN_SOURCE version: 41 updated: 2011/12/10 18:58:47
+dnl ---------------
+dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
+dnl or adapt to the vendor's definitions to get equivalent functionality,
+dnl without losing the common non-POSIX features.
+dnl
+dnl Parameters:
+dnl $1 is the nominal value for _XOPEN_SOURCE
+dnl $2 is the nominal value for _POSIX_C_SOURCE
+AC_DEFUN([CF_XOPEN_SOURCE],[
+
+cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
+cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
+cf_xopen_source=
+
+case $host_os in #(vi
+aix[[4-7]]*) #(vi
+ cf_xopen_source="-D_ALL_SOURCE"
+ ;;
+cygwin) #(vi
+ cf_XOPEN_SOURCE=600
+ ;;
+darwin[[0-8]].*) #(vi
+ cf_xopen_source="-D_APPLE_C_SOURCE"
+ ;;
+darwin*) #(vi
+ cf_xopen_source="-D_DARWIN_C_SOURCE"
+ ;;
+freebsd*|dragonfly*) #(vi
+ # 5.x headers associate
+ # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
+ # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
+ cf_POSIX_C_SOURCE=200112L
+ cf_XOPEN_SOURCE=600
+ cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ ;;
+hpux11*) #(vi
+ cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
+ ;;
+hpux*) #(vi
+ cf_xopen_source="-D_HPUX_SOURCE"
+ ;;
+irix[[56]].*) #(vi
+ cf_xopen_source="-D_SGI_SOURCE"
+ cf_XOPEN_SOURCE=
+ ;;
+linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+ CF_GNU_SOURCE
+ ;;
+mirbsd*) #(vi
+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
+ cf_XOPEN_SOURCE=
+ CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
+ ;;
+netbsd*) #(vi
+ cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ ;;
+openbsd[[4-9]]*) #(vi
+ # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
+ cf_XOPEN_SOURCE=600
+ ;;
+openbsd*) #(vi
+ # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
+ ;;
+osf[[45]]*) #(vi
+ cf_xopen_source="-D_OSF_SOURCE"
+ ;;
+nto-qnx*) #(vi
+ cf_xopen_source="-D_QNX_SOURCE"
+ ;;
+sco*) #(vi
+ # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
+ ;;
+solaris2.*) #(vi
+ cf_xopen_source="-D__EXTENSIONS__"
+ ;;
+*)
+ CF_TRY_XOPEN_SOURCE
+ CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
+ ;;
+esac
+
+if test -n "$cf_xopen_source" ; then
+ CF_ADD_CFLAGS($cf_xopen_source)
+fi
+
+dnl In anything but the default case, we may have system-specific setting
+dnl which is still not guaranteed to provide all of the entrypoints that
+dnl _XOPEN_SOURCE would yield.
+if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
+ AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
+ AC_TRY_COMPILE([#include <stdlib.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_XOPEN_SOURCE_set=yes],
+ [cf_XOPEN_SOURCE_set=no])
+ AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
+ if test $cf_XOPEN_SOURCE_set = yes
+ then
+ AC_TRY_COMPILE([#include <stdlib.h>],[
+#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
+make an error
+#endif],
+ [cf_XOPEN_SOURCE_set_ok=yes],
+ [cf_XOPEN_SOURCE_set_ok=no])
+ if test $cf_XOPEN_SOURCE_set_ok = no
+ then
+ AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
+ fi
+ else
+ CF_TRY_XOPEN_SOURCE
+ fi
+fi
+])
diff --git a/patch_cmds/diffstat/config.guess b/patch_cmds/diffstat/config.guess
new file mode 100644
index 0000000..bec935b
--- /dev/null
+++ b/patch_cmds/diffstat/config.guess
@@ -0,0 +1,1508 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Free Software Foundation, Inc.
+
+timestamp='2010-09-24'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' HUP INT TERM
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ 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 ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ arm*: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-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-tilera-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ 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
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/patch_cmds/diffstat/config.h b/patch_cmds/diffstat/config.h
new file mode 100644
index 0000000..16f0d23
--- /dev/null
+++ b/patch_cmds/diffstat/config.h
@@ -0,0 +1,38 @@
+/* config.h. Generated automatically by configure. */
+/*
+ * $Id: config_h.in,v 1.1 1994/06/12 23:48:18 tom Exp $
+ * config_h.in is a template file used by configure to produce config.h.
+ * config_h is then transformed (by config.status) into the header file
+ * config.h -- Kevin Buettner.
+ */
+
+
+#define CC_HAS_PROTOS 1
+//#define SYSTEM_NAME "darwin13.0.0"
+#define BZCAT_PATH "bzcat"
+#define BZIP2_PATH "bzip2"
+#define COMPRESS_PATH "compress"
+#define GZIP_PATH "gzip"
+#define LZCAT_PATH "xz"
+#define UNCOMPRESS_PATH "uncompress"
+#define XZ_PATH "xz"
+#define ZCAT_PATH "zcat"
+#define STDC_HEADERS 1
+#define HAVE_SEARCH_H 1
+#define HAVE_STRING_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_GETOPT_H 1
+#define HAVE_GETOPT_HEADER 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_MKDTEMP 1
+#define HAVE_POPEN 1
+#define HAVE_TSEARCH 1
+#define HAVE_GETC_UNLOCKED 1
diff --git a/patch_cmds/diffstat/config.sub b/patch_cmds/diffstat/config.sub
new file mode 100644
index 0000000..de11910
--- /dev/null
+++ b/patch_cmds/diffstat/config.sub
@@ -0,0 +1,1739 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Free Software Foundation, Inc.
+
+timestamp='2010-09-11'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be\
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile-* | tilegx-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # 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.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ # This must be matched before tile*.
+ tilegx*)
+ basic_machine=tilegx-unknown
+ os=-linux-gnu
+ ;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/patch_cmds/diffstat/config_h.in b/patch_cmds/diffstat/config_h.in
new file mode 100644
index 0000000..ac8ff1d
--- /dev/null
+++ b/patch_cmds/diffstat/config_h.in
@@ -0,0 +1,8 @@
+/*
+ * $Id: config_h.in,v 1.1 1994/06/12 23:48:18 tom Exp $
+ * config_h.in is a template file used by configure to produce config.h.
+ * config_h is then transformed (by config.status) into the header file
+ * config.h -- Kevin Buettner.
+ */
+
+@DEFS@
diff --git a/patch_cmds/diffstat/configure b/patch_cmds/diffstat/configure
new file mode 100644
index 0000000..35e6b67
--- /dev/null
+++ b/patch_cmds/diffstat/configure
@@ -0,0 +1,7291 @@
+#! /bin/sh
+# From configure.in Revision: 1.22 .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Autoconf 2.52.20101002.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+cross_compiling=no
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+ac_unique_file="diffstat.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_prev=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval "$ac_prev=\$ac_option"
+ ac_prev=
+ continue
+ fi
+
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_option in
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+ | --da=*)
+ datadir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "enable_$ac_feature='$ac_optarg'" ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst \
+ | --locals | --local | --loca | --loc | --lo)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) ac_optarg=yes ;;
+ esac
+ eval "with_$ac_package='$ac_optarg'" ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: should be removed in autoconf 3.0.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then its parent.
+ ac_prog=$0
+ ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+ srcdir=$ac_confdir
+ if test ! -r $srcdir/$ac_unique_file; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+ if test "$ac_srcdir_defaulted" = yes; then
+ { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
+ else
+ { echo "$as_me: error: cannot find sources in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+ fi
+fi
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<EOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+EOF
+
+ cat <<EOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+EOF
+
+ cat <<\EOF
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST build programs to run on HOST [BUILD]
+EOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\EOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+
+ --disable-echo display "compiling" commands
+ --with-install-prefix=XXX sets DESTDIR, useful for packaging
+ --with-warnings test: turn on gcc warnings
+ --with-dmalloc test: use Gray Watson's dmalloc library
+ --with-dbmalloc test: use Conor Cahill's dbmalloc library
+ --with-valgrind test: use valgrind
+ --disable-leaks test: free permanent memory, analyze leaks
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+EOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
+ cd $ac_subdir
+ # A "../" for each directory in /$ac_subdir.
+ ac_dots=`echo $ac_subdir |
+ sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+ case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_sub_srcdir=$srcdir ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_sub_srcdir=$srcdir/$ac_subdir ;;
+ *) # Relative path.
+ ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
+ esac
+
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_sub_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_sub_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_sub_srcdir/configure; then
+ echo
+ $SHELL $ac_sub_srcdir/configure --help=recursive
+ elif test -f $ac_sub_srcdir/configure.ac ||
+ test -f $ac_sub_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\EOF
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+EOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<EOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.52.20101002. Invocation command line was
+
+ $ $0 $@
+
+EOF
+{
+cat <<_ASUNAME
+## ---------- ##
+## Platform. ##
+## ---------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+PATH = $PATH
+
+_ASUNAME
+} >&5
+
+cat >&5 <<EOF
+## ------------ ##
+## Core tests. ##
+## ------------ ##
+
+EOF
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=
+ac_sep=
+for ac_arg
+do
+ case $ac_arg in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ ac_sep=" " ;;
+ *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
+ ac_sep=" " ;;
+ esac
+ # Get rid of the leading space.
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ echo >&5
+ echo "## ----------------- ##" >&5
+ echo "## Cache variables. ##" >&5
+ echo "## ----------------- ##" >&5
+ echo >&5
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} >&5
+ sed "/^$/d" confdefs.h >conftest.log
+ if test -s conftest.log; then
+ echo >&5
+ echo "## ------------ ##" >&5
+ echo "## confdefs.h. ##" >&5
+ echo "## ------------ ##" >&5
+ echo >&5
+ cat conftest.log >&5
+ fi
+ (echo; echo) >&5
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal" >&5
+ echo "$as_me: exit $exit_status" >&5
+ rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+ if test "x$prefix" != xNONE; then
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+ else
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+ fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:876: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ cat "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:887: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
+else
+ { echo "$as_me:895: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:911: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:915: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:921: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:923: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:925: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status. It doesn't matter if
+ # we pass some twice (in addition to the command line arguments).
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
+ ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:944: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:946: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_main_return=return
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T=' ' ;;
+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+echo "#! $SHELL" >conftest.sh
+echo "exit 0" >>conftest.sh
+chmod +x conftest.sh
+if { (echo "$as_me:967: PATH=\".;.\"; conftest.sh") >&5
+ (PATH=".;."; conftest.sh) 2>&5
+ ac_status=$?
+ echo "$as_me:970: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ ac_path_separator=';'
+else
+ ac_path_separator=:
+fi
+PATH_SEPARATOR="$ac_path_separator"
+rm -f conftest.sh
+
+ac_config_headers="$ac_config_headers config.h:config_h.in"
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_main_return=return
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:990: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}gcc"
+echo "$as_me:1005: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:1013: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:1016: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:1025: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="gcc"
+echo "$as_me:1040: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:1048: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:1051: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:1064: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="${ac_tool_prefix}cc"
+echo "$as_me:1079: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:1087: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:1090: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1099: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="cc"
+echo "$as_me:1114: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:1122: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:1125: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:1138: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+fi
+ac_cv_prog_CC="cc"
+echo "$as_me:1158: found $ac_dir/$ac_word" >&5
+break
+done
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ set dummy "$ac_dir/$ac_word" ${1+"$@"}
+ shift
+ ac_cv_prog_CC="$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:1180: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:1183: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:1194: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+echo "$as_me:1209: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:1217: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:1220: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1233: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ac_ct_CC="$ac_prog"
+echo "$as_me:1248: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:1256: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:1259: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CC" && break
+done
+
+ CC=$ac_ct_CC
+fi
+
+fi
+
+test -z "$CC" && { { echo "$as_me:1271: error: no acceptable cc found in \$PATH" >&5
+echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:1276:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:1279: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:1282: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:1284: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:1287: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:1289: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:1292: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 1296 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:1312: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:1315: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:1318: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Find the output, starting from the most likely. This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+for ac_file in `ls a.exe conftest.exe 2>/dev/null;
+ ls a.out conftest 2>/dev/null;
+ ls a.* conftest.* 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ a.out ) # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1341: error: C compiler cannot create executables" >&5
+echo "$as_me: error: C compiler cannot create executables" >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:1347: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1352: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (eval echo "$as_me:1358: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1361: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:1368: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+echo "$as_me:1376: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:1383: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:1385: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:1388: checking for executable suffix" >&5
+echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
+if { (eval echo "$as_me:1390: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:1393: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:1409: error: cannot compute EXEEXT: cannot compile and link" >&5
+echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:1415: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:1421: checking for object suffix" >&5
+echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1427 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:1439: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1442: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1454: error: cannot compute OBJEXT: cannot compile" >&5
+echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:1461: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:1465: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1471 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1486: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1489: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1492: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1495: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:1507: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:1513: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1519 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1531: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1534: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1537: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1540: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:1550: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1577: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1580: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1583: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1586: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ ''\
+ '#include <stdlib.h>' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1598 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1611: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1614: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1617: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1620: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1630 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1642: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1645: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1648: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1651: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -rf conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_main_return=return
+
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+ if test -f $ac_dir/install-sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f $ac_dir/install.sh; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ { { echo "$as_me:1696: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:1716: checking for a BSD compatible install" >&5
+echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ for ac_dir in $PATH; do
+ IFS=$ac_save_IFS
+ # Account for people who put trailing slashes in PATH elements.
+ case $ac_dir/ in
+ / | ./ | .// | /cC/* \
+ | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \
+ | /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ if $as_executable_p "$ac_dir/$ac_prog"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
+ break 2
+ fi
+ fi
+ done
+ ;;
+ esac
+ done
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:1765: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+for ac_prog in tdlint lint alint splint lclint
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1780: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_LINT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$LINT"; then
+ ac_cv_prog_LINT="$LINT" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_LINT="$ac_prog"
+echo "$as_me:1795: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+LINT=$ac_cv_prog_LINT
+if test -n "$LINT"; then
+ echo "$as_me:1803: result: $LINT" >&5
+echo "${ECHO_T}$LINT" >&6
+else
+ echo "$as_me:1806: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$LINT" && break
+done
+
+echo "$as_me:1813: checking if filesystem supports mixed-case filenames" >&5
+echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
+if test "${cf_cv_mixedcase+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+if test "$cross_compiling" = yes ; then
+ case $target_alias in #(vi
+ *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
+ cf_cv_mixedcase=no
+ ;;
+ *)
+ cf_cv_mixedcase=yes
+ ;;
+ esac
+else
+ rm -f conftest CONFTEST
+ echo test >conftest
+ if test -f CONFTEST ; then
+ cf_cv_mixedcase=no
+ else
+ cf_cv_mixedcase=yes
+ fi
+ rm -f conftest CONFTEST
+fi
+
+fi
+echo "$as_me:1840: result: $cf_cv_mixedcase" >&5
+echo "${ECHO_T}$cf_cv_mixedcase" >&6
+test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF
+#define MIXEDCASE_FILENAMES 1
+EOF
+
+for ac_prog in exctags ctags
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1850: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CTAGS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CTAGS"; then
+ ac_cv_prog_CTAGS="$CTAGS" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_CTAGS="$ac_prog"
+echo "$as_me:1865: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CTAGS=$ac_cv_prog_CTAGS
+if test -n "$CTAGS"; then
+ echo "$as_me:1873: result: $CTAGS" >&5
+echo "${ECHO_T}$CTAGS" >&6
+else
+ echo "$as_me:1876: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CTAGS" && break
+done
+
+for ac_prog in exetags etags
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:1887: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ETAGS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ETAGS"; then
+ ac_cv_prog_ETAGS="$ETAGS" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_ETAGS="$ac_prog"
+echo "$as_me:1902: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ETAGS=$ac_cv_prog_ETAGS
+if test -n "$ETAGS"; then
+ echo "$as_me:1910: result: $ETAGS" >&5
+echo "${ECHO_T}$ETAGS" >&6
+else
+ echo "$as_me:1913: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ETAGS" && break
+done
+
+# Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
+set dummy ${CTAGS:-ctags}; ac_word=$2
+echo "$as_me:1922: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$MAKE_LOWER_TAGS"; then
+ ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_MAKE_LOWER_TAGS="yes"
+echo "$as_me:1937: found $ac_dir/$ac_word" >&5
+break
+done
+
+ test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no"
+fi
+fi
+MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
+if test -n "$MAKE_LOWER_TAGS"; then
+ echo "$as_me:1946: result: $MAKE_LOWER_TAGS" >&5
+echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
+else
+ echo "$as_me:1949: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test "$cf_cv_mixedcase" = yes ; then
+ # Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
+set dummy ${ETAGS:-etags}; ac_word=$2
+echo "$as_me:1956: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$MAKE_UPPER_TAGS"; then
+ ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # Let the user override the test.
+else
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_MAKE_UPPER_TAGS="yes"
+echo "$as_me:1971: found $ac_dir/$ac_word" >&5
+break
+done
+
+ test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no"
+fi
+fi
+MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
+if test -n "$MAKE_UPPER_TAGS"; then
+ echo "$as_me:1980: result: $MAKE_UPPER_TAGS" >&5
+echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
+else
+ echo "$as_me:1983: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+else
+ MAKE_UPPER_TAGS=no
+fi
+
+if test "$MAKE_UPPER_TAGS" = yes ; then
+ MAKE_UPPER_TAGS=
+else
+ MAKE_UPPER_TAGS="#"
+fi
+
+if test "$MAKE_LOWER_TAGS" = yes ; then
+ MAKE_LOWER_TAGS=
+else
+ MAKE_LOWER_TAGS="#"
+fi
+
+# This should have been defined by AC_PROG_CC
+: ${CC:=cc}
+
+# Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
+# into CC. This will not help with broken scripts that wrap the compiler with
+# options, but eliminates a more common category of user confusion.
+echo "$as_me:2009: checking \$CC variable" >&5
+echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
+case "$CC" in #(vi
+*[\ \ ]-[IUD]*)
+ echo "$as_me:2013: result: broken" >&5
+echo "${ECHO_T}broken" >&6
+ { echo "$as_me:2015: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
+ # humor him...
+ cf_flags=`echo "$CC" | sed -e 's/^[^ ]*[ ]//'`
+ CC=`echo "$CC" | sed -e 's/[ ].*//'`
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_flags
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+*)
+ echo "$as_me:2101: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+ ;;
+esac
+
+echo "$as_me:2106: checking for ${CC:-cc} option to accept ANSI C" >&5
+echo $ECHO_N "checking for ${CC:-cc} option to accept ANSI C... $ECHO_C" >&6
+if test "${cf_cv_ansi_cc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_ansi_cc=no
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX -Aa -D_HPUX_SOURCE
+# SVR4 -Xc
+# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
+for cf_arg in "-DCC_HAS_PROTOS" \
+ "" \
+ -qlanglvl=ansi \
+ -std1 \
+ -Ae \
+ "-Aa -D_HPUX_SOURCE" \
+ -Xc
+do
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_arg
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2210 "configure"
+#include "confdefs.h"
+
+#ifndef CC_HAS_PROTOS
+#if !defined(__STDC__) || (__STDC__ != 1)
+choke me
+#endif
+#endif
+
+int
+main ()
+{
+
+ int test (int i, double x);
+ struct s1 {int (*f) (int a);};
+ struct s2 {int (*f) (double a);};
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2231: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2234: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2237: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2240: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_ansi_cc="$cf_arg"; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+CFLAGS="$cf_save_CFLAGS"
+CPPFLAGS="$cf_save_CPPFLAGS"
+
+fi
+echo "$as_me:2253: result: $cf_cv_ansi_cc" >&5
+echo "${ECHO_T}$cf_cv_ansi_cc" >&6
+
+if test "$cf_cv_ansi_cc" != "no"; then
+if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_cv_ansi_cc
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+else
+ cat >>confdefs.h <<\EOF
+#define CC_HAS_PROTOS 1
+EOF
+
+fi
+fi
+
+if test "$cf_cv_ansi_cc" = "no"; then
+ { { echo "$as_me:2346: error: Your compiler does not appear to recognize prototypes.
+You have the following choices:
+ a. adjust your compiler options
+ b. get an up-to-date compiler
+ c. use a wrapper such as unproto" >&5
+echo "$as_me: error: Your compiler does not appear to recognize prototypes.
+You have the following choices:
+ a. adjust your compiler options
+ b. get an up-to-date compiler
+ c. use a wrapper such as unproto" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+echo "$as_me:2359: checking if you want to see long compiling messages" >&5
+echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
+
+# Check whether --enable-echo or --disable-echo was given.
+if test "${enable_echo+set}" = set; then
+ enableval="$enable_echo"
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking $@;'
+ RULE_CC='@echo compiling $<'
+ SHOW_CC='@echo compiling $@'
+ ECHO_CC='@'
+
+ else
+
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
+
+ fi
+else
+ enableval=yes
+
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
+
+fi;
+echo "$as_me:2393: result: $enableval" >&5
+echo "${ECHO_T}$enableval" >&6
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:2398: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:2402: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:2411: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+ { { echo "$as_me:2415: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:2420: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
+ echo "$as_me:2428: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+ ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+ { { echo "$as_me:2437: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:2442: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+ system_name="$host_os"
+else
+ system_name="`(uname -s -r) 2>/dev/null`"
+ if test -z "$system_name" ; then
+ system_name="`(hostname) 2>/dev/null`"
+ fi
+fi
+test -n "$system_name" && cat >>confdefs.h <<EOF
+#define SYSTEM_NAME "$system_name"
+EOF
+
+if test "${cf_cv_system_name+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cf_cv_system_name="$system_name"
+fi
+
+test -z "$system_name" && system_name="$cf_cv_system_name"
+test -n "$cf_cv_system_name" && echo "$as_me:2467: result: Configuring for $cf_cv_system_name" >&5
+echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
+
+if test ".$system_name" != ".$cf_cv_system_name" ; then
+ echo "$as_me:2471: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
+ { { echo "$as_me:2473: error: \"Please remove config.cache and try again.\"" >&5
+echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+case $cf_cv_system_name in
+os2*)
+ CFLAGS="$CFLAGS -Zmt"
+ CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
+ CXXFLAGS="$CXXFLAGS -Zmt"
+ # autoconf's macro sets -Zexe and suffix both, which conflict:w
+ LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
+ ac_cv_exeext=.exe
+ ;;
+esac
+
+PROG_EXT="$EXEEXT"
+
+test -n "$PROG_EXT" && cat >>confdefs.h <<EOF
+#define PROG_EXT "$PROG_EXT"
+EOF
+
+echo "$as_me:2495: checking for install-prefix" >&5
+echo $ECHO_N "checking for install-prefix... $ECHO_C" >&6
+
+# Check whether --with-install-prefix or --without-install-prefix was given.
+if test "${with_install_prefix+set}" = set; then
+ withval="$with_install_prefix"
+ cf_opt_with_install_prefix=$withval
+else
+ cf_opt_with_install_prefix=${DESTDIR:-no}
+fi;
+echo "$as_me:2505: result: $cf_opt_with_install_prefix" >&5
+echo "${ECHO_T}$cf_opt_with_install_prefix" >&6
+if test "$cf_opt_with_install_prefix" != no ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_opt_with_install_prefix" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_opt_with_install_prefix="$cf_opt_with_install_prefix"
+ case ".$cf_opt_with_install_prefix" in #(vi
+ .NONE/*)
+ cf_opt_with_install_prefix=`echo $cf_opt_with_install_prefix | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_opt_with_install_prefix=`echo $cf_opt_with_install_prefix | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ { { echo "$as_me:2534: error: expected a pathname, not \"$cf_opt_with_install_prefix\"" >&5
+echo "$as_me: error: expected a pathname, not \"$cf_opt_with_install_prefix\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+
+ DESTDIR=$cf_opt_with_install_prefix
+fi
+
+with_full_paths=no
+
+ case $cf_cv_system_name in
+ os2*) PATH_SEPARATOR=';' ;;
+ *) PATH_SEPARATOR=':' ;;
+ esac
+
+test -z "$BZCAT" && BZCAT=bzcat
+for ac_prog in $BZCAT bzcat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2555: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_BZCAT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $BZCAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BZCAT="$BZCAT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_BZCAT="$ac_dir/$ac_word"
+ echo "$as_me:2572: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+BZCAT=$ac_cv_path_BZCAT
+
+if test -n "$BZCAT"; then
+ echo "$as_me:2583: result: $BZCAT" >&5
+echo "${ECHO_T}$BZCAT" >&6
+else
+ echo "$as_me:2586: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$BZCAT" && break
+done
+test -n "$BZCAT" || BZCAT="$BZCAT"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_BZCAT
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:2645: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define BZCAT_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define BZCAT_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$BZIP2" && BZIP2=bzip2
+for ac_prog in $BZIP2 bzip2
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2662: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_BZIP2+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $BZIP2 in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BZIP2="$BZIP2" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_BZIP2="$ac_dir/$ac_word"
+ echo "$as_me:2679: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+BZIP2=$ac_cv_path_BZIP2
+
+if test -n "$BZIP2"; then
+ echo "$as_me:2690: result: $BZIP2" >&5
+echo "${ECHO_T}$BZIP2" >&6
+else
+ echo "$as_me:2693: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$BZIP2" && break
+done
+test -n "$BZIP2" || BZIP2="$BZIP2"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_BZIP2
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:2752: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define BZIP2_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define BZIP2_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$COMPRESS" && COMPRESS=compress
+for ac_prog in $COMPRESS compress gzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2769: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_COMPRESS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $COMPRESS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_COMPRESS="$COMPRESS" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_COMPRESS="$ac_dir/$ac_word"
+ echo "$as_me:2786: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+COMPRESS=$ac_cv_path_COMPRESS
+
+if test -n "$COMPRESS"; then
+ echo "$as_me:2797: result: $COMPRESS" >&5
+echo "${ECHO_T}$COMPRESS" >&6
+else
+ echo "$as_me:2800: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$COMPRESS" && break
+done
+test -n "$COMPRESS" || COMPRESS="$COMPRESS"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_COMPRESS
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:2859: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define COMPRESS_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define COMPRESS_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$GZIP" && GZIP=gzip
+for ac_prog in $GZIP gzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2876: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GZIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_GZIP="$ac_dir/$ac_word"
+ echo "$as_me:2893: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+
+if test -n "$GZIP"; then
+ echo "$as_me:2904: result: $GZIP" >&5
+echo "${ECHO_T}$GZIP" >&6
+else
+ echo "$as_me:2907: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$GZIP" && break
+done
+test -n "$GZIP" || GZIP="$GZIP"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_GZIP
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:2966: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define GZIP_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define GZIP_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$LZCAT" && LZCAT=lzcat
+for ac_prog in $LZCAT lzcat xz
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:2983: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_LZCAT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $LZCAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LZCAT="$LZCAT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_LZCAT="$ac_dir/$ac_word"
+ echo "$as_me:3000: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+LZCAT=$ac_cv_path_LZCAT
+
+if test -n "$LZCAT"; then
+ echo "$as_me:3011: result: $LZCAT" >&5
+echo "${ECHO_T}$LZCAT" >&6
+else
+ echo "$as_me:3014: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$LZCAT" && break
+done
+test -n "$LZCAT" || LZCAT="$LZCAT"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_LZCAT
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:3073: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define LZCAT_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define LZCAT_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$PCAT" && PCAT=pcat
+for ac_prog in $PCAT pcat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:3090: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PCAT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PCAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PCAT="$PCAT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_PCAT="$ac_dir/$ac_word"
+ echo "$as_me:3107: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+PCAT=$ac_cv_path_PCAT
+
+if test -n "$PCAT"; then
+ echo "$as_me:3118: result: $PCAT" >&5
+echo "${ECHO_T}$PCAT" >&6
+else
+ echo "$as_me:3121: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$PCAT" && break
+done
+test -n "$PCAT" || PCAT="$PCAT"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_PCAT
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:3180: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define PCAT_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define PCAT_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$UNCOMPRESS" && UNCOMPRESS=uncompress.real
+for ac_prog in $UNCOMPRESS uncompress.real uncompress
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:3197: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_UNCOMPRESS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $UNCOMPRESS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNCOMPRESS="$UNCOMPRESS" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_UNCOMPRESS="$ac_dir/$ac_word"
+ echo "$as_me:3214: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+UNCOMPRESS=$ac_cv_path_UNCOMPRESS
+
+if test -n "$UNCOMPRESS"; then
+ echo "$as_me:3225: result: $UNCOMPRESS" >&5
+echo "${ECHO_T}$UNCOMPRESS" >&6
+else
+ echo "$as_me:3228: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$UNCOMPRESS" && break
+done
+test -n "$UNCOMPRESS" || UNCOMPRESS="$UNCOMPRESS"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_UNCOMPRESS
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:3287: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define UNCOMPRESS_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define UNCOMPRESS_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$XZ" && XZ=xz
+for ac_prog in $XZ xz lzcat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:3304: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_XZ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $XZ in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XZ="$XZ" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_XZ="$ac_dir/$ac_word"
+ echo "$as_me:3321: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+XZ=$ac_cv_path_XZ
+
+if test -n "$XZ"; then
+ echo "$as_me:3332: result: $XZ" >&5
+echo "${ECHO_T}$XZ" >&6
+else
+ echo "$as_me:3335: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$XZ" && break
+done
+test -n "$XZ" || XZ="$XZ"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_XZ
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:3394: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define XZ_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define XZ_ARGS "$cf_path_args"
+EOF
+
+fi
+
+test -z "$ZCAT" && ZCAT=zcat
+for ac_prog in $ZCAT zcat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:3411: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_ZCAT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $ZCAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ZCAT="$ZCAT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$PATH"
+for ac_dir in $ac_dummy; do
+ IFS=$ac_save_IFS
+ test -z "$ac_dir" && ac_dir=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_ZCAT="$ac_dir/$ac_word"
+ echo "$as_me:3428: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+ZCAT=$ac_cv_path_ZCAT
+
+if test -n "$ZCAT"; then
+ echo "$as_me:3439: result: $ZCAT" >&5
+echo "${ECHO_T}$ZCAT" >&6
+else
+ echo "$as_me:3442: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ZCAT" && break
+done
+test -n "$ZCAT" || ZCAT="$ZCAT"
+
+cf_path_prog=""
+cf_path_args=""
+IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
+for cf_temp in $ac_cv_path_ZCAT
+do
+ if test -z "$cf_path_prog" ; then
+ if test "$with_full_paths" = yes ; then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$cf_temp" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(vi
+ eval cf_temp="$cf_temp"
+ case ".$cf_temp" in #(vi
+ .NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ cf_temp=`echo $cf_temp | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ break
+ ;;
+esac
+
+ cf_path_prog="$cf_temp"
+ else
+ cf_path_prog="`basename $cf_temp`"
+ fi
+ elif test -z "$cf_path_args" ; then
+ cf_path_args="$cf_temp"
+ else
+ cf_path_args="$cf_path_args $cf_temp"
+ fi
+done
+IFS="$cf_save_ifs"
+
+if test -n "$cf_path_prog" ; then
+
+echo "${as_me:-configure}:3501: testing defining path for ${cf_path_prog} ..." 1>&5
+
+ cat >>confdefs.h <<EOF
+#define ZCAT_PATH "$cf_path_prog"
+EOF
+
+ test -n "$cf_path_args" && cat >>confdefs.h <<EOF
+#define ZCAT_ARGS "$cf_path_args"
+EOF
+
+fi
+
+cf_XOPEN_SOURCE=500
+cf_POSIX_C_SOURCE=199506L
+cf_xopen_source=
+
+case $host_os in #(vi
+aix[4-7]*) #(vi
+ cf_xopen_source="-D_ALL_SOURCE"
+ ;;
+cygwin) #(vi
+ cf_XOPEN_SOURCE=600
+ ;;
+darwin[0-8].*) #(vi
+ cf_xopen_source="-D_APPLE_C_SOURCE"
+ ;;
+darwin*) #(vi
+ cf_xopen_source="-D_DARWIN_C_SOURCE"
+ ;;
+freebsd*|dragonfly*) #(vi
+ # 5.x headers associate
+ # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
+ # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
+ cf_POSIX_C_SOURCE=200112L
+ cf_XOPEN_SOURCE=600
+ cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ ;;
+hpux11*) #(vi
+ cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
+ ;;
+hpux*) #(vi
+ cf_xopen_source="-D_HPUX_SOURCE"
+ ;;
+irix[56].*) #(vi
+ cf_xopen_source="-D_SGI_SOURCE"
+ cf_XOPEN_SOURCE=
+ ;;
+linux*|gnu*|mint*|k*bsd*-gnu) #(vi
+
+echo "$as_me:3550: checking if we must define _GNU_SOURCE" >&5
+echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_gnu_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 3557 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3572: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3575: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3578: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3581: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3590 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3605: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3608: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3611: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3614: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_gnu_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_gnu_source=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3629: result: $cf_cv_gnu_source" >&5
+echo "${ECHO_T}$cf_cv_gnu_source" >&6
+test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+
+ ;;
+mirbsd*) #(vi
+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
+ cf_XOPEN_SOURCE=
+
+cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
+
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+
+cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \
+ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
+ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+echo "$as_me:3651: checking if we should define _POSIX_C_SOURCE" >&5
+echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_posix_c_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+echo "${as_me:-configure}:3657: testing if the symbol is already defined go no further ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3660 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3675: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3678: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3681: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3684: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_posix_c_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_want_posix_source=no
+ case .$cf_POSIX_C_SOURCE in #(vi
+ .[12]??*) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ ;;
+ .2) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ cf_want_posix_source=yes
+ ;;
+ .*)
+ cf_want_posix_source=yes
+ ;;
+ esac
+ if test "$cf_want_posix_source" = yes ; then
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3705 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _POSIX_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3720: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3723: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3726: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3729: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
+
+echo "${as_me:-configure}:3740: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:3745: testing if the second compile does not leave our definition intact error ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3748 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3763: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3766: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3769: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3772: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3788: result: $cf_cv_posix_c_source" >&5
+echo "${ECHO_T}$cf_cv_posix_c_source" >&6
+
+if test "$cf_cv_posix_c_source" != no ; then
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_cv_posix_c_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+ ;;
+netbsd*) #(vi
+ cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ ;;
+openbsd[4-9]*) #(vi
+ # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
+ cf_XOPEN_SOURCE=600
+ ;;
+openbsd*) #(vi
+ # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
+ ;;
+osf[45]*) #(vi
+ cf_xopen_source="-D_OSF_SOURCE"
+ ;;
+nto-qnx*) #(vi
+ cf_xopen_source="-D_QNX_SOURCE"
+ ;;
+sco*) #(vi
+ # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
+ ;;
+solaris2.*) #(vi
+ cf_xopen_source="-D__EXTENSIONS__"
+ ;;
+*)
+
+echo "$as_me:3900: checking if we should define _XOPEN_SOURCE" >&5
+echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_xopen_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3907 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3926: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3929: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3932: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3935: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_xopen_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 3944 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:3963: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:3966: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:3969: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:3972: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_xopen_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_xopen_source=$cf_XOPEN_SOURCE
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:3987: result: $cf_cv_xopen_source" >&5
+echo "${ECHO_T}$cf_cv_xopen_source" >&6
+
+if test "$cf_cv_xopen_source" != no ; then
+
+CFLAGS=`echo "$CFLAGS" | \
+ sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+ cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_temp_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
+
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+
+cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \
+ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
+ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+echo "$as_me:4095: checking if we should define _POSIX_C_SOURCE" >&5
+echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_posix_c_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+echo "${as_me:-configure}:4101: testing if the symbol is already defined go no further ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4104 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4119: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4122: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4125: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4128: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_posix_c_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_want_posix_source=no
+ case .$cf_POSIX_C_SOURCE in #(vi
+ .[12]??*) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ ;;
+ .2) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ cf_want_posix_source=yes
+ ;;
+ .*)
+ cf_want_posix_source=yes
+ ;;
+ esac
+ if test "$cf_want_posix_source" = yes ; then
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4149 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _POSIX_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4164: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4167: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4170: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4173: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
+
+echo "${as_me:-configure}:4184: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:4189: testing if the second compile does not leave our definition intact error ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4192 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4207: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4210: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4213: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4216: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:4232: result: $cf_cv_posix_c_source" >&5
+echo "${ECHO_T}$cf_cv_posix_c_source" >&6
+
+if test "$cf_cv_posix_c_source" != no ; then
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_cv_posix_c_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+ ;;
+esac
+
+if test -n "$cf_xopen_source" ; then
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
+ echo "$as_me:4405: checking if _XOPEN_SOURCE really is set" >&5
+echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4408 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4423: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4426: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4429: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4432: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_XOPEN_SOURCE_set=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_XOPEN_SOURCE_set=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:4441: result: $cf_XOPEN_SOURCE_set" >&5
+echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
+ if test $cf_XOPEN_SOURCE_set = yes
+ then
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4446 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+int
+main ()
+{
+
+#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4461: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4464: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4467: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4470: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_XOPEN_SOURCE_set_ok=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_XOPEN_SOURCE_set_ok=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ if test $cf_XOPEN_SOURCE_set_ok = no
+ then
+ { echo "$as_me:4481: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
+ fi
+ else
+
+echo "$as_me:4486: checking if we should define _XOPEN_SOURCE" >&5
+echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_xopen_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4493 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4512: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4515: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4518: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4521: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_xopen_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4530 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4549: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4552: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4555: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4558: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_xopen_source=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_xopen_source=$cf_XOPEN_SOURCE
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:4573: result: $cf_cv_xopen_source" >&5
+echo "${ECHO_T}$cf_cv_xopen_source" >&6
+
+if test "$cf_cv_xopen_source" != no ; then
+
+CFLAGS=`echo "$CFLAGS" | \
+ sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+ cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_temp_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+ fi
+fi
+
+GCC_VERSION=none
+if test "$GCC" = yes ; then
+ echo "$as_me:4673: checking version of $CC" >&5
+echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+ GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+ test -z "$GCC_VERSION" && GCC_VERSION=unknown
+ echo "$as_me:4677: result: $GCC_VERSION" >&5
+echo "${ECHO_T}$GCC_VERSION" >&6
+fi
+
+if ( test "$GCC" = yes || test "$GXX" = yes )
+then
+echo "$as_me:4683: checking if you want to check for gcc warnings" >&5
+echo $ECHO_N "checking if you want to check for gcc warnings... $ECHO_C" >&6
+
+# Check whether --with-warnings or --without-warnings was given.
+if test "${with_warnings+set}" = set; then
+ withval="$with_warnings"
+ cf_opt_with_warnings=$withval
+else
+ cf_opt_with_warnings=no
+fi;
+echo "$as_me:4693: result: $cf_opt_with_warnings" >&5
+echo "${ECHO_T}$cf_opt_with_warnings" >&6
+if test "$cf_opt_with_warnings" != no ; then
+
+if test "$GCC" = yes
+then
+cat > conftest.i <<EOF
+#ifndef GCC_PRINTF
+#define GCC_PRINTF 0
+#endif
+#ifndef GCC_SCANF
+#define GCC_SCANF 0
+#endif
+#ifndef GCC_NORETURN
+#define GCC_NORETURN /* nothing */
+#endif
+#ifndef GCC_UNUSED
+#define GCC_UNUSED /* nothing */
+#endif
+EOF
+if test "$GCC" = yes
+then
+ { echo "$as_me:4715: checking for $CC __attribute__ directives..." >&5
+echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
+cat > conftest.$ac_ext <<EOF
+#line 4718 "${as_me:-configure}"
+#include "confdefs.h"
+#include "conftest.h"
+#include "conftest.i"
+#if GCC_PRINTF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+#else
+#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
+#endif
+#if GCC_SCANF
+#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
+#else
+#define GCC_SCANFLIKE(fmt,var) /*nothing*/
+#endif
+extern void wow(char *,...) GCC_SCANFLIKE(1,2);
+extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
+extern void foo(void) GCC_NORETURN;
+int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED) { return 0; }
+EOF
+ cf_printf_attribute=no
+ cf_scanf_attribute=no
+ for cf_attribute in scanf printf unused noreturn
+ do
+
+cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+ cf_directive="__attribute__(($cf_attribute))"
+ echo "checking for $CC $cf_directive" 1>&5
+
+ case $cf_attribute in #(vi
+ printf) #(vi
+ cf_printf_attribute=yes
+ cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+ ;;
+ scanf) #(vi
+ cf_scanf_attribute=yes
+ cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE 1
+EOF
+ ;;
+ *) #(vi
+ cat >conftest.h <<EOF
+#define GCC_$cf_ATTRIBUTE $cf_directive
+EOF
+ ;;
+ esac
+
+ if { (eval echo "$as_me:4767: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4770: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:4772: result: ... $cf_attribute" >&5
+echo "${ECHO_T}... $cf_attribute" >&6
+ cat conftest.h >>confdefs.h
+ case $cf_attribute in #(vi
+ printf) #(vi
+ if test "$cf_printf_attribute" = no ; then
+ cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) /* nothing */
+EOF
+ else
+ cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+EOF
+ fi
+ ;;
+ scanf) #(vi
+ if test "$cf_scanf_attribute" = no ; then
+ cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) /* nothing */
+EOF
+ else
+ cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
+EOF
+ fi
+ ;;
+ esac
+ fi
+ done
+else
+ fgrep define conftest.i >>confdefs.h
+fi
+rm -rf conftest*
+fi
+
+INTEL_COMPILER=no
+
+if test "$GCC" = yes ; then
+ case $host_os in
+ linux*|gnu*)
+ echo "$as_me:4812: checking if this is really Intel C compiler" >&5
+echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -no-gcc"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4817 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4834: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4837: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4840: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4843: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ INTEL_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:4854: result: $INTEL_COMPILER" >&5
+echo "${ECHO_T}$INTEL_COMPILER" >&6
+ ;;
+ esac
+fi
+
+cat > conftest.$ac_ext <<EOF
+#line 4861 "${as_me:-configure}"
+int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
+EOF
+
+if test "$INTEL_COMPILER" = yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #279: controlling expression is constant
+
+ { echo "$as_me:4878: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
+ cf_save_CFLAGS="$CFLAGS"
+ EXTRA_CFLAGS="-Wall"
+ for cf_opt in \
+ wd1419 \
+ wd1683 \
+ wd1684 \
+ wd193 \
+ wd593 \
+ wd279 \
+ wd810 \
+ wd869 \
+ wd981
+ do
+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+ if { (eval echo "$as_me:4894: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4897: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:4899: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
+
+elif test "$GCC" = yes
+then
+ { echo "$as_me:4908: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
+ cf_save_CFLAGS="$CFLAGS"
+ EXTRA_CFLAGS=
+ cf_warn_CONST=""
+ test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
+ for cf_opt in W Wall \
+ Wbad-function-cast \
+ Wcast-align \
+ Wcast-qual \
+ Winline \
+ Wmissing-declarations \
+ Wmissing-prototypes \
+ Wnested-externs \
+ Wpointer-arith \
+ Wshadow \
+ Wstrict-prototypes \
+ Wundef $cf_warn_CONST
+ do
+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+ if { (eval echo "$as_me:4928: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4931: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:4933: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+ case $cf_opt in #(vi
+ Wcast-qual) #(vi
+ CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
+ ;;
+ Winline) #(vi
+ case $GCC_VERSION in
+ [34].*)
+ test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
+
+echo "${as_me:-configure}:4944: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+
+ continue;;
+ esac
+ ;;
+ esac
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
+fi
+rm -rf conftest*
+
+fi
+fi
+
+echo "$as_me:4960: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line 4968 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5017: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5020: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5023: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5026: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:5043: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:5046: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+echo "$as_me:5051: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5057 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *ccp;
+ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++ccp;
+ p = (char**) ccp;
+ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ }
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5115: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5118: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5121: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5124: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5134: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\EOF
+#define const
+EOF
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_main_return=return
+echo "$as_me:5150: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5171 "configure"
+#include "confdefs.h"
+#include <assert.h>
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:5176: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5182: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5205 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:5209: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5215: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:5252: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5262 "configure"
+#include "confdefs.h"
+#include <assert.h>
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:5267: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5273: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5296 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:5300: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5306: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:5334: error: C preprocessor \"$CPP\" fails sanity check" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ac_main_return=return
+
+echo "$as_me:5346: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5352 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:5360: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5366: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5388 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5406 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5427 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ $ac_main_return(2);
+ $ac_main_return (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:5453: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5456: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:5458: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5461: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:5474: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+for ac_header in \
+malloc.h \
+search.h \
+string.h \
+
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:5491: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5497 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:5501: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5507: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:5526: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+for ac_header in unistd.h getopt.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:5539: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5545 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:5549: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:5555: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:5574: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:5584: checking for header declaring getopt variables" >&5
+echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6
+if test "${cf_cv_getopt_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_getopt_header=none
+for cf_header in stdio.h stdlib.h unistd.h getopt.h
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 5594 "configure"
+#include "confdefs.h"
+
+#include <$cf_header>
+int
+main ()
+{
+int x = optind; char *y = optarg
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5607: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5610: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5613: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5616: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_getopt_header=$cf_header
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+
+fi
+echo "$as_me:5628: result: $cf_cv_getopt_header" >&5
+echo "${ECHO_T}$cf_cv_getopt_header" >&6
+if test $cf_cv_getopt_header != none ; then
+ cat >>confdefs.h <<\EOF
+#define HAVE_GETOPT_HEADER 1
+EOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:5643: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5649 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5655: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5658: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5661: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5664: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5674: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+echo "$as_me:5684: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5690 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+ return 0;
+if (sizeof (size_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5705: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5708: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5711: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5714: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_size_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5724: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<EOF
+#define size_t unsigned
+EOF
+
+fi
+
+for ac_func in \
+mkdtemp \
+popen \
+tsearch \
+
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:5743: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5749 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5780: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5783: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5786: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5789: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:5799: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+cf_stdio_unlocked=no
+
+for ac_func in getc_unlocked
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:5814: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5820 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+char (*f) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5851: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5854: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5857: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5860: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:5870: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+ cf_stdio_unlocked=$ac_func
+fi
+done
+
+if test "$cf_stdio_unlocked" != no ; then
+ case "$CPPFLAGS" in #(vi
+ *-D_REENTRANT*) #(vi
+ ;;
+ *)
+ echo "$as_me:5885: checking if we should define _REENTRANT" >&5
+echo $ECHO_N "checking if we should define _REENTRANT... $ECHO_C" >&6
+if test "${cf_cv_stdio_unlocked+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5892 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main ()
+{
+
+ extern void *$cf_stdio_unlocked(void *);
+ void *dummy = $cf_stdio_unlocked(0)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:5906: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:5909: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:5912: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5915: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_stdio_unlocked=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_stdio_unlocked=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:5925: result: $cf_cv_stdio_unlocked" >&5
+echo "${ECHO_T}$cf_cv_stdio_unlocked" >&6
+ if test "$cf_cv_stdio_unlocked" = yes ; then
+ cat >>confdefs.h <<\EOF
+#define _REENTRANT 1
+EOF
+
+ fi
+ ;;
+ esac
+fi
+
+echo "$as_me:5937: checking if you want to use dmalloc for testing" >&5
+echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6
+
+# Check whether --with-dmalloc or --without-dmalloc was given.
+if test "${with_dmalloc+set}" = set; then
+ withval="$with_dmalloc"
+ cat >>confdefs.h <<\EOF
+#define USE_DMALLOC 1
+EOF
+
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_dmalloc=yes
+else
+ with_dmalloc=
+fi;
+echo "$as_me:5953: result: ${with_dmalloc:-no}" >&5
+echo "${ECHO_T}${with_dmalloc:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -g
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+ esac
+ ;;
+esac
+
+if test "$with_dmalloc" = yes ; then
+ echo "$as_me:6047: checking for dmalloc.h" >&5
+echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
+if test "${ac_cv_header_dmalloc_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6053 "configure"
+#include "confdefs.h"
+#include <dmalloc.h>
+_ACEOF
+if { (eval echo "$as_me:6057: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:6063: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_cv_header_dmalloc_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_dmalloc_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:6082: result: $ac_cv_header_dmalloc_h" >&5
+echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
+if test $ac_cv_header_dmalloc_h = yes; then
+
+echo "$as_me:6086: checking for dmalloc_debug in -ldmalloc" >&5
+echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
+if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldmalloc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 6094 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dmalloc_debug ();
+int
+main ()
+{
+dmalloc_debug ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6113: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6116: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6119: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6122: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dmalloc_dmalloc_debug=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dmalloc_dmalloc_debug=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:6133: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
+if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then
+ cat >>confdefs.h <<EOF
+#define HAVE_LIBDMALLOC 1
+EOF
+
+ LIBS="-ldmalloc $LIBS"
+
+fi
+
+fi
+
+fi
+
+echo "$as_me:6148: checking if you want to use dbmalloc for testing" >&5
+echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6
+
+# Check whether --with-dbmalloc or --without-dbmalloc was given.
+if test "${with_dbmalloc+set}" = set; then
+ withval="$with_dbmalloc"
+ cat >>confdefs.h <<\EOF
+#define USE_DBMALLOC 1
+EOF
+
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_dbmalloc=yes
+else
+ with_dbmalloc=
+fi;
+echo "$as_me:6164: result: ${with_dbmalloc:-no}" >&5
+echo "${ECHO_T}${with_dbmalloc:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -g
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+ esac
+ ;;
+esac
+
+if test "$with_dbmalloc" = yes ; then
+ echo "$as_me:6258: checking for dbmalloc.h" >&5
+echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
+if test "${ac_cv_header_dbmalloc_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6264 "configure"
+#include "confdefs.h"
+#include <dbmalloc.h>
+_ACEOF
+if { (eval echo "$as_me:6268: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:6274: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_cv_header_dbmalloc_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_dbmalloc_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:6293: result: $ac_cv_header_dbmalloc_h" >&5
+echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
+if test $ac_cv_header_dbmalloc_h = yes; then
+
+echo "$as_me:6297: checking for debug_malloc in -ldbmalloc" >&5
+echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
+if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldbmalloc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 6305 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char debug_malloc ();
+int
+main ()
+{
+debug_malloc ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6324: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6327: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6330: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6333: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dbmalloc_debug_malloc=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dbmalloc_debug_malloc=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:6344: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
+if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then
+ cat >>confdefs.h <<EOF
+#define HAVE_LIBDBMALLOC 1
+EOF
+
+ LIBS="-ldbmalloc $LIBS"
+
+fi
+
+fi
+
+fi
+
+echo "$as_me:6359: checking if you want to use valgrind for testing" >&5
+echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6
+
+# Check whether --with-valgrind or --without-valgrind was given.
+if test "${with_valgrind+set}" = set; then
+ withval="$with_valgrind"
+ cat >>confdefs.h <<\EOF
+#define USE_VALGRIND 1
+EOF
+
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_valgrind=yes
+else
+ with_valgrind=
+fi;
+echo "$as_me:6375: result: ${with_valgrind:-no}" >&5
+echo "${ECHO_T}${with_valgrind:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in -g
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=yes
+
+ if test $cf_fix_cppflags = yes ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'`
+
+ test "${cf_add_cflags}" != "${cf_tst_cflags}" \
+ && test -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+ esac
+ ;;
+esac
+
+echo "$as_me:6468: checking if you want to perform memory-leak testing" >&5
+echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6
+
+# Check whether --enable-leaks or --disable-leaks was given.
+if test "${enable_leaks+set}" = set; then
+ enableval="$enable_leaks"
+ if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
+else
+ : ${with_no_leaks:=no}
+fi;
+echo "$as_me:6478: result: $with_no_leaks" >&5
+echo "${ECHO_T}$with_no_leaks" >&6
+
+if test "$with_no_leaks" = yes ; then
+ cat >>confdefs.h <<\EOF
+#define NO_LEAKS 1
+EOF
+
+ cat >>confdefs.h <<\EOF
+#define YY_NO_LEAKS 1
+EOF
+
+fi
+
+### output makefile and config.h
+ac_config_files="$ac_config_files makefile"
+ac_config_commands="$ac_config_commands default"
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
+ if test -w $cache_file; then
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
+ else
+ echo "not updating unwritable cache $cache_file"
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:6574: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+ac_cs_invocation="\$0 \$@"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+exec 6>&1
+
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\EOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <dickey@invisible-island.net>."
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.52.20101002,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ shift
+ set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
+ shift
+ ;;
+ -*);;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_need_defaults=false;;
+ esac
+
+ case $1 in
+ # Handling of the options.
+EOF
+cat >>$CONFIG_STATUS <<EOF
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
+ exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:6750: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ shift
+ CONFIG_FILES="$CONFIG_FILES $1"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $1"
+ ac_need_defaults=false;;
+
+ # This is an error.
+ -*) { { echo "$as_me:6769: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
+ esac
+ shift
+done
+
+exec 5>>config.log
+cat >&5 << _ACEOF
+
+## ----------------------- ##
+## Running config.status. ##
+## ----------------------- ##
+
+This file was extended by $as_me 2.52.20101002, executed with
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ > $ac_cs_invocation
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+
+_ACEOF
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "makefile" ) CONFIG_FILES="$CONFIG_FILES makefile" ;;
+ "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config_h.in" ;;
+ *) { { echo "$as_me:6807: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=$TMPDIR/cs$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+ { (exit 1); exit 1; }
+}
+
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@DEFS@,$DEFS,;t t
+s,@LIBS@,$LIBS,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@LINT@,$LINT,;t t
+s,@LINT_OPTS@,$LINT_OPTS,;t t
+s,@CTAGS@,$CTAGS,;t t
+s,@ETAGS@,$ETAGS,;t t
+s,@MAKE_LOWER_TAGS@,$MAKE_LOWER_TAGS,;t t
+s,@MAKE_UPPER_TAGS@,$MAKE_UPPER_TAGS,;t t
+s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t
+s,@ECHO_LT@,$ECHO_LT,;t t
+s,@ECHO_LD@,$ECHO_LD,;t t
+s,@RULE_CC@,$RULE_CC,;t t
+s,@SHOW_CC@,$SHOW_CC,;t t
+s,@ECHO_CC@,$ECHO_CC,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@PROG_EXT@,$PROG_EXT,;t t
+s,@DESTDIR@,$DESTDIR,;t t
+s,@BZCAT@,$BZCAT,;t t
+s,@BZIP2@,$BZIP2,;t t
+s,@COMPRESS@,$COMPRESS,;t t
+s,@GZIP@,$GZIP,;t t
+s,@LZCAT@,$LZCAT,;t t
+s,@PCAT@,$PCAT,;t t
+s,@UNCOMPRESS@,$UNCOMPRESS,;t t
+s,@XZ@,$XZ,;t t
+s,@ZCAT@,$ZCAT,;t t
+s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
+s,@CPP@,$CPP,;t t
+CEOF
+
+EOF
+
+ cat >>$CONFIG_STATUS <<\EOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # These are the two extra sed commands mentioned above.
+ (echo ':t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ else
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
+
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ { case "$ac_dir" in
+ [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+ *) as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+ case $as_mkdir_dir in
+ # Skip DOS drivespec
+ ?:) as_incr_dir=$as_mkdir_dir ;;
+ *)
+ as_incr_dir=$as_incr_dir/$as_mkdir_dir
+ test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+ ;;
+ esac
+done; }
+
+ ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
+ # A "../" for each directory in $ac_dir_suffix.
+ ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
+ else
+ ac_dir_suffix= ac_dots=
+ fi
+
+ case $srcdir in
+ .) ac_srcdir=.
+ if test -z "$ac_dots"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* )
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
+ *) # Relative path.
+ ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_dots$srcdir ;;
+ esac
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_dots$INSTALL ;;
+ esac
+
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:7046: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated automatically by config.status. */
+ configure_input="Generated automatically from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:7064: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo $f;;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo $f
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo $srcdir/$f
+ else
+ # /dev/null tree
+ { { echo "$as_me:7077: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+EOF
+cat >>$CONFIG_STATUS <<EOF
+ sed "$ac_vpsub
+$extrasub
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_iB='\([ ]\),\1#\2define\3'
+ac_iC=' '
+ac_iD='\4,;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:7143: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:7154: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo $f;;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo $f
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo $srcdir/$f
+ else
+ # /dev/null tree
+ { { echo "$as_me:7167: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+EOF
+
+# Transform confdefs.h into a list of #define's. We won't use it as a sed
+# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to
+# be either 'cat' or 'sort'.
+cat confdefs.h | uniq >conftest.vals
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+echo ' rm -f conftest.frag' >> $CONFIG_STATUS
+while grep . conftest.vals >/dev/null
+do
+ # Write chunks of a limited-size here document to conftest.frag.
+ echo ' cat >> conftest.frag <<CEOF' >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> $CONFIG_STATUS
+ echo 'CEOF' >> $CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+ rm -f conftest.vals
+ mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+# Run sed to substitute the contents of conftest.frag into $tmp/in at the
+# marker @DEFS@.
+echo ' cat >> conftest.edit <<CEOF
+/@DEFS@/r conftest.frag
+/@DEFS@/d
+CEOF
+sed -f conftest.edit $tmp/in > $tmp/out
+rm -f $tmp/in
+mv $tmp/out $tmp/in
+rm -f conftest.edit conftest.frag
+' >> $CONFIG_STATUS
+
+cat >>$CONFIG_STATUS <<\EOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated automatically by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated automatically by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+ { echo "$as_me:7225: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+ { case "$ac_dir" in
+ [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+ *) as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+ case $as_mkdir_dir in
+ # Skip DOS drivespec
+ ?:) as_incr_dir=$as_mkdir_dir ;;
+ *)
+ as_incr_dir=$as_incr_dir/$as_mkdir_dir
+ test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+ ;;
+ esac
+done; }
+
+ fi
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+done
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+
+{ (exit 0); exit 0; }
+EOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff --git a/patch_cmds/diffstat/configure.in b/patch_cmds/diffstat/configure.in
new file mode 100644
index 0000000..d4fd5e0
--- /dev/null
+++ b/patch_cmds/diffstat/configure.in
@@ -0,0 +1,54 @@
+dnl Process this file with 'autoconf' to produce a 'configure' script
+dnl $Id: configure.in,v 1.22 2010/07/16 09:25:15 tom Exp $
+AC_PREREQ(2.13.20020210)
+AC_REVISION($Revision: 1.22 $)
+AC_INIT(diffstat.c)
+AC_CONFIG_HEADER(config.h:config_h.in)
+
+AC_PROG_CC
+AC_PROG_INSTALL
+CF_PROG_LINT
+CF_MAKE_TAGS
+
+CF_ANSI_CC_REQD
+CF_DISABLE_ECHO
+CF_PROG_EXT
+CF_WITH_INSTALL_PREFIX
+
+with_full_paths=no
+CF_PATH_PROG(BZCAT, bzcat)
+CF_PATH_PROG(BZIP2, bzip2)
+CF_PATH_PROG(COMPRESS, compress, gzip)
+CF_PATH_PROG(GZIP, gzip)
+CF_PATH_PROG(LZCAT, lzcat, xz)
+CF_PATH_PROG(PCAT, pcat)
+CF_PATH_PROG(UNCOMPRESS, uncompress.real, uncompress)
+CF_PATH_PROG(XZ, xz, lzcat)
+CF_PATH_PROG(ZCAT, zcat)
+
+CF_XOPEN_SOURCE
+CF_WITH_WARNINGS
+
+AC_CONST
+AC_STDC_HEADERS
+AC_HAVE_HEADERS(\
+malloc.h \
+search.h \
+string.h \
+)
+CF_GETOPT_HEADER
+
+AC_TYPE_SIZE_T
+
+AC_CHECK_FUNCS(\
+mkdtemp \
+popen \
+tsearch \
+)
+
+CF_STDIO_UNLOCKED(getc_unlocked)
+
+CF_DISABLE_LEAKS
+
+### output makefile and config.h
+AC_OUTPUT(makefile,,,cat)
diff --git a/patch_cmds/diffstat/diffstat.1 b/patch_cmds/diffstat/diffstat.1
new file mode 100644
index 0000000..d7c0345
--- /dev/null
+++ b/patch_cmds/diffstat/diffstat.1
@@ -0,0 +1,235 @@
+.\"*****************************************************************************
+.\" Copyright 1994-2009,2010 by Thomas E. Dickey *
+.\" All Rights Reserved. *
+.\" *
+.\" Permission to use, copy, modify, and distribute this software and its *
+.\" documentation for any purpose and without fee is hereby granted, provided *
+.\" that the above copyright notice appear in all copies and that both that *
+.\" copyright notice and this permission notice appear in supporting *
+.\" documentation, and that the name of the above listed copyright holder(s) *
+.\" not be used in advertising or publicity pertaining to distribution of the *
+.\" software without specific, written prior permission. *
+.\" *
+.\" THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD *
+.\" TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND *
+.\" FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE *
+.\" FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR *
+.\" IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
+.\"*****************************************************************************
+.\" $Id: diffstat.1,v 1.30 2012/01/02 19:20:26 tom Exp $
+.TH DIFFSTAT 1
+.SH NAME
+\fBdiffstat\fP \- make histogram from diff-output
+.SH SYNOPSIS
+\fBdiffstat\fP\fI [options] [file-specifications]\fP
+.SH DESCRIPTION
+This program reads the output of \fBdiff\fP and displays a histogram
+of the insertions, deletions, and modifications per-file.
+Diffstat is a program that is useful for reviewing large, complex patch files.
+It reads from one or more input files which contain output from \fBdiff\fP,
+producing a histogram of the total lines changed for each file referenced.
+.PP
+If the input filename ends with .bz2, .gz, .lzma, .z or .Z,
+diffstat will read the
+uncompressed data via a pipe from the corresponding program.
+It also can infer the compression type from files piped via the standard input.
+.PP
+Diffstat recognizes the most popular types of output from diff:
+.RS
+.TP
+unified
+preferred by the \fBpatch\fP utility.
+.TP
+context
+best for readability, but not very compact.
+.TP
+default
+not good for much, but simple to generate.
+.RE
+.PP
+\fBDiffstat\fP detects the lines that are output by \fBdiff\fP to
+tell which files are compared, and then counts the markers in the
+first column that denote the type of change (insertion, deletion
+or modification).
+These are shown in the histogram as "+", "\-" and "!" characters.
+.PP
+If no filename is given on the command line,
+\fBdiffstat\fP reads the differences from the standard input.
+.SH OPTIONS
+.TP
+.B \-b
+ignore lines matching "Binary files XXX and YYY differ" in the diff
+.TP
+.B \-c
+prefix each line of output with "#", making it a comment-line for shell
+scripts.
+.TP
+.B \-C
+add SGR color escape sequences to highlight the histogram.
+.TP
+.BI \-D " destination"
+specify a directory containing files which can be referred to as
+the result of applying the differences.
+\fBdiffstat\fP will count the lines in the corresponding files
+(after adjusting the names by the \fB\-p\fP option)
+to obtain the total number of lines in each file.
+.IP
+The remainder, after subtracting modified and deleted lines,
+is shown as "unchanged lines".
+.TP
+.BI \-e " file"
+redirect standard error to \fIfile\fR.
+.TP
+.BI \-f " format"
+specify the format of the histogram.
+.RS
+.TP 3
+0
+for concise, which shows only the value and a single histogram code for each of
+insert (+),
+delete (\-) or
+modify (!)
+.TP 3
+1
+for normal output,
+.TP 3
+2
+to fill in the histogram with dots,
+.TP 3
+4
+to print each value with the histogram.
+.RE
+.IP
+Any nonzero value gives a histogram.
+The dots and individual values can be combined,
+e.g., \fB\-f6\fP gives both.
+.TP
+.B \-h
+prints the usage message and exits.
+.TP
+.B \-k
+suppress the merging of filenames in the report.
+.TP
+.B \-l
+lists only the filenames.
+No histogram is generated.
+.TP
+.B \-m
+merge insert/delete counts from each "chunk" of the patch file to
+approximate a count of the modified lines.
+.TP
+.BI \-n " number"
+specify the minimum width used for filenames.
+If you do not specify this, \fBdiffstat\fP uses the length of the longest
+filename, after stripping common prefixes.
+.TP
+.BI \-N " number"
+specify the maximum width used for filenames.
+Names longer than this limit are truncated on the left.
+If you do not specify this, \fBdiffstat\fP next checks the \fB\-n\fP option.
+.TP
+.BI \-o " file"
+redirect standard output to \fIfile\fR.
+.TP
+.BI \-p " number"
+override the logic that strips common pathnames, simulating the \fBpatch\fP
+"\-p" option.
+.TP
+.B \-q
+suppress the "0 files changed" message for empty diffs.
+.TP
+.B \-r " code"
+provides optional rounding of the data shown in histogram,
+rather than truncating with error adjustments.
+.RS
+.TP 3
+0
+is the default.
+No rounding is performed,
+but accumulated errors are added to following columns.
+.TP 3
+1
+rounds the data
+.TP 3
+2
+rounds the data and adjusts the histogram to ensure that
+it displays something if there are any differences even if
+those would normally be rounded to zero.
+.RE
+.TP
+.B \-R
+Assume patch was created with old and new files swapped.
+.TP
+.BI \-s
+show only the summary line, e.g., number of insertions and deletions.
+.TP
+.BI \-S " source"
+this is like the \fB\-D\fP option, but specifies a location where
+the original files (before applying differences) can be found.
+.TP
+.B \-t
+overrides the histogram,
+generates output of comma separated values.
+.TP
+.B \-u
+suppress the sorting of filenames in the report.
+.TP
+.B \-v
+show progress,
+e.g., if the output is redirected to a file,
+write progress messages to the standard error.
+.TP
+.B \-V
+prints the current version number and exits.
+.TP
+.BI \-w " number"
+specify the maximum width of the histogram.
+The histogram will never be shorter than 10 columns,
+just in case the filenames get too large.
+.SH ENVIRONMENT
+.PP
+\fBDiffstat\fP runs in a portable UNIX\*R environment.
+.PP
+You can override the compiled-in paths of programs used for decompressing
+input files by setting environment variables corresponding to their name:
+.sp
+.RS
+.nf
+DIFFSTAT_BZCAT_PATH
+DIFFSTAT_BZIP2_PATH
+DIFFSTAT_COMPRESS_PATH
+DIFFSTAT_GZIP_PATH
+DIFFSTAT_LZCAT_PATH
+DIFFSTAT_PCAT_PATH
+DIFFSTAT_UNCOMPRESS_PATH
+DIFFSTAT_XZ_PATH
+DIFFSTAT_ZCAT_PATH
+.fi
+.RE
+.PP
+However, \fBdiffstat\fP assumes that the resulting program uses the
+same command-line options, e.g., "\-c" to decompress to the standard output.
+.SH FILES
+.PP
+\fBDiffstat\fP is a single binary module, which uses no auxiliary files.
+.SH BUGS
+.PP
+\fBDiffstat\fP makes a lot of assumptions about the format of a \fBdiff\fP file.
+.PP
+There is no way to obtain a filename from the standard diff between
+two files with no options.
+Context diffs work,
+as well as unified diffs.
+.PP
+There's no easy way to determine the degree of overlap between the
+"before" and "after" displays of modified lines.
+\fBdiffstat\fP simply counts the number of inserted and deleted lines
+to approximate modified lines for the \fB\-m\fP option.
+.SH SEE ALSO
+.PP
+.BR diff (1).
+.SH AUTHOR
+.PP
+Thomas Dickey <dickey@invisible-island.net>.
diff --git a/patch_cmds/diffstat/diffstat.c b/patch_cmds/diffstat/diffstat.c
new file mode 100644
index 0000000..7027ba3
--- /dev/null
+++ b/patch_cmds/diffstat/diffstat.c
@@ -0,0 +1,2491 @@
+/******************************************************************************
+ * Copyright 1994-2010,2012 by Thomas E. Dickey *
+ * All Rights Reserved. *
+ * *
+ * Permission to use, copy, modify, and distribute this software and its *
+ * documentation for any purpose and without fee is hereby granted, provided *
+ * that the above copyright notice appear in all copies and that both that *
+ * copyright notice and this permission notice appear in supporting *
+ * documentation, and that the name of the above listed copyright holder(s) *
+ * not be used in advertising or publicity pertaining to distribution of the *
+ * software without specific, written prior permission. *
+ * *
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD *
+ * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND *
+ * FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE *
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR *
+ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
+ ******************************************************************************/
+
+#ifndef NO_IDENT
+static const char *Id = "$Id: diffstat.c,v 1.55 2012/01/03 09:44:24 tom Exp $";
+#endif
+
+/*
+ * Title: diffstat.c
+ * Author: T.E.Dickey
+ * Created: 02 Feb 1992
+ * Modified:
+ * 03 Jan 2012, Correct case for "xz" suffix in is_compressed()
+ * (patch from Frederic Culot in FreeBSD ports). Add
+ * "-R" option. Improve dequoting of filenames in
+ * headers.
+ * 10 Oct 2010, correct display of new files when -S/-D options
+ * are used. Remove the temporary directory on
+ * error, introduced in 1.48+ (patch by Solar
+ * Designer).
+ * 19 Jul 2010, add missing "break" statement which left "-c"
+ * option falling-through into "-C".
+ * 16 Jul 2010, configure "xz" path explicitly, in case lzcat
+ * does not support xz format. Add "-s" (summary)
+ * and "-C" (color) options.
+ * 15 Jul 2010, fix strict gcc warnings, e.g., using const.
+ * 10 Jan 2010, improve a case where filenames have embedded blanks
+ * (patch by Reinier Post).
+ * 07 Nov 2009, correct suffix-check for ".xz" files as
+ * command-line parameters rather than as piped
+ * input (report by Moritz Barsnick).
+ * 06 Oct 2009, fixes to build/run with MSYS or MinGW. use
+ * $TMPDIR for path of temporary file used in
+ * decompression. correct else-condition for
+ * detecting compression type (patch by Zach Hirsch).
+ * 31 Aug 2009, improve lzma support, add support for xz (patch by
+ * Eric Blake). Add special case for no-newline
+ * message from some diff's (Ubuntu #269895).
+ * Improve configure check for getopt().
+ * 11 Aug 2009, Add logic to check standard input, decompress if
+ * possible. Add -N option, to truncate long names.
+ * Add pack/pcat as a compression type.
+ * Add lzma/lzcat as a compression type.
+ * Allow overriding program paths with environment.
+ * 10 Aug 2009, modify to work with Perforce-style diffs (patch
+ * by Ed Schouten).
+ * 29 Mar 2009, modify to work with patch ".rej" files, which have
+ * no filename header (use the name of the ".rej"
+ * file if it is available).
+ * 29 Sep 2008, fix typo in usage message.
+ * 06 Aug 2008, add "-m", "-S" and "-D" options.
+ * 05 Aug 2008, add "-q" option to suppress 0-files-changed
+ * message (patch by Greg Norris).
+ * 04 Sep 2007, add "-b" option to suppress binary-files (patch
+ * by Greg Norris).
+ * 26 Aug 2007, add "-d" option to show debugging traces, rather
+ * than by defining DEBUG. Add check after
+ * unified-diff chunk to avoid adding non-diff text
+ * (report by Adrian Bunk). Quote pathname passed
+ * in command to gzip/uncompress. Add a check for
+ * default-diff output without the "diff" command
+ * supplied to provide filename, mark as "unknown".
+ * 16 Jul 2006, fix to avoid modifying which is being used by
+ * tsearch() for ordering the binary tree (report by
+ * Adrian Bunk).
+ * 02 Jul 2006, do not ignore pathnames in /tmp/, since some tools
+ * create usable pathnames for both old/new files
+ * there (Debian #376086). Correct ifdef for
+ * fgetc_unlocked(). Add configure check for
+ * compress, gzip and bzip2 programs that may be used
+ * to decompress files.
+ * 24 Aug 2005, update usage message for -l, -r changes.
+ * 15 Aug 2005, apply PLURAL() to num_files (Jean Delvare).
+ * add -l option (request by Michael Burian).
+ * Use fgetc_locked() if available.
+ * 14 Aug 2005, add -r2 option (rounding with adjustment to ensure
+ * that nonzero values always display a histogram
+ * bar), adapted from patch by Jean Delvare. Extend
+ * the -f option (2=filled, 4=verbose).
+ * 12 Aug 2005, modify to use tsearch() for sorted lists.
+ * 11 Aug 2005, minor fixes to scaling of modified lines. Add
+ * -r (round) option.
+ * 05 Aug 2005, add -t (table) option.
+ * 10 Apr 2005, change order of merging and prefix-stripping so
+ * stripping all prefixes, e.g., with -p9, will be
+ * sorted as expected (Patch by Jean Delvare
+ * <khali@linux-fr.org>).
+ * 10 Jan 2005, add support for '--help' and '--version' (Patch
+ * by Eric Blake <ebb9@byu.net>.)
+ * 16 Dec 2004, fix a different case for data beginning with "--"
+ * which was treated as a header line.
+ * 14 Dec 2004, Fix allocation problems. Open files in binary
+ * mode for reading. Getopt returns -1, not
+ * necessarily EOF. Add const where useful. Use
+ * NO_IDENT where necessary. malloc() comes from
+ * <stdlib.h> in standard systems (Patch by Eric
+ * Blake <ebb9@byu.net>.)
+ * 08 Nov 2004, minor fix for resync of unified diffs checks for
+ * range (line beginning with '@' without header
+ * lines (successive lines beginning with "---" and
+ * "+++"). Fix a few problems reported by valgrind.
+ * 09 Nov 2003, modify check for lines beginning with '-' or '+'
+ * to treat only "---" in old-style diffs as a
+ * special case.
+ * 14 Feb 2003, modify check for filenames to allow for some cases
+ * of incomplete dates (the reported example omitted
+ * the day of the month). Correct a typo in usage().
+ * Add -e, -h, -o options.
+ * 04 Jan 2003, improve tracking of chunks in unified diff, in
+ * case the original files contained a '+' or '-' in
+ * the first column (Debian #155000). Add -v option
+ * (Debian #170947). Modify to allocate buffers big
+ * enough for long input lines. Do additional
+ * merging to handle unusual Index/diff constructs in
+ * recent makepatch script.
+ * 20 Aug 2002, add -u option to tell diffstat to preserve the
+ * order of filenames as given rather than sort them
+ * (request by H Peter Anvin <hpa@zytor.com>). Add
+ * -k option for completeness.
+ * 09 Aug 2002, allow either '/' or '-' as delimiters in dates,
+ * to accommodate diffutils 2.8 (report by Rik van
+ * Riel <riel@conectiva.com.br>).
+ * 10 Oct 2001, add bzip2 (.bz2) suffix as suggested by
+ * Gregory T Norris <haphazard@socket.net> in Debian
+ * bug report #82969).
+ * add check for diff from RCS archive where the
+ * "diff" lines do not reference a filename.
+ * 29 Mar 2000, add -c option. Check for compressed input, read
+ * via pipe. Change to ANSI C. Adapted change from
+ * Troy Engel to add option that displays a number
+ * only, rather than a histogram.
+ * 17 May 1998, handle Debian diff files, which do not contain
+ * dates on the header lines.
+ * 16 Jan 1998, accommodate patches w/o tabs in header lines (e.g.,
+ * from cut/paste). Strip suffixes such as ".orig".
+ * 24 Mar 1996, corrected -p0 logic, more fixes in do_merging.
+ * 16 Mar 1996, corrected state-change for "Binary". Added -p
+ * option.
+ * 17 Dec 1995, corrected matching algorithm in 'do_merging()'
+ * 11 Dec 1995, mods to accommodate diffs against /dev/null or
+ * /tmp/XXX (tempfiles).
+ * 06 May 1995, limit scaling -- only shrink-to-fit.
+ * 29 Apr 1995, recognize 'rcsdiff -u' format.
+ * 26 Dec 1994, strip common pathname-prefix.
+ * 13 Nov 1994, added '-n' option. Corrected logic of 'match'.
+ * 17 Jun 1994, ifdef-<string.h>
+ * 12 Jun 1994, recognize unified diff, and output of makepatch.
+ * 04 Oct 1993, merge multiple diff-files, busy message when the
+ * output is piped to a file.
+ *
+ * Function: this program reads the output of 'diff' and displays a histogram
+ * of the insertions/deletions/modifications per-file.
+ */
+
+#if defined(HAVE_CONFIG_H)
+#include <config.h>
+#endif
+
+#if defined(WIN32) && !defined(HAVE_CONFIG_H)
+#define HAVE_STDLIB_H
+#define HAVE_STRING_H
+#define HAVE_MALLOC_H
+#define HAVE_GETOPT_H
+#endif
+
+#include <stdio.h>
+#include <ctype.h>
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#define strchr index
+#define strrchr rindex
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
+extern int atoi(const char *);
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#else
+extern int isatty(int);
+#endif
+
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+
+#if defined(HAVE_SEARCH_H) && defined(HAVE_TSEARCH)
+#include <search.h>
+#else
+#undef HAVE_TSEARCH
+#endif
+
+#ifdef HAVE_GETC_UNLOCKED
+#define MY_GETC getc_unlocked
+#else
+#define MY_GETC getc
+#endif
+
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#elif !defined(HAVE_GETOPT_HEADER)
+extern int getopt(int, char *const *, const char *);
+extern char *optarg;
+extern int optind;
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if !defined(EXIT_SUCCESS)
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
+#endif
+
+#ifndef BZCAT_PATH
+#define BZCAT_PATH ""
+#endif
+
+#ifndef BZIP2_PATH
+#define BZIP2_PATH ""
+#endif
+
+#ifndef COMPRESS_PATH
+#define COMPRESS_PATH ""
+#endif
+
+#ifndef GZIP_PATH
+#define GZIP_PATH ""
+#endif
+
+#ifndef LZCAT_PATH
+#define LZCAT_PATH ""
+#endif
+
+#ifndef PCAT_PATH
+#define PCAT_PATH ""
+#endif
+
+#ifndef UNCOMPRESS_PATH
+#define UNCOMPRESS_PATH ""
+#endif
+
+#ifndef XZ_PATH
+#define XZ_PATH ""
+#endif
+
+#ifndef ZCAT_PATH
+#define ZCAT_PATH ""
+#endif
+
+/******************************************************************************/
+
+#if defined(__MINGW32__) || defined(WIN32)
+#define MKDIR(name,mode) mkdir(name)
+#else
+#define MKDIR(name,mode) mkdir(name,mode)
+#endif
+
+#if defined(WIN32) && !defined(__MINGW32__)
+#define PATHSEP '\\'
+#else
+#define PATHSEP '/'
+#endif
+
+#define SQUOTE '\''
+#define EOS '\0'
+#define BLANK ' '
+
+#define UC(c) ((unsigned char)(c))
+
+#ifndef OPT_TRACE
+#define OPT_TRACE 1
+#endif
+
+#if OPT_TRACE
+#define TRACE(p) if (trace_opt) printf p
+#else
+#define TRACE(p) /*nothing */
+#endif
+
+#define contain_any(s,reject) (strcspn(s,reject) != strlen(s))
+
+#define HAVE_NOTHING 0
+#define HAVE_GENERIC 1 /* e.g., "Index: foo" w/o pathname */
+#define HAVE_PATH 2 /* reference-file from "diff dirname/foo" */
+#define HAVE_PATH2 4 /* comparison-file from "diff dirname/foo" */
+
+#define FMT_CONCISE 0
+#define FMT_NORMAL 1
+#define FMT_FILLED 2
+#define FMT_VERBOSE 4
+
+typedef enum comment {
+ Normal, Only, Binary
+} Comment;
+
+#define MARKS 4 /* each of +, - and ! */
+
+typedef enum {
+ cInsert = 0,
+ cDelete,
+ cModify,
+ cEquals
+} Change;
+
+#define InsOf(p) (p)->count[cInsert] /* "+" count inserted lines */
+#define DelOf(p) (p)->count[cDelete] /* "-" count deleted lines */
+#define ModOf(p) (p)->count[cModify] /* "!" count modified lines */
+#define EqlOf(p) (p)->count[cEquals] /* "=" count unmodified lines */
+
+#define TotalOf(p) (InsOf(p) + DelOf(p) + ModOf(p) + EqlOf(p))
+#define for_each_mark(n) for (n = 0; n < num_marks; ++n)
+
+typedef struct _data {
+ struct _data *link;
+ char *name; /* the filename */
+ int copy; /* true if filename is const-literal */
+ int base; /* beginning of name if -p option used */
+ Comment cmt;
+ int pending;
+ long chunks; /* total number of chunks */
+ long chunk[MARKS]; /* counts for the current chunk */
+ long count[MARKS]; /* counts for the file */
+} DATA;
+
+typedef enum {
+ dcNone = 0,
+ dcBzip,
+ dcCompress,
+ dcGzip,
+ dcLzma,
+ dcPack,
+ dcXz,
+ dcEmpty
+} Decompress;
+
+static const char marks[MARKS + 1] = "+-!=";
+static const int colors[MARKS + 1] =
+{2, 1, 6, 4};
+
+static DATA *all_data;
+static const char *comment_opt = "";
+static char *path_opt = 0;
+static int format_opt = FMT_NORMAL;
+static int max_width; /* the specified width-limit */
+static int merge_names = 1; /* true if we merge similar filenames */
+static int merge_opt = 0; /* true if we merge ins/del as modified */
+static int min_name_wide; /* minimum amount reserved for filenames */
+static int max_name_wide; /* maximum amount reserved for filenames */
+static int names_only; /* true if we list filenames only */
+static int num_marks = 3; /* 3 or 4, according to "-P" option */
+static int reverse_opt; /* true if results are reversed */
+static int show_colors; /* true if showing SGR colors */
+static int show_progress; /* if not writing to tty, show progress */
+static int summary_only = 0; /* true if only summary line is shown */
+static int path_dest; /* true if path_opt is destination (patched) */
+static int plot_width; /* the amount left over for histogram */
+static int prefix_opt = -1; /* if positive, controls stripping of PATHSEP */
+static int round_opt = 0; /* if nonzero, round data for histogram */
+static int table_opt = 0; /* if nonzero, write table rather than plot */
+static int trace_opt = 0; /* if nonzero, write debugging information */
+static int sort_names = 1; /* true if we sort filenames */
+static int verbose = 0; /* -v option */
+static int quiet = 0; /* -q option */
+static int suppress_binary = 0; /* -b option */
+static long plot_scale; /* the effective scale (1:maximum) */
+
+#ifdef HAVE_TSEARCH
+static int use_tsearch;
+static void *sorted_data;
+#endif
+
+static int prefix_len = -1;
+
+/******************************************************************************/
+
+static void
+failed(const char *s)
+{
+ perror(s);
+ exit(EXIT_FAILURE);
+}
+
+/* malloc wrapper that never returns NULL */
+static void *
+xmalloc(size_t s)
+{
+ void *p;
+ if ((p = malloc(s)) == NULL)
+ failed("malloc");
+ return p;
+}
+
+static int
+is_dir(const char *name)
+{
+ struct stat sb;
+ return (stat(name, &sb) == 0 &&
+ (sb.st_mode & S_IFMT) == S_IFDIR);
+}
+
+static void
+blip(int c)
+{
+ if (show_progress) {
+ (void) fputc(c, stderr);
+ (void) fflush(stderr);
+ }
+}
+
+static char *
+new_string(const char *s)
+{
+ return strcpy((char *) xmalloc((size_t) (strlen(s) + 1)), s);
+}
+
+static int
+compare_data(const void *a, const void *b)
+{
+ const DATA *p = (const DATA *) a;
+ const DATA *q = (const DATA *) b;
+ return strcmp(p->name + p->base, q->name + q->base);
+}
+
+static void
+init_data(DATA * data, const char *name, int copy, int base)
+{
+ memset(data, 0, sizeof(*data));
+ data->name = (char *) name;
+ data->copy = copy;
+ data->base = base;
+ data->cmt = Normal;
+}
+
+static DATA *
+new_data(const char *name, int base)
+{
+ DATA *r = (DATA *) xmalloc(sizeof(DATA));
+
+ init_data(r, new_string(name), 0, base);
+
+ return r;
+}
+
+#ifdef HAVE_TSEARCH
+static DATA *
+add_tsearch_data(const char *name, int base)
+{
+ DATA find;
+ DATA *result;
+ void *pp;
+
+ init_data(&find, name, 1, base);
+ if ((pp = tfind(&find, &sorted_data, compare_data)) != 0) {
+ result = *(DATA **) pp;
+ return result;
+ }
+ result = new_data(name, base);
+ (void) tsearch(result, &sorted_data, compare_data);
+ result->link = all_data;
+ all_data = result;
+
+ return result;
+}
+#endif
+
+static DATA *
+find_data(const char *name)
+{
+ DATA *p, *q, *r;
+ DATA find;
+ int base = 0;
+
+ TRACE(("** find_data(%s)\n", name));
+
+ /* Compute the base offset if the prefix option is used */
+ if (prefix_opt >= 0) {
+ int n;
+
+ for (n = prefix_opt; n > 0; n--) {
+ char *s = strchr(name + base, PATHSEP);
+ if (s == 0 || *++s == EOS)
+ break;
+ base = (int) (s - name);
+ }
+ TRACE(("** base set to %d\n", base));
+ }
+
+ /* Insert into sorted list (usually sorted). If we are not sorting or
+ * merging names, we fall off the end and link the new entry to the end of
+ * the list. If the prefix option is used, the prefix is ignored by the
+ * merge and sort operations.
+ *
+ * If we have tsearch(), we will maintain the sorted list using it and
+ * tfind().
+ */
+#ifdef HAVE_TSEARCH
+ if (use_tsearch) {
+ r = add_tsearch_data(name, base);
+ } else
+#endif
+ {
+ init_data(&find, name, 1, base);
+ for (p = all_data, q = 0; p != 0; q = p, p = p->link) {
+ int cmp = compare_data(p, &find);
+ if (merge_names && (cmp == 0))
+ return p;
+ if (sort_names && (cmp > 0))
+ break;
+ }
+ r = new_data(name, base);
+ if (q != 0)
+ q->link = r;
+ else
+ all_data = r;
+
+ r->link = p;
+ }
+
+ return r;
+}
+
+/*
+ * Remove a unneeded data item from the linked list. Free the name as well.
+ */
+static int
+delink(DATA * data)
+{
+ DATA *p, *q;
+
+ TRACE(("** delink '%s'\n", data->name));
+
+#ifdef HAVE_TSEARCH
+ if (use_tsearch) {
+ if (tdelete(data, &sorted_data, compare_data) == 0)
+ return 0;
+ }
+#endif
+ for (p = all_data, q = 0; p != 0; q = p, p = p->link) {
+ if (p == data) {
+ if (q != 0)
+ q->link = p->link;
+ else
+ all_data = p->link;
+ if (!p->copy)
+ free(p->name);
+ free(p);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/*
+ * Compare string 's' against a constant, returning either a pointer just
+ * past the matched part of 's' if it matches exactly, or null if a mismatch
+ * was found.
+ */
+static char *
+match(char *s, const char *p)
+{
+ int ok = 0;
+
+ while (*s != EOS) {
+ if (*p == EOS) {
+ ok = 1;
+ break;
+ }
+ if (*s++ != *p++)
+ break;
+ if (*s == EOS && *p == EOS) {
+ ok = 1;
+ break;
+ }
+ }
+ return ok ? s : 0;
+}
+
+static int
+version_num(const char *s)
+{
+ int main_ver, sub_ver;
+ char temp[2];
+ return (sscanf(s, "%d.%d%c", &main_ver, &sub_ver, temp) == 2);
+}
+
+/*
+ * Check for a range of line-numbers, used in editing scripts.
+ */
+static int
+edit_range(const char *s)
+{
+ int first, last;
+ char temp[2];
+ return (sscanf(s, "%d,%d%c", &first, &last, temp) == 2)
+ || (sscanf(s, "%d%c", &first, temp) == 1);
+}
+
+/*
+ * Decode a range for default diff.
+ */
+static int
+decode_default(char *s,
+ long *first, long *first_size,
+ long *second, long *second_size)
+{
+ int rc = 0;
+ char *next;
+
+ if (isdigit(UC(*s))) {
+ *first_size = 1;
+ *second_size = 1;
+
+ *first = strtol(s, &next, 10);
+ if (next != 0 && next != s) {
+ if (*next == ',') {
+ s = ++next;
+ *first_size = strtol(s, &next, 10) + 1 - *first;
+ }
+ }
+ if (next != 0 && next != s) {
+ switch (*next++) {
+ case 'a':
+ case 'c':
+ case 'd':
+ s = next;
+ *second = strtol(s, &next, 10);
+ if (next != 0 && next != s) {
+ if (*next == ',') {
+ s = ++next;
+ *second_size = strtol(s, &next, 10) + 1 - *second;
+ }
+ }
+ if (next != 0 && next != s && *next == EOS)
+ rc = 1;
+ break;
+ }
+ }
+ }
+ return rc;
+}
+
+/*
+ * Decode a range for unified diff. Oddly, the comments in diffutils code
+ * claim that both numbers are line-numbers. However, inspection of the output
+ * shows that the numbers are a line-number followed by a count.
+ */
+static int
+decode_range(const char *s, int *first, int *second)
+{
+ int rc = 0;
+ char check;
+
+ if (isdigit(UC(*s))) {
+ if (sscanf(s, "%d,%d%c", first, second, &check) == 2) {
+ TRACE(("** decode_range #1 first=%d, second=%d\n", *first, *second));
+ rc = 1;
+ } else if (sscanf(s, "%d%c", first, &check) == 1) {
+ *second = *first; /* diffutils 2.7 does this */
+ TRACE(("** decode_range #2 first=%d, second=%d\n", *first, *second));
+ rc = 1;
+ }
+ }
+ return rc;
+}
+
+static int
+HadDiffs(const DATA * data)
+{
+ return InsOf(data) != 0
+ || DelOf(data) != 0
+ || ModOf(data) != 0
+ || data->cmt != Normal;
+}
+
+/*
+ * If the given path is not one of the "ignore" paths, then return true.
+ */
+static int
+can_be_merged(const char *path)
+{
+ int result = 0;
+ if (strcmp(path, "")
+ && strcmp(path, "/dev/null"))
+ result = 1;
+ return result;
+}
+
+static int
+is_leaf(const char *theLeaf, const char *path)
+{
+ char *s;
+
+ if (strchr(theLeaf, PATHSEP) == 0
+ && (s = strrchr(path, PATHSEP)) != 0
+ && !strcmp(++s, theLeaf))
+ return 1;
+ return 0;
+}
+
+static char *
+trim_datapath(DATA ** datap, size_t length, int *localp)
+{
+ char *target = (*datap)->name;
+
+#ifdef HAVE_TSEARCH
+ /*
+ * If we are using tsearch(), make a local copy of the data
+ * so we can trim it without interfering with tsearch's
+ * notion of the ordering of data. That will create some
+ * spurious empty data, so we add the changed() macro in a
+ * few places to skip over those.
+ */
+ if (use_tsearch) {
+ char *trim = new_string(target);
+ trim[length] = EOS;
+ *datap = add_tsearch_data(trim, (*datap)->base);
+ target = (*datap)->name;
+ free(trim);
+ *localp = 1;
+ } else
+#endif
+ target[length] = EOS;
+
+ return target;
+}
+
+/*
+ * The 'data' parameter points to the first of two markers, while
+ * 'path' is the pathname from the second marker.
+ *
+ * On the first call for
+ * a given file, the 'data' parameter stores no differences.
+ */
+static char *
+do_merging(DATA * data, char *path, int *freed)
+{
+ char *target = reverse_opt ? path : data->name;
+ char *source = reverse_opt ? data->name : path;
+ char *result = source;
+
+ TRACE(("** do_merging(\"%s\",\"%s\") diffs:%d\n",
+ data->name, path, HadDiffs(data)));
+
+ *freed = 0;
+ if (!HadDiffs(data)) {
+
+ if (is_leaf(target, source)) {
+ TRACE(("** is_leaf: \"%s\" vs \"%s\"\n", target, source));
+ if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ } else {
+ *freed = delink(data);
+ }
+ } else if (can_be_merged(target)
+ && can_be_merged(source)) {
+ size_t len1 = strlen(target);
+ size_t len2 = strlen(source);
+ size_t n;
+ int matched = 0;
+ int diff = 0;
+ int local = 0;
+
+ /*
+ * If the source/target differ only by some suffix, e.g., ".orig"
+ * or ".bak", strip that off. The target may may also be a
+ * temporary filename (which would not be merged since it has no
+ * apparent relationship to the current).
+ */
+ if (len1 > len2) {
+ if (!strncmp(target, source, len2)) {
+ TRACE(("** trimming data \"%s\" to \"%.*s\"\n",
+ target, (int) len2, target));
+ if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ } else {
+ target = trim_datapath(&data, len1 = len2, &local);
+ }
+ }
+ } else if (len1 < len2) {
+ if (!strncmp(target, source, len1)) {
+ TRACE(("** trimming source \"%s\" to \"%.*s\"\n",
+ source, (int) len1, source));
+ if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ } else {
+ source[len2 = len1] = EOS;
+ }
+ }
+ }
+
+ /*
+ * If there was no "-p" option, look for the best match by
+ * stripping prefixes from both source/target strings.
+ */
+ if (prefix_opt < 0) {
+ /*
+ * Now (whether or not we trimmed a suffix), scan back from the
+ * end of source/target strings to find if they happen to share
+ * a common ending, e.g., a/b/c versus d/b/c. If the strings
+ * are not identical, then 'diff' will be set, but if they have
+ * a common ending then 'matched' will be set.
+ */
+ for (n = 1; n <= len1 && n <= len2; n++) {
+ if (target[len1 - n] != source[len2 - n]) {
+ diff = (int) n;
+ break;
+ }
+ if (source[len2 - n] == PATHSEP) {
+ matched = (int) n;
+ }
+ }
+
+ TRACE(("** merge @%d, prefix_opt=%d matched=%d diff=%d\n",
+ __LINE__, prefix_opt, matched, diff));
+ if (matched != 0 && diff) {
+ if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ } else {
+ result = source + ((int) len2 - matched + 1);
+ }
+ }
+ }
+
+ if (!local) {
+ if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ } else {
+ *freed = delink(data);
+ }
+ }
+ } else if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ if (can_be_merged(source)) {
+ TRACE(("** merge @%d\n", __LINE__));
+ } else {
+ TRACE(("** do not merge, retain @%d\n", __LINE__));
+ /* must not merge, retain existing name */
+ result = target;
+ }
+ } else {
+ if (can_be_merged(source)) {
+ TRACE(("** merge @%d\n", __LINE__));
+ *freed = delink(data);
+ } else {
+ TRACE(("** do not merge, retain @%d\n", __LINE__));
+ /* must not merge, retain existing name */
+ result = target;
+ }
+ }
+ } else if (reverse_opt) {
+ TRACE((".. no action @%d\n", __LINE__));
+ if (can_be_merged(source)) {
+ TRACE(("** merge @%d\n", __LINE__));
+ result = target;
+ } else {
+ TRACE(("** do not merge, retain @%d\n", __LINE__));
+ }
+ } else {
+ if (can_be_merged(source)) {
+ TRACE(("** merge @%d\n", __LINE__));
+ } else {
+ TRACE(("** do not merge, retain @%d\n", __LINE__));
+ result = target;
+ }
+ }
+ TRACE(("** finish do_merging ->\"%s\"\n", result));
+ return result;
+}
+
+static int
+begin_data(const DATA * p)
+{
+ if (!can_be_merged(p->name)
+ && strchr(p->name, PATHSEP) != 0) {
+ TRACE(("** begin_data:HAVE_PATH\n"));
+ return HAVE_PATH;
+ }
+ TRACE(("** begin_data:HAVE_GENERIC\n"));
+ return HAVE_GENERIC;
+}
+
+static char *
+skip_blanks(char *s)
+{
+ while (isspace(UC(*s)))
+ ++s;
+ return s;
+}
+
+/*
+ * Skip a filename, which may be in quotes, to allow embedded blanks in the
+ * name.
+ */
+static char *
+skip_filename(char *s)
+{
+ if (*s == SQUOTE && s[1] != EOS && strchr(s + 1, SQUOTE)) {
+ ++s;
+ while (*s != EOS && (*s != SQUOTE) && isgraph(UC(*s))) {
+ ++s;
+ }
+ ++s;
+ } else {
+ while (*s != EOS && isgraph(UC(*s))) {
+ ++s;
+ }
+ }
+ return s;
+}
+
+static char *
+skip_options(char *params)
+{
+ while (*params != EOS) {
+ params = skip_blanks(params);
+ if (*params == '-') {
+ while (isgraph(UC(*params)))
+ params++;
+ } else {
+ break;
+ }
+ }
+ return skip_blanks(params);
+}
+
+/*
+ * Strip single-quotes from a name (needed for recent makepatch versions).
+ */
+static void
+dequote(char *s)
+{
+ size_t len = strlen(s);
+ int n;
+
+ if (*s == SQUOTE && len > 2 && s[len - 1] == SQUOTE) {
+ for (n = 0; (s[n] = s[n + 1]) != EOS; ++n) {
+ ;
+ }
+ s[len - 2] = EOS;
+ }
+}
+
+/*
+ * Allocate a fixed-buffer
+ */
+static void
+fixed_buffer(char **buffer, size_t want)
+{
+ *buffer = (char *) xmalloc(want);
+}
+
+/*
+ * Reallocate a fixed-buffer
+ */
+static void
+adjust_buffer(char **buffer, size_t want)
+{
+ if ((*buffer = (char *) realloc(*buffer, want)) == 0)
+ failed("realloc");
+}
+
+/*
+ * Read until newline or end-of-file, allocating the line-buffer so it is long
+ * enough for the input.
+ */
+static int
+get_line(char **buffer, size_t *have, FILE *fp)
+{
+ int ch;
+ size_t used = 0;
+
+ while ((ch = MY_GETC(fp)) != EOF) {
+ if (used + 2 > *have) {
+ adjust_buffer(buffer, *have *= 2);
+ }
+ (*buffer)[used++] = (char) ch;
+ if (ch == '\n')
+ break;
+ }
+ (*buffer)[used] = EOS;
+ return (used != 0);
+}
+
+static char *
+data_filename(const DATA * p)
+{
+ return (p->name + (prefix_opt >= 0 ? p->base : prefix_len));
+}
+
+/*
+ * Count the (new)lines in a file, return -1 if the file is not found.
+ */
+static int
+count_lines(DATA * p)
+{
+ int result = -1;
+ char *filename = 0;
+ char *filetail = data_filename(p);
+ size_t want = strlen(path_opt) + 2 + strlen(filetail);
+ FILE *fp;
+ int ch;
+
+ if ((filename = malloc(want)) != 0) {
+ int merge = 0;
+
+ if (path_dest) {
+ size_t path_len = strlen(path_opt);
+ size_t tail_len;
+ char *tail_sep = strchr(filetail, PATHSEP);
+
+ if (tail_sep != 0) {
+ tail_len = (size_t) (tail_sep - filetail);
+ if (tail_len != 0 && tail_len <= path_len) {
+ if (tail_len < path_len
+ && path_opt[path_len - tail_len - 1] != PATHSEP) {
+ merge = 0;
+ } else if (!strncmp(path_opt + path_len - tail_len,
+ filetail,
+ tail_len - 1)) {
+ merge = 1;
+ if (path_len > tail_len) {
+ sprintf(filename, "%.*s%c%s",
+ (int) (path_len - tail_len),
+ path_opt,
+ PATHSEP,
+ filetail);
+ } else {
+ strcpy(filename, filetail);
+ }
+ }
+ }
+ }
+ }
+ if (!merge) {
+ sprintf(filename, "%s%c%s", path_opt, PATHSEP, filetail);
+ }
+
+ TRACE(("count_lines %s\n", filename));
+ if ((fp = fopen(filename, "r")) != 0) {
+ result = 0;
+ while ((ch = MY_GETC(fp)) != EOF) {
+ if (ch == '\n')
+ ++result;
+ }
+ fclose(fp);
+ } else {
+ fprintf(stderr, "Cannot open %s\n", filename);
+ }
+ free(filename);
+ } else {
+ failed("count_lines");
+ }
+ return result;
+}
+
+static void
+update_chunk(DATA * p, Change change)
+{
+ if (merge_opt) {
+ p->pending += 1;
+ p->chunk[change] += 1;
+ } else {
+ p->count[change] += 1;
+ }
+}
+
+static void
+finish_chunk(DATA * p)
+{
+ int i;
+
+ if (p->pending) {
+ p->pending = 0;
+ p->chunks += 1;
+ if (merge_opt) {
+ /*
+ * This is crude, but to make it really precise we would have
+ * to keep an array of line-numbers to which which in a chunk
+ * are marked as insert/delete.
+ */
+ if (p->chunk[cInsert] && p->chunk[cDelete]) {
+ long change;
+ if (p->chunk[cInsert] > p->chunk[cDelete]) {
+ change = p->chunk[cDelete];
+ } else {
+ change = p->chunk[cInsert];
+ }
+ p->chunk[cInsert] -= change;
+ p->chunk[cDelete] -= change;
+ p->chunk[cModify] += change;
+ }
+ }
+ for_each_mark(i) {
+ p->count[i] += p->chunk[i];
+ p->chunk[i] = 0;
+ }
+ }
+}
+
+#define date_delims(a,b) (((a)=='/' && (b)=='/') || ((a) == '-' && (b) == '-'))
+#define CASE_TRACE() TRACE(("** handle case for '%c' %d:%s\n", *buffer, ok, that ? that->name : ""))
+
+static void
+do_file(FILE *fp, const char *default_name)
+{
+ static const char *only_stars = "***************";
+
+ DATA dummy;
+ DATA *that = &dummy;
+ DATA *prev = 0;
+ char *buffer = 0;
+ char *b_fname = 0;
+ char *b_temp1 = 0;
+ char *b_temp2 = 0;
+ char *b_temp3 = 0;
+ size_t length = 0;
+ size_t fixed = 0;
+ int ok = HAVE_NOTHING;
+ int marker;
+ int freed = 0;
+
+ int unified = 0;
+ int old_unify = 0;
+ int new_unify = 0;
+ int expect_unify = 0;
+
+ long old_dft = 0;
+ long new_dft = 0;
+
+ int context = 1;
+
+ char *s;
+#if OPT_TRACE
+ int line_no = 0;
+#endif
+
+ init_data(&dummy, "", 1, 0);
+
+ fixed_buffer(&buffer, fixed = length = BUFSIZ);
+ fixed_buffer(&b_fname, length);
+ fixed_buffer(&b_temp1, length);
+ fixed_buffer(&b_temp2, length);
+ fixed_buffer(&b_temp3, length);
+
+ while (get_line(&buffer, &length, fp)) {
+ /*
+ * Adjust size of fixed-buffers so that a sscanf cannot overflow.
+ */
+ if (length > fixed) {
+ fixed = length;
+ adjust_buffer(&b_fname, length);
+ adjust_buffer(&b_temp1, length);
+ adjust_buffer(&b_temp2, length);
+ adjust_buffer(&b_temp3, length);
+ }
+
+ /*
+ * Trim trailing newline.
+ */
+ for (s = buffer + strlen(buffer); s > buffer; s--) {
+ if ((UC(s[-1]) == '\n') || (UC(s[-1]) == '\r'))
+ s[-1] = EOS;
+ else
+ break;
+ }
+ ++line_no;
+ TRACE(("[%05d] %s\n", line_no, buffer));
+
+ /*
+ * "patch -U" can create ".rej" files lacking a filename header,
+ * in unified format. Check for those.
+ */
+ if (line_no == 1 && !strncmp(buffer, "@@", (size_t) 2)) {
+ unified = 2;
+ that = find_data(default_name);
+ ok = begin_data(that);
+ }
+
+ /*
+ * The lines identifying files in a context diff depend on how it was
+ * invoked. But after the header, each chunk begins with a line
+ * containing 15 *'s. Each chunk may contain a line-range with '***'
+ * for the "before", and a line-range with '---' for the "after". The
+ * part of the chunk depicting the deletion may be absent, though the
+ * edit line is present.
+ *
+ * The markers for unified diff are a little different from the normal
+ * context-diff. Also, the edit-lines in a unified diff won't have a
+ * space in column 2. Because of the missing space, we have to count
+ * lines to ensure we do not confuse the marker lines.
+ */
+ marker = 0;
+ if (that != &dummy && !strcmp(buffer, only_stars)) {
+ finish_chunk(that);
+ TRACE(("** begin context chunk\n"));
+ context = 2;
+ } else if (line_no == 1 && !strcmp(buffer, only_stars)) {
+ TRACE(("** begin context chunk\n"));
+ context = 2;
+ that = find_data(default_name);
+ ok = begin_data(that);
+ } else if (context == 2 && match(buffer, "*** ")) {
+ context = 1;
+ } else if (context == 1 && match(buffer, "--- ")) {
+ marker = 1;
+ context = 0;
+ } else if (match(buffer, "*** ")) {
+ } else if ((old_unify + new_unify) == 0 && match(buffer, "==== ")) {
+ finish_chunk(that);
+ unified = 2;
+ } else if ((old_unify + new_unify) == 0 && match(buffer, "--- ")) {
+ finish_chunk(that);
+ marker = unified = 1;
+ } else if ((old_unify + new_unify) == 0 && match(buffer, "+++ ")) {
+ marker = unified = 2;
+ } else if (unified == 2
+ || ((old_unify + new_unify) == 0 && (*buffer == '@'))) {
+ finish_chunk(that);
+ unified = 0;
+ if (*buffer == '@') {
+ int old_base, new_base, old_size, new_size;
+ char test_at;
+
+ old_unify = new_unify = 0;
+ if (sscanf(buffer, "@@ -%[0-9,] +%[0-9,] @%c",
+ b_temp1,
+ b_temp2,
+ &test_at) == 3
+ && test_at == '@'
+ && decode_range(b_temp1, &old_base, &old_size)
+ && decode_range(b_temp2, &new_base, &new_size)) {
+ old_unify = old_size;
+ new_unify = new_size;
+ unified = -1;
+ }
+ }
+ } else if (unified == 1 && !context) {
+ /*
+ * If unified==1, we guessed we would find a "+++" line, but since
+ * we are here, we did not find that. The context check ensures
+ * we do not mistake the "---" for a unified diff with that for
+ * a context diff's "after" line-range.
+ *
+ * If we guessed wrong, then we probably found a data line with
+ * "--" in the first two columns of the diff'd file.
+ */
+ unified = 0;
+ TRACE(("?? Expected \"+++\" for unified diff\n"));
+ if (prev != 0
+ && prev != that
+ && InsOf(that) == 0
+ && DelOf(that) == 0
+ && strcmp(prev->name, that->name)) {
+ TRACE(("?? giveup on %ld/%ld %s\n", InsOf(that),
+ DelOf(that), that->name));
+ TRACE(("?? revert to %ld/%ld %s\n", InsOf(prev),
+ DelOf(prev), prev->name));
+ (void) delink(that);
+ that = prev;
+ update_chunk(that, cDelete);
+ }
+ } else if (old_unify + new_unify) {
+ switch (*buffer) {
+ case '-':
+ if (old_unify)
+ --old_unify;
+ break;
+ case '+':
+ if (new_unify)
+ --new_unify;
+ break;
+ case EOS:
+ case ' ':
+ if (old_unify)
+ --old_unify;
+ if (new_unify)
+ --new_unify;
+ break;
+ case '\\':
+ if (strstr(buffer, "newline") != 0) {
+ break;
+ }
+ /* FALLTHRU */
+ default:
+ TRACE(("?? expected more in chunk\n"));
+ old_unify = new_unify = 0;
+ break;
+ }
+ if (!(old_unify + new_unify)) {
+ expect_unify = 2;
+ }
+ } else {
+ long old_base, new_base;
+
+ unified = 0;
+
+ if (line_no == 1
+ && decode_default(buffer,
+ &old_base, &old_dft,
+ &new_base, &new_dft)) {
+ TRACE(("DFT %ld,%ld -> %ld,%ld\n",
+ old_base, old_base + old_dft - 1,
+ new_base, new_base + new_dft - 1));
+ finish_chunk(that);
+ that = find_data("unknown");
+ ok = begin_data(that);
+ }
+ }
+
+ /*
+ * If the previous line ended a chunk of a unified diff, we may begin
+ * another chunk, or begin another type of diff. If neither, do not
+ * continue to accumulate counts for the unified diff which has ended.
+ */
+ if (expect_unify != 0) {
+ if (expect_unify-- == 1) {
+ if (unified == 0) {
+ TRACE(("?? did not get chunk\n"));
+ finish_chunk(that);
+ that = &dummy;
+ }
+ }
+ }
+
+ /*
+ * Override the beginning of the line to simplify the case statement
+ * below.
+ */
+ if (marker > 0) {
+ TRACE(("** have marker=%d, override %s\n", marker, buffer));
+ (void) strncpy(buffer, "***", (size_t) 3);
+ }
+
+ /*
+ * Use the first character of the input line to determine its
+ * type:
+ */
+ switch (*buffer) {
+ case 'O': /* Only */
+ CASE_TRACE();
+ if (match(buffer, "Only in ")) {
+ char *path = buffer + 8;
+ int found = 0;
+ for (s = path; *s != EOS; s++) {
+ if (match(s, ": ")) {
+ found = 1;
+ *s++ = PATHSEP;
+ while ((s[0] = s[1]) != EOS)
+ s++;
+ break;
+ }
+ }
+ if (found) {
+ blip('.');
+ finish_chunk(that);
+ that = find_data(path);
+ that->cmt = Only;
+ ok = HAVE_NOTHING;
+ }
+ }
+ break;
+
+ /*
+ * Several different scripts produce "Index:" lines
+ * (e.g., "makepatch"). Not all bother to put the
+ * pathname of the files; some put only the leaf names.
+ */
+ case 'I':
+ CASE_TRACE();
+ if ((s = match(buffer, "Index: ")) != 0) {
+ s = skip_blanks(s);
+ dequote(s);
+ blip('.');
+ finish_chunk(that);
+ s = do_merging(that, s, &freed);
+ that = find_data(s);
+ ok = begin_data(that);
+ }
+ break;
+
+ case 'd': /* diff command trace */
+ CASE_TRACE();
+ if ((s = match(buffer, "diff ")) != 0
+ && *(s = skip_options(s)) != EOS) {
+ if (reverse_opt) {
+ *skip_filename(s) = EOS;
+ } else {
+ s = skip_filename(s);
+ s = skip_blanks(s);
+ }
+ dequote(s);
+ blip('.');
+ finish_chunk(that);
+ s = do_merging(that, s, &freed);
+ that = find_data(s);
+ ok = begin_data(that);
+ }
+ break;
+
+ case '*':
+ CASE_TRACE();
+ if (!(ok & HAVE_PATH)) {
+ int ddd, hour, minute, second;
+ int day, month, year;
+ char yrmon, monday;
+
+ /* check for tab-delimited first, so we can
+ * accept filenames containing spaces.
+ */
+ if (sscanf(buffer,
+ "*** %[^\t]\t%[^ ] %[^ ] %d %d:%d:%d %d",
+ b_fname,
+ b_temp2, b_temp3, &ddd,
+ &hour, &minute, &second, &year) == 8
+ || (sscanf(buffer,
+ "*** %[^\t]\t%d%c%d%c%d %d:%d:%d",
+ b_fname,
+ &year, &yrmon, &month, &monday, &day,
+ &hour, &minute, &second) == 9
+ && date_delims(yrmon, monday)
+ && !version_num(b_fname))
+ || sscanf(buffer,
+ "*** %[^\t ]%[\t ]%[^ ] %[^ ] %d %d:%d:%d %d",
+ b_fname,
+ b_temp1,
+ b_temp2, b_temp3, &ddd,
+ &hour, &minute, &second, &year) == 9
+ || (sscanf(buffer,
+ "*** %[^\t ]%[\t ]%d%c%d%c%d %d:%d:%d",
+ b_fname,
+ b_temp1,
+ &year, &yrmon, &month, &monday, &day,
+ &hour, &minute, &second) == 10
+ && date_delims(yrmon, monday)
+ && !version_num(b_fname))
+ || (sscanf(buffer,
+ "*** %[^\t ]%[\t ]",
+ b_fname,
+ b_temp1) >= 1
+ && !version_num(b_fname)
+ && !contain_any(b_fname, "*")
+ && !edit_range(b_fname))
+ ) {
+ prev = that;
+ finish_chunk(that);
+ s = do_merging(that, b_fname, &freed);
+ if (freed)
+ prev = 0;
+ that = find_data(s);
+ ok = begin_data(that);
+ TRACE(("** after merge:%d:%s\n", ok, s));
+ }
+ }
+ break;
+
+ case '=':
+ CASE_TRACE();
+ if (!(ok & HAVE_PATH)) {
+ int rev;
+
+ if (((sscanf(buffer,
+ "==== %[^\t #]#%d - %[^\t ]",
+ b_fname,
+ &rev,
+ b_temp1) == 3)
+ || ((sscanf(buffer,
+ "==== %[^\t #]#%d (%[^)]) - %[^\t ]",
+ b_fname,
+ &rev,
+ b_temp1,
+ b_temp2) == 4)))
+ && !version_num(b_fname)
+ && !contain_any(b_fname, "*")
+ && !edit_range(b_fname)) {
+ TRACE(("** found p4-diff\n"));
+ prev = that;
+ finish_chunk(that);
+ s = do_merging(that, b_fname, &freed);
+ if (freed)
+ prev = 0;
+ that = find_data(s);
+ ok = begin_data(that);
+ TRACE(("** after merge:%d:%s\n", ok, s));
+ }
+ }
+ break;
+
+ case '+':
+ /* FALL-THRU */
+ case '>':
+ CASE_TRACE();
+ if (ok) {
+ update_chunk(that, cInsert);
+ }
+ break;
+
+ case '-':
+ if (!ok) {
+ CASE_TRACE();
+ break;
+ }
+ if (!unified && !strcmp(buffer, "---")) {
+ CASE_TRACE();
+ break;
+ }
+ /* fall-thru */
+ case '<':
+ CASE_TRACE();
+ if (ok) {
+ update_chunk(that, cDelete);
+ }
+ break;
+
+ case '!':
+ CASE_TRACE();
+ if (ok) {
+ update_chunk(that, cModify);
+ }
+ break;
+
+ /* Expecting "Binary files XXX and YYY differ" */
+ case 'B': /* Binary */
+ /* FALL-THRU */
+ case 'b': /* binary */
+ CASE_TRACE();
+ if ((s = match(buffer + 1, "inary files ")) != 0) {
+ char *first = skip_blanks(s);
+ /* blindly assume the first filename does not contain " and " */
+ char *at_and = strstr(s, " and ");
+ s = strrchr(buffer, BLANK);
+ if ((at_and != NULL) && !strcmp(s, " differ")) {
+ char *second = skip_blanks(at_and + 5);
+
+ if (reverse_opt) {
+ *at_and = EOS;
+ s = first;
+ } else {
+ *s = EOS;
+ s = second;
+ }
+ blip('.');
+ finish_chunk(that);
+ that = find_data(s);
+ that->cmt = Binary;
+ ok = HAVE_NOTHING;
+ }
+ }
+ break;
+ }
+ }
+ blip('\n');
+
+ finish_chunk(that);
+ finish_chunk(&dummy);
+ if (buffer != 0) {
+ free(buffer);
+ free(b_fname);
+ free(b_temp1);
+ free(b_temp2);
+ free(b_temp3);
+ }
+}
+
+static void
+show_color(int color)
+{
+ if (color >= 0)
+ printf("\033[%dm", color + 30);
+ else
+ printf("\033[0;39m");
+}
+
+static long
+plot_bar(long count, int c, int color)
+{
+ long result = count;
+
+ if (show_colors && result != 0)
+ show_color(color);
+
+ while (--count >= 0)
+ (void) putchar(c);
+
+ if (show_colors && result != 0)
+ show_color(-1);
+
+ return result;
+}
+
+/*
+ * Each call to 'plot_num()' prints a scaled bar of 'c' characters. The
+ * 'extra' parameter is used to keep the accumulated error in the bar's total
+ * length from getting large.
+ */
+static long
+plot_num(long num_value, int c, int color, long *extra)
+{
+ long product;
+ long result = 0;
+
+ /* the value to plot */
+ /* character to display in the bar */
+ /* accumulated error in the bar */
+ if (num_value) {
+ product = (plot_width * num_value);
+ result = ((product + *extra) / plot_scale);
+ *extra = product - (result * plot_scale) - *extra;
+ plot_bar(result, c, color);
+ }
+ return result;
+}
+
+static long
+plot_round1(const long num[MARKS])
+{
+ long result = 0;
+ long scaled[MARKS];
+ long remain[MARKS];
+ long want = 0;
+ long have = 0;
+ long half = (plot_scale / 2);
+ int i, j;
+
+ for_each_mark(i) {
+ long product = (plot_width * num[i]);
+ scaled[i] = (product / plot_scale);
+ remain[i] = (product % plot_scale);
+ want += product;
+ have += product - remain[i];
+ }
+ while (want > have) {
+ j = -1;
+ for_each_mark(i) {
+ if (remain[i] != 0
+ && (remain[i] > (j >= 0 ? remain[j] : half))) {
+ j = i;
+ }
+ }
+ if (j >= 0) {
+ have += remain[j];
+ remain[j] = 0;
+ scaled[j] += 1;
+ } else {
+ break;
+ }
+ }
+ for_each_mark(i) {
+ plot_bar(scaled[i], marks[i], colors[i]);
+ result += scaled[i];
+ }
+ return result;
+}
+
+/*
+ * Print a scaled bar of characters, where c[0] is for insertions, c[1]
+ * for deletions and c[2] for modifications. The num array contains the
+ * count for each type of change, in the same order.
+ */
+static long
+plot_round2(const long num[MARKS])
+{
+ long result = 0;
+ long scaled[MARKS];
+ long remain[MARKS];
+ long total = 0;
+ int i;
+
+ for (i = 0; i < MARKS; i++)
+ total += num[i];
+
+ if (total == 0)
+ return result;
+
+ total = (total * plot_width + (plot_scale / 2)) / plot_scale;
+ /* display at least one character */
+ if (total == 0)
+ total++;
+
+ for_each_mark(i) {
+ scaled[i] = num[i] * plot_width / plot_scale;
+ remain[i] = num[i] * plot_width - scaled[i] * plot_scale;
+ total -= scaled[i];
+ }
+
+ /* assign the missing chars using the largest remainder algo */
+ while (total) {
+ int largest, largest_count; /* largest is a bit field */
+ long max_remain;
+
+ /* search for the largest remainder */
+ largest = largest_count = 0;
+ max_remain = 0;
+ for_each_mark(i) {
+ if (remain[i] > max_remain) {
+ largest = 1 << i;
+ largest_count = 1;
+ max_remain = remain[i];
+ } else if (remain[i] == max_remain) { /* ex aequo */
+ largest |= 1 << i;
+ largest_count++;
+ }
+ }
+
+ /* if there are more greatest remainders than characters
+ missing, don't assign them at all */
+ if (total < largest_count)
+ break;
+
+ /* allocate the extra characters */
+ for_each_mark(i) {
+ if (largest & (1 << i)) {
+ scaled[i]++;
+ total--;
+ remain[i] -= plot_width;
+ }
+ }
+ }
+
+ for_each_mark(i) {
+ result += plot_bar(scaled[i], marks[i], colors[i]);
+ }
+
+ return result;
+}
+
+static void
+plot_numbers(const DATA * p)
+{
+ long temp = 0;
+ long used = 0;
+ int i;
+
+ printf("%5ld ", TotalOf(p));
+
+ if (format_opt & FMT_VERBOSE) {
+ printf("%5ld ", InsOf(p));
+ printf("%5ld ", DelOf(p));
+ printf("%5ld ", ModOf(p));
+ if (path_opt)
+ printf("%5ld ", EqlOf(p));
+ }
+
+ if (format_opt == FMT_CONCISE) {
+ for_each_mark(i) {
+ printf("\t%ld %c", p->count[i], marks[i]);
+ }
+ } else {
+ switch (round_opt) {
+ default:
+ for_each_mark(i) {
+ used += plot_num(p->count[i], marks[i], colors[i], &temp);
+ }
+ break;
+ case 1:
+ used = plot_round1(p->count);
+ break;
+
+ case 2:
+ used = plot_round2(p->count);
+ break;
+ }
+
+ if ((format_opt & FMT_FILLED) != 0) {
+ if (used > plot_width)
+ printf("%ld", used - plot_width); /* oops */
+ else
+ plot_bar(plot_width - used, '.', 0);
+ }
+ }
+}
+
+#define changed(p) (!merge_names \
+ || (p)->cmt != Normal \
+ || (TotalOf(p)) != 0)
+
+static void
+show_data(const DATA * p)
+{
+ char *name = data_filename(p);
+ int width;
+
+ if (summary_only) {
+ ;
+ } else if (!changed(p)) {
+ ;
+ } else if (p->cmt == Binary && suppress_binary == 1) {
+ ;
+ } else if (table_opt) {
+ if (names_only) {
+ printf("%s\n", name);
+ } else {
+ printf("%ld,%ld,%ld,",
+ InsOf(p),
+ DelOf(p),
+ ModOf(p));
+ if (path_opt)
+ printf("%ld,", EqlOf(p));
+ printf("%s\n", name);
+ }
+ } else if (names_only) {
+ printf("%s\n", name);
+ } else {
+ printf("%s ", comment_opt);
+ if (max_name_wide > 0
+ && max_name_wide < min_name_wide
+ && max_name_wide < ((width = (int) strlen(name)))) {
+ printf("%.*s", max_name_wide, name + (width - max_name_wide));
+ } else {
+ width = ((max_name_wide > 0 && max_name_wide < min_name_wide)
+ ? max_name_wide
+ : min_name_wide);
+ printf("%-*.*s", width, width, name);
+ }
+ putchar('|');
+ switch (p->cmt) {
+ default:
+ case Normal:
+ plot_numbers(p);
+ break;
+ case Binary:
+ printf("binary");
+ break;
+ case Only:
+ printf("only");
+ break;
+ }
+ printf("\n");
+ }
+}
+
+#ifdef HAVE_TSEARCH
+static void
+show_tsearch(const void *nodep, const VISIT which, const int depth)
+{
+ const DATA *p = *(DATA * const *) nodep;
+ (void) depth;
+ if (which == postorder || which == leaf)
+ show_data(p);
+}
+#endif
+
+static int
+ignore_data(DATA * p)
+{
+ return ((!changed(p))
+ || (p->cmt == Binary && suppress_binary));
+}
+
+static void
+summarize(void)
+{
+ DATA *p;
+ long total_ins = 0;
+ long total_del = 0;
+ long total_mod = 0;
+ long total_eql = 0;
+ long temp;
+ int num_files = 0, shortest_name = -1, longest_name = -1;
+
+ plot_scale = 0;
+ for (p = all_data; p; p = p->link) {
+ int len = (int) strlen(p->name);
+
+ if (ignore_data(p))
+ continue;
+
+ /*
+ * If "-pX" option is given, prefix_opt is positive.
+ *
+ * "-p0" gives the whole pathname unmodified. "-p1" strips
+ * through the first path-separator, etc.
+ */
+ if (prefix_opt >= 0) {
+ /* p->base has been computed at node creation */
+ if (min_name_wide < (len - p->base))
+ min_name_wide = (len - p->base);
+ } else {
+ /*
+ * If "-pX" option is not given, strip off any prefix which is
+ * shared by all of the names.
+ */
+ if (len < prefix_len || prefix_len < 0)
+ prefix_len = len;
+ while (prefix_len > 0) {
+ if (p->name[prefix_len - 1] != PATHSEP)
+ prefix_len--;
+ else if (strncmp(all_data->name, p->name, (size_t) prefix_len))
+ prefix_len--;
+ else
+ break;
+ }
+
+ if (len > longest_name)
+ longest_name = len;
+ if (len < shortest_name || shortest_name < 0)
+ shortest_name = len;
+ }
+ }
+
+ /*
+ * Use a separate loop after computing prefix_len so we can apply the "-S"
+ * or "-D" options to find files that we can use as reference for the
+ * unchanged-count.
+ */
+ for (p = all_data; p; p = p->link) {
+ if (!ignore_data(p)) {
+ EqlOf(p) = 0;
+ if (reverse_opt) {
+ int save_ins = InsOf(p);
+ int save_del = DelOf(p);
+ InsOf(p) = save_del;
+ DelOf(p) = save_ins;
+ }
+ if (path_opt != 0) {
+ int count = count_lines(p);
+
+ if (count >= 0) {
+ EqlOf(p) = count - ModOf(p);
+ if (path_dest != 0) {
+ EqlOf(p) -= InsOf(p);
+ } else {
+ EqlOf(p) -= DelOf(p);
+ }
+ if (EqlOf(p) < 0)
+ EqlOf(p) = 0;
+ }
+ }
+ num_files++;
+ total_ins += InsOf(p);
+ total_del += DelOf(p);
+ total_mod += ModOf(p);
+ total_eql += EqlOf(p);
+ temp = TotalOf(p);
+ if (temp > plot_scale)
+ plot_scale = temp;
+ }
+ }
+
+ if (prefix_opt < 0) {
+ if (prefix_len < 0)
+ prefix_len = 0;
+ if ((longest_name - prefix_len) > min_name_wide)
+ min_name_wide = (longest_name - prefix_len);
+ }
+
+ min_name_wide++; /* make sure it's nonzero */
+ plot_width = (max_width - min_name_wide - 8);
+ if (plot_width < 10)
+ plot_width = 10;
+
+ if (plot_scale < plot_width)
+ plot_scale = plot_width; /* 1:1 */
+
+ if (table_opt) {
+ if (!names_only) {
+ printf("INSERTED,DELETED,MODIFIED,");
+ if (path_opt)
+ printf("UNCHANGED,");
+ }
+ printf("FILENAME\n");
+ }
+#ifdef HAVE_TSEARCH
+ if (use_tsearch) {
+ twalk(sorted_data, show_tsearch);
+ } else
+#endif
+ for (p = all_data; p; p = p->link) {
+ show_data(p);
+ }
+
+ if (!table_opt && !names_only) {
+#define PLURAL(n) n, n != 1 ? "s" : ""
+ if (num_files > 0 || !quiet) {
+ printf("%s %d file%s changed", comment_opt, PLURAL(num_files));
+ if (total_ins)
+ printf(", %ld insertion%s(+)", PLURAL(total_ins));
+ if (total_del)
+ printf(", %ld deletion%s(-)", PLURAL(total_del));
+ if (total_mod)
+ printf(", %ld modification%s(!)", PLURAL(total_mod));
+ if (total_eql && path_opt != 0)
+ printf(", %ld unchanged line%s(=)", PLURAL(total_eql));
+ (void) putchar('\n');
+ }
+ }
+}
+
+#ifdef HAVE_POPEN
+static const char *
+get_program(const char *name, const char *dft)
+{
+ const char *result = getenv(name);
+ if (result == 0 || *result == EOS)
+ result = dft;
+ TRACE(("get_program(%s) = %s\n", name, result));
+ return result;
+}
+#define GET_PROGRAM(name) get_program("DIFFSTAT_" #name, name)
+
+static char *
+decompressor(Decompress which, const char *name)
+{
+ const char *verb = 0;
+ const char *opts = "";
+ char *result = 0;
+ size_t len = strlen(name);
+
+ switch (which) {
+ case dcBzip:
+ verb = GET_PROGRAM(BZCAT_PATH);
+ if (*verb == '\0') {
+ verb = GET_PROGRAM(BZIP2_PATH);
+ opts = "-dc";
+ }
+ break;
+ case dcCompress:
+ verb = GET_PROGRAM(ZCAT_PATH);
+ if (*verb == '\0') {
+ verb = GET_PROGRAM(UNCOMPRESS_PATH);
+ opts = "-c";
+ if (*verb == '\0') {
+ /* not all compress's recognize the options, test this last */
+ verb = GET_PROGRAM(COMPRESS_PATH);
+ opts = "-dc";
+ }
+ }
+ break;
+ case dcGzip:
+ verb = GET_PROGRAM(GZIP_PATH);
+ opts = "-dc";
+ break;
+ case dcLzma:
+ verb = GET_PROGRAM(LZCAT_PATH);
+ opts = "-dc";
+ break;
+ case dcPack:
+ verb = GET_PROGRAM(PCAT_PATH);
+ break;
+ case dcXz:
+ verb = GET_PROGRAM(XZ_PATH);
+ opts = "-dc";
+ break;
+ case dcEmpty:
+ /* FALLTHRU */
+ case dcNone:
+ break;
+ }
+ if (verb != 0 && *verb != '\0') {
+ result = (char *) xmalloc(strlen(verb) + 10 + len);
+ sprintf(result, "%s %s", verb, opts);
+ if (*name != '\0') {
+ sprintf(result + strlen(result), " \"%s\"", name);
+ }
+ }
+ return result;
+}
+
+static char *
+is_compressed(const char *name)
+{
+ size_t len = strlen(name);
+ Decompress which;
+
+ if (len > 2 && !strcmp(name + len - 2, ".Z")) {
+ which = dcCompress;
+ } else if (len > 2 && !strcmp(name + len - 2, ".z")) {
+ which = dcPack;
+ } else if (len > 3 && !strcmp(name + len - 3, ".gz")) {
+ which = dcGzip;
+ } else if (len > 4 && !strcmp(name + len - 4, ".bz2")) {
+ which = dcBzip;
+ } else if (len > 5 && !strcmp(name + len - 5, ".lzma")) {
+ which = dcLzma;
+ } else if (len > 3 && !strcmp(name + len - 3, ".xz")) {
+ which = dcXz;
+ } else {
+ which = dcNone;
+ }
+ return decompressor(which, name);
+}
+
+#ifdef HAVE_MKDTEMP
+#define MY_MKDTEMP(path) mkdtemp(path)
+#else
+/*
+ * mktemp is supposedly marked obsolete at the same point that mkdtemp is
+ * introduced.
+ */
+static char *
+my_mkdtemp(char *path)
+{
+ char *result = mktemp(path);
+ if (result != 0) {
+ if (MKDIR(result, 0700) < 0) {
+ result = 0;
+ }
+ }
+ return path;
+}
+#define MY_MKDTEMP(path) my_mkdtemp(path)
+#endif
+
+static char *
+copy_stdin(char **dirpath)
+{
+ const char *tmp = getenv("TMPDIR");
+ char *result = 0;
+ int ch;
+ FILE *fp;
+
+ if (tmp == 0)
+ tmp = "/tmp/";
+ *dirpath = xmalloc(strlen(tmp) + 12);
+
+ strcpy(*dirpath, tmp);
+ strcat(*dirpath, "/diffXXXXXX");
+ if (MY_MKDTEMP(*dirpath) != 0) {
+ result = xmalloc(strlen(*dirpath) + 10);
+ sprintf(result, "%s/stdin", *dirpath);
+
+ if ((fp = fopen(result, "w")) != 0) {
+ while ((ch = MY_GETC(stdin)) != EOF) {
+ fputc(ch, fp);
+ }
+ fclose(fp);
+ } else {
+ free(result);
+ result = 0;
+ rmdir(*dirpath); /* Assume that the /stdin file was not created */
+ free(*dirpath);
+ *dirpath = 0;
+ }
+ } else {
+ free(*dirpath);
+ *dirpath = 0;
+ }
+ return result;
+}
+#endif
+
+static void
+set_path_opt(char *value, int destination)
+{
+ path_opt = value;
+ path_dest = destination;
+ if (*path_opt != 0) {
+ if (is_dir(path_opt)) {
+ num_marks = 4;
+ } else {
+ fprintf(stderr, "Not a directory:%s\n", path_opt);
+ exit(EXIT_FAILURE);
+ }
+ }
+}
+
+static void
+usage(FILE *fp)
+{
+ static const char *msg[] =
+ {
+ "Usage: diffstat [options] [files]",
+ "",
+ "Reads from one or more input files which contain output from 'diff',",
+ "producing a histogram of total lines changed for each file referenced.",
+ "If no filename is given on the command line, reads from standard input.",
+ "",
+ "Options:",
+ " -c prefix each line with comment (#)",
+#if OPT_TRACE
+ " -d debug - prints a lot of information",
+#endif
+ " -D PATH specify location of patched files, use for unchanged-count",
+ " -e FILE redirect standard error to FILE",
+ " -f NUM format (0=concise, 1=normal, 2=filled, 4=values)",
+ " -h print this message",
+ " -k do not merge filenames",
+ " -l list filenames only",
+ " -m merge insert/delete data in chunks as modified-lines",
+ " -n NUM specify minimum width for the filenames (default: auto)",
+ " -N NUM specify maximum width for the filenames (default: auto)",
+ " -o FILE redirect standard output to FILE",
+ " -p NUM specify number of pathname-separators to strip (default: common)",
+ " -q suppress the \"0 files changed\" message for empty diffs",
+ " -r NUM specify rounding for histogram (0=none, 1=simple, 2=adjusted)",
+ " -R assume patch was created with old and new files swapped",
+ " -S PATH specify location of original files, use for unchanged-count",
+ " -t print a table (comma-separated-values) rather than histogram",
+ " -u do not sort the input list",
+ " -v show progress if output is redirected to a file",
+ " -V prints the version number",
+ " -w NUM specify maximum width of the output (default: 80)",
+ };
+ unsigned j;
+ for (j = 0; j < sizeof(msg) / sizeof(msg[0]); j++)
+ fprintf(fp, "%s\n", msg[j]);
+}
+
+/* Wrapper around getopt that also parses "--help" and "--version".
+ * argc, argv, opts, return value, and globals optarg, optind,
+ * opterr, and optopt are as in getopt(). help and version designate
+ * what should be returned if --help or --version are encountered. */
+static int
+getopt_helper(int argc, char *const argv[], const char *opts,
+ int help, int version)
+{
+ if (optind < argc && argv[optind] != NULL) {
+ if (strcmp(argv[optind], "--help") == 0) {
+ optind++;
+ return help;
+ } else if (strcmp(argv[optind], "--version") == 0) {
+ optind++;
+ return version;
+ }
+ }
+ return getopt(argc, argv, opts);
+}
+
+int
+main(int argc, char *argv[])
+{
+ int j;
+ char version[80];
+
+ max_width = 80;
+
+ while ((j = getopt_helper(argc, argv,
+ "bcCdD:e:f:hklmn:N:o:p:qr:RsS:tuvVw:", 'h', 'V'))
+ != -1) {
+ switch (j) {
+ case 'b':
+ suppress_binary = 1;
+ break;
+ case 'c':
+ comment_opt = "#";
+ break;
+ case 'C':
+ show_colors = 1;
+ break;
+#if OPT_TRACE
+ case 'd':
+ trace_opt = 1;
+ break;
+#endif
+ case 'D':
+ set_path_opt(optarg, 1);
+ break;
+ case 'e':
+ if (freopen(optarg, "w", stderr) == 0)
+ failed(optarg);
+ break;
+ case 'f':
+ format_opt = atoi(optarg);
+ break;
+ case 'h':
+ usage(stdout);
+ return (EXIT_SUCCESS);
+ case 'k':
+ merge_names = 0;
+ break;
+ case 'l':
+ names_only = 1;
+ break;
+ case 'm':
+ merge_opt = 1;
+ break;
+ case 'n':
+ min_name_wide = atoi(optarg);
+ break;
+ case 'N':
+ max_name_wide = atoi(optarg);
+ break;
+ case 'o':
+ if (freopen(optarg, "w", stdout) == 0)
+ failed(optarg);
+ break;
+ case 'p':
+ prefix_opt = atoi(optarg);
+ break;
+ case 'r':
+ round_opt = atoi(optarg);
+ break;
+ case 'R':
+ reverse_opt = 1;
+ break;
+ case 's':
+ summary_only = 1;
+ break;
+ case 'S':
+ set_path_opt(optarg, 0);
+ break;
+ case 't':
+ table_opt = 1;
+ break;
+ case 'u':
+ sort_names = 0;
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'V':
+#ifndef NO_IDENT
+ if (!sscanf(Id, "%*s %*s %s", version))
+#endif
+ (void) strcpy(version, "?");
+ printf("diffstat version %s\n", version);
+ return (EXIT_SUCCESS);
+ case 'w':
+ max_width = atoi(optarg);
+ break;
+ case 'q':
+ quiet = 1;
+ break;
+ default:
+ usage(stderr);
+ return (EXIT_FAILURE);
+ }
+ }
+
+ /*
+ * The numbers from -S/-D options will only be useful if the merge option
+ * is added.
+ */
+ if (path_opt)
+ merge_opt = 1;
+
+ show_progress = verbose && (!isatty(fileno(stdout))
+ && isatty(fileno(stderr)));
+
+#ifdef HAVE_TSEARCH
+ use_tsearch = (sort_names && merge_names);
+#endif
+
+ if (optind < argc) {
+ while (optind < argc) {
+ FILE *fp;
+ char *name = argv[optind++];
+#ifdef HAVE_POPEN
+ char *command = is_compressed(name);
+ if (command != 0) {
+ if ((fp = popen(command, "r")) != 0) {
+ if (show_progress) {
+ (void) fprintf(stderr, "%s\n", name);
+ (void) fflush(stderr);
+ }
+ do_file(fp, name);
+ (void) pclose(fp);
+ }
+ free(command);
+ } else
+#endif
+ if ((fp = fopen(name, "rb")) != 0) {
+ if (show_progress) {
+ (void) fprintf(stderr, "%s\n", name);
+ (void) fflush(stderr);
+ }
+ do_file(fp, name);
+ (void) fclose(fp);
+ } else {
+ failed(name);
+ }
+ }
+ } else {
+#ifdef HAVE_POPEN
+ FILE *fp;
+ Decompress which = dcEmpty;
+ char *stdin_dir = 0;
+ char *myfile;
+ char sniff[8];
+ int ch;
+ unsigned got = 0;
+ char *command;
+
+ if ((ch = MY_GETC(stdin)) != EOF) {
+ which = dcNone;
+ if (ch == 'B') { /* perhaps bzip2 (poor magic design...) */
+ sniff[got++] = (char) ch;
+ while (got < 5) {
+ if ((ch = MY_GETC(stdin)) == EOF)
+ break;
+ sniff[got++] = (char) ch;
+ }
+ if (got == 5
+ && !strncmp(sniff, "BZh", (size_t) 3)
+ && isdigit((unsigned char) sniff[3])
+ && isdigit((unsigned char) sniff[4])) {
+ which = dcBzip;
+ }
+ } else if (ch == ']') { /* perhaps lzma */
+ sniff[got++] = (char) ch;
+ while (got < 4) {
+ if ((ch = MY_GETC(stdin)) == EOF)
+ break;
+ sniff[got++] = (char) ch;
+ }
+ if (got == 4
+ && !memcmp(sniff, "]\0\0\200", (size_t) 4)) {
+ which = dcLzma;
+ }
+ } else if (ch == 0xfd) { /* perhaps xz */
+ sniff[got++] = (char) ch;
+ while (got < 6) {
+ if ((ch = MY_GETC(stdin)) == EOF)
+ break;
+ sniff[got++] = (char) ch;
+ }
+ if (got == 6
+ && !memcmp(sniff, "\3757zXZ\0", (size_t) 6)) {
+ which = dcXz;
+ }
+ } else if (ch == '\037') { /* perhaps compress, etc. */
+ sniff[got++] = (char) ch;
+ if ((ch = MY_GETC(stdin)) != EOF) {
+ sniff[got++] = (char) ch;
+ switch (ch) {
+ case 0213:
+ which = dcGzip;
+ break;
+ case 0235:
+ which = dcCompress;
+ break;
+ case 0036:
+ which = dcPack;
+ break;
+ }
+ }
+ } else {
+ sniff[got++] = (char) ch;
+ }
+ }
+ /*
+ * The C standard only guarantees one ungetc;
+ * virtually everyone allows more.
+ */
+ while (got != 0) {
+ ungetc(sniff[--got], stdin);
+ }
+ if (which != dcNone
+ && which != dcEmpty
+ && (myfile = copy_stdin(&stdin_dir)) != 0) {
+
+ /* open pipe to decompress temporary file */
+ command = decompressor(which, myfile);
+ if ((fp = popen(command, "r")) != 0) {
+ do_file(fp, "stdin");
+ (void) pclose(fp);
+ }
+ free(command);
+
+ unlink(myfile);
+ free(myfile);
+ myfile = 0;
+ rmdir(stdin_dir);
+ free(stdin_dir);
+ stdin_dir = 0;
+ } else if (which != dcEmpty)
+#endif
+ do_file(stdin, "stdin");
+ }
+ summarize();
+#if defined(NO_LEAKS)
+ while (all_data != 0) {
+ delink(all_data);
+ }
+#endif
+ return (EXIT_SUCCESS);
+}
diff --git a/patch_cmds/diffstat/install-sh b/patch_cmds/diffstat/install-sh
new file mode 100644
index 0000000..462fa9c
--- /dev/null
+++ b/patch_cmds/diffstat/install-sh
@@ -0,0 +1,294 @@
+#! /bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+ case $1 in
+ -c) instcmd=$cpprog
+ shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t=*) transformarg=`echo $1 | sed 's/-t=//'`
+ shift
+ continue;;
+
+ -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+ shift
+ continue;;
+
+ *) if [ x"$src" = x ]
+ then
+ src=$1
+ else
+ # this colon is to work around a 386BSD /bin/sh bug
+ :
+ dst=$1
+ fi
+ shift
+ continue;;
+ esac
+done
+
+if [ x"$src" = x ]
+then
+ echo "$0: no input file specified" >&2
+ exit 1
+else
+ :
+fi
+
+if [ x"$dir_arg" != x ]; then
+ dst=$src
+ src=""
+
+ if [ -d "$dst" ]; then
+ instcmd=:
+ chmodcmd=""
+ else
+ instcmd=$mkdirprog
+ fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+ if [ -f "$src" ] || [ -d "$src" ]
+ then
+ :
+ else
+ echo "$0: $src does not exist" >&2
+ exit 1
+ fi
+
+ if [ x"$dst" = x ]
+ then
+ echo "$0: no destination specified" >&2
+ exit 1
+ else
+ :
+ fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+ if [ -d "$dst" ]
+ then
+ dst=$dst/`basename "$src"`
+ else
+ :
+ fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+# this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+ '
+IFS="${IFS-$defaultIFS}"
+
+oIFS=$IFS
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=$oIFS
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+ pathcomp=$pathcomp$1
+ shift
+
+ if [ ! -d "$pathcomp" ] ;
+ then
+ $mkdirprog "$pathcomp"
+ else
+ :
+ fi
+
+ pathcomp=$pathcomp/
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+ $doit $instcmd "$dst" &&
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+ if [ x"$transformarg" = x ]
+ then
+ dstfile=`basename "$dst"`
+ else
+ dstfile=`basename "$dst" $transformbasename |
+ sed $transformarg`$transformbasename
+ fi
+
+# don't allow the sed command to completely eliminate the filename
+
+ if [ x"$dstfile" = x ]
+ then
+ dstfile=`basename "$dst"`
+ else
+ :
+ fi
+
+# Make a couple of temp file names in the proper directory.
+
+ dsttmp=$dstdir/#inst.$$#
+ rmtmp=$dstdir/#rm.$$#
+
+# Trap to clean up temp files at exit.
+
+ trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+# Move or copy the file name to the temp name
+
+ $doit $instcmd "$src" "$dsttmp" &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing. If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location. We try this
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons. In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+ if [ -f "$dstdir/$dstfile" ]
+ then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+ $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+ {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit
+ }
+ else
+ :
+ fi
+} &&
+
+# Now rename the file to the real destination.
+
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+
+{
+ (exit 0); exit
+}
diff --git a/patch_cmds/diffstat/makefile.in b/patch_cmds/diffstat/makefile.in
new file mode 100644
index 0000000..cf18c53
--- /dev/null
+++ b/patch_cmds/diffstat/makefile.in
@@ -0,0 +1,144 @@
+# $Id: makefile.in,v 1.29 2010/07/15 22:45:54 tom Exp $
+# Makefile-template for 'diffstat'
+
+THIS = diffstat
+
+#### Start of system configuration section. ####
+
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+DESTDIR = @DESTDIR@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+mandir = @mandir@
+
+CC = @CC@
+LINK = $(CC)
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+
+LINT = @LINT@
+CTAGS = @CTAGS@
+ETAGS = @ETAGS@
+
+CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
+CPPFLAGS = -I. -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
+
+LIBS = @LIBS@
+LDFLAGS = @LDFLAGS@
+
+o = .@OBJEXT@
+x = @EXEEXT@
+
+BINDIR = $(DESTDIR)$(bindir)
+MANDIR = $(DESTDIR)$(mandir)
+
+#### End of system configuration section. ####
+
+SHELL = /bin/sh
+
+man1dir = $(MANDIR)/man1
+manext = 1
+
+PROG = $(THIS)$x
+
+SRC = CHANGES \
+ README $(THIS).c $(THIS).1 \
+ config_h.in install-sh \
+ makefile.in configure.in aclocal.m4 \
+ makefile.wnt
+
+PORTFILES = porting/getopt.c \
+ porting/getopt.h \
+ porting/system.h \
+ porting/wildcard.c
+
+TESTFILES = testing/README \
+ testing/run_test.sh \
+ testing/case0[1-5]*
+
+DISTFILES = configure config.guess config.sub $(SRC)
+
+.SUFFIXES: .c $o
+
+.c$o:
+ @RULE_CC@
+ @ECHO_CC@$(CC) -c $(CPPFLAGS) $(CFLAGS) $<
+
+all : $(PROG)
+
+$(PROG) : diffstat$o
+ @ECHO_LD@$(LINK) $(LDFLAGS) -o $@ diffstat$o $(LIBS)
+
+install : all installdirs
+ $(INSTALL_PROGRAM) $(PROG) $(BINDIR)/$(PROG)
+ $(INSTALL_DATA) $(srcdir)/$(THIS).1 $(man1dir)/$(THIS).$(manext)
+
+installdirs :
+ mkdir -p $(BINDIR) $(libdir) $(man1dir)
+
+uninstall :
+ rm -f $(BINDIR)/$(PROG) $(man1dir)/$(THIS).$(manext)
+
+mostlyclean :
+ rm -f *.o core *~ *.out *.err *.BAK *.atac
+
+clean : mostlyclean
+ rm -f $(PROG)
+
+distclean : clean
+ rm -f makefile config.log config.cache config.status config.h
+ rm -f tags TAGS # don't remove configure!
+
+realclean : distclean
+
+check : $(PROG)
+ $(SHELL) -c 'PATH=`pwd`:$${PATH}; export PATH; \
+ $(SHELL) $(srcdir)/testing/run_test.sh $(srcdir)/testing/case*.pat'
+
+lint :
+ $(LINT) $(CPPFLAGS) $(LINTOPTS) $(THIS).c
+
+tags :
+ $(CTAGS) $(THIS).c $(HDRS)
+
+@MAKE_UPPER_TAGS@TAGS :
+@MAKE_UPPER_TAGS@ $(ETAGS) $(THIS).c $(HDRS)
+
+dist: makefile $(DISTFILES)
+ # make a list of the files to distribute
+ echo $(THIS)-`sed \
+ -e '/"$$[A-Za-z]*: $(THIS)\.c.*$$"/!d' \
+ -e 's/^.*$(THIS)[^ ]*[ ]*//' \
+ -e 's/[ ].*$$//' \
+ -e q $(srcdir)/$(THIS).c` > .fname
+ rm -rf `cat .fname`
+ # contents of top directory
+ mkdir `cat .fname`
+ for file in $(DISTFILES); do \
+ ln $(srcdir)/$$file `cat .fname` \
+ || { echo copying $$file instead; cp -p $$file `cat .fname`; }; \
+ done
+ # contents of top/porting directory
+ mkdir `cat .fname`/porting
+ for file in $(PORTFILES); do \
+ ln $(srcdir)/$$file `cat .fname`/porting \
+ || { echo copying $$file instead; cp -p $$file `cat .fname`/porting; }; \
+ done
+ # contents of top/testing directory
+ mkdir `cat .fname`/testing
+ for file in $(TESTFILES); do \
+ ln $(srcdir)/$$file `cat .fname`/testing \
+ || { echo copying $$file instead; cp -p $$file `cat .fname`/testing; }; \
+ done
+ # tar and cleanup
+ tar -cf - `cat .fname` | gzip >`cat .fname`.tgz
+ rm -rf `cat .fname` .fname
+
+$(THIS).o : config.h
+
+$(SRC) :
diff --git a/patch_cmds/diffstat/makefile.wnt b/patch_cmds/diffstat/makefile.wnt
new file mode 100644
index 0000000..7fde72e
--- /dev/null
+++ b/patch_cmds/diffstat/makefile.wnt
@@ -0,0 +1,35 @@
+#
+# makefile for 'diffstat' on WIN32 using Microsoft Visual C++
+#
+# $Id: makefile.wnt,v 1.2 2009/09/01 00:33:28 tom Exp $
+#
+!include <ntwin32.mak>
+
+P = porting
+
+CFLAGS = $(cvars) $(cdebug) -nologo -G4 -W3 -I. -DWIN32 -I$P
+LDFLAGS = -nologo -pdb:none
+
+NAME = diffstat
+OBJ = $(NAME).obj \
+ $P/getopt.obj \
+ $P/wildcard.obj
+
+.c.obj:
+ $(cc) $(CFLAGS) -c $< -Fo$@
+
+all: $(NAME).exe
+
+$(NAME).exe: $(OBJ)
+ $(link) $(LDFLAGS) $(OBJ) setargv.obj $(ldebug) $(conlflags) $(conlibs) -out:$@ user32.lib
+
+$(OBJ) : #system.h
+
+install: $(NAME).exe
+ copy $(NAME).exe c:\com
+
+clean:
+ - del $(NAME).exe
+ - del /f/s/q *.obj
+ - del /f/s/q *.bak
+ - del /f/s/q *.pdb
diff --git a/patch_cmds/diffstat/package/debian/changelog b/patch_cmds/diffstat/package/debian/changelog
new file mode 100644
index 0000000..d48705d
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/changelog
@@ -0,0 +1,25 @@
+diffstat (1.55) unstable; urgency=low
+
+ * Add -R option.
+ * Documentation fixes.
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Tue, 03 Jan 2012 04:39:50 -0500
+
+diffstat (1.54) unstable; urgency=low
+
+ * Fix counts for -S/-D options.
+ * change source format to native.
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 10 Oct 2010 14:13:13 -0400
+
+diffstat (1.53) unstable; urgency=low
+
+ * Fix regression in "-c" option.
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 15 Jul 2010 19:39:36 -0400
+
+diffstat (1.52) unstable; urgency=low
+
+ * Add package scripts to upstream source, for test-builds.
+
+ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 15 Jul 2010 19:39:36 -0400
diff --git a/patch_cmds/diffstat/package/debian/compat b/patch_cmds/diffstat/package/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/patch_cmds/diffstat/package/debian/control b/patch_cmds/diffstat/package/debian/control
new file mode 100644
index 0000000..e1c0eed
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/control
@@ -0,0 +1,15 @@
+Source: diffstat
+Maintainer: Thomas E. Dickey <dickey@invisible-island.net>
+Section: devel
+Priority: extra
+Standards-Version: 3.8.4
+Build-Depends: debhelper (>= 5)
+Homepage: http://invisible-island.net/diffstat/
+
+Package: diffstat
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: generate C function prototypes and convert function definitions
+ Diffstat is is useful for reviewing large, complex patch files. It reads from
+ one or more input files which contain output from diff, producing a histogram
+ of the total lines changed for each file referenced.
diff --git a/patch_cmds/diffstat/package/debian/copyright b/patch_cmds/diffstat/package/debian/copyright
new file mode 100644
index 0000000..9b606c4
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/copyright
@@ -0,0 +1,109 @@
+Upstream source http://invisible-island.net/diffstat/diffstat.html
+
+/******************************************************************************
+ * Copyright 1994-2009,2010 by Thomas E. Dickey *
+ * All Rights Reserved. *
+ * *
+ * Permission to use, copy, modify, and distribute this software and its *
+ * documentation for any purpose and without fee is hereby granted, provided *
+ * that the above copyright notice appear in all copies and that both that *
+ * copyright notice and this permission notice appear in supporting *
+ * documentation, and that the name of the above listed copyright holder(s) *
+ * not be used in advertising or publicity pertaining to distribution of the *
+ * software without specific, written prior permission. *
+ * *
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD *
+ * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND *
+ * FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE *
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR *
+ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
+ ******************************************************************************/
+
+-------------------------------------------------------------------------------
+
+Files: aclocal.m4
+Licence: other-BSD
+Copyright: 2003-2009,2010 by Thomas E. Dickey
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, distribute with modifications, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above copyright
+ holders shall not be used in advertising or otherwise to promote the
+ sale, use or other dealings in this Software without prior written
+ authorization.
+
+Files: install-sh
+Copyright: 1994 X Consortium
+Licence: other-BSD
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+ TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name of the X Consortium shall not
+ be used in advertising or otherwise to promote the sale, use or other deal-
+ ings in this Software without prior written authorization from the X Consor-
+ tium.
+
+ FSF changes to this file are in the public domain.
+
+ Calling this script install-sh is preferred over install.sh, to prevent
+ `make' implicit rules from creating a file called install from it
+ when there is no Makefile.
+
+ This script is compatible with the BSD install script, but was written
+ from scratch. It can only install one file at a time, a restriction
+ shared with many OS's install programs.
+
+Files: debian/*
+Copyright: 2010 Thomas E. Dickey
+Licence: other-BSD
+ Permission to use, copy, modify, and distribute this software and its
+ documentation for any purpose and without fee is hereby granted,
+ provided that the above copyright notice appear in all copies and that
+ both that copyright notice and this permission notice appear in
+ supporting documentation, and that the name of the above listed
+ copyright holder(s) not be used in advertising or publicity pertaining
+ to distribution of the software without specific, written prior
+ permission.
+
+ THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD
+ TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE
+ LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in '/usr/share/common-licenses/GPL-2'
diff --git a/patch_cmds/diffstat/package/debian/docs b/patch_cmds/diffstat/package/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/patch_cmds/diffstat/package/debian/rules b/patch_cmds/diffstat/package/debian/rules
new file mode 100644
index 0000000..0d900e6
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/rules
@@ -0,0 +1,92 @@
+#!/usr/bin/make -f
+# MAde with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# 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 =
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+ CFLAGS += -O0
+else
+ CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+ INSTALL_PROGRAM += -s
+endif
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+
+ CFLAGS="$(CFLAGS)" ./configure \
+ --host=$(DEB_HOST_GNU_TYPE) \
+ --build=$(DEB_BUILD_GNU_TYPE) \
+ --prefix=/usr \
+ --mandir=\$${prefix}/share/man \
+ --sysconfdir=/etc
+
+ touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+ dh_testdir
+
+ $(MAKE)
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+
+ [ ! -f Makefile ] || $(MAKE) clean
+
+ rm -f configure-stamp build-stamp install-stamp \
+ config.cache config.h config.status config.log makefile
+
+ rm -f *.o diffstat
+
+ dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ $(MAKE) install DESTDIR=$(CURDIR)/debian/diffstat
+
+ touch install-stamp
+
+# Build architecture-independent files here.
+binary-indep: build install
+# No binary-indep target.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installdocs
+ dh_installexamples
+ dh_installchangelogs CHANGES
+ 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 install-stamp
diff --git a/patch_cmds/diffstat/package/debian/source/format b/patch_cmds/diffstat/package/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/patch_cmds/diffstat/package/debian/watch b/patch_cmds/diffstat/package/debian/watch
new file mode 100644
index 0000000..716d237
--- /dev/null
+++ b/patch_cmds/diffstat/package/debian/watch
@@ -0,0 +1,4 @@
+version=3
+
+opts=passive ftp://invisible-island.net/cproto/cproto-(\d+)\.tgz \
+ debian uupdate
diff --git a/patch_cmds/diffstat/package/diffstat.spec b/patch_cmds/diffstat/package/diffstat.spec
new file mode 100644
index 0000000..99e91fe
--- /dev/null
+++ b/patch_cmds/diffstat/package/diffstat.spec
@@ -0,0 +1,54 @@
+Summary: diffstat - make histogram from diff-output
+%define AppProgram diffstat
+%define AppVersion 1.55
+# $XTermId: diffstat.spec,v 1.3 2010/10/10 18:09:56 tom Exp $
+Name: %{AppProgram}
+Version: %{AppVersion}
+Release: 1
+License: MIT
+Group: Applications/Development
+URL: ftp://invisible-island.net/%{AppProgram}
+Source0: %{AppProgram}-%{AppVersion}.tgz
+Packager: Thomas Dickey <dickey@invisible-island.net>
+
+%description
+Diffstat is is useful for reviewing large, complex patch files. It reads from
+one or more input files which contain output from diff, producing a histogram
+of the total lines changed for each file referenced.
+
+%prep
+
+%setup -q -n %{AppProgram}-%{AppVersion}
+
+%build
+
+INSTALL_PROGRAM='${INSTALL}' \
+ ./configure \
+ --target %{_target_platform} \
+ --prefix=%{_prefix} \
+ --bindir=%{_bindir} \
+ --libdir=%{_libdir} \
+ --mandir=%{_mandir}
+
+make
+
+%install
+[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+
+make install DESTDIR=$RPM_BUILD_ROOT
+
+strip $RPM_BUILD_ROOT%{_bindir}/%{AppProgram}
+
+%clean
+[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+%{_prefix}/bin/%{AppProgram}
+%{_mandir}/man1/%{AppProgram}.*
+
+%changelog
+# each patch should add its ChangeLog entries here
+
+* Thu Jul 15 2010 Thomas Dickey
+- initial version
diff --git a/patch_cmds/diffstat/porting/getopt.c b/patch_cmds/diffstat/porting/getopt.c
new file mode 100644
index 0000000..39ed078
--- /dev/null
+++ b/patch_cmds/diffstat/porting/getopt.c
@@ -0,0 +1,79 @@
+/* ::[[ @(#) getopt.c 1.5 89/03/11 05:40:23 ]]:: */
+#ifndef LINT
+static const char Id[] = "$Id: getopt.c,v 1.2 2009/09/01 00:41:59 tom Exp $";
+#endif
+
+/*
+ * Here's something you've all been waiting for: the AT&T public domain
+ * source for getopt(3). It is the code which was given out at the 1985
+ * UNIFORUM conference in Dallas. I obtained it by electronic mail
+ * directly from AT&T. The people there assure me that it is indeed
+ * in the public domain.
+ *
+ * There is no manual page. That is because the one they gave out at
+ * UNIFORUM was slightly different from the current System V Release 2
+ * manual page. The difference apparently involved a note about the
+ * famous rules 5 and 6, recommending using white space between an option
+ * and its first argument, and not grouping options that have arguments.
+ * Getopt itself is currently lenient about both of these things White
+ * space is allowed, but not mandatory, and the last option in a group can
+ * have an argument. That particular version of the man page evidently
+ * has no official existence, and my source at AT&T did not send a copy.
+ * The current SVR2 man page reflects the actual behavor of this getopt.
+ * However, I am not about to post a copy of anything licensed by AT&T.
+ */
+
+#include <stdio.h>
+#include <string.h>
+
+#define ERR(szz,czz) if(opterr){fprintf(stderr,"%s%s%c\n",argv[0],szz,czz);}
+
+int opterr = 1;
+int optind = 1;
+int optopt;
+char *optarg;
+
+int
+getopt(int argc, char *const *argv, const char *opts)
+{
+ static int sp = 1;
+ register int c;
+ register char *cp;
+
+ if (sp == 1) {
+ if (optind >= argc ||
+ argv[optind][0] != '-' || argv[optind][1] == '\0')
+ return (EOF);
+ else if (strcmp(argv[optind], "--") == 0) {
+ optind++;
+ return (EOF);
+ }
+ }
+ optopt = c = argv[optind][sp];
+ if (c == ':' || (cp = strchr(opts, c)) == NULL) {
+ ERR(": illegal option -- ", c);
+ if (argv[optind][++sp] == '\0') {
+ optind++;
+ sp = 1;
+ }
+ return ('?');
+ }
+ if (*++cp == ':') {
+ if (argv[optind][sp + 1] != '\0')
+ optarg = &argv[optind++][sp + 1];
+ else if (++optind >= argc) {
+ ERR(": option requires an argument -- ", c);
+ sp = 1;
+ return ('?');
+ } else
+ optarg = argv[optind++];
+ sp = 1;
+ } else {
+ if (argv[optind][++sp] == '\0') {
+ sp = 1;
+ optind++;
+ }
+ optarg = NULL;
+ }
+ return (c);
+}
diff --git a/patch_cmds/diffstat/porting/getopt.h b/patch_cmds/diffstat/porting/getopt.h
new file mode 100644
index 0000000..e02470d
--- /dev/null
+++ b/patch_cmds/diffstat/porting/getopt.h
@@ -0,0 +1,4 @@
+extern char *optarg;
+extern int optind, opterr;
+
+int getopt (int argc, char *const*argv, const char *options);
diff --git a/patch_cmds/diffstat/porting/system.h b/patch_cmds/diffstat/porting/system.h
new file mode 100644
index 0000000..02dc60e
--- /dev/null
+++ b/patch_cmds/diffstat/porting/system.h
@@ -0,0 +1,85 @@
+/* $Id: system.h,v 1.1 2002/11/22 22:36:56 tom Exp $ */
+
+#ifdef HAVE_CONFIG_H
+
+# include "config.h"
+# define SYS_UNIX 1
+
+#else
+ /* provide values for non-UNIX systems */
+# if defined(vms)
+# include <stsdef.h>
+# define SYS_VMS 1
+# define EXIT_SUCCESS (STS$M_INHIB_MSG | STS$K_SUCCESS)
+# define EXIT_FAILURE (STS$M_INHIB_MSG | STS$K_ERROR)
+# endif
+
+# if defined(MSDOS) || defined(__MSDOS__)
+# define SYS_MSDOS 1
+# endif
+
+# if !defined(SYS_VMS) || !defined(SYS_MSDOS) || defined(WIN32)
+# define SYS_UNIX 1 /* assume we're autoconfiguring */
+# endif
+
+#define HAVE_STRCHR 1
+
+#endif /* HAVE_CONFIG_H */
+
+#ifndef HAVE_GETOPT_H
+#define HAVE_GETOPT_H 0
+#endif
+
+#ifndef HAVE_MALLOC_H
+#define HAVE_MALLOC_H 0
+#endif
+
+#ifndef HAVE_STDLIB_H
+#define HAVE_STDLIB_H 1
+#endif
+
+#ifndef HAVE_STRING_H
+#define HAVE_STRING_H 1
+#endif
+
+#ifndef SYS_MSDOS
+#define SYS_MSDOS 0
+#endif
+
+#ifndef SYS_UNIX
+#define SYS_UNIX 0
+#endif
+
+#ifndef SYS_VMS
+#define SYS_VMS 0
+#endif
+
+#ifndef HAVE_GETOPT_HEADER
+#define HAVE_GETOPT_HEADER 0
+#endif
+
+#ifndef PRINT_ROUNDS_DOWN
+#define PRINT_ROUNDS_DOWN 0
+#endif
+
+#ifdef lint
+#define typeCalloc(type,elts) (type *)(elts)
+#else
+#define typeCalloc(type,elts) (type *)calloc(elts,sizeof(type))
+#endif
+
+#ifndef TRUE
+#define TRUE (1)
+#define FALSE (0)
+#endif
+
+#undef EOS
+#define EOS '\0'
+
+ /* On VMS and MSDOS we can fake wildcards by embedding a directory
+ * scanning loop...
+ */
+#if !SYS_UNIX
+extern int has_wildcard(char *);
+extern int expand_wildcard(char *, int);
+#endif
diff --git a/patch_cmds/diffstat/porting/wildcard.c b/patch_cmds/diffstat/porting/wildcard.c
new file mode 100644
index 0000000..0b7c494
--- /dev/null
+++ b/patch_cmds/diffstat/porting/wildcard.c
@@ -0,0 +1,109 @@
+#ifndef NO_IDENT
+static char *Id = "$Id: wildcard.c,v 1.1 2004/05/03 13:12:10 tom Exp $";
+#endif
+
+/*
+ * wildcard.c - perform wildcard expansion for non-UNIX configurations
+ */
+
+#include "system.h"
+
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+
+#if HAVE_STRING_H
+# include <string.h>
+#endif
+
+#if SYS_MSDOS || SYS_OS2
+# if SYS_MSDOS
+# include <dos.h>
+# include <dir.h> /* defines MAXPATH */
+# define FILENAME_MAX MAXPATH
+# endif
+# define DeclareFind(p) struct find_t p
+# define DirEntryStr(p) p.name
+# define DirFindFirst(path,p) (!_dos_findfirst(path, 0, &p))
+# define DirFindNext(p) (!_dos_findnext(&p))
+#endif
+
+#if SYS_VMS
+
+#include <starlet.h> /* DEC-C (e.g., sys$parse) */
+#include <stdio.h> /* perror */
+
+#include <rms.h>
+#include <descrip.h>
+
+#endif /* SYS_VMS */
+
+int
+has_wildcard(char *path)
+{
+#if SYS_VMS
+ return (strstr(path, "...") != 0
+ || strchr(path, '*') != 0
+ || strchr(path, '?') != 0);
+#else /* SYS_MSDOS, SYS_OS2 */
+ return (strchr(path, '*') != 0
+ || strchr(path, '?') != 0);
+#endif
+}
+
+int
+expand_wildcard(char *path, int initiate)
+{
+#if SYS_MSDOS || SYS_OS2
+ static DeclareFind(p);
+ static char temp[FILENAME_MAX + 1];
+ register char *leaf;
+
+ if ((leaf = strchr(path, '/')) == 0
+ && (leaf = strchr(path, '\\')) == 0)
+ leaf = path;
+ else
+ leaf++;
+
+ if ((initiate && DirFindFirst(strcpy(temp, path), p))
+ || DirFindNext(p)) {
+ (void) strcpy(leaf, DirEntryStr(p));
+ return TRUE;
+ }
+#endif /* SYS_MSDOS || SYS_OS2 */
+#if SYS_VMS
+ static struct FAB zfab;
+ static struct NAM znam;
+ static char my_esa[NAM$C_MAXRSS]; /* expanded: SYS$PARSE */
+ static char my_rsa[NAM$C_MAXRSS]; /* expanded: SYS$SEARCH */
+
+ if (initiate) {
+ zfab = cc$rms_fab;
+ zfab.fab$l_fop = FAB$M_NAM;
+ zfab.fab$l_nam = &znam; /* FAB => NAM block */
+ zfab.fab$l_dna = "*.*;"; /* Default-selection */
+ zfab.fab$b_dns = strlen(zfab.fab$l_dna);
+
+ zfab.fab$l_fna = path;
+ zfab.fab$b_fns = strlen(path);
+
+ znam = cc$rms_nam;
+ znam.nam$b_ess = sizeof(my_esa);
+ znam.nam$l_esa = my_esa;
+ znam.nam$b_rss = sizeof(my_rsa);
+ znam.nam$l_rsa = my_rsa;
+
+ if (sys$parse(&zfab) != RMS$_NORMAL) {
+ perror(path);
+ exit(EXIT_FAILURE);
+ }
+ }
+ if (sys$search(&zfab) == RMS$_NORMAL) {
+ strncpy(path, my_rsa, znam.nam$b_rsl)[znam.nam$b_rsl] = '\0';
+ return (TRUE);
+ }
+#endif /* SYS_VMS */
+#if SYS_MSDOS
+#endif
+ return FALSE;
+}
diff --git a/patch_cmds/diffstat/testing/case01.pat b/patch_cmds/diffstat/testing/case01.pat
new file mode 100644
index 0000000..fe0385d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01.pat
@@ -0,0 +1,417 @@
+--------------------------------------------------------------------------------
+--- /build/x11r6/XFree86-3.1.2Cf/xc/config/cf/hp.cf Sat Feb 10 13:55:35 1996
++++ /build/x11r6/XFree86-current/xc/config/cf/hp.cf Mon Feb 19 19:10:15 1996
+@@ -59,9 +59,16 @@
+ #define Malloc0ReturnsNull YES
+
+ #ifdef __hp9000s800
++#if HasGcc2
++#define OptimizedCDebugFlags -O
++#define DefaultCCOptions
++#define SharedLibraryCCOptions -fPIC
++#define PositionIndependentCFlags -fPIC
++#else
+ #define OptimizedCDebugFlags +O1
+ #define DefaultCCOptions -Ae +ESlit
+ #define SharedLibraryCCOptions -Ae
++#endif
+ #define StandardDefines -Dhpux -DSYSV
+ #define ServerExtraDefines -DXOS -DBSTORE -DSOFTWARE_CURSOR -DNO_ALLOCA -DSCREEN_PIXMAPS -DMERGE_SAVE_UNDERS -DHAS_IFREQ -DFORCE_SEPARATE_PRIVATE
+
+--- /build/x11r6/XFree86-3.1.2Cf/xc/config/cf/hpLib.rules Sat Jan 6 08:11:01 1996
++++ /build/x11r6/XFree86-current/xc/config/cf/hpLib.rules Mon Feb 19 19:11:14 1996
+@@ -29,8 +29,10 @@
+ #define InstLibFlags -m 0555
+ #endif
+ #ifndef UseInstalled
++#ifndef HasGcc2
+ /* assert: LdPostLib pulls in -L$(USRLIBDIR), so it doesn't need to be here */
+ #define ExtraLoadFlags -Wl,+s,+b,$(USRLIBDIR)
++#endif
+ #endif
+
+ /*
+--- /build/x11r6/XFree86-3.1.2Cf/xc/config/imake/imakemdep.h Sat Jan 6 08:11:01 1996
++++ /build/x11r6/XFree86-current/xc/config/imake/imakemdep.h Mon Feb 19 19:15:01 1996
+@@ -41,6 +41,10 @@
+ * These will be passed to the compile along with the contents of the
+ * make variable BOOTSTRAPCFLAGS.
+ */
++#if defined(clipper) || defined(__clipper__)
++#define imake_ccflags "-O -DSYSV -DBOOTSTRAPCFLAGS=-DSYSV"
++#endif
++
+ #ifdef hpux
+ #ifdef hp9000s800
+ #define imake_ccflags "-DSYSV"
+@@ -224,6 +228,9 @@
+ #ifdef apollo
+ #define DEFAULT_CPP "/usr/lib/cpp"
+ #endif
++#if defined(clipper) || defined(__clipper__)
++#define DEFAULT_CPP "/usr/lib/cpp"
++#endif
+ #if defined(_IBMR2) && !defined(DEFAULT_CPP)
+ #define DEFAULT_CPP "/usr/lpp/X11/Xamples/util/cpp/cpp"
+ #endif
+@@ -529,6 +536,12 @@
+ struct symtab predefs[] = {
+ #ifdef apollo
+ {"apollo", "1"},
++#endif
++#if defined(clipper) || defined(__clipper__)
++ {"clipper", "1"},
++ {"__clipper__", "1"},
++ {"clix", "1"},
++ {"__clix__", "1"},
+ #endif
+ #ifdef ibm032
+ {"ibm032", "1"},
+--- /build/x11r6/XFree86-3.1.2Cf/xc/config/makedepend/main.c Fri Jan 26 11:43:22 1996
++++ /build/x11r6/XFree86-current/xc/config/makedepend/main.c Mon Feb 19 19:16:06 1996
+@@ -570,7 +570,7 @@
+ return(file);
+ }
+
+-#if defined(USG) && !defined(CRAY) && !defined(SVR4) && !defined(__EMX__)
++#if defined(USG) && !defined(CRAY) && !defined(SVR4) && !defined(__EMX__) && !defined(clipper) && !defined(__clipper__)
+ int rename (from, to)
+ char *from, *to;
+ {
+--- /build/x11r6/XFree86-3.1.2Cf/xc/include/Xos.h Fri Jan 26 11:43:22 1996
++++ /build/x11r6/XFree86-current/xc/include/Xos.h Mon Feb 19 19:18:23 1996
+@@ -77,6 +77,7 @@
+
+ #ifndef X_NOT_STDC_ENV
+
++#if !(defined(sun) && !defined(SVR4)) /* 'index' is problem with K&R */
+ #include <string.h>
+ #ifndef index
+ #define index(s,c) (strchr((s),(c)))
+@@ -84,10 +85,14 @@
+ #ifndef rindex
+ #define rindex(s,c) (strrchr((s),(c)))
+ #endif
++#endif
+
+ #else
+
+ #ifdef SYSV
++#if defined(clipper) || defined(__clipper__)
++#include <malloc.h>
++#endif
+ #include <string.h>
+ #define index strchr
+ #define rindex strrchr
+@@ -149,7 +154,7 @@
+ #ifdef CRAY
+ #undef word
+ #endif /* CRAY */
+-#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)
++#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__) && !defined(clipper) && !defined(__clipper__)
+ struct timeval {
+ long tv_sec;
+ long tv_usec;
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/XIE/mixie/import/mijpeg.c Sun Apr 17 20:34:54 1994
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/XIE/mixie/import/mijpeg.c Mon Feb 19 18:48:31 1996
+@@ -114,7 +114,7 @@
+
+ /*
+ * routines referenced by other DDXIE modules
+-/*
++ */
+ int CreateIPhotoJpegBase();
+ int InitializeIPhotoJpegBase();
+ int InitializeICPhotoJpegBase();
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/XIE/mixie/process/mpgeomaa.c Sun Apr 17 20:35:19 1994
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/XIE/mixie/process/mpgeomaa.c Mon Feb 19 18:49:43 1996
+@@ -242,7 +242,7 @@
+ }
+ }
+ /*------------------------------------------------------------------------
+-/*------------------------------------------------------------------------
++--------------------------------------------------------------------------
+ ---------------------------- initialize peTex . . . ----------------------
+ ------------------------------------------------------------------------*/
+ static int InitializeGeomAA(flo,ped)
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/XIE/mixie/process/mpgeomnn.c Sat Jan 6 08:11:01 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/XIE/mixie/process/mpgeomnn.c Mon Feb 19 18:50:29 1996
+@@ -259,7 +259,7 @@
+ }
+
+ /*------------------------------------------------------------------------
+-/*------------------------------------------------------------------------
++--------------------------------------------------------------------------
+ ---------------------------- initialize peTex . . . ----------------------
+ ------------------------------------------------------------------------*/
+ static int InitializeGeomNN(flo,ped)
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/hp/input/drivers/hil_driver.c Mon Jan 30 23:07:07 1995
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/hp/input/drivers/hil_driver.c Mon Feb 19 18:51:11 1996
+@@ -431,7 +431,7 @@
+ return FALSE;
+
+ id = describe[0];
+-/* printf("fd is %d errno is %d id is %x\n", fd, errno, id); /* */
++/* printf("fd is %d errno is %d id is %x\n", fd, errno, id); */
+
+ num_axes = (describe[1] & HIL_NUM_AXES);
+ if (id == NINE_KNOB_ID && num_axes != 3) id = QUAD_ID;
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/hp/input/hpKeyMap.c Mon Jan 30 23:06:55 1995
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/hp/input/hpKeyMap.c Mon Feb 19 18:52:20 1996
+@@ -85,7 +85,7 @@
+ /* code values in comments at line end are actual value reported on HIL.
+ REMEMBER, there is an offset of MIN_KEYCODE+2 applied to this table!
+ The PS2 keyboard table begins at offset 0, the 46021A table begins with
+- the third row. *./
++ the third row. */
+ /* Extend Char Right -- a.k.a. Kanji? */
+ XK_Control_R, NoSymbol, NoSymbol, NoSymbol, /* 0x00 */
+ NoSymbol, NoSymbol, NoSymbol, NoSymbol, /* 0x01 */
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/accel/i128/i128scrin.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/accel/i128/i128scrin.c Mon Feb 19 18:53:02 1996
+@@ -348,7 +348,7 @@
+ pScreen->DestroyColormap = (DestroyColormapProcPtr)NoopDDA;
+ pScreen->ResolveColor = cfbResolveColor;
+ pScreen->BitmapToRegion = mfbPixmapToRegion;
+-#if 0 /* What's this for?! /* *TO*DO* */
++#if 0 /* What's this for?! *TO*DO* */
+ pScreen->BlockHandler = i128BlockHandler;
+ #endif
+
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c Mon Feb 19 18:53:37 1996
+@@ -351,7 +351,7 @@
+ pScreen->DestroyColormap = (DestroyColormapProcPtr)NoopDDA;
+ pScreen->ResolveColor = cfbResolveColor;
+ pScreen->BitmapToRegion = mfbPixmapToRegion;
+-#if 0 /* What's this for?! /* *TO*DO* */
++#if 0 /* What's this for?! *TO*DO* */
+ pScreen->BlockHandler = p9000BlockHandler;
+ #endif
+
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h Mon Feb 19 18:54:57 1996
+@@ -8,7 +8,7 @@
+ * Hamish Coleman 11/93 hamish@zot.apana.org.au
+ *
+ * derived from:
+- * bdm2/hgc1280/*
++ * bdm2/hgc1280/...
+ * Pascal Haible 8/93, haible@izfm.uni-stuttgart.de
+ *
+ * see mono/COPYRIGHT for copyright and disclaimers.
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c Mon Feb 19 18:55:33 1996
+@@ -8,12 +8,12 @@
+ * Hamish Coleman 11/93 hamish@zot.apana.org.au
+ *
+ * derived from:
+- * bdm2/hgc1280/*
++ * bdm2/hgc1280/...
+ * Pascal Haible 8/93, haible@izfm.uni-stuttgart.de
+- * hga2/*
++ * hga2/...
+ * Author: Davor Matic, dmatic@athena.mit.edu
+ * and
+- * vga256/*
++ * vga256/...
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * Thanks to Herb Peyerl (hpeyerl@novatel.ca) for the information on
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c Mon Feb 19 18:55:54 1996
+@@ -6,10 +6,10 @@
+ * mono/driver/hgc1280/hgc1280driv.c
+ *
+ * derived from:
+- * hga2/*
++ * hga2/...
+ * Author: Davor Matic, dmatic@athena.mit.edu
+ * and
+- * vga256/*
++ * vga256/...
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * see mono/COPYRIGHT for copyright and disclaimers.
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c Mon Feb 19 18:56:15 1996
+@@ -7,10 +7,10 @@
+ * mono/driver/sigma/sigmadriv.c
+ *
+ * Parts derived from:
+- * hga2/*
++ * hga2/...
+ * Author: Davor Matic, dmatic@athena.mit.edu
+ * and
+- * vga256/*
++ * vga256/...
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * see mono/COPYRIGHT for copyright and disclaimers.
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/mono/mono.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/mono/mono.c Mon Feb 19 18:56:58 1996
+@@ -6,10 +6,10 @@
+ * mono/mono/mono.c
+ *
+ * derived from:
+- * hga2/*
++ * hga2/...
+ * Author: Davor Matic, dmatic@athena.mit.edu
+ * and
+- * vga256/*
++ * vga256/...
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * see mono/COPYRIGHT for copyright and disclaimers.
+@@ -512,7 +512,7 @@
+ DDXPointRec pixPt; /* Point: upper left corner */
+ PixmapPtr pspix; /* Pointer to the pixmap of the saved screen */
+ ScreenPtr pScreen = savepScreen; /* This is the 'old' Screen:
+- /* real screen on leave, dummy on enter */
++ real screen on leave, dummy on enter */
+
+ /* Set up pointer to the saved pixmap (pspix) only if not resetting
+ and not exiting */
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/mono/mono.h Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/mono/mono.h Mon Feb 19 18:57:19 1996
+@@ -6,10 +6,10 @@
+ * mono/mono/mono.h
+ *
+ * derived from:
+- * hga2/*
++ * hga2/...
+ * Author: Davor Matic, dmatic@athena.mit.edu
+ * and
+- * vga256/*
++ * vga256/...
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * see mono/COPYRIGHT for copyright and disclaimers.
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c Mon Feb 19 18:57:57 1996
+@@ -27,7 +27,7 @@
+
+ #include "OScompiler.h"
+
+-/* #include "ibmIOArch.h" /* GJA */
++/* #include "ibmIOArch.h" -- GJA */
+
+ #include "vgaVideo.h"
+
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h Fri Feb 9 13:08:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h Mon Feb 19 18:58:43 1996
+@@ -679,7 +679,7 @@
+ #define GEN_TEST_CNT_VALUE 0x3f000000 /* Mach64CT/ET */
+ #define GEN_TEST_CC_EN 0x40000000 /* Mach64GX/CX */
+ #define GEN_TEST_CC_STROBE 0x80000000 /* Mach64GX/CX */
+-/* ? 0xc0000000 /* Mach64CT/ET */
++/* ? 0xc0000000 */ /* Mach64CT/ET */
+ #define CONFIG_CNTL 0x6aec
+ #define CFG_MEM_AP_SIZE 0x00000003
+ #define CFG_MEM_VGA_AP_EN 0x00000004
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c Fri Feb 9 13:08:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c Mon Feb 19 18:59:33 1996
+@@ -126,7 +126,7 @@
+ /* For the lower byte of the 32-bit color registers, there is no safe
+ * invalid value. We just set them to a specific value (making sure
+ * we don't write to non-existant color registers).
+- *
++ */
+ cirrusBackgroundColorShadow = 0xffffffff; /* Defeat the macros. */
+ cirrusForegroundColorShadow = 0xffffffff;
+ if (cirrusChip >= CLGD5422 && cirrusChip <= CLGD5430) {
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c Mon Feb 19 19:00:02 1996
+@@ -22,7 +22,7 @@
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Simon P. Cooper, <scooper@vizlab.rutgers.edu>
+- *
++ */
+ /* $XConsortium: cir_cursor.c /main/8 1995/11/13 08:20:54 kaleb $ */
+
+ #define CIRRUS_DEBUG_CURSOR
+--- /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c Mon Feb 5 12:03:00 1996
++++ /build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c Mon Feb 19 19:00:52 1996
+@@ -1402,7 +1402,7 @@
+ case OTI37C:
+ default:
+ #ifndef MONOVGA
+- /* new->std.CRTC[19] = vga256InfoRec.virtualX >> 3; /* 3 in byte mode */
++ /* new->std.CRTC[19] = vga256InfoRec.virtualX >> 3; -- 3 in byte mode */
+ /* much clearer as 0x01 than 0x41, seems odd though... */
+ new->std.Attribute[16] = 0x01;
+ if ( new->std.NoClock >= 0 )
+--- /build/x11r6/XFree86-3.1.2Cf/xc/test/xsuite/xtest/src/bin/mc/files.c Sun Apr 17 21:00:20 1994
++++ /build/x11r6/XFree86-current/xc/test/xsuite/xtest/src/bin/mc/files.c Mon Feb 19 19:02:49 1996
+@@ -95,7 +95,7 @@
+ char buf[BUFSIZ];
+
+ /*
+- * Look for a corresponding file with name lib/mc/*.mc .
++ * Look for a corresponding file with name lib/mc/{*}.mc .
+ */
+ (void) sprintf(buf, "mc/%s", file);
+ file = buf;
+--- /build/x11r6/XFree86-3.1.2Cf/xc/util/patch/malloc.c Wed Aug 15 01:13:33 1990
++++ /build/x11r6/XFree86-current/xc/util/patch/malloc.c Mon Feb 19 19:04:28 1996
+@@ -30,10 +30,8 @@
+ * go in the first int of the block, and the returned pointer will point
+ * to the second.
+ *
+-#ifdef MSTATS
+ * nmalloc[i] is the difference between the number of mallocs and frees
+ * for a given block size.
+-#endif /* MSTATS */
+ */
+
+ #define ISALLOC ((char) 0xf7) /* magic byte that implies allocation */
+@@ -208,7 +206,7 @@
+ if (--nblks <= 0) break;
+ CHAIN ((struct mhead *) cp) = (struct mhead *) (cp + siz);
+ cp += siz;}
+-/* CHAIN ((struct mhead *) cp) = 0; /* since sbrk() returns cleared core, this is already set */
++/* CHAIN ((struct mhead *) cp) = 0; -- since sbrk() returns cleared core, this is already set */
+ }
+
+ static
+@@ -449,10 +447,10 @@
+ return (1 << (p -> mh_index + 3)) - sizeof *p;
+ /**/
+ /* if (p -> mh_index >= 13)
+-/* return (1 << (p -> mh_index + 3)) - sizeof *p;
+-/* else
+-/* return p -> mh_size;
+-/**/
++ * return (1 << (p -> mh_index + 3)) - sizeof *p;
++ * else
++ * return p -> mh_size;
++ */
+ #endif /* rcheck */
+ }
+
+--- /build/x11r6/XFree86-3.1.2Cf/xc/util/patch/pch.c Sat Jan 6 08:11:01 1996
++++ /build/x11r6/XFree86-current/xc/util/patch/pch.c Mon Feb 19 19:05:12 1996
+@@ -1,5 +1,5 @@
+ /* oldHeader: pch.c,v 2.0.1.7 88/06/03 15:13:28 lwall Locked $
+-/* $XConsortium: pch.c,v 3.3 94/09/14 21:22:55 gildea Exp $
++ * $XConsortium: pch.c,v 3.3 94/09/14 21:22:55 gildea Exp $
+ *
+ * Revision 2.0.2.0 90/05/01 22:17:51 davison
+ * patch12u: unidiff support added
+--- /build/x11r6/XFree86-3.1.2Cf/xc/config/cf/Imake.cf Fri Jan 26 11:43:22 1996
++++ /build/x11r6/XFree86-current/xc/config/cf/Imake.cf Mon Feb 19 19:13:58 1996
+@@ -19,6 +19,13 @@
+ * 4. Create a .cf file with the name given by MacroFile.
+ */
+
++#if defined(clipper) || defined(__clipper__)
++# undef clipper
++# define MacroIncludeFile <ingr.cf>
++# define MacroFile ingr.cf
++# define IngrArchitecture
++#endif /* clipper */
++
+ #ifdef ultrix
+ # define MacroIncludeFile <ultrix.cf>
+ # define MacroFile ultrix.cf
diff --git a/patch_cmds/diffstat/testing/case01.ref b/patch_cmds/diffstat/testing/case01.ref
new file mode 100644
index 0000000..50e2e5e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 +++++
+ config/cf/hp.cf | 7 +++++
+ config/cf/hpLib.rules | 2 +
+ config/imake/imakemdep.h | 13 ++++++++++
+ config/makedepend/main.c | 2 -
+ include/Xos.h | 7 ++++-
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ util/patch/malloc.c | 12 +++------
+ util/patch/pch.c | 2 -
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01R.ref b/patch_cmds/diffstat/testing/case01R.ref
new file mode 100644
index 0000000..f3eec8f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01R.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 -----
+ config/cf/hp.cf | 7 -----
+ config/cf/hpLib.rules | 2 -
+ config/imake/imakemdep.h | 13 ----------
+ config/makedepend/main.c | 2 -
+ include/Xos.h | 7 -----
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ util/patch/malloc.c | 12 +++++----
+ util/patch/pch.c | 2 -
+ 27 files changed, 36 insertions(+), 68 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01Rp0.ref b/patch_cmds/diffstat/testing/case01Rp0.ref
new file mode 100644
index 0000000..b7df45e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01Rp0.ref
@@ -0,0 +1,28 @@
+ /build/x11r6/XFree86-3.1.2Cf/xc/config/cf/Imake.cf | 7 -----
+ /build/x11r6/XFree86-3.1.2Cf/xc/config/cf/hp.cf | 7 -----
+ /build/x11r6/XFree86-3.1.2Cf/xc/config/cf/hpLib.rules | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/config/imake/imakemdep.h | 13 ----------
+ /build/x11r6/XFree86-3.1.2Cf/xc/config/makedepend/main.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/include/Xos.h | 7 -----
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ /build/x11r6/XFree86-3.1.2Cf/xc/util/patch/malloc.c | 12 +++++----
+ /build/x11r6/XFree86-3.1.2Cf/xc/util/patch/pch.c | 2 -
+ 27 files changed, 36 insertions(+), 68 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01b.ref b/patch_cmds/diffstat/testing/case01b.ref
new file mode 100644
index 0000000..50e2e5e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01b.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 +++++
+ config/cf/hp.cf | 7 +++++
+ config/cf/hpLib.rules | 2 +
+ config/imake/imakemdep.h | 13 ++++++++++
+ config/makedepend/main.c | 2 -
+ include/Xos.h | 7 ++++-
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ util/patch/malloc.c | 12 +++------
+ util/patch/pch.c | 2 -
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01f0.ref b/patch_cmds/diffstat/testing/case01f0.ref
new file mode 100644
index 0000000..729257c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01f0.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 7 + 0 - 0 !
+ config/cf/hp.cf | 7 7 + 0 - 0 !
+ config/cf/hpLib.rules | 2 2 + 0 - 0 !
+ config/imake/imakemdep.h | 13 13 + 0 - 0 !
+ config/makedepend/main.c | 2 1 + 1 - 0 !
+ include/Xos.h | 7 6 + 1 - 0 !
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 1 + 1 - 0 !
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 1 + 1 - 0 !
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 3 + 3 - 0 !
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 2 + 2 - 0 !
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 2 + 2 - 0 !
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 3 + 3 - 0 !
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 2 + 2 - 0 !
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 1 + 1 - 0 !
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 1 + 1 - 0 !
+ test/xsuite/xtest/src/bin/mc/files.c | 2 1 + 1 - 0 !
+ util/patch/malloc.c | 12 5 + 7 - 0 !
+ util/patch/pch.c | 2 1 + 1 - 0 !
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01k.ref b/patch_cmds/diffstat/testing/case01k.ref
new file mode 100644
index 0000000..50e2e5e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01k.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 +++++
+ config/cf/hp.cf | 7 +++++
+ config/cf/hpLib.rules | 2 +
+ config/imake/imakemdep.h | 13 ++++++++++
+ config/makedepend/main.c | 2 -
+ include/Xos.h | 7 ++++-
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ util/patch/malloc.c | 12 +++------
+ util/patch/pch.c | 2 -
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01p1.ref b/patch_cmds/diffstat/testing/case01p1.ref
new file mode 100644
index 0000000..97dd130
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01p1.ref
@@ -0,0 +1,28 @@
+ build/x11r6/XFree86-current/xc/config/cf/Imake.cf | 7 +++++
+ build/x11r6/XFree86-current/xc/config/cf/hp.cf | 7 +++++
+ build/x11r6/XFree86-current/xc/config/cf/hpLib.rules | 2 +
+ build/x11r6/XFree86-current/xc/config/imake/imakemdep.h | 13 ++++++++++
+ build/x11r6/XFree86-current/xc/config/makedepend/main.c | 2 -
+ build/x11r6/XFree86-current/xc/include/Xos.h | 7 ++++-
+ build/x11r6/XFree86-current/xc/programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ build/x11r6/XFree86-current/xc/programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ build/x11r6/XFree86-current/xc/test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ build/x11r6/XFree86-current/xc/util/patch/malloc.c | 12 +++------
+ build/x11r6/XFree86-current/xc/util/patch/pch.c | 2 -
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01p9.ref b/patch_cmds/diffstat/testing/case01p9.ref
new file mode 100644
index 0000000..cf6a8eb
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01p9.ref
@@ -0,0 +1,28 @@
+ Imake.cf | 7 +++++++
+ Xos.h | 7 ++++++-
+ accel/i128/i128scrin.c | 2 +-
+ accel/p9000/p9000scrin.c | 2 +-
+ bin/mc/files.c | 2 +-
+ hp.cf | 7 +++++++
+ hpLib.rules | 2 ++
+ imakemdep.h | 13 +++++++++++++
+ import/mijpeg.c | 2 +-
+ input/drivers/hil_driver.c | 2 +-
+ input/hpKeyMap.c | 2 +-
+ main.c | 2 +-
+ malloc.c | 12 +++++-------
+ mono/drivers/apollo/apolloHW.h | 2 +-
+ mono/drivers/apollo/apollodriv.c | 6 +++---
+ mono/drivers/hgc1280/hgc1280driv.c | 4 ++--
+ mono/drivers/sigma/sigmadriv.c | 4 ++--
+ mono/mono/mono.c | 6 +++---
+ mono/mono/mono.h | 4 ++--
+ pch.c | 2 +-
+ process/mpgeomaa.c | 2 +-
+ process/mpgeomnn.c | 2 +-
+ vga16/ibm/vgaImages.c | 2 +-
+ vga256/drivers/ati/regati.h | 2 +-
+ vga256/drivers/cirrus/cir_blitter.c | 2 +-
+ vga256/drivers/cirrus/cir_cursor.c | 2 +-
+ vga256/drivers/oak/oak_driver.c | 2 +-
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01r1.ref b/patch_cmds/diffstat/testing/case01r1.ref
new file mode 100644
index 0000000..08765ff
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01r1.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 +++++
+ config/cf/hp.cf | 7 +++++
+ config/cf/hpLib.rules | 2 ++
+ config/imake/imakemdep.h | 13 ++++++++++
+ config/makedepend/main.c | 2 +-
+ include/Xos.h | 7 +++++-
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 +-
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 +-
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 +-
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 +-
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 +-
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 +-
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 +-
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 +-
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 ++--
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 +-
+ test/xsuite/xtest/src/bin/mc/files.c | 2 +-
+ util/patch/malloc.c | 12 ++++-----
+ util/patch/pch.c | 2 +-
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01r2.ref b/patch_cmds/diffstat/testing/case01r2.ref
new file mode 100644
index 0000000..f386706
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01r2.ref
@@ -0,0 +1,28 @@
+ config/cf/Imake.cf | 7 +++++
+ config/cf/hp.cf | 7 +++++
+ config/cf/hpLib.rules | 2 ++
+ config/imake/imakemdep.h | 13 ++++++++++
+ config/makedepend/main.c | 2 +-
+ include/Xos.h | 7 ++++-
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 +-
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 +-
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 +-
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 +-
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 +-
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 +-
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 +-
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 +-
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +-
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +-
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +-
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 +-
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 +-
+ test/xsuite/xtest/src/bin/mc/files.c | 2 +-
+ util/patch/malloc.c | 12 ++++-----
+ util/patch/pch.c | 2 +-
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case01u.ref b/patch_cmds/diffstat/testing/case01u.ref
new file mode 100644
index 0000000..d919a69
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case01u.ref
@@ -0,0 +1,28 @@
+ config/cf/hp.cf | 7 +++++
+ config/cf/hpLib.rules | 2 +
+ config/imake/imakemdep.h | 13 ++++++++++
+ config/makedepend/main.c | 2 -
+ include/Xos.h | 7 ++++-
+ programs/Xserver/XIE/mixie/import/mijpeg.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomaa.c | 2 -
+ programs/Xserver/XIE/mixie/process/mpgeomnn.c | 2 -
+ programs/Xserver/hw/hp/input/drivers/hil_driver.c | 2 -
+ programs/Xserver/hw/hp/input/hpKeyMap.c | 2 -
+ programs/Xserver/hw/xfree86/accel/i128/i128scrin.c | 2 -
+ programs/Xserver/hw/xfree86/accel/p9000/p9000scrin.c | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apolloHW.h | 2 -
+ programs/Xserver/hw/xfree86/mono/drivers/apollo/apollodriv.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/drivers/hgc1280/hgc1280driv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/drivers/sigma/sigmadriv.c | 4 +--
+ programs/Xserver/hw/xfree86/mono/mono/mono.c | 6 ++--
+ programs/Xserver/hw/xfree86/mono/mono/mono.h | 4 +--
+ programs/Xserver/hw/xfree86/vga16/ibm/vgaImages.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/ati/regati.h | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_blitter.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/cirrus/cir_cursor.c | 2 -
+ programs/Xserver/hw/xfree86/vga256/drivers/oak/oak_driver.c | 2 -
+ test/xsuite/xtest/src/bin/mc/files.c | 2 -
+ util/patch/malloc.c | 12 +++------
+ util/patch/pch.c | 2 -
+ config/cf/Imake.cf | 7 +++++
+ 27 files changed, 68 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case02.pat b/patch_cmds/diffstat/testing/case02.pat
new file mode 100644
index 0000000..3e636e4
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02.pat
@@ -0,0 +1,486 @@
+
+Prereq: public-patch-25
+
+*** /tmp/da20646 Wed Nov 3 20:04:26 1993
+--- mit/bug-report Wed Nov 3 20:04:25 1993
+***************
+*** 2,8 ****
+ Subject: [area]: [synopsis] [replace with actual area and short description]
+
+ VERSION:
+! R5, public-patch-25
+ [MIT public patches will edit this line to indicate the patch level]
+
+ CLIENT MACHINE and OPERATING SYSTEM:
+--- 2,8 ----
+ Subject: [area]: [synopsis] [replace with actual area and short description]
+
+ VERSION:
+! R5, public-patch-26
+ [MIT public patches will edit this line to indicate the patch level]
+
+ CLIENT MACHINE and OPERATING SYSTEM:
+*** /tmp/da21897 Thu Nov 4 08:57:24 1993
+--- mit/clients/xterm/misc.c Thu Nov 4 08:57:23 1993
+***************
+*** 1,5 ****
+ /*
+! * $XConsortium: misc.c,v 1.92 92/03/13 17:02:08 gildea Exp $
+ */
+
+ /*
+--- 1,5 ----
+ /*
+! * $XConsortium: misc.c,v 1.95.1.1 93/11/04 08:56:48 gildea Exp $
+ */
+
+ /*
+***************
+*** 444,449 ****
+--- 444,518 ----
+ }
+ }
+
++ #if defined(ALLOWLOGGING) || defined(DEBUG)
++
++ #ifndef X_NOT_POSIX
++ #define HAS_WAITPID
++ #endif
++
++ /*
++ * create a file only if we could with the permissions of the real user id.
++ * We could emulate this with careful use of access() and following
++ * symbolic links, but that is messy and has race conditions.
++ * Forking is messy, too, but we can't count on setreuid() or saved set-uids
++ * being available.
++ */
++ void
++ creat_as(uid, gid, pathname, mode)
++ int uid;
++ int gid;
++ char *pathname;
++ int mode;
++ {
++ int fd;
++ int waited;
++ int pid;
++ #ifndef HAS_WAITPID
++ int (*chldfunc)();
++
++ chldfunc = signal(SIGCHLD, SIG_DFL);
++ #endif
++ pid = fork();
++ switch (pid)
++ {
++ case 0: /* child */
++ setgid(gid);
++ setuid(uid);
++ fd = open(pathname, O_WRONLY|O_CREAT|O_APPEND, mode);
++ if (fd >= 0) {
++ close(fd);
++ _exit(0);
++ } else
++ _exit(1);
++ case -1: /* error */
++ return;
++ default: /* parent */
++ #ifdef HAS_WAITPID
++ waitpid(pid, NULL, 0);
++ #else
++ waited = wait(NULL);
++ signal(SIGCHLD, chldfunc);
++ /*
++ Since we had the signal handler uninstalled for a while,
++ we might have missed the termination of our screen child.
++ If we can check for this possibility without hanging, do so.
++ */
++ do
++ if (waited == term->screen.pid)
++ Cleanup(0);
++ while ( (waited=nonblocking_wait()) > 0);
++ #endif
++ }
++ }
++ #endif
++
++ #ifdef ALLOWLOGGING
++ /*
++ * logging is a security hole, since it allows a setuid program to
++ * write arbitrary data to an arbitrary file. So it is disabled
++ * by default.
++ */
++
+ StartLog(screen)
+ register TScreen *screen;
+ {
+***************
+*** 530,551 ****
+ return;
+ #endif
+ } else {
+! if(access(screen->logfile, F_OK) == 0) {
+! if(access(screen->logfile, W_OK) < 0)
+! return;
+! } else if(cp = rindex(screen->logfile, '/')) {
+! *cp = 0;
+! i = access(screen->logfile, W_OK);
+! *cp = '/';
+! if(i < 0)
+! return;
+! } else if(access(".", W_OK) < 0)
+ return;
+! if((screen->logfd = open(screen->logfile, O_WRONLY | O_APPEND |
+! O_CREAT, 0644)) < 0)
+! return;
+! chown(screen->logfile, screen->uid, screen->gid);
+
+ }
+ screen->logstart = screen->TekEmu ? Tbptr : bptr;
+ screen->logging = TRUE;
+--- 599,618 ----
+ return;
+ #endif
+ } else {
+! if(access(screen->logfile, F_OK) != 0) {
+! if (errno == ENOENT)
+! creat_as(screen->uid, screen->gid,
+! screen->logfile, 0644);
+! else
+ return;
+! }
+
++ if(access(screen->logfile, F_OK) != 0
++ || access(screen->logfile, W_OK) != 0)
++ return;
++ if((screen->logfd = open(screen->logfile, O_WRONLY | O_APPEND,
++ 0644)) < 0)
++ return;
+ }
+ screen->logstart = screen->TekEmu ? Tbptr : bptr;
+ screen->logging = TRUE;
+***************
+*** 587,592 ****
+--- 654,660 ----
+ CloseLog(screen);
+ }
+ #endif /* ALLOWLOGFILEEXEC */
++ #endif /* ALLOWLOGGING */
+
+
+ do_osc(func)
+***************
+*** 626,631 ****
+--- 694,700 ----
+ Changetitle(buf);
+ break;
+
++ #ifdef ALLOWLOGGING
+ case 46: /* new log file */
+ #ifdef ALLOWLOGFILECHANGES
+ /*
+***************
+*** 643,648 ****
+--- 712,718 ----
+ Bell();
+ #endif
+ break;
++ #endif /* ALLOWLOGGING */
+
+ case 50:
+ SetVTFont (fontMenu_fontescape, True, buf, NULL);
+***************
+*** 903,912 ****
+--- 973,984 ----
+ register TScreen *screen = &term->screen;
+
+ if (screen->TekEmu) {
++ #ifdef ALLOWLOGGING
+ if (screen->logging) {
+ FlushLog (screen);
+ screen->logstart = buffer;
+ }
++ #endif
+ longjmp(Tekend, 1);
+ }
+ return;
+***************
+*** 917,926 ****
+--- 989,1000 ----
+ register TScreen *screen = &term->screen;
+
+ if (!screen->TekEmu) {
++ #ifdef ALLOWLOGGING
+ if(screen->logging) {
+ FlushLog(screen);
+ screen->logstart = Tbuffer;
+ }
++ #endif
+ screen->TekEmu = TRUE;
+ longjmp(VTend, 1);
+ }
+*** /tmp/da17839 Wed Nov 3 18:16:38 1993
+--- mit/clients/xterm/Tekproc.c Wed Nov 3 18:16:37 1993
+***************
+*** 1,5 ****
+ /*
+! * $XConsortium: Tekproc.c,v 1.107 91/06/25 19:49:48 gildea Exp $
+ *
+ * Warning, there be crufty dragons here.
+ */
+--- 1,5 ----
+ /*
+! * $XConsortium: Tekproc.c,v 1.112 93/02/25 17:17:40 gildea Exp $
+ *
+ * Warning, there be crufty dragons here.
+ */
+***************
+*** 46,51 ****
+--- 46,52 ----
+ #include <stdio.h>
+ #include <errno.h>
+ #include <setjmp.h>
++ #include <signal.h>
+
+ /*
+ * Check for both EAGAIN and EWOULDBLOCK, because some supposedly POSIX
+***************
+*** 74,80 ****
+
+ #define TekColormap DefaultColormap( screen->display, \
+ DefaultScreen(screen->display) )
+! #define DefaultGCID DefaultGC(screen->display, DefaultScreen(screen->display))->gid
+
+ /* Tek defines */
+
+--- 75,81 ----
+
+ #define TekColormap DefaultColormap( screen->display, \
+ DefaultScreen(screen->display) )
+! #define DefaultGCID XGContextFromGC(DefaultGC(screen->display, DefaultScreen(screen->display)))
+
+ /* Tek defines */
+
+***************
+*** 188,194 ****
+--- 189,197 ----
+ /* menu actions */
+ { "allow-send-events", HandleAllowSends },
+ { "set-visual-bell", HandleSetVisualBell },
++ #ifdef ALLOWLOGGING
+ { "set-logging", HandleLogging },
++ #endif
+ { "redraw", HandleRedraw },
+ { "send-signal", HandleSendSignal },
+ { "quit", HandleQuit },
+***************
+*** 335,342 ****
+ register int c, x, y;
+ char ch;
+
+! for( ; ; )
+! switch(Tparsestate[c = input()]) {
+ case CASE_REPORT:
+ /* report address */
+ if(screen->TekGIN) {
+--- 338,346 ----
+ register int c, x, y;
+ char ch;
+
+! for( ; ; ) {
+! c = input();
+! switch(Tparsestate[c]) {
+ case CASE_REPORT:
+ /* report address */
+ if(screen->TekGIN) {
+***************
+*** 356,365 ****
+--- 360,371 ----
+ /* special return to vt102 mode */
+ Tparsestate = curstate;
+ TekRecord->ptr[-1] = NAK; /* remove from recording */
++ #ifdef ALLOWLOGGING
+ if(screen->logging) {
+ FlushLog(screen);
+ screen->logstart = buffer;
+ }
++ #endif
+ return;
+
+ case CASE_SPT_STATE:
+***************
+*** 626,631 ****
+--- 632,638 ----
+ Tparsestate = curstate;
+ break;
+ }
++ }
+ }
+
+ static int rcnt;
+***************
+*** 667,675 ****
+ (int *) NULL, &crocktimeout);
+ #endif
+ if(Tselect_mask & pty_mask) {
+ if(screen->logging)
+ FlushLog(screen);
+! Tbcnt = read(screen->respond, Tbptr = Tbuffer, BUF_SIZE);
+ if(Tbcnt < 0) {
+ if(errno == EIO)
+ Cleanup (0);
+--- 674,684 ----
+ (int *) NULL, &crocktimeout);
+ #endif
+ if(Tselect_mask & pty_mask) {
++ #ifdef ALLOWLOGGING
+ if(screen->logging)
+ FlushLog(screen);
+! #endif
+! Tbcnt = read(screen->respond, (char *)(Tbptr = Tbuffer), BUF_SIZE);
+ if(Tbcnt < 0) {
+ if(errno == EIO)
+ Cleanup (0);
+***************
+*** 1150,1157 ****
+ * The following is called the create the tekWidget
+ */
+
+! static void TekInitialize(request, new)
+ Widget request, new;
+ {
+ /* look for focus related events on the shell, because we need
+ * to care about the shell's border being part of our focus.
+--- 1159,1168 ----
+ * The following is called the create the tekWidget
+ */
+
+! static void TekInitialize(request, new, args, num_args)
+ Widget request, new;
++ ArgList args;
++ Cardinal *num_args;
+ {
+ /* look for focus related events on the shell, because we need
+ * to care about the shell's border being part of our focus.
+***************
+*** 1549,1565 ****
+ }
+
+
+ /* write copy of screen to a file */
+
+ TekCopy()
+ {
+- register TekLink *Tp;
+- register int tekcopyfd;
+ register TScreen *screen = &term->screen;
+ register struct tm *tp;
+ long l;
+ char buf[32];
+
+ time(&l);
+ tp = localtime(&l);
+ sprintf(buf, "COPY%02d-%02d-%02d.%02d:%02d:%02d", tp->tm_year,
+--- 1560,1585 ----
+ }
+
+
++ #ifndef X_NOT_POSIX
++ #define HAS_WAITPID
++ #endif
++
+ /* write copy of screen to a file */
+
+ TekCopy()
+ {
+ register TScreen *screen = &term->screen;
+ register struct tm *tp;
+ long l;
+ char buf[32];
++ int waited;
++ int pid;
++ #ifndef HAS_WAITPID
++ int (*chldfunc)();
+
++ chldfunc = signal(SIGCHLD, SIG_DFL);
++ #endif
++
+ time(&l);
+ tp = localtime(&l);
+ sprintf(buf, "COPY%02d-%02d-%02d.%02d:%02d:%02d", tp->tm_year,
+***************
+*** 1573,1593 ****
+ Bell();
+ return;
+ }
+! if((tekcopyfd = open(buf, O_WRONLY | O_CREAT | O_TRUNC, 0644)) < 0) {
+! Bell();
+! return;
+! }
+! chown(buf, screen->uid, screen->gid);
+! sprintf(buf, "\033%c\033%c", screen->page.fontsize + '8',
+! screen->page.linetype + '`');
+! write(tekcopyfd, buf, 4);
+! Tp = &Tek0;
+! do {
+ write(tekcopyfd, (char *)Tp->data, Tp->count);
+ Tp = Tp->next;
+! } while(Tp);
+! close(tekcopyfd);
+ }
+-
+-
+-
+--- 1593,1645 ----
+ Bell();
+ return;
+ }
+!
+! /* Write the file in an unprivileged child process because
+! using access before the open still leaves a small window
+! of opportunity. */
+! pid = fork();
+! switch (pid)
+! {
+! case 0: /* child */
+! {
+! register int tekcopyfd;
+! char initbuf[5];
+! register TekLink *Tp;
+!
+! setgid(screen->gid);
+! setuid(screen->uid);
+! tekcopyfd = open(buf, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+! if (tekcopyfd < 0)
+! _exit(1);
+! sprintf(initbuf, "\033%c\033%c", screen->page.fontsize + '8',
+! screen->page.linetype + '`');
+! write(tekcopyfd, initbuf, 4);
+! Tp = &Tek0;
+! do {
+ write(tekcopyfd, (char *)Tp->data, Tp->count);
+ Tp = Tp->next;
+! } while(Tp);
+! close(tekcopyfd);
+! _exit(0);
+! }
+! case -1: /* error */
+! Bell();
+! return;
+! default: /* parent */
+! #ifdef HAS_WAITPID
+! waitpid(pid, NULL, 0);
+! #else
+! waited = wait(NULL);
+! signal(SIGCHLD, chldfunc);
+! /*
+! Since we had the signal handler uninstalled for a while,
+! we might have missed the termination of our screen child.
+! If we can check for this possibility without hanging, do so.
+! */
+! do
+! if (waited == term->screen.pid)
+! Cleanup(0);
+! while ( (waited=nonblocking_wait()) > 0);
+! #endif
+! }
+ }
diff --git a/patch_cmds/diffstat/testing/case02.ref b/patch_cmds/diffstat/testing/case02.ref
new file mode 100644
index 0000000..cd187ac
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02.ref
@@ -0,0 +1,4 @@
+ bug-report | 2
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ clients/xterm/misc.c | 104 +++++++++++++++++++++++++++++++++++++!!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02R.ref b/patch_cmds/diffstat/testing/case02R.ref
new file mode 100644
index 0000000..072c3cd
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02R.ref
@@ -0,0 +1,4 @@
+ da17839 | 98 +++------------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ da20646 | 2 !
+ da21897 | 104 --------------------------------------------------!!!!!!!!!!!!!!
+ 3 files changed, 5 insertions(+), 102 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02Rp0.ref b/patch_cmds/diffstat/testing/case02Rp0.ref
new file mode 100644
index 0000000..341babd
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02Rp0.ref
@@ -0,0 +1,4 @@
+ /tmp/da17839 | 98 ++------------!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ /tmp/da20646 | 2 !
+ /tmp/da21897 | 104 ----------------------------------------------!!!!!!!!!!!!!
+ 3 files changed, 5 insertions(+), 102 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02b.ref b/patch_cmds/diffstat/testing/case02b.ref
new file mode 100644
index 0000000..cd187ac
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02b.ref
@@ -0,0 +1,4 @@
+ bug-report | 2
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ clients/xterm/misc.c | 104 +++++++++++++++++++++++++++++++++++++!!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02f0.ref b/patch_cmds/diffstat/testing/case02f0.ref
new file mode 100644
index 0000000..7218297
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02f0.ref
@@ -0,0 +1,4 @@
+ bug-report | 2 0 + 0 - 2 !
+ clients/xterm/Tekproc.c | 98 20 + 5 - 73 !
+ clients/xterm/misc.c | 104 82 + 0 - 22 !
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02k.ref b/patch_cmds/diffstat/testing/case02k.ref
new file mode 100644
index 0000000..cd187ac
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02k.ref
@@ -0,0 +1,4 @@
+ bug-report | 2
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ clients/xterm/misc.c | 104 +++++++++++++++++++++++++++++++++++++!!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02p1.ref b/patch_cmds/diffstat/testing/case02p1.ref
new file mode 100644
index 0000000..cd187ac
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02p1.ref
@@ -0,0 +1,4 @@
+ bug-report | 2
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ clients/xterm/misc.c | 104 +++++++++++++++++++++++++++++++++++++!!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02p9.ref b/patch_cmds/diffstat/testing/case02p9.ref
new file mode 100644
index 0000000..3cd471b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02p9.ref
@@ -0,0 +1,4 @@
+ Tekproc.c | 98 +++++++++++---!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ bug-report | 2 !
+ misc.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++!!!!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02r1.ref b/patch_cmds/diffstat/testing/case02r1.ref
new file mode 100644
index 0000000..b63f8bc
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02r1.ref
@@ -0,0 +1,4 @@
+ bug-report | 2 !
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ clients/xterm/misc.c | 104 ++++++++++++++++++++++++++++++++++++++!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02r2.ref b/patch_cmds/diffstat/testing/case02r2.ref
new file mode 100644
index 0000000..b63f8bc
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02r2.ref
@@ -0,0 +1,4 @@
+ bug-report | 2 !
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ clients/xterm/misc.c | 104 ++++++++++++++++++++++++++++++++++++++!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case02u.ref b/patch_cmds/diffstat/testing/case02u.ref
new file mode 100644
index 0000000..e0d58ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case02u.ref
@@ -0,0 +1,4 @@
+ bug-report | 2
+ clients/xterm/misc.c | 104 +++++++++++++++++++++++++++++++++++++!!!!!!!!!!!
+ clients/xterm/Tekproc.c | 98 +++++++++--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 3 files changed, 102 insertions(+), 5 deletions(-), 97 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case03.pat b/patch_cmds/diffstat/testing/case03.pat
new file mode 100644
index 0000000..c72c21b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03.pat
@@ -0,0 +1,35 @@
+diff -r -c diffstat/config.cache diffstat.orig/config.cache
+*** 1.1 Fri Mar 15 19:27:13 1996
+--- diffstat.orig/config.cache Fri Mar 15 19:51:02 1996
+***************
+*** 13,28 ****
+ # --recheck option to rerun configure.
+ #
+ ac_cv_c_const=${ac_cv_c_const='yes'}
+! ac_cv_c_cross=${ac_cv_c_cross='yes'}
+ ac_cv_header_getopt_h=${ac_cv_header_getopt_h='yes'}
+ ac_cv_header_malloc_h=${ac_cv_header_malloc_h='yes'}
+--- 13,28 ----
+ # --recheck option to rerun configure.
+ #
+ ac_cv_c_const=${ac_cv_c_const='yes'}
+ ac_cv_header_getopt_h=${ac_cv_header_getopt_h='yes'}
+ ac_cv_header_malloc_h=${ac_cv_header_malloc_h='yes'}
+diff -r -c diffstat/config.h diffstat.orig/config.h
+*** diffstat/config.h Fri Mar 15 19:27:15 1996
+--- diffstat.orig/config.h Fri Mar 15 19:51:04 1996
+***************
+*** 6,11 ****
+--- 6,12 ----
+ */
+
+
++ #define STDC_HEADERS 1
+ #define HAVE_STDLIB_H 1
+ #define HAVE_UNISTD_H 1
+ #define HAVE_GETOPT_H 1
+Only in diffstat.orig: configure.out
+Binary files diffstat/diffstat and diffstat.orig/diffstat differ
+< nothing
+> nothing again
+Binary files diffstat/diffstat.o and diffstat.orig/diffstat.o differ
diff --git a/patch_cmds/diffstat/testing/case03.ref b/patch_cmds/diffstat/testing/case03.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03R.ref b/patch_cmds/diffstat/testing/case03R.ref
new file mode 100644
index 0000000..352160f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03R.ref
@@ -0,0 +1,6 @@
+ diffstat.orig/configure.out |only
+ diffstat/config.cache | 1 !
+ diffstat/config.h | 1 -
+ diffstat/diffstat |binary
+ diffstat/diffstat.o |binary
+ 5 files changed, 1 deletion(-), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03Rp0.ref b/patch_cmds/diffstat/testing/case03Rp0.ref
new file mode 100644
index 0000000..352160f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03Rp0.ref
@@ -0,0 +1,6 @@
+ diffstat.orig/configure.out |only
+ diffstat/config.cache | 1 !
+ diffstat/config.h | 1 -
+ diffstat/diffstat |binary
+ diffstat/diffstat.o |binary
+ 5 files changed, 1 deletion(-), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03b.ref b/patch_cmds/diffstat/testing/case03b.ref
new file mode 100644
index 0000000..7ae438f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03b.ref
@@ -0,0 +1,4 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ 3 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03f0.ref b/patch_cmds/diffstat/testing/case03f0.ref
new file mode 100644
index 0000000..0ea7d51
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03f0.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 0 + 0 - 1 !
+ config.h | 1 1 + 0 - 0 !
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03k.ref b/patch_cmds/diffstat/testing/case03k.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03k.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03p1.ref b/patch_cmds/diffstat/testing/case03p1.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03p1.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03p9.ref b/patch_cmds/diffstat/testing/case03p9.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03p9.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03r1.ref b/patch_cmds/diffstat/testing/case03r1.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03r1.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03r2.ref b/patch_cmds/diffstat/testing/case03r2.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03r2.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case03u.ref b/patch_cmds/diffstat/testing/case03u.ref
new file mode 100644
index 0000000..a5ceb9d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case03u.ref
@@ -0,0 +1,6 @@
+ config.cache | 1 !
+ config.h | 1 +
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ 5 files changed, 1 insertion(+), 1 modification(!)
diff --git a/patch_cmds/diffstat/testing/case04.pat b/patch_cmds/diffstat/testing/case04.pat
new file mode 100644
index 0000000..84e122d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04.pat
@@ -0,0 +1,352 @@
+diff -r -c diffstat/config.cache diffstat.orig/config.cache
+*** diffstat/config.cache Fri Mar 15 19:27:13 1996
+--- diffstat.orig/config.cache Fri Mar 15 19:51:02 1996
+***************
+*** 13,28 ****
+ # --recheck option to rerun configure.
+ #
+ ac_cv_c_const=${ac_cv_c_const='yes'}
+! ac_cv_c_cross=${ac_cv_c_cross='yes'}
+ ac_cv_header_getopt_h=${ac_cv_header_getopt_h='yes'}
+ ac_cv_header_malloc_h=${ac_cv_header_malloc_h='yes'}
+! ac_cv_header_stdc=${ac_cv_header_stdc='no'}
+ ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h='yes'}
+ ac_cv_header_string_h=${ac_cv_header_string_h='yes'}
+ ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'}
+ ac_cv_path_install=${ac_cv_path_install='/home/tom/com/install -c'}
+! ac_cv_prog_CC=${ac_cv_prog_CC='atacCC'}
+! ac_cv_prog_CPP=${ac_cv_prog_CPP='atacCC -E'}
+ ac_cv_prog_gcc=${ac_cv_prog_gcc='yes'}
+ ac_cv_prog_gcc_g=${ac_cv_prog_gcc_g='yes'}
+ ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional='no'}
+--- 13,28 ----
+ # --recheck option to rerun configure.
+ #
+ ac_cv_c_const=${ac_cv_c_const='yes'}
+! ac_cv_c_cross=${ac_cv_c_cross='no'}
+ ac_cv_header_getopt_h=${ac_cv_header_getopt_h='yes'}
+ ac_cv_header_malloc_h=${ac_cv_header_malloc_h='yes'}
+! ac_cv_header_stdc=${ac_cv_header_stdc='yes'}
+ ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h='yes'}
+ ac_cv_header_string_h=${ac_cv_header_string_h='yes'}
+ ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'}
+ ac_cv_path_install=${ac_cv_path_install='/home/tom/com/install -c'}
+! ac_cv_prog_CC=${ac_cv_prog_CC='gcc'}
+! ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'}
+ ac_cv_prog_gcc=${ac_cv_prog_gcc='yes'}
+ ac_cv_prog_gcc_g=${ac_cv_prog_gcc_g='yes'}
+ ac_cv_prog_gcc_traditional=${ac_cv_prog_gcc_traditional='no'}
+diff -r -c diffstat/config.h diffstat.orig/config.h
+*** diffstat/config.h Fri Mar 15 19:27:15 1996
+--- diffstat.orig/config.h Fri Mar 15 19:51:04 1996
+***************
+*** 6,11 ****
+--- 6,12 ----
+ */
+
+
++ #define STDC_HEADERS 1
+ #define HAVE_STDLIB_H 1
+ #define HAVE_UNISTD_H 1
+ #define HAVE_GETOPT_H 1
+diff -r -c diffstat/config.log diffstat.orig/config.log
+*** diffstat/config.log Fri Mar 15 19:26:59 1996
+--- diffstat.orig/config.log Fri Mar 15 19:50:58 1996
+***************
+*** 2,27 ****
+ running configure, to aid debugging if configure makes a mistake.
+
+ configure:607: sgtty.h: No such file or directory
+! /usr/tmp/atacCC17934/conftest.c:30: warning: missing braces around initializer for `ZUmain[0]'
+! /usr/tmp/atacCC17934/conftest.c:66: warning: function declaration isn't a prototype
+! /usr/tmp/atacCC17934/conftest.c: In function `main':
+! /usr/tmp/atacCC17934/conftest.c:67: warning: implicit declaration of function `aTaC'
+! /usr/tmp/atacCC17934/conftest.c: At top level:
+! /usr/tmp/atacCC17934/conftest.c:76: warning: function declaration isn't a prototype
+! /usr/tmp/atacCC17934/conftest.c: In function `t':
+! /usr/tmp/atacCC17934/conftest.c:97: warning: declaration of `t' shadows global declaration
+! /usr/tmp/atacCC17934/conftest.c:98: warning: unused variable `s'
+! /usr/tmp/atacCC17934/conftest.c:104: warning: declaration of `x' shadows previous local
+! /usr/tmp/atacCC17934/conftest.c:111: warning: declaration of `p' shadows previous local
+! /usr/tmp/atacCC17934/conftest.c:125: warning: unused variable `foo'
+! /usr/tmp/atacCC17934/conftest.c:86: warning: unused variable `zero'
+! /usr/tmp/atacCC17934/conftest.c:80: warning: unused variable `x'
+! /usr/tmp/atacCC17934/conftest.c: At top level:
+! /usr/tmp/atacCC17934/conftest.c:1: warning: `ZIDENT' defined but not used
+! /usr/tmp/atacCC17972/conftest.c:30: warning: missing braces around initializer for `ZUmain[0]'
+! /usr/tmp/atacCC17972/conftest.c:39: warning: return-type defaults to `int'
+! /usr/tmp/atacCC17972/conftest.c:39: warning: function declaration isn't a prototype
+! /usr/tmp/atacCC17972/conftest.c: In function `main':
+! /usr/tmp/atacCC17972/conftest.c:40: warning: implicit declaration of function `aTaC'
+! /usr/tmp/atacCC17972/conftest.c: At top level:
+! /usr/tmp/atacCC17972/conftest.c:1: warning: `ZIDENT' defined but not used
+--- 2,19 ----
+ running configure, to aid debugging if configure makes a mistake.
+
+ configure:607: sgtty.h: No such file or directory
+! configure:659: warning: function declaration isn't a prototype
+! configure:660: warning: function declaration isn't a prototype
+! configure: In function `t':
+! configure:680: warning: declaration of `t' shadows global declaration
+! configure:681: warning: unused variable `s'
+! configure:686: warning: declaration of `x' shadows previous local
+! configure:692: warning: declaration of `p' shadows previous local
+! configure:701: warning: unused variable `foo'
+! configure:669: warning: unused variable `zero'
+! configure:663: warning: unused variable `x'
+! configure:680: warning: `t' might be used uninitialized in this function
+! configure:698: warning: `b' might be used uninitialized in this function
+! configure:735: warning: return-type defaults to `int'
+! configure:735: warning: function declaration isn't a prototype
+! configure:821: warning: function declaration isn't a prototype
+diff -r -c diffstat/config.status diffstat.orig/config.status
+*** diffstat/config.status Fri Mar 15 19:27:14 1996
+--- diffstat.orig/config.status Fri Mar 15 19:51:03 1996
+***************
+*** 4,10 ****
+ # This directory was configured as follows,
+ # on host dickey-ppp:
+ #
+! # ./configure
+ #
+ # Compiler output produced by configure, useful for debugging
+ # configure, is in ./config.log if it exists.
+--- 4,10 ----
+ # This directory was configured as follows,
+ # on host dickey-ppp:
+ #
+! # ./configure --verbose --disable-echo --enable-warnings --with-warnings
+ #
+ # Compiler output produced by configure, useful for debugging
+ # configure, is in ./config.log if it exists.
+***************
+*** 14,21 ****
+ do
+ case "$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+! echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion"
+! exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "./config.status generated by autoconf version 2.3"
+ exit 0 ;;
+--- 14,21 ----
+ do
+ case "$ac_option" in
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+! echo "running ${CONFIG_SHELL-/bin/sh} ./configure --verbose --disable-echo --enable-warnings --with-warnings --no-create --no-recursion"
+! exec ${CONFIG_SHELL-/bin/sh} ./configure --verbose --disable-echo --enable-warnings --with-warnings --no-create --no-recursion ;;
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+ echo "./config.status generated by autoconf version 2.3"
+ exit 0 ;;
+***************
+*** 38,53 ****
+ s%@CFLAGS@%-O -Wall -Wshadow -Wconversion -Wstrict-prototypes -Wmissing-prototypes%g
+ s%@CPPFLAGS@%%g
+ s%@CXXFLAGS@%%g
+! s%@DEFS@% -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STRING_H=1 -DHAVE_MALLOC_H=1 %g
+ s%@LDFLAGS@%%g
+ s%@LIBS@%%g
+ s%@exec_prefix@%${prefix}%g
+ s%@prefix@%/usr/local%g
+ s%@program_transform_name@%s,x,x,%g
+! s%@CC@%atacCC%g
+ s%@INSTALL_PROGRAM@%${INSTALL}%g
+ s%@INSTALL_DATA@%${INSTALL} -m 644%g
+! s%@CPP@%atacCC -E%g
+
+ CEOF
+
+--- 38,53 ----
+ s%@CFLAGS@%-O -Wall -Wshadow -Wconversion -Wstrict-prototypes -Wmissing-prototypes%g
+ s%@CPPFLAGS@%%g
+ s%@CXXFLAGS@%%g
+! s%@DEFS@% -DSTDC_HEADERS=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STRING_H=1 -DHAVE_MALLOC_H=1 %g
+ s%@LDFLAGS@%%g
+ s%@LIBS@%%g
+ s%@exec_prefix@%${prefix}%g
+ s%@prefix@%/usr/local%g
+ s%@program_transform_name@%s,x,x,%g
+! s%@CC@%gcc%g
+ s%@INSTALL_PROGRAM@%${INSTALL}%g
+ s%@INSTALL_DATA@%${INSTALL} -m 644%g
+! s%@CPP@%gcc -E%g
+
+ CEOF
+
+Only in diffstat.orig: configure.out
+Binary files diffstat/diffstat and diffstat.orig/diffstat differ
+Binary files diffstat/diffstat.o and diffstat.orig/diffstat.o differ
+diff -r -c diffstat/makefile diffstat.orig/makefile
+*** diffstat/makefile Fri Mar 15 19:27:15 1996
+--- diffstat.orig/makefile Fri Mar 15 19:51:04 1996
+***************
+*** 7,13 ****
+
+ srcdir = .
+
+! CC = atacCC
+ LINK = $(CC)
+ INSTALL = /home/tom/com/install -c
+ INSTALL_PROGRAM = ${INSTALL}
+--- 7,13 ----
+
+ srcdir = .
+
+! CC = gcc
+ LINK = $(CC)
+ INSTALL = /home/tom/com/install -c
+ INSTALL_PROGRAM = ${INSTALL}
+Only in diffstat/testing: Xlib-1.patch-
+Only in diffstat/testing: Xlib-1.ref
+Only in diffstat/testing: Xlib-2.patch-
+Only in diffstat/testing: Xlib-2.ref
+Only in diffstat/testing: Xlib-3.patch-
+Only in diffstat/testing: Xlib-3.ref
+Only in diffstat/testing: config-1.ref
+Only in diffstat/testing: nugent.ref
+Only in diffstat/testing: xserver-1.ref
+Only in diffstat/testing: xserver-2.patch-
+Only in diffstat/testing: xserver-2.ref
+Only in diffstat/testing: xterm-1.patch-
+Only in diffstat/testing: xterm-1.ref
+Only in diffstat/testing: xterm-10.patch-
+Only in diffstat/testing: xterm-10.ref
+Only in diffstat/testing: xterm-11.patch-
+Only in diffstat/testing: xterm-11.ref
+Only in diffstat/testing: xterm-2.patch-
+Only in diffstat/testing: xterm-2.ref
+Only in diffstat/testing: xterm-3.patch-
+Only in diffstat/testing: xterm-3.ref
+Only in diffstat/testing: xterm-4.patch-
+Only in diffstat/testing: xterm-4.ref
+Only in diffstat/testing: xterm-5.patch-
+Only in diffstat/testing: xterm-5.ref
+Only in diffstat/testing: xterm-6.patch-
+Only in diffstat/testing: xterm-6.ref
+Only in diffstat/testing: xterm-7.ref
+Only in diffstat/testing: xterm-8.patch-
+Only in diffstat/testing: xterm-8.ref
+Only in diffstat/testing: xterm-9.patch-
+Only in diffstat/testing: xterm-9.ref
+diff -r diffstat/config.cache diffstat.orig/config.cache
+16c16
+< ac_cv_c_cross=${ac_cv_c_cross='yes'}
+---
+> ac_cv_c_cross=${ac_cv_c_cross='no'}
+19c19
+< ac_cv_header_stdc=${ac_cv_header_stdc='no'}
+---
+> ac_cv_header_stdc=${ac_cv_header_stdc='yes'}
+24,25c24,25
+< ac_cv_prog_CC=${ac_cv_prog_CC='atacCC'}
+< ac_cv_prog_CPP=${ac_cv_prog_CPP='atacCC -E'}
+---
+> ac_cv_prog_CC=${ac_cv_prog_CC='gcc'}
+> ac_cv_prog_CPP=${ac_cv_prog_CPP='gcc -E'}
+diff -r diffstat/config.h diffstat.orig/config.h
+8a9
+> #define STDC_HEADERS 1
+diff -r diffstat/config.log diffstat.orig/config.log
+5,27c5,19
+< /usr/tmp/atacCC17934/conftest.c:30: warning: missing braces around initializer for `ZUmain[0]'
+< /usr/tmp/atacCC17934/conftest.c:66: warning: function declaration isn't a prototype
+< /usr/tmp/atacCC17934/conftest.c: In function `main':
+< /usr/tmp/atacCC17934/conftest.c:67: warning: implicit declaration of function `aTaC'
+< /usr/tmp/atacCC17934/conftest.c: At top level:
+< /usr/tmp/atacCC17934/conftest.c:76: warning: function declaration isn't a prototype
+< /usr/tmp/atacCC17934/conftest.c: In function `t':
+< /usr/tmp/atacCC17934/conftest.c:97: warning: declaration of `t' shadows global declaration
+< /usr/tmp/atacCC17934/conftest.c:98: warning: unused variable `s'
+< /usr/tmp/atacCC17934/conftest.c:104: warning: declaration of `x' shadows previous local
+< /usr/tmp/atacCC17934/conftest.c:111: warning: declaration of `p' shadows previous local
+< /usr/tmp/atacCC17934/conftest.c:125: warning: unused variable `foo'
+< /usr/tmp/atacCC17934/conftest.c:86: warning: unused variable `zero'
+< /usr/tmp/atacCC17934/conftest.c:80: warning: unused variable `x'
+< /usr/tmp/atacCC17934/conftest.c: At top level:
+< /usr/tmp/atacCC17934/conftest.c:1: warning: `ZIDENT' defined but not used
+< /usr/tmp/atacCC17972/conftest.c:30: warning: missing braces around initializer for `ZUmain[0]'
+< /usr/tmp/atacCC17972/conftest.c:39: warning: return-type defaults to `int'
+< /usr/tmp/atacCC17972/conftest.c:39: warning: function declaration isn't a prototype
+< /usr/tmp/atacCC17972/conftest.c: In function `main':
+< /usr/tmp/atacCC17972/conftest.c:40: warning: implicit declaration of function `aTaC'
+< /usr/tmp/atacCC17972/conftest.c: At top level:
+< /usr/tmp/atacCC17972/conftest.c:1: warning: `ZIDENT' defined but not used
+---
+> configure:659: warning: function declaration isn't a prototype
+> configure:660: warning: function declaration isn't a prototype
+> configure: In function `t':
+> configure:680: warning: declaration of `t' shadows global declaration
+> configure:681: warning: unused variable `s'
+> configure:686: warning: declaration of `x' shadows previous local
+> configure:692: warning: declaration of `p' shadows previous local
+> configure:701: warning: unused variable `foo'
+> configure:669: warning: unused variable `zero'
+> configure:663: warning: unused variable `x'
+> configure:680: warning: `t' might be used uninitialized in this function
+> configure:698: warning: `b' might be used uninitialized in this function
+> configure:735: warning: return-type defaults to `int'
+> configure:735: warning: function declaration isn't a prototype
+> configure:821: warning: function declaration isn't a prototype
+diff -r diffstat/config.status diffstat.orig/config.status
+7c7
+< # ./configure
+---
+> # ./configure --verbose --disable-echo --enable-warnings --with-warnings
+17,18c17,18
+< echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion"
+< exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;;
+---
+> echo "running ${CONFIG_SHELL-/bin/sh} ./configure --verbose --disable-echo --enable-warnings --with-warnings --no-create --no-recursion"
+> exec ${CONFIG_SHELL-/bin/sh} ./configure --verbose --disable-echo --enable-warnings --with-warnings --no-create --no-recursion ;;
+41c41
+< s%@DEFS@% -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STRING_H=1 -DHAVE_MALLOC_H=1 %g
+---
+> s%@DEFS@% -DSTDC_HEADERS=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETOPT_H=1 -DHAVE_STRING_H=1 -DHAVE_MALLOC_H=1 %g
+47c47
+< s%@CC@%atacCC%g
+---
+> s%@CC@%gcc%g
+50c50
+< s%@CPP@%atacCC -E%g
+---
+> s%@CPP@%gcc -E%g
+Only in diffstat.orig: configure.out
+Binary files diffstat/diffstat and diffstat.orig/diffstat differ
+Binary files diffstat/diffstat.o and diffstat.orig/diffstat.o differ
+diff -r diffstat/makefile diffstat.orig/makefile
+10c10
+< CC = atacCC
+---
+> CC = gcc
+Only in diffstat/testing: Xlib-1.patch-
+Only in diffstat/testing: Xlib-1.ref
+Only in diffstat/testing: Xlib-2.patch-
+Only in diffstat/testing: Xlib-2.ref
+Only in diffstat/testing: Xlib-3.patch-
+Only in diffstat/testing: Xlib-3.ref
+Only in diffstat/testing: config-1.ref
+Only in diffstat/testing: nugent.ref
+Only in diffstat/testing: xserver-1.ref
+Only in diffstat/testing: xserver-2.patch-
+Only in diffstat/testing: xserver-2.ref
+Only in diffstat/testing: xterm-1.patch-
+Only in diffstat/testing: xterm-1.ref
+Only in diffstat/testing: xterm-10.patch-
+Only in diffstat/testing: xterm-10.ref
+Only in diffstat/testing: xterm-11.patch-
+Only in diffstat/testing: xterm-11.ref
+Only in diffstat/testing: xterm-2.patch-
+Only in diffstat/testing: xterm-2.ref
+Only in diffstat/testing: xterm-3.patch-
+Only in diffstat/testing: xterm-3.ref
+Only in diffstat/testing: xterm-4.patch-
+Only in diffstat/testing: xterm-4.ref
+Only in diffstat/testing: xterm-5.patch-
+Only in diffstat/testing: xterm-5.ref
+Only in diffstat/testing: xterm-6.patch-
+Only in diffstat/testing: xterm-6.ref
+Only in diffstat/testing: xterm-7.ref
+Only in diffstat/testing: xterm-8.patch-
+Only in diffstat/testing: xterm-8.ref
+Only in diffstat/testing: xterm-9.patch-
+Only in diffstat/testing: xterm-9.ref
diff --git a/patch_cmds/diffstat/testing/case04.ref b/patch_cmds/diffstat/testing/case04.ref
new file mode 100644
index 0000000..48cc647
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/config.cache | 16 ++--!!!!
+ diffstat.orig/config.h | 2 +
+ diffstat.orig/config.log | 76 +++++++------------!!!!!!!!!!!!!!!!!!
+ diffstat.orig/config.status | 24 +++---!!!!!!
+ diffstat.orig/configure.out |only
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/makefile | 4 -
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04R.ref b/patch_cmds/diffstat/testing/case04R.ref
new file mode 100644
index 0000000..b33d82b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04R.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/configure.out |only
+ diffstat/config.cache | 16 ++--!!!!
+ diffstat/config.h | 2 -
+ diffstat/config.log | 76 +++++++++++--------!!!!!!!!!!!!!!!!!!
+ diffstat/config.status | 24 +++---!!!!!!
+ diffstat/diffstat |binary
+ diffstat/diffstat.o |binary
+ diffstat/makefile | 4 -
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 34 insertions(+), 28 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04Rp0.ref b/patch_cmds/diffstat/testing/case04Rp0.ref
new file mode 100644
index 0000000..b33d82b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04Rp0.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/configure.out |only
+ diffstat/config.cache | 16 ++--!!!!
+ diffstat/config.h | 2 -
+ diffstat/config.log | 76 +++++++++++--------!!!!!!!!!!!!!!!!!!
+ diffstat/config.status | 24 +++---!!!!!!
+ diffstat/diffstat |binary
+ diffstat/diffstat.o |binary
+ diffstat/makefile | 4 -
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 34 insertions(+), 28 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04b.ref b/patch_cmds/diffstat/testing/case04b.ref
new file mode 100644
index 0000000..84c7b4a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04b.ref
@@ -0,0 +1,39 @@
+ diffstat.orig/config.cache | 16 ++--!!!!
+ diffstat.orig/config.h | 2 +
+ diffstat.orig/config.log | 76 +++++++------------!!!!!!!!!!!!!!!!!!
+ diffstat.orig/config.status | 24 +++---!!!!!!
+ diffstat.orig/configure.out |only
+ diffstat.orig/makefile | 4 -
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 38 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04f0.ref b/patch_cmds/diffstat/testing/case04f0.ref
new file mode 100644
index 0000000..7765c5f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04f0.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/config.cache | 16 4 + 4 - 8 !
+ diffstat.orig/config.h | 2 2 + 0 - 0 !
+ diffstat.orig/config.log | 76 15 + 23 - 38 !
+ diffstat.orig/config.status | 24 6 + 6 - 12 !
+ diffstat.orig/configure.out |only
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/makefile | 4 1 + 1 - 2 !
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04k.ref b/patch_cmds/diffstat/testing/case04k.ref
new file mode 100644
index 0000000..b6f2928
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04k.ref
@@ -0,0 +1,81 @@
+ diffstat.orig/config.cache | 8 !!!!!!!!
+ diffstat.orig/config.cache | 8 ++++----
+ diffstat.orig/config.h | 1 +
+ diffstat.orig/config.h | 1 +
+ diffstat.orig/config.log | 38 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ diffstat.orig/config.log | 38 +++++++++++++++-----------------------
+ diffstat.orig/config.status | 12 !!!!!!!!!!!!
+ diffstat.orig/config.status | 12 ++++++------
+ diffstat.orig/configure.out |only
+ diffstat.orig/configure.out |only
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/makefile | 2 !!
+ diffstat.orig/makefile | 2 +-
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ diffstat/testing/xterm-9.ref |only
+ 80 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04p1.ref b/patch_cmds/diffstat/testing/case04p1.ref
new file mode 100644
index 0000000..4449805
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04p1.ref
@@ -0,0 +1,41 @@
+ config.cache | 16 ++--!!!!
+ config.h | 2 +
+ config.log | 76 +++++++++--------------!!!!!!!!!!!!!!!!!!!!!!!
+ config.status | 24 +++----!!!!!!
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ makefile | 4 -
+ testing/Xlib-1.patch- |only
+ testing/Xlib-1.ref |only
+ testing/Xlib-2.patch- |only
+ testing/Xlib-2.ref |only
+ testing/Xlib-3.patch- |only
+ testing/Xlib-3.ref |only
+ testing/config-1.ref |only
+ testing/nugent.ref |only
+ testing/xserver-1.ref |only
+ testing/xserver-2.patch- |only
+ testing/xserver-2.ref |only
+ testing/xterm-1.patch- |only
+ testing/xterm-1.ref |only
+ testing/xterm-10.patch- |only
+ testing/xterm-10.ref |only
+ testing/xterm-11.patch- |only
+ testing/xterm-11.ref |only
+ testing/xterm-2.patch- |only
+ testing/xterm-2.ref |only
+ testing/xterm-3.patch- |only
+ testing/xterm-3.ref |only
+ testing/xterm-4.patch- |only
+ testing/xterm-4.ref |only
+ testing/xterm-5.patch- |only
+ testing/xterm-5.ref |only
+ testing/xterm-6.patch- |only
+ testing/xterm-6.ref |only
+ testing/xterm-7.ref |only
+ testing/xterm-8.patch- |only
+ testing/xterm-8.ref |only
+ testing/xterm-9.patch- |only
+ testing/xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04p9.ref b/patch_cmds/diffstat/testing/case04p9.ref
new file mode 100644
index 0000000..dcff047
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04p9.ref
@@ -0,0 +1,41 @@
+ Xlib-1.patch- |only
+ Xlib-1.ref |only
+ Xlib-2.patch- |only
+ Xlib-2.ref |only
+ Xlib-3.patch- |only
+ Xlib-3.ref |only
+ config-1.ref |only
+ config.cache | 16 ++---!!!!
+ config.h | 2 +
+ config.log | 76 ++++++++++-----------------!!!!!!!!!!!!!!!!!!!!!!!!!!
+ config.status | 24 ++++----!!!!!!!!
+ configure.out |only
+ diffstat |binary
+ diffstat.o |binary
+ makefile | 4 -
+ nugent.ref |only
+ xserver-1.ref |only
+ xserver-2.patch- |only
+ xserver-2.ref |only
+ xterm-1.patch- |only
+ xterm-1.ref |only
+ xterm-10.patch- |only
+ xterm-10.ref |only
+ xterm-11.patch- |only
+ xterm-11.ref |only
+ xterm-2.patch- |only
+ xterm-2.ref |only
+ xterm-3.patch- |only
+ xterm-3.ref |only
+ xterm-4.patch- |only
+ xterm-4.ref |only
+ xterm-5.patch- |only
+ xterm-5.ref |only
+ xterm-6.patch- |only
+ xterm-6.ref |only
+ xterm-7.ref |only
+ xterm-8.patch- |only
+ xterm-8.ref |only
+ xterm-9.patch- |only
+ xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04r1.ref b/patch_cmds/diffstat/testing/case04r1.ref
new file mode 100644
index 0000000..9d2a23a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04r1.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/config.cache | 16 ++--!!!!
+ diffstat.orig/config.h | 2 +
+ diffstat.orig/config.log | 76 +++++++-----------!!!!!!!!!!!!!!!!!!!
+ diffstat.orig/config.status | 24 +++---!!!!!!
+ diffstat.orig/configure.out |only
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/makefile | 4 !
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04r2.ref b/patch_cmds/diffstat/testing/case04r2.ref
new file mode 100644
index 0000000..9d2a23a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04r2.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/config.cache | 16 ++--!!!!
+ diffstat.orig/config.h | 2 +
+ diffstat.orig/config.log | 76 +++++++-----------!!!!!!!!!!!!!!!!!!!
+ diffstat.orig/config.status | 24 +++---!!!!!!
+ diffstat.orig/configure.out |only
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/makefile | 4 !
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case04u.ref b/patch_cmds/diffstat/testing/case04u.ref
new file mode 100644
index 0000000..48cc647
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case04u.ref
@@ -0,0 +1,41 @@
+ diffstat.orig/config.cache | 16 ++--!!!!
+ diffstat.orig/config.h | 2 +
+ diffstat.orig/config.log | 76 +++++++------------!!!!!!!!!!!!!!!!!!
+ diffstat.orig/config.status | 24 +++---!!!!!!
+ diffstat.orig/configure.out |only
+ diffstat.orig/diffstat |binary
+ diffstat.orig/diffstat.o |binary
+ diffstat.orig/makefile | 4 -
+ diffstat/testing/Xlib-1.patch- |only
+ diffstat/testing/Xlib-1.ref |only
+ diffstat/testing/Xlib-2.patch- |only
+ diffstat/testing/Xlib-2.ref |only
+ diffstat/testing/Xlib-3.patch- |only
+ diffstat/testing/Xlib-3.ref |only
+ diffstat/testing/config-1.ref |only
+ diffstat/testing/nugent.ref |only
+ diffstat/testing/xserver-1.ref |only
+ diffstat/testing/xserver-2.patch- |only
+ diffstat/testing/xserver-2.ref |only
+ diffstat/testing/xterm-1.patch- |only
+ diffstat/testing/xterm-1.ref |only
+ diffstat/testing/xterm-10.patch- |only
+ diffstat/testing/xterm-10.ref |only
+ diffstat/testing/xterm-11.patch- |only
+ diffstat/testing/xterm-11.ref |only
+ diffstat/testing/xterm-2.patch- |only
+ diffstat/testing/xterm-2.ref |only
+ diffstat/testing/xterm-3.patch- |only
+ diffstat/testing/xterm-3.ref |only
+ diffstat/testing/xterm-4.patch- |only
+ diffstat/testing/xterm-4.ref |only
+ diffstat/testing/xterm-5.patch- |only
+ diffstat/testing/xterm-5.ref |only
+ diffstat/testing/xterm-6.patch- |only
+ diffstat/testing/xterm-6.ref |only
+ diffstat/testing/xterm-7.ref |only
+ diffstat/testing/xterm-8.patch- |only
+ diffstat/testing/xterm-8.ref |only
+ diffstat/testing/xterm-9.patch- |only
+ diffstat/testing/xterm-9.ref |only
+ 40 files changed, 28 insertions(+), 34 deletions(-), 60 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case05.pat b/patch_cmds/diffstat/testing/case05.pat
new file mode 100644
index 0000000..6328f4b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05.pat
@@ -0,0 +1,17 @@
+diff -r -c diffstat/config.cache diffstat.orig/config.cache
+*** 1.1 Fri Mar 15 19:27:13 1996
+--- diffstat.orig/config.cache Fri Mar 15 19:51:02 1996
+***************
+*** 13,28 ****
+ # --recheck option to rerun configure.
+ #
+ ac_cv_c_const=${ac_cv_c_const='yes'}
+- ac_cv_c_cross=${ac_cv_c_cross='yes'}
+ ac_cv_header_getopt_h=${ac_cv_header_getopt_h='yes'}
+ ac_cv_header_malloc_h=${ac_cv_header_malloc_h='yes'}
+--- 13,28 ----
+ # --recheck option to rerun configure.
+ #
+ ac_cv_c_const=${ac_cv_c_const='yes'}
+ ac_cv_header_getopt_h=${ac_cv_header_getopt_h='yes'}
+ ac_cv_header_malloc_h=${ac_cv_header_malloc_h='yes'}
diff --git a/patch_cmds/diffstat/testing/case05.ref b/patch_cmds/diffstat/testing/case05.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05R.ref b/patch_cmds/diffstat/testing/case05R.ref
new file mode 100644
index 0000000..0f120f4
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05R.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case05Rp0.ref b/patch_cmds/diffstat/testing/case05Rp0.ref
new file mode 100644
index 0000000..8e29a87
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05Rp0.ref
@@ -0,0 +1,2 @@
+ diffstat/config.cache | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case05b.ref b/patch_cmds/diffstat/testing/case05b.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05b.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05f0.ref b/patch_cmds/diffstat/testing/case05f0.ref
new file mode 100644
index 0000000..22e6a1e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05f0.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 0 + 1 - 0 !
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05k.ref b/patch_cmds/diffstat/testing/case05k.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05k.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05p1.ref b/patch_cmds/diffstat/testing/case05p1.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05p1.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05p9.ref b/patch_cmds/diffstat/testing/case05p9.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05p9.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05r1.ref b/patch_cmds/diffstat/testing/case05r1.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05r1.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05r2.ref b/patch_cmds/diffstat/testing/case05r2.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05r2.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case05u.ref b/patch_cmds/diffstat/testing/case05u.ref
new file mode 100644
index 0000000..649df11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case05u.ref
@@ -0,0 +1,2 @@
+ config.cache | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case06.pat b/patch_cmds/diffstat/testing/case06.pat
new file mode 100644
index 0000000..ddc1760
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06.pat
@@ -0,0 +1,323 @@
+From esr@locke.ccil.org Sat Jan 13 18:02 EST 1996
+Received: from locke.ccil.org (esr@locke.ccil.org [205.164.136.88]) by mail.Clark.Net (8.7.3/8.6.5) with SMTP id SAA07403 for <dickey@clark.net>; Sat, 13 Jan 1996 18:02:54 -0500 (EST)
+Received: (esr@localhost) by locke.ccil.org (8.6.9/8.6.10) id SAA23481; Sat, 13 Jan 1996 18:28:57 -0500
+From: "Eric S. Raymond" <esr@locke.ccil.org>
+Message-Id: <199601132328.SAA23481@locke.ccil.org>
+Subject: patch #283 -- change line-breakout optimization logic
+To: zmbenhal@netcom.com, dickey@clark.net, ncurses-list@netcom.com
+Date: Sat, 13 Jan 1996 18:28:56 -0500 (EST)
+X-Mailer: ELM [version 2.4 PL24]
+Content-Type: text
+Content-Length: 9395
+Status: RO
+
+This patch (#283) changes the logic for line-breakout optimization.
+
+Daniel Barlow complained:
+>According to curs_inopts(3), curses periodically looks at the keyboard
+>while refreshing, and stops immediately if there is input pending.
+>
+>This works too well! I was playing with emacs to see if it would like
+>to use real ncurses routines to output to the screen instead of just
+>using it as a glorified termcap library, and found that if I held down
+>the `page down' key (which autorepeats), nothing displayed at all
+>until I let go of it again.
+
+This patch addresses the problem. See the comment leading the lib_doupdate.c
+patch band for details.
+
+This patch also makes a minor change in lib_initscr() to allow the maximum
+escape delay to be set from the environment. Finally, it includes a
+workaround for the ncurses 'p' test bug. A real fix is next on my agenda.
+
+Diffs between last version checked in and current workfile(s):
+
+--- NEWS 1996/01/11 19:47:02 1.3
++++ NEWS 1996/01/12 17:10:09
+@@ -6,6 +6,8 @@
+ * fixed broken wsyncup()/wysncdown(), as a result wnoutrefresh() now has
+ copy-changed-lines behavior.
+ * added and documented wresize() code.
++* changed the line-breakout optimization code to allow some lines to be
++ emitted before the first check.
+
+ ### ncurses-1.9.7 -> 1.9.8a
+
+--- ncurses/lib_doupdate.c 1996/01/12 16:09:44 1.6
++++ ncurses/lib_doupdate.c 1996/01/12 16:50:21
+@@ -43,6 +43,17 @@
+ #include "term.h"
+
+ /*
++ * This define controls the line-breakout optimization. Every once in a
++ * while during screen refresh, we want to check for input and abort the
++ * update if there's some waiting. CHECK_INTERVAL controls the number of
++ * changed lines to be emitted between input checks.
++ *
++ * Note: Input-check-and-abort is no longer done if the screen is being
++ * updated from scratch. This is a feature, not a bug.
++ */
++#define CHECK_INTERVAL 6
++
++/*
+ * Enable checking to see if doupdate and friends are tracking the true
+ * cursor position correctly. NOTE: this is a debugging hack which will
+ * work ONLY on ANSI-compatible terminals!
+@@ -146,6 +157,26 @@
+ }
+ }
+
++static bool check_pending(void)
++/* check for pending input */
++{
++ if (SP->_checkfd >= 0) {
++ fd_set fdset;
++ struct timeval ktimeout;
++
++ ktimeout.tv_sec =
++ ktimeout.tv_usec = 0;
++
++ FD_ZERO(&fdset);
++ FD_SET(SP->_checkfd, &fdset);
++ if (select(SP->_checkfd+1, &fdset, NULL, NULL, &ktimeout) != 0)
++ {
++ fflush(SP->_ofp);
++ return OK;
++ }
++ }
++}
++
+ /*
+ * No one supports recursive inline functions. However, gcc is quieter if we
+ * instantiate the recursive part separately.
+@@ -278,22 +309,6 @@
+ SP->_endwin = FALSE;
+ }
+
+- /* check for pending input */
+- if (SP->_checkfd >= 0) {
+- fd_set fdset;
+- struct timeval ktimeout;
+-
+- ktimeout.tv_sec =
+- ktimeout.tv_usec = 0;
+-
+- FD_ZERO(&fdset);
+- FD_SET(SP->_checkfd, &fdset);
+- if (select(SP->_checkfd+1, &fdset, NULL, NULL, &ktimeout) != 0) {
+- fflush(SP->_ofp);
+- return OK;
+- }
+- }
+-
+ /*
+ * FIXME: Full support for magic-cookie terminals could go in here.
+ * The theory: we scan the virtual screen looking for attribute
+@@ -315,10 +330,15 @@
+ ClrUpdate(newscr);
+ newscr->_clear = FALSE;
+ } else {
++ int changedlines;
++
+ _nc_scroll_optimize();
+
+ T(("Transforming lines"));
+- for (i = 0; i < min(screen_lines, newscr->_maxy + 1); i++) {
++ for (i = changedlines = 0;
++ i < min(screen_lines,newscr->_maxy+1);
++ i++)
++ {
+ /*
+ * newscr->line[i].firstchar is normally set
+ * by wnoutrefresh. curscr->line[i].firstchar
+@@ -327,17 +347,43 @@
+ */
+ if (newscr->_line[i].firstchar != _NOCHANGE
+ || curscr->_line[i].firstchar != _NOCHANGE)
++ {
+ TransformLine(i);
++ changedlines++;
++ }
++
++ /* mark line changed successfully */
++ if (i <= newscr->_maxy)
++ {
++ newscr->_line[i].firstchar = _NOCHANGE;
++ newscr->_line[i].lastchar = _NOCHANGE;
++ newscr->_line[i].oldindex = i;
++ }
++ if (i <= curscr->_maxy)
++ {
++ curscr->_line[i].firstchar = _NOCHANGE;
++ curscr->_line[i].lastchar = _NOCHANGE;
++ curscr->_line[i].oldindex = i;
++ }
++
++ /*
++ * Here is our line-breakout optimization.
++ */
++ if ((changedlines % CHECK_INTERVAL) == changedlines-1 && check_pending())
++ goto cleanup;
+ }
+ }
+ }
+- T(("marking screen as updated"));
+- for (i = 0; i <= newscr->_maxy; i++) {
++
++ /* this code won't be executed often */
++ for (i = screen_lines; i <= newscr->_maxy; i++)
++ {
+ newscr->_line[i].firstchar = _NOCHANGE;
+ newscr->_line[i].lastchar = _NOCHANGE;
+ newscr->_line[i].oldindex = i;
+ }
+- for (i = 0; i <= curscr->_maxy; i++) {
++ for (i = screen_lines; i <= curscr->_maxy; i++)
++ {
+ curscr->_line[i].firstchar = _NOCHANGE;
+ curscr->_line[i].lastchar = _NOCHANGE;
+ curscr->_line[i].oldindex = i;
+@@ -346,10 +392,11 @@
+ curscr->_curx = newscr->_curx;
+ curscr->_cury = newscr->_cury;
+
++ GoTo(curscr->_cury, curscr->_curx);
++
++ cleanup:
+ if (curscr->_attrs != A_NORMAL)
+ vidattr(curscr->_attrs = A_NORMAL);
+-
+- GoTo(curscr->_cury, curscr->_curx);
+
+ fflush(SP->_ofp);
+
+--- ncurses/lib_initscr.c 1996/01/12 20:11:34 1.1
++++ ncurses/lib_initscr.c 1996/01/12 20:17:54
+@@ -41,6 +41,10 @@
+ exit(1);
+ }
+
++ /* allow user to set maximum escape delay from the environment */
++ if ((name = getenv("ESCDELAY")))
++ ESCDELAY = atoi(getenv("ESCDELAY"));
++
+ def_shell_mode();
+
+ /* follow the XPG4 requirement to turn echo off at this point */
+--- ncurses/lib_pad.c 1995/12/29 15:34:11 1.2
++++ ncurses/lib_pad.c 1996/01/13 17:56:24
+@@ -107,6 +107,7 @@
+ short m, n;
+ short pmaxrow;
+ short pmaxcol;
++bool wide;
+
+ T(("pnoutrefresh(%p, %d, %d, %d, %d, %d, %d) called",
+ win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
+@@ -140,20 +141,46 @@
+
+ T(("pad being refreshed"));
+
++ /*
++ * For pure efficiency, we'd want to transfer scrolling information
++ * from the pad to newscr whenever the window is wide enough that
++ * its update will dominate the cost of the update for the horizontal
++ * band of newscr that it occupies. Unfortunately, this threshold
++ * tends to be complex to estimate, and in any case scrolling the
++ * whole band and rewriting the parts outside win's image would look
++ * really ugly. So. What we do is consider the pad "wide" if it
++ * either (a) occupies the whole width of newscr, or (b) occupies
++ * all but at most one column on either vertical edge of the screen
++ * (this caters to fussy people who put boxes around full-screen
++ * windows). Note that changing this formula will not break any code,
++ * merely change the costs of various update cases.
++ */
++ wide = (sminrow <= 1 && win->_maxx >= (newscr->_maxx - 1));
++
+ for (i = pminrow, m = sminrow; i <= pmaxrow; i++, m++) {
++ register struct ldat *nline = &newscr->_line[m];
++ register struct ldat *oline = &win->_line[i];
++
+ for (j = pmincol, n = smincol; j <= pmaxcol; j++, n++) {
+- if (win->_line[i].text[j] != newscr->_line[m].text[n]) {
+- newscr->_line[m].text[n] = win->_line[i].text[j];
++ if (oline->text[j] != nline->text[n]) {
++ nline->text[n] = oline->text[j];
++
++ if (nline->firstchar == _NOCHANGE)
++ nline->firstchar = nline->lastchar = n;
++ else if (n < nline->firstchar)
++ nline->firstchar = n;
++ else if (n > nline->lastchar)
++ nline->lastchar = n;
++ }
++ }
++
++ if (wide) {
++ int oind = oline->oldindex;
+
+- if (newscr->_line[m].firstchar == _NOCHANGE)
+- newscr->_line[m].firstchar = newscr->_line[m].lastchar = n;
+- else if (n < newscr->_line[m].firstchar)
+- newscr->_line[m].firstchar = n;
+- else if (n > newscr->_line[m].lastchar)
+- newscr->_line[m].lastchar = n;
+- }
++ nline->oldindex = (oind == _NEWINDEX) ? _NEWINDEX : sminrow + oind;
+ }
+- win->_line[i].firstchar = win->_line[i].lastchar = _NOCHANGE;
++ oline->firstchar = oline->lastchar = _NOCHANGE;
++ oline->oldindex = i;
+ }
+
+ win->_begx = smincol;
+@@ -176,6 +203,7 @@
+ newscr->_cury = win->_cury - pminrow + win->_begy;
+ newscr->_curx = win->_curx - pmincol + win->_begx;
+ }
++ win->_flags &= ~_HASMOVED;
+ return OK;
+ }
+
+--- test/ncurses.c 1996/01/11 19:49:39 1.4
++++ test/ncurses.c 1996/01/13 23:00:26
+@@ -1368,6 +1368,35 @@
+ }
+
+ mvaddch(porty - 1, portx - 1, ACS_LRCORNER);
++
++ /*
++ * FIXME: this touchwin should not be necessary!
++ * There is something not quite right with the pad code
++ * Thomas Dickey writes:
++ *
++ * In the ncurses 'p' test, if I (now) press '<', '>', '<', then the
++ * right boundary of the box that outlines the pad is blanked. That's
++ * because
++ *
++ * + the value that marks the right boundary (porty) is incremented,
++ *
++ * + a new vertical line is written to stdscr
++ *
++ * + stdscr is flushed with wnoutrefresh, clearing its firstchar &
++ * lastchar markers. This writes the change (the new vertical line)
++ * to newscr.
++ *
++ * => previously stdscr was written to newscr entirely
++ *
++ * + the pad is written using prefresh, which writes directly to
++ * newscr, bypassing stdscr entirely.
++ *
++ * When I've pressed '>' (see above), this means that stdscr contains
++ * two columns of ACS_VLINE characters. The left one (column 79) is
++ * shadowed by the pad that's written to newscr.
++ */
++ touchwin(stdscr);
++
+ wnoutrefresh(stdscr);
+
+ prefresh(pad,
+
+End of diffs.
+
+
diff --git a/patch_cmds/diffstat/testing/case06.ref b/patch_cmds/diffstat/testing/case06.ref
new file mode 100644
index 0000000..3fbf503
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ ncurses/lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++------------
+ ncurses/lib_initscr.c | 4 ++
+ ncurses/lib_pad.c | 48 ++++++++++++++++++++-----
+ test/ncurses.c | 29 +++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06R.ref b/patch_cmds/diffstat/testing/case06R.ref
new file mode 100644
index 0000000..8cae5fd
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06R.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 -
+ ncurses/lib_doupdate.c | 91 +++++++++++--------------------------------------
+ ncurses/lib_initscr.c | 4 --
+ ncurses/lib_pad.c | 48 +++++--------------------
+ test/ncurses.c | 29 ---------------
+ 5 files changed, 32 insertions(+), 142 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06Rp0.ref b/patch_cmds/diffstat/testing/case06Rp0.ref
new file mode 100644
index 0000000..8cae5fd
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06Rp0.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 -
+ ncurses/lib_doupdate.c | 91 +++++++++++--------------------------------------
+ ncurses/lib_initscr.c | 4 --
+ ncurses/lib_pad.c | 48 +++++--------------------
+ test/ncurses.c | 29 ---------------
+ 5 files changed, 32 insertions(+), 142 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06b.ref b/patch_cmds/diffstat/testing/case06b.ref
new file mode 100644
index 0000000..3fbf503
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06b.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ ncurses/lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++------------
+ ncurses/lib_initscr.c | 4 ++
+ ncurses/lib_pad.c | 48 ++++++++++++++++++++-----
+ test/ncurses.c | 29 +++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06f0.ref b/patch_cmds/diffstat/testing/case06f0.ref
new file mode 100644
index 0000000..0ca6092
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06f0.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 2 + 0 - 0 !
+ ncurses/lib_doupdate.c | 91 69 + 22 - 0 !
+ ncurses/lib_initscr.c | 4 4 + 0 - 0 !
+ ncurses/lib_pad.c | 48 38 + 10 - 0 !
+ test/ncurses.c | 29 29 + 0 - 0 !
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06k.ref b/patch_cmds/diffstat/testing/case06k.ref
new file mode 100644
index 0000000..3fbf503
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06k.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ ncurses/lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++------------
+ ncurses/lib_initscr.c | 4 ++
+ ncurses/lib_pad.c | 48 ++++++++++++++++++++-----
+ test/ncurses.c | 29 +++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06p1.ref b/patch_cmds/diffstat/testing/case06p1.ref
new file mode 100644
index 0000000..eb6b552
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06p1.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++++++++--------------
+ lib_initscr.c | 4 ++
+ lib_pad.c | 48 +++++++++++++++++++++++-------
+ ncurses.c | 29 ++++++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06p9.ref b/patch_cmds/diffstat/testing/case06p9.ref
new file mode 100644
index 0000000..eb6b552
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06p9.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++++++++--------------
+ lib_initscr.c | 4 ++
+ lib_pad.c | 48 +++++++++++++++++++++++-------
+ ncurses.c | 29 ++++++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06r1.ref b/patch_cmds/diffstat/testing/case06r1.ref
new file mode 100644
index 0000000..5a05975
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06r1.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ ncurses/lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++------------
+ ncurses/lib_initscr.c | 4 ++
+ ncurses/lib_pad.c | 48 ++++++++++++++++++++-----
+ test/ncurses.c | 29 ++++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06r2.ref b/patch_cmds/diffstat/testing/case06r2.ref
new file mode 100644
index 0000000..38d1cb2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06r2.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ ncurses/lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++------------
+ ncurses/lib_initscr.c | 4 ++
+ ncurses/lib_pad.c | 48 +++++++++++++++++++++-----
+ test/ncurses.c | 29 ++++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case06u.ref b/patch_cmds/diffstat/testing/case06u.ref
new file mode 100644
index 0000000..3fbf503
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case06u.ref
@@ -0,0 +1,6 @@
+ NEWS | 2 +
+ ncurses/lib_doupdate.c | 91 +++++++++++++++++++++++++++++++++++++------------
+ ncurses/lib_initscr.c | 4 ++
+ ncurses/lib_pad.c | 48 ++++++++++++++++++++-----
+ test/ncurses.c | 29 +++++++++++++++
+ 5 files changed, 142 insertions(+), 32 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case07.pat b/patch_cmds/diffstat/testing/case07.pat
new file mode 100644
index 0000000..e72061d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07.pat
@@ -0,0 +1,107 @@
+--- /dev/null 1.1 Sun Jul 17 19:46:18 1994
++++ ncurses-1.9.8a_960131_e285r/man/resizeterm.3x Wed Jan 31 20:21:04 1996
+@@ -0,0 +1,53 @@
++.\"*****************************************************************************
++.\" Testcase for "resizeterm" *
++.\" *
++.\" A discussion of this file is found at: *
++.\" http://invisible-island.net/ncurses/ncurses-license.html#ncurses_1_9_3 *
++.\" A later version of this manpage is included as part of ncurses. *
++.\"*****************************************************************************
++.TH resizeterm 3X ""
++.
++.SH NAME
++\fBresizeterm\fR - change the curses terminal size
++.
++.SH SYNOPSIS
++\fB#include <curses.h>\fR
++
++\fBint resizeterm(int lines, int columns);\fR
++.
++.SH DESCRIPTION
++This is an extension to the curses library.
++It provides callers with a hook into the \fBncurses\fR data to resize windows,
++primarily for use by programs running in an X Window terminal (e.g., xterm).
++The function \fBresizeterm\fR resizes the standard and current windows
++to the specified dimensions, and adjusts other bookkeeping data used by
++the \fBncurses\fR library that record the window dimensions.
++
++When resizing the windows, the function blank-fills the areas that are
++extended. The calling application should fill in these areas with
++appropriate data.
++
++The function does not resize other windows.
++.
++.SH RETURN VALUE
++The function returns the integer \fBERR\fR upon failure and \fBOK\fR on success.
++It will fail if either of the dimensions less than or equal to zero,
++or if an error occurs while (re)allocating memory for the windows.
++.
++.SH NOTES
++While this function is intended to be used to support a signal handler
++(i.e., for SIGWINCH), care should be taken to avoid invoking it in a
++context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted,
++since it uses those functions.
++.
++.SH SEE ALSO
++\fBwresize\fR(3x).
++.
++.SH AUTHOR
++Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
++.\"#
++.\"# The following sets edit modes for GNU EMACS
++.\"# Local Variables:
++.\"# mode:nroff
++.\"# fill-column:79
++.\"# End:
+--- /dev/null Sun Jul 17 19:46:18 1994
++++ ncurses-1.9.8a_960131_e285r/man/wresize.3x Wed Jan 31 20:21:04 1996
+@@ -0,0 +1,47 @@
++.\"*****************************************************************************
++.\" Testcase for "wresize" *
++.\" *
++.\" A discussion of this file is found at: *
++.\" http://invisible-island.net/ncurses/ncurses-license.html#ncurses_1_9_3 *
++.\" A later version of this manpage is included as part of ncurses. *
++.\" Copyright 1995 by Thomas E. Dickey. All Rights Reserved. *
++.\"*****************************************************************************
++.TH wresize 3X ""
++.
++.SH NAME
++\fBwresize\fR - resize a curses window
++.
++.SH SYNOPSIS
++\fB#include <curses.h>\fR
++
++\fBint wresize(WINDOW *win, int lines, int columns);\fR
++.
++.SH DESCRIPTION
++The \fBwresize\fR function reallocates storage for an \fBncurses\fR
++window to adjust its dimensions to the specified values.
++If either dimension is larger than the current values, the
++window's data is filled with blanks that have the current background rendition
++(as set by \fBwbkgndset\fR) merged into them.
++.
++.SH RETURN VALUE
++The function returns the integer \fBERR\fR upon failure and \fBOK\fR on success.
++It will fail if either of the dimensions less than or equal to zero,
++or if an error occurs while (re)allocating memory for the window.
++.
++.SH NOTES
++The only restriction placed on the dimensions is that they be greater than zero.
++The dimensions are not compared to \fBcurses\fR screen dimensions to
++simplify the logic of \fBresizeterm\fR.
++The caller must ensure that the window's dimensions fit within the
++actual screen dimensions.
++.
++.SH SEE ALSO
++\fBresizeterm\fR(3x).
++.
++.SH AUTHOR
++Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
++.\"#
++.\"# The following sets edit modes for GNU EMACS
++.\"# Local Variables:
++.\"# mode:nroff
++.\"# fill-column:79
++.\"# End:
diff --git a/patch_cmds/diffstat/testing/case07.ref b/patch_cmds/diffstat/testing/case07.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07R.ref b/patch_cmds/diffstat/testing/case07R.ref
new file mode 100644
index 0000000..95d7724
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07R.ref
@@ -0,0 +1,2 @@
+ null | 100 -------------------------------------------------------------------
+ 1 file changed, 100 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case07Rp0.ref b/patch_cmds/diffstat/testing/case07Rp0.ref
new file mode 100644
index 0000000..30e3f11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07Rp0.ref
@@ -0,0 +1,2 @@
+ /dev/null | 100 --------------------------------------------------------------
+ 1 file changed, 100 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case07b.ref b/patch_cmds/diffstat/testing/case07b.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07b.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07f0.ref b/patch_cmds/diffstat/testing/case07f0.ref
new file mode 100644
index 0000000..522fa8d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07f0.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 53 + 0 - 0 !
+ wresize.3x | 47 47 + 0 - 0 !
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07k.ref b/patch_cmds/diffstat/testing/case07k.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07k.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07p1.ref b/patch_cmds/diffstat/testing/case07p1.ref
new file mode 100644
index 0000000..0c52128
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07p1.ref
@@ -0,0 +1,3 @@
+ man/resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ man/wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07p9.ref b/patch_cmds/diffstat/testing/case07p9.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07p9.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07r1.ref b/patch_cmds/diffstat/testing/case07r1.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07r1.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07r2.ref b/patch_cmds/diffstat/testing/case07r2.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07r2.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case07u.ref b/patch_cmds/diffstat/testing/case07u.ref
new file mode 100644
index 0000000..c11d383
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case07u.ref
@@ -0,0 +1,3 @@
+ resizeterm.3x | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ wresize.3x | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 100 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case08.pat b/patch_cmds/diffstat/testing/case08.pat
new file mode 100644
index 0000000..380420a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08.pat
@@ -0,0 +1,343 @@
+Index: Imakefile
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/Imakefile Fri Jan 26 11:43:22 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/Imakefile Sun Jan 28 20:45:35 1996
+***************
+*** 10,15 ****
+--- 10,30 ----
+ XCOMM
+
+ /*
++ * Fixes to allow compile with X11R5
++ */
++ #ifndef XkbClientDefines
++ #define XkbClientDefines /**/
++ #endif
++
++ #ifndef XkbClientDepLibs
++ #define XkbClientDepLibs /**/
++ #endif
++
++ #ifndef XkbClientLibs
++ #define XkbClientLibs /**/
++ #endif
++
++ /*
+ * add -DWTMP and -DLASTLOG if you want them; make sure that bcopy can
+ * handle overlapping copies before using it.
+ */
+Index: Tekproc.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/Tekproc.c Tue Jan 16 15:43:01 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/Tekproc.c Sun Jan 28 20:45:35 1996
+***************
+*** 64,70 ****
+--- 64,77 ----
+ #include <X11/StringDefs.h>
+ #include <X11/Shell.h>
+ #include <X11/Xmu/CharSet.h>
++
++ #if XtSpecificationRelease >= 6
+ #include <X11/Xpoll.h>
++ #else
++ #define Select(n,r,w,e,t) select(0,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
++ #define XFD_COPYSET(src,dst) bcopy((src)->fds_bits, (dst)->fds_bits, sizeof(fd_set))
++ #endif
++
+ #include <stdio.h>
+ #include <errno.h>
+ #include <setjmp.h>
+Index: charproc.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/charproc.c Fri Jan 26 11:43:22 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/charproc.c Sun Jan 28 20:45:35 1996
+***************
+*** 63,70 ****
+--- 63,77 ----
+ #include <X11/Xmu/Atoms.h>
+ #include <X11/Xmu/CharSet.h>
+ #include <X11/Xmu/Converters.h>
++
++ #if XtSpecificationRelease >= 6
+ #include <X11/Xaw/XawImP.h>
+ #include <X11/Xpoll.h>
++ #else
++ #define Select(n,r,w,e,t) select(0,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
++ #define XFD_COPYSET(src,dst) bcopy((src)->fds_bits, (dst)->fds_bits, sizeof(fd_set))
++ #endif
++
+ #include <stdio.h>
+ #include <errno.h>
+ #include <setjmp.h>
+***************
+*** 572,577 ****
+--- 579,585 ----
+ {"font6", "Font6", XtRString, sizeof(String),
+ XtOffsetOf(XtermWidgetRec, screen.menu_font_names[fontMenu_font6]),
+ XtRString, (XtPointer) NULL},
++ #if XtSpecificationRelease >= 6
+ {XtNinputMethod, XtCInputMethod, XtRString, sizeof(char*),
+ XtOffsetOf(XtermWidgetRec, misc.input_method),
+ XtRString, (XtPointer)NULL},
+***************
+*** 581,586 ****
+--- 589,595 ----
+ {XtNopenIm, XtCOpenIm, XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(XtermWidgetRec, misc.open_im),
+ XtRImmediate, (XtPointer)TRUE},
++ #endif
+ {XtNcolor0, XtCForeground, XtRPixel, sizeof(Pixel),
+ XtOffsetOf(XtermWidgetRec, screen.colors[COLOR_0]),
+ XtRString, "XtDefaultForeground"},
+***************
+*** 1153,1158 ****
+--- 1162,1172 ----
+ ? 8 : 0));
+ }
+ break;
++ case 39:
++ if( screen->colorMode ) {
++ SGR_Foreground(-1);
++ }
++ break;
+ case 40:
+ case 41:
+ case 42:
+***************
+*** 1165,1170 ****
+--- 1179,1189 ----
+ SGR_Background(param[row] - 40);
+ }
+ break;
++ case 49:
++ if( screen->colorMode ) {
++ SGR_Background(-1);
++ }
++ break;
+ case 100:
+ if( screen->colorMode ) {
+ if (term->flags & FG_COLOR)
+***************
+*** 2639,2644 ****
+--- 2658,2666 ----
+ for (i = 0; i < MAXCOLORS; i++) {
+ new->screen.colors[i] = request->screen.colors[i];
+ }
++
++ new->cur_foreground = 0;
++ new->cur_background = 0;
+
+ /*
+ * The definition of -rv now is that it changes the definition of
+Index: data.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/data.c Sat Jan 6 08:11:01 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/data.c Sun Jan 28 20:45:35 1996
+***************
+*** 26,32 ****
+--- 26,36 ----
+ */
+
+ #include "ptyx.h" /* gets Xt stuff, too */
++
++ #if XtSpecificationRelease >= 6
+ #include <X11/Xpoll.h>
++ #endif
++
+ #include "data.h"
+ #include <setjmp.h>
+
+Index: main.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/main.c Thu Jan 11 14:01:01 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/main.c Sun Jan 28 20:45:35 1996
+***************
+*** 75,82 ****
+--- 75,87 ----
+ #include <X11/Xos.h>
+ #include <X11/cursorfont.h>
+ #include <X11/Xaw/SimpleMenu.h>
++
++ #if XtSpecificationRelease >= 6
+ #include <X11/Xpoll.h>
++ #endif
++
+ #include <X11/Xlocale.h>
++
+ #include <pwd.h>
+ #include <ctype.h>
+ #include "data.h"
+***************
+*** 127,132 ****
+--- 132,138 ----
+ #endif
+
+ #ifdef SVR4
++ #undef SYSV /* predefined on Solaris 2.4 */
+ #define SYSV /* SVR4 is (approx) superset of SVR3 */
+ #define ATT
+ #define USE_SYSV_UTMP
+***************
+*** 453,459 ****
+ #endif
+
+ #ifdef SYSV
+! extern char *ptsname();
+ #endif
+
+ #include "xterm.h"
+--- 459,465 ----
+ #endif
+
+ #ifdef SYSV
+! extern char *ptsname PROTO((int));
+ #endif
+
+ #include "xterm.h"
+***************
+*** 1293,1303 ****
+
+ if (setegid(rgid) == -1)
+ (void) fprintf(stderr, "setegid(%d): %s\n",
+! rgid, strerror(errno));
+
+ if (seteuid(ruid) == -1)
+ (void) fprintf(stderr, "seteuid(%d): %s\n",
+! ruid, strerror(errno));
+ #endif
+
+ XtSetErrorHandler(xt_error);
+--- 1299,1309 ----
+
+ if (setegid(rgid) == -1)
+ (void) fprintf(stderr, "setegid(%d): %s\n",
+! (int) rgid, strerror(errno));
+
+ if (seteuid(ruid) == -1)
+ (void) fprintf(stderr, "seteuid(%d): %s\n",
+! (int) ruid, strerror(errno));
+ #endif
+
+ XtSetErrorHandler(xt_error);
+***************
+*** 1317,1327 ****
+ #ifdef HAS_POSIX_SAVED_IDS
+ if (seteuid(euid) == -1)
+ (void) fprintf(stderr, "seteuid(%d): %s\n",
+! euid, strerror(errno));
+
+ if (setegid(egid) == -1)
+ (void) fprintf(stderr, "setegid(%d): %s\n",
+! egid, strerror(errno));
+ #endif
+ }
+
+--- 1323,1333 ----
+ #ifdef HAS_POSIX_SAVED_IDS
+ if (seteuid(euid) == -1)
+ (void) fprintf(stderr, "seteuid(%d): %s\n",
+! (int) euid, strerror(errno));
+
+ if (setegid(egid) == -1)
+ (void) fprintf(stderr, "setegid(%d): %s\n",
+! (int) egid, strerror(errno));
+ #endif
+ }
+
+***************
+*** 1985,1992 ****
+ register TScreen *screen = &term->screen;
+ #ifdef USE_HANDSHAKE
+ handshake_t handshake;
+- #else
+- int fds[2];
+ #endif
+ int tty = -1;
+ int done;
+--- 1991,1996 ----
+***************
+*** 2458,2464 ****
+ {
+ #include <grp.h>
+ struct group *ttygrp;
+! if (ttygrp = getgrnam("tty")) {
+ /* change ownership of tty to real uid, "tty" gid */
+ chown (ttydev, screen->uid, ttygrp->gr_gid);
+ chmod (ttydev, 0620);
+--- 2462,2468 ----
+ {
+ #include <grp.h>
+ struct group *ttygrp;
+! if ((ttygrp = getgrnam("tty")) != 0) {
+ /* change ownership of tty to real uid, "tty" gid */
+ chown (ttydev, screen->uid, ttygrp->gr_gid);
+ chmod (ttydev, 0620);
+Index: menu.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/menu.c Tue Jan 16 15:43:01 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/menu.c Sun Jan 28 20:45:35 1996
+***************
+*** 397,411 ****
+ XtPointer closure, data;
+ {
+ register TScreen *screen = &term->screen;
+! Time time = CurrentTime; /* XXX - wrong */
+
+ if (screen->grabbedKbd) {
+! XUngrabKeyboard (screen->display, time);
+ ReverseVideo (term);
+ screen->grabbedKbd = FALSE;
+ } else {
+ if (XGrabKeyboard (screen->display, term->core.window,
+! True, GrabModeAsync, GrabModeAsync, time)
+ != GrabSuccess) {
+ Bell(XkbBI_MinorError, 100);
+ } else {
+--- 397,411 ----
+ XtPointer closure, data;
+ {
+ register TScreen *screen = &term->screen;
+! Time now = CurrentTime; /* XXX - wrong */
+
+ if (screen->grabbedKbd) {
+! XUngrabKeyboard (screen->display, now);
+ ReverseVideo (term);
+ screen->grabbedKbd = FALSE;
+ } else {
+ if (XGrabKeyboard (screen->display, term->core.window,
+! True, GrabModeAsync, GrabModeAsync, now)
+ != GrabSuccess) {
+ Bell(XkbBI_MinorError, 100);
+ } else {
+Index: misc.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/misc.c Fri Jan 26 11:43:22 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/misc.c Sun Jan 28 20:45:35 1996
+***************
+*** 50,55 ****
+--- 50,61 ----
+
+ #include "xterm.h"
+
++ #if XtSpecificationRelease < 6
++ #ifndef X_GETTIMEOFDAY
++ #define X_GETTIMEOFDAY(t) gettimeofday(t,(struct timezone *)0)
++ #endif
++ #endif
++
+ #ifdef AMOEBA
+ #include "amoeba.h"
+ #include "module/proc.h"
+Index: scrollbar.c
+*** /build/x11r6/XFree86-3.1.2Bn/xc/programs/xterm/scrollbar.c Tue Jan 16 15:43:01 1996
+--- /build/x11r6/XFree86-current/xc/programs/xterm/scrollbar.c Sun Jan 28 20:45:35 1996
+***************
+*** 221,227 ****
+ register Widget scrollWidget;
+ {
+ Arg args[4];
+! int nargs = XtNumber(args);
+ unsigned long bg, fg, bdr;
+ Pixmap bdpix;
+
+--- 221,227 ----
+ register Widget scrollWidget;
+ {
+ Arg args[4];
+! Cardinal nargs = XtNumber(args);
+ unsigned long bg, fg, bdr;
+ Pixmap bdpix;
+
diff --git a/patch_cmds/diffstat/testing/case08.ref b/patch_cmds/diffstat/testing/case08.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08R.ref b/patch_cmds/diffstat/testing/case08R.ref
new file mode 100644
index 0000000..6e8272a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08R.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 ---------------
+ Tekproc.c | 7 -------
+ charproc.c | 22 ----------------------
+ data.c | 4 ----
+ main.c | 20 ++------!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ------
+ scrollbar.c | 2 !!
+ 8 files changed, 2 insertions(+), 60 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08Rp0.ref b/patch_cmds/diffstat/testing/case08Rp0.ref
new file mode 100644
index 0000000..6e8272a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08Rp0.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 ---------------
+ Tekproc.c | 7 -------
+ charproc.c | 22 ----------------------
+ data.c | 4 ----
+ main.c | 20 ++------!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ------
+ scrollbar.c | 2 !!
+ 8 files changed, 2 insertions(+), 60 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08b.ref b/patch_cmds/diffstat/testing/case08b.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08b.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08f0.ref b/patch_cmds/diffstat/testing/case08f0.ref
new file mode 100644
index 0000000..7761a8d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08f0.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 15 + 0 - 0 !
+ Tekproc.c | 7 7 + 0 - 0 !
+ charproc.c | 22 22 + 0 - 0 !
+ data.c | 4 4 + 0 - 0 !
+ main.c | 20 6 + 2 - 12 !
+ menu.c | 6 0 + 0 - 6 !
+ misc.c | 6 6 + 0 - 0 !
+ scrollbar.c | 2 0 + 0 - 2 !
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08k.ref b/patch_cmds/diffstat/testing/case08k.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08k.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08p1.ref b/patch_cmds/diffstat/testing/case08p1.ref
new file mode 100644
index 0000000..2bd31cb
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08p1.ref
@@ -0,0 +1,9 @@
+ build/x11r6/XFree86-current/xc/programs/xterm/Imakefile | 15 +++++++++
+ build/x11r6/XFree86-current/xc/programs/xterm/Tekproc.c | 7 ++++
+ build/x11r6/XFree86-current/xc/programs/xterm/charproc.c | 22 ++++++++++++++
+ build/x11r6/XFree86-current/xc/programs/xterm/data.c | 4 ++
+ build/x11r6/XFree86-current/xc/programs/xterm/main.c | 20 +++--!!!!!!
+ build/x11r6/XFree86-current/xc/programs/xterm/menu.c | 6 !!!
+ build/x11r6/XFree86-current/xc/programs/xterm/misc.c | 6 +++
+ build/x11r6/XFree86-current/xc/programs/xterm/scrollbar.c | 2 !
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08p9.ref b/patch_cmds/diffstat/testing/case08p9.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08p9.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08r1.ref b/patch_cmds/diffstat/testing/case08r1.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08r1.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08r2.ref b/patch_cmds/diffstat/testing/case08r2.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08r2.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case08u.ref b/patch_cmds/diffstat/testing/case08u.ref
new file mode 100644
index 0000000..53afea5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case08u.ref
@@ -0,0 +1,9 @@
+ Imakefile | 15 +++++++++++++++
+ Tekproc.c | 7 +++++++
+ charproc.c | 22 ++++++++++++++++++++++
+ data.c | 4 ++++
+ main.c | 20 ++++++--!!!!!!!!!!!!
+ menu.c | 6 !!!!!!
+ misc.c | 6 ++++++
+ scrollbar.c | 2 !!
+ 8 files changed, 60 insertions(+), 2 deletions(-), 20 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case09.pat b/patch_cmds/diffstat/testing/case09.pat
new file mode 100644
index 0000000..eced7bd
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09.pat
@@ -0,0 +1,13 @@
+Other testing
+Bad data
+Index!!!
+Index:::
+diff!!!
++++++++++++++
+---------------
+Only in ?
+Binary files XXX and YYY are the same
+<<
+--
+++
+!!
diff --git a/patch_cmds/diffstat/testing/case09.ref b/patch_cmds/diffstat/testing/case09.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09R.ref b/patch_cmds/diffstat/testing/case09R.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09R.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09Rp0.ref b/patch_cmds/diffstat/testing/case09Rp0.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09Rp0.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09b.ref b/patch_cmds/diffstat/testing/case09b.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09b.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09f0.ref b/patch_cmds/diffstat/testing/case09f0.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09f0.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09k.ref b/patch_cmds/diffstat/testing/case09k.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09k.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09p1.ref b/patch_cmds/diffstat/testing/case09p1.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09p1.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09p9.ref b/patch_cmds/diffstat/testing/case09p9.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09p9.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09r1.ref b/patch_cmds/diffstat/testing/case09r1.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09r1.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09r2.ref b/patch_cmds/diffstat/testing/case09r2.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09r2.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case09u.ref b/patch_cmds/diffstat/testing/case09u.ref
new file mode 100644
index 0000000..63b383b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case09u.ref
@@ -0,0 +1 @@
+ 0 files changed
diff --git a/patch_cmds/diffstat/testing/case10.pat b/patch_cmds/diffstat/testing/case10.pat
new file mode 100644
index 0000000..e3d4b61
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10.pat
@@ -0,0 +1,67 @@
+Index: allowev.c
+*** /build/x11r6/XFree86-960317/xc/programs/Xserver/Xi/allowev.c Sun Mar 17 20:08:01 1996
+--- /build/x11r6/XFree86-current/xc/programs/Xserver/Xi/allowev.c Wed Mar 20 20:47:09 1996
+***************
+*** 63,72 ****
+
+ #include "extnsionst.h"
+ #include "extinit.h" /* LookupDeviceIntRec */
+
+! extern int IReqCode;
+! extern int BadDevice;
+! extern void (* ReplySwapVector[256]) ();
+
+ /***********************************************************************
+ *
+--- 63,71 ----
+
+ #include "extnsionst.h"
+ #include "extinit.h" /* LookupDeviceIntRec */
++ #include "exglobals.h"
+
+! #include "allowev.h"
+
+ /***********************************************************************
+ *
+***************
+*** 99,105 ****
+ {
+ TimeStamp time;
+ DeviceIntPtr thisdev;
+- void AllowSome ();
+
+ REQUEST(xAllowDeviceEventsReq);
+ REQUEST_SIZE_MATCH(xAllowDeviceEventsReq);
+--- 98,103 ----
+Index: XIstubs.h
+*** /dev/null Sun Jul 17 19:46:18 1994
+--- /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h Wed Mar 20 22:08:14 1996
+***************
+*** 0 ****
+--- 1,105 ----
++ /* $XConsortium$ */
++ /* $XFree86$ */
++
++ #ifndef XI_STUBS_H
++ #define XI_STUBS_H 1
++
++ int
++ ChangePointerDevice (
++ #if NeedFunctionPrototypes
++ DeviceIntPtr /* old_dev */,
++ DeviceIntPtr /* new_dev */,
++ unsigned char /* x */,
++ unsigned char /* y */
++ #endif
++ );
++
++ int
++ ChangeDeviceControl (
++ #if NeedFunctionPrototypes
++ ClientPtr /* client */,
++ DeviceIntPtr /* dev */,
++ xDeviceCtl * /* control */
++ #endif
++ );
++
++ #endif /* XI_STUBS_H */
diff --git a/patch_cmds/diffstat/testing/case10.ref b/patch_cmds/diffstat/testing/case10.ref
new file mode 100644
index 0000000..eab1d21
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10.ref
@@ -0,0 +1,3 @@
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ xc/programs/Xserver/Xi/allowev.c | 6 !
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10R.ref b/patch_cmds/diffstat/testing/case10R.ref
new file mode 100644
index 0000000..02d5b59
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10R.ref
@@ -0,0 +1,3 @@
+ XIstubs.h | 26 --------------------------
+ allowev.c | 6 +-!!!!
+ 2 files changed, 1 insertion(+), 27 deletions(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10Rp0.ref b/patch_cmds/diffstat/testing/case10Rp0.ref
new file mode 100644
index 0000000..02d5b59
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10Rp0.ref
@@ -0,0 +1,3 @@
+ XIstubs.h | 26 --------------------------
+ allowev.c | 6 +-!!!!
+ 2 files changed, 1 insertion(+), 27 deletions(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10b.ref b/patch_cmds/diffstat/testing/case10b.ref
new file mode 100644
index 0000000..eab1d21
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10b.ref
@@ -0,0 +1,3 @@
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ xc/programs/Xserver/Xi/allowev.c | 6 !
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10f0.ref b/patch_cmds/diffstat/testing/case10f0.ref
new file mode 100644
index 0000000..0aae099
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10f0.ref
@@ -0,0 +1,3 @@
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 26 + 0 - 0 !
+ xc/programs/Xserver/Xi/allowev.c | 6 1 + 1 - 4 !
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10k.ref b/patch_cmds/diffstat/testing/case10k.ref
new file mode 100644
index 0000000..fe09222
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10k.ref
@@ -0,0 +1,4 @@
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ XIstubs.h | 0
+ xc/programs/Xserver/Xi/allowev.c | 6 !
+ 3 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10p1.ref b/patch_cmds/diffstat/testing/case10p1.ref
new file mode 100644
index 0000000..c9f4be2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10p1.ref
@@ -0,0 +1,3 @@
+ build/x11r6/XFree86-current/xc/programs/Xserver/Xi/allowev.c | 6 !
+ build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10p9.ref b/patch_cmds/diffstat/testing/case10p9.ref
new file mode 100644
index 0000000..7a6e9b6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10p9.ref
@@ -0,0 +1,3 @@
+ XIstubs.h | 26 ++++++++++++++++++++++++++
+ allowev.c | 6 +-!!!!
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10r1.ref b/patch_cmds/diffstat/testing/case10r1.ref
new file mode 100644
index 0000000..07f96aa
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10r1.ref
@@ -0,0 +1,3 @@
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ xc/programs/Xserver/Xi/allowev.c | 6 !!
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10r2.ref b/patch_cmds/diffstat/testing/case10r2.ref
new file mode 100644
index 0000000..07f96aa
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10r2.ref
@@ -0,0 +1,3 @@
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ xc/programs/Xserver/Xi/allowev.c | 6 !!
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case10u.ref b/patch_cmds/diffstat/testing/case10u.ref
new file mode 100644
index 0000000..e5f9fac
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case10u.ref
@@ -0,0 +1,3 @@
+ xc/programs/Xserver/Xi/allowev.c | 6 !
+ /build/x11r6/XFree86-current/xc/programs/Xserver/include/XIstubs.h | 26 ++++++++++
+ 2 files changed, 27 insertions(+), 1 deletion(-), 4 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case11.pat b/patch_cmds/diffstat/testing/case11.pat
new file mode 100644
index 0000000..97df0fa
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11.pat
@@ -0,0 +1,12 @@
+*** test/ncurses.orig.c Sat Dec 21 08:04:03 1996
+--- test/ncurses.c Sun Dec 29 00:11:07 1996
+***************
+*** 2746,2751 ****
+--- 2746,2752 ----
+ static void
+ set_terminal_modes(void)
+ {
++ noraw();
+ cbreak();
+ noecho();
+ scrollok(stdscr, TRUE);
diff --git a/patch_cmds/diffstat/testing/case11.ref b/patch_cmds/diffstat/testing/case11.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11R.ref b/patch_cmds/diffstat/testing/case11R.ref
new file mode 100644
index 0000000..de5637f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11R.ref
@@ -0,0 +1,2 @@
+ ncurses.orig.c | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case11Rp0.ref b/patch_cmds/diffstat/testing/case11Rp0.ref
new file mode 100644
index 0000000..0d33e9b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11Rp0.ref
@@ -0,0 +1,2 @@
+ test/ncurses.orig.c | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case11b.ref b/patch_cmds/diffstat/testing/case11b.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11b.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11f0.ref b/patch_cmds/diffstat/testing/case11f0.ref
new file mode 100644
index 0000000..da5213d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11f0.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 1 + 0 - 0 !
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11k.ref b/patch_cmds/diffstat/testing/case11k.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11k.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11p1.ref b/patch_cmds/diffstat/testing/case11p1.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11p1.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11p9.ref b/patch_cmds/diffstat/testing/case11p9.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11p9.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11r1.ref b/patch_cmds/diffstat/testing/case11r1.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11r1.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11r2.ref b/patch_cmds/diffstat/testing/case11r2.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11r2.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case11u.ref b/patch_cmds/diffstat/testing/case11u.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case11u.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case12.pat b/patch_cmds/diffstat/testing/case12.pat
new file mode 100644
index 0000000..a781855
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12.pat
@@ -0,0 +1,163 @@
+Index: xc/programs/xterm/main.c
+diff -u xc/programs/xterm/main.c:1.1.1.22 xc/programs/xterm/main.c:1.2
+--- xc/programs/xterm/main.c:1.1.1.22 Tue Mar 19 07:36:38 1996
++++ xc/programs/xterm/main.c Sun Mar 24 01:10:29 1996
+@@ -182,6 +182,10 @@
+ #undef CAPS_LOCK
+ #endif
+
++#ifdef CSRG_BASED
++#define USE_POSIX_TERMIOS
++#endif
++
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+
+@@ -199,6 +203,9 @@
+ #endif
+ #endif
+
++#ifdef USE_POSIX_TERMIOS
++#include <termios.h>
++#else
+ #ifdef USE_TERMIOS
+ #include <termios.h>
+ /* this hacked termios support only works on SYSV */
+@@ -3143,11 +3197,11 @@
+ shname_minus = malloc(strlen(shname) + 2);
+ (void) strcpy(shname_minus, "-");
+ (void) strcat(shname_minus, shname);
+-#ifndef USE_SYSV_TERMIO
++#if !defined(USE_SYSV_TERMIO) && !defined(USE_POSIX_TERMIOS)
+ ldisc = XStrCmp("csh", shname + strlen(shname) - 3) == 0 ?
+ NTTYDISC : 0;
+ ioctl(0, TIOCSETD, (char *)&ldisc);
+-#endif /* !USE_SYSV_TERMIO */
++#endif /* !USE_SYSV_TERMIO && !USE_POSIX_TERMIOS */
+
+ #ifdef USE_LOGIN_DASH_P
+ if (term->misc.login_shell && pw && added_utmp_entry)
+Index: xc/programs/xterm/resize.c
+diff -u xc/programs/xterm/resize.c:1.1.1.9 xc/programs/xterm/resize.c:1.2
+--- xc/programs/xterm/resize.c:1.1.1.9 Wed Feb 14 21:58:14 1996
++++ xc/programs/xterm/resize.c Sun Mar 24 01:10:32 1996
+@@ -87,19 +87,19 @@
+ #define USE_TERMINFO
+ #endif
+
+-#ifdef MINIX
++#if defined(CSRG_BASED)
+ #define USE_TERMIOS
+ #endif
+
+ #include <sys/ioctl.h>
+ #ifdef USE_SYSV_TERMIO
+-#include <sys/termio.h>
++# include <sys/termio.h>
+ #else /* else not USE_SYSV_TERMIO */
+-#ifdef MINIX
+-#include <termios.h>
+-#else /* !MINIX */
+-#include <sgtty.h>
+-#endif /* MINIX */
++# ifdef USE_TERMIOS
++# include <termios.h>
++# else /* not USE_TERMIOS */
++# include <sgtty.h>
++# endif /* USE_TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+
+ #ifdef USE_USG_PTYS
+@@ -127,8 +127,9 @@
+ #define bzero(s, n) memset(s, 0, n)
+ #endif /* USE_SYSV_TERMIO */
+
+-#ifdef USE_TERMIOS
++#ifdef MINIX
+ #define USE_SYSV_TERMIO
++#include <sys/termios.h>
+ #define termio termios
+ #define TCGETA TCGETS
+ #define TCSETAW TCSETSW
+@@ -190,7 +191,11 @@
+ #ifdef USE_SYSV_TERMIO
+ struct termio tioorig;
+ #else /* not USE_SYSV_TERMIO */
++# ifdef USE_TERMIOS
++struct termios tioorig;
++# else /* not USE_TERMIOS */
+ struct sgttyb sgorig;
++# endif /* USE_TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+ char *size[EMULATIONS] = {
+ "\033[%d;%dR",
+@@ -244,7 +249,11 @@
+ #ifdef USE_SYSV_TERMIO
+ struct termio tio;
+ #else /* not USE_SYSV_TERMIO */
++#ifdef USE_TERMIOS
++ struct termios tio;
++#else /* not USE_TERMIOS */
+ struct sgttyb sg;
++#endif /* USE_TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+ #ifdef USE_TERMCAP
+ char termcap [1024];
+@@ -366,10 +375,20 @@
+ tio.c_cc[VMIN] = 6;
+ tio.c_cc[VTIME] = 1;
+ #else /* else not USE_SYSV_TERMIO */
++#if defined(USE_TERMIOS)
++ tcgetattr(tty, &tioorig);
++ tio = tioorig;
++ tio.c_iflag &= ~ICRNL;
++ tio.c_lflag &= ~(ICANON | ECHO);
++ tio.c_cflag |= CS8;
++ tio.c_cc[VMIN] = 6;
++ tio.c_cc[VTIME] = 1;
++#else /* not USE_TERMIOS */
+ ioctl (tty, TIOCGETP, &sgorig);
+ sg = sgorig;
+ sg.sg_flags |= RAW;
+ sg.sg_flags &= ~ECHO;
++#endif /* USE_TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+ signal(SIGINT, onintr);
+ signal(SIGQUIT, onintr);
+@@ -377,7 +396,11 @@
+ #ifdef USE_SYSV_TERMIO
+ ioctl (tty, TCSETAW, &tio);
+ #else /* not USE_SYSV_TERMIO */
++#ifdef USE_TERMIOS
++ tcsetattr(tty, TCSADRAIN, &tio);
++#else /* not USE_TERMIOS */
+ ioctl (tty, TIOCSETP, &sg);
++#endif /* USE_TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+
+ if (argc == 2) {
+@@ -434,7 +457,11 @@
+ #ifdef USE_SYSV_TERMIO
+ ioctl (tty, TCSETAW, &tioorig);
+ #else /* not USE_SYSV_TERMIO */
++#ifdef USE_TERMIOS
++ tcsetattr(tty, TCSADRAIN, &tioorig);
++#else /* not USE_TERMIOS */
+ ioctl (tty, TIOCSETP, &sgorig);
++#endif /* USE_TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+ signal(SIGINT, SIG_DFL);
+ signal(SIGQUIT, SIG_DFL);
+@@ -595,7 +622,11 @@
+ #ifdef USE_SYSV_TERMIO
+ ioctl (tty, TCSETAW, &tioorig);
+ #else /* not USE_SYSV_TERMIO */
++#ifdef USE_TERMIOS
++ tcsetattr (tty, TCSADRAIN, &tioorig);
++#else /* not USE_TERMIOS */
+ ioctl (tty, TIOCSETP, &sgorig);
++#endif /* use TERMIOS */
+ #endif /* USE_SYSV_TERMIO */
+ exit(1);
+ }
+
diff --git a/patch_cmds/diffstat/testing/case12.ref b/patch_cmds/diffstat/testing/case12.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12R.ref b/patch_cmds/diffstat/testing/case12R.ref
new file mode 100644
index 0000000..d8cc25c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12R.ref
@@ -0,0 +1,3 @@
+ main.c | 11 ++---------
+ resize.c | 47 ++++++++---------------------------------------
+ 2 files changed, 10 insertions(+), 48 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12Rp0.ref b/patch_cmds/diffstat/testing/case12Rp0.ref
new file mode 100644
index 0000000..0a69555
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12Rp0.ref
@@ -0,0 +1,3 @@
+ xc/programs/xterm/main.c | 11 +---------
+ xc/programs/xterm/resize.c | 47 +++++++--------------------------------------
+ 2 files changed, 10 insertions(+), 48 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12b.ref b/patch_cmds/diffstat/testing/case12b.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12b.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12f0.ref b/patch_cmds/diffstat/testing/case12f0.ref
new file mode 100644
index 0000000..97127ea
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12f0.ref
@@ -0,0 +1,3 @@
+ main.c | 11 9 + 2 - 0 !
+ resize.c | 47 39 + 8 - 0 !
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12k.ref b/patch_cmds/diffstat/testing/case12k.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12k.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12p1.ref b/patch_cmds/diffstat/testing/case12p1.ref
new file mode 100644
index 0000000..ec28fb8
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12p1.ref
@@ -0,0 +1,3 @@
+ programs/xterm/main.c | 11 +++++++++--
+ programs/xterm/resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12p9.ref b/patch_cmds/diffstat/testing/case12p9.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12p9.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12r1.ref b/patch_cmds/diffstat/testing/case12r1.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12r1.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12r2.ref b/patch_cmds/diffstat/testing/case12r2.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12r2.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case12u.ref b/patch_cmds/diffstat/testing/case12u.ref
new file mode 100644
index 0000000..0986dce
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case12u.ref
@@ -0,0 +1,3 @@
+ main.c | 11 +++++++++--
+ resize.c | 47 +++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 48 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case13.pat b/patch_cmds/diffstat/testing/case13.pat
new file mode 100644
index 0000000..1baad44
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13.pat
@@ -0,0 +1,303 @@
+From pauzner.dnttm.rssi.ru!uue@pauzner.dnttm.rssi.ru Wed Jan 14 05:40:34 1998
+Received: from allison.clark.net (allison.clark.net [207.97.14.170])
+ by ice.clark.net (8.8.8/8.8.8) with ESMTP id FAA28956
+ for <dickey@shell.clark.net>; Wed, 14 Jan 1998 05:40:28 -0500 (EST)
+Received: from helios.dnttm.ru (dnttm.wave.ras.ru [194.85.104.197])
+ by allison.clark.net (8.8.8/8.8.8) with ESMTP id NAA05915
+ for <dickey@clark.net>; Mon, 12 Jan 1998 13:50:43 -0500 (EST)
+Received: from pauzner.UUCP (uucp@localhost)
+ by helios.dnttm.ru (8.8.5/8.8.5/IP-3) with UUCP id VAA21992
+ for dickey@clark.net; Mon, 12 Jan 1998 21:46:03 +0300
+Received: by pauzner.dnttm.rssi.ru (dMail for DOS v2.06, 14Jul97);
+ Mon, 12 Jan 1998 21:44:21 +0300
+To: dickey@shell.clark.net
+References: <AAyibkq8tH@pauzner.dnttm.rssi.ru>
+Message-Id: <AB3Ickqyu0@pauzner.dnttm.rssi.ru>
+From: "Leonid Pauzner" <uue@pauzner.dnttm.rssi.ru>
+Date: Mon, 12 Jan 1998 21:44:19 +0300 (MSK)
+X-Mailer: dMail [Demos Mail for DOS v2.06]
+Subject: Re: please submit a patch NOW
+Lines: 276
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Transfer-Encoding: 7bit
+Status: RO
+
+This is for russian Cyrillic chartrans only:
+koi8-r and other Cyrillics now fall down to def7_uni transliteration
+if necessary (as should be). No "strip high bit" any more for koi8-r
+(UCAux.c), which made text completely unreadable for human
+and come from "before Unicode Era".
+(Somebody should look in LYCharUtil.c and LYCharSet.c
+to remove unnecessary staff where)
+
+Leonid Pauzner.
+
+
+
+*** UCAux.c Thu Jan 8 16:53:06 1998
+--- UCAux.c.new Sat Jan 10 15:40:48 1998
+***************
+*** 64,70 ****
+ /*
+ ** CJK mode may be off (i.e., HTCJK == NOCJK) because
+ ** the current document is not CJK, but the check may
+! ** be for capability in relation to another document,
+ ** for which CJK mode might be turned on when retrieved.
+ ** Thus, when the from charset is CJK, check if the to
+ ** charset is CJK, and return TQ_NO or TQ_GOOD depending on
+--- 64,70 ----
+ /*
+ ** CJK mode may be off (i.e., HTCJK == NOCJK) because
+ ** the current document is not CJK, but the check may
+! ** be for campability in relation to another document,
+ ** for which CJK mode might be turned on when retrieved.
+ ** Thus, when the from charset is CJK, check if the to
+ ** charset is CJK, and return TQ_NO or TQ_GOOD depending on
+***************
+*** 84,113 ****
+ **/
+ return TQ_NO;
+ }
+! if (!strcmp(fromname, "koi8-r")) {
+! /*
+! * Will try to use stripping of high bit...
+! */
+! tqmin = TQ_POOR;
+! }
+!
+! if (!strcmp(fromname, "koi8-r") || /* from cyrillic */
+! !strcmp(fromname, "iso-8859-5") ||
+! !strcmp(fromname, "cp866") ||
+! !strcmp(fromname, "cp1251") ||
+! !strcmp(fromname, "koi-8")) {
+! if (strcmp(toname, "iso-8859-5") &&
+! strcmp(toname, "koi8-r") &&
+! strcmp(toname, "cp866") &&
+! strcmp(toname, "cp1251"))
+! tqmax = TQ_POOR;
+! }
+ return ((LYCharSet_UC[from].UChndl >= 0) ? tqmax : tqmin);
+ }
+ }
+
+ /*
+! ** Returns YES if no tranlation necessary (because
+ ** charsets are equal, are equivalent, etc.).
+ */
+ PUBLIC BOOL UCNeedNotTranslate ARGS2(
+--- 84,98 ----
+ **/
+ return TQ_NO;
+ }
+! /* I am not sure with tqmax and tqmin :
+! ** does we need them in this procedure et all now? -LP
+! */
+ return ((LYCharSet_UC[from].UChndl >= 0) ? tqmax : tqmin);
+ }
+ }
+
+ /*
+! ** Returns YES if no translation necessary (because
+ ** charsets are equal, are equivalent, etc.).
+ */
+ PUBLIC BOOL UCNeedNotTranslate ARGS2(
+***************
+*** 274,296 ****
+ ** We set this, presently, for VISCII. - FM
+ */
+ pT->repl_translated_C0 = (p_out->enc == UCT_ENC_8BIT_C0);
+- /*
+- ** This is a flag for whether we are dealing with koi8-r
+- ** as the input, and could do 8th-bit stripping for other
+- ** output charsets. Note that this always sets 8th-bit
+- ** stripping if the input charset is KOI8-R and the output
+- ** charset needs it, i.e., regardless of the RawMode and
+- ** consequent HTPassEightBitRaw setting, so you can't look
+- ** at raw koi8-r without selecting that as the display
+- ** character set (or transparent). That's just as well,
+- ** but worth noting for developers - FM
+- */
+- pT->strip_raw_char_in = ((!intm_ucs ||
+- (p_out->enc == UCT_ENC_7BIT) ||
+- (p_out->repertoire &
+- UCT_REP_SUBSETOF_LAT1)) &&
+- cs_in != cs_out &&
+- !strcmp(p_in->MIMEname, "koi8-r"));
+ /*
+ ** use_ucs should be set TRUE if we have or will create
+ ** Unicode values for input octets or UTF multibytes. - FM
+--- 259,264 ----
+
+*** def7_uni.tbl Sun Nov 16 20:36:50 1997
+--- def7_uni.tbl.new Sat Jan 10 15:14:34 1998
+***************
+*** 232,237 ****
+--- 232,238 ----
+ # IPA symbols, from
+ # Linkname: FAQ: Representing IPA Phonetics in ASCII
+ # URL: http://www.hpl.hp.com/personal/Evan_Kirshenbaum/IPA/faq.html
++ # (corrected in Russian Cyrillic area).
+ #
+ 0x41 U+0251 # LATIN SMALL LETTER SCRIPT A -> A
+ U+0252:A.
+***************
+*** 418,424 ****
+ U+03f4:'%
+ U+03f5:j3
+ # Cyrillic capital letters
+- 0x65 U+0401
+ U+0402:D%
+ U+0403:G%
+ U+0404:IE
+--- 419,424 ----
+***************
+*** 432,481 ****
+ U+040c:KJ
+ U+040e:V%
+ U+040f:DZ
+! 0x61-0x62 U+0410-U+0411
+! 0x77 U+0412
+! 0x67 U+0413
+! 0x64-0x65 U+0414-U+0415
+! 0x76 U+0416
+! 0x7a U+0417
+! 0x69-0x70 U+0418-U+041f
+! 0x72-0x75 U+0420-U+0423
+! 0x66 U+0424
+! 0x68 U+0425
+! 0x63 U+0426
+! 0x7e U+0427
+! 0x7b U+0428
+! 0x7d U+0429
+! 0x27 U+042a
+! 0x79 U+042b
+! 0x78 U+042c
+! 0x7c U+042d
+! 0x60 U+042e
+! 0x71 U+042f
+!
+! # Cyrillic small letters
+! 0x41-0x42 U+0430-U+0431
+! 0x57 U+0432
+! 0x47 U+0433
+! 0x44-0x45 U+0434-U+0435
+! 0x56 U+0436
+! 0x5a U+0437
+! 0x49-0x50 U+0438-U+043f
+! 0x52-0x55 U+0440-U+0443
+! 0x46 U+0444
+! 0x48 U+0445
+! 0x43 U+0446
+! 0x5e U+0447
+! 0x5b U+0448
+! 0x5d U+0449
+! 0x27 U+044a
+! 0x59 U+044b
+! 0x58 U+044c
+! 0x5c U+044d
+! 0x40 U+044e
+! 0x51 U+044f
+!
+! 0x65 U+0451 #:io
+ U+0452:d%
+ U+0453:g%
+ U+0454:ie
+--- 432,506 ----
+ U+040c:KJ
+ U+040e:V%
+ U+040f:DZ
+! # Russian Cyrillic letters, transliterated
+! U+0401:IO
+! U+0410:A
+! U+0411:B
+! U+0412:V
+! U+0413:G
+! U+0414:D
+! U+0415:E
+! U+0416:ZH
+! U+0417:Z
+! U+0418:I
+! U+0419:J
+! U+041a:K
+! U+041b:L
+! U+041c:M
+! U+041d:N
+! U+041e:O
+! U+041f:P
+! U+0420:R
+! U+0421:S
+! U+0422:T
+! U+0423:U
+! U+0424:F
+! U+0425:H
+! U+0426:C
+! U+0427:CH
+! U+0428:SH
+! U+0429:SCH
+! U+042a:"
+! U+042b:Y
+! U+042c:'
+! U+042d:`E
+! U+042e:JU
+! U+042f:JA
+! U+0430:a
+! U+0431:b
+! U+0432:v
+! U+0433:g
+! U+0434:d
+! U+0435:e
+! U+0436:zh
+! U+0437:z
+! U+0438:i
+! U+0439:j
+! U+043a:k
+! U+043b:l
+! U+043c:m
+! U+043d:n
+! U+043e:o
+! U+043f:p
+! U+0440:r
+! U+0441:s
+! U+0442:t
+! U+0443:u
+! U+0444:f
+! U+0445:h
+! U+0446:c
+! U+0447:ch
+! U+0448:sh
+! U+0449:sch
+! U+044a:"
+! U+044b:y
+! U+044c:'
+! U+044d:`e
+! U+044e:ju
+! U+044f:ja
+! U+0451:io
+! # end of Russian Cyrillic letters.
+! # Cyrillic small letters (and some archaic)
+ U+0452:d%
+ U+0453:g%
+ U+0454:ie
+***************
+*** 1432,1438 ****
+ U+223e:CG
+ U+2243:?-
+ U+2245:?=
+! U+2248:?2
+ U+224c:=?
+ U+2253:HI
+ U+2260:!=
+--- 1457,1464 ----
+ U+223e:CG
+ U+2243:?-
+ U+2245:?=
+! # ALMOST EQUAL TO:
+! U+2248:~=
+ U+224c:=?
+ U+2253:HI
+ U+2260:!=
+
+
+
+
diff --git a/patch_cmds/diffstat/testing/case13.ref b/patch_cmds/diffstat/testing/case13.ref
new file mode 100644
index 0000000..fb619f1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13R.ref b/patch_cmds/diffstat/testing/case13R.ref
new file mode 100644
index 0000000..5e07c7d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13R.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 ++++++++!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 18 insertions(+), 1 deletion(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13Rp0.ref b/patch_cmds/diffstat/testing/case13Rp0.ref
new file mode 100644
index 0000000..5e07c7d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13Rp0.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 ++++++++!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 18 insertions(+), 1 deletion(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13b.ref b/patch_cmds/diffstat/testing/case13b.ref
new file mode 100644
index 0000000..fb619f1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13b.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13f0.ref b/patch_cmds/diffstat/testing/case13f0.ref
new file mode 100644
index 0000000..cb23818
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13f0.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 0 + 17 - 25 !
+ def7_uni.tbl | 118 1 + 1 - 116 !
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13k.ref b/patch_cmds/diffstat/testing/case13k.ref
new file mode 100644
index 0000000..fb619f1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13k.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13p1.ref b/patch_cmds/diffstat/testing/case13p1.ref
new file mode 100644
index 0000000..fb619f1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13p1.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13p9.ref b/patch_cmds/diffstat/testing/case13p9.ref
new file mode 100644
index 0000000..fb619f1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13p9.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13r1.ref b/patch_cmds/diffstat/testing/case13r1.ref
new file mode 100644
index 0000000..a3694d4
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13r1.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!
+ def7_uni.tbl | 118 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13r2.ref b/patch_cmds/diffstat/testing/case13r2.ref
new file mode 100644
index 0000000..a3694d4
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13r2.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!
+ def7_uni.tbl | 118 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case13u.ref b/patch_cmds/diffstat/testing/case13u.ref
new file mode 100644
index 0000000..fb619f1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case13u.ref
@@ -0,0 +1,3 @@
+ UCAux.c | 42 --------!!!!!!!!!!!!!
+ def7_uni.tbl | 118 -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ 2 files changed, 1 insertion(+), 18 deletions(-), 141 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case14.pat b/patch_cmds/diffstat/testing/case14.pat
new file mode 100644
index 0000000..56dd567
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14.pat
@@ -0,0 +1,12 @@
+*** /tmp/xx010 Sat Dec 21 08:04:03 1996
+--- test/ncurses.c Sun Dec 29 00:11:07 1996
+***************
+*** 2746,2751 ****
+--- 2746,2752 ----
+ static void
+ set_terminal_modes(void)
+ {
++ noraw();
+ cbreak();
+ noecho();
+ scrollok(stdscr, TRUE);
diff --git a/patch_cmds/diffstat/testing/case14.ref b/patch_cmds/diffstat/testing/case14.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14R.ref b/patch_cmds/diffstat/testing/case14R.ref
new file mode 100644
index 0000000..2a549f3
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14R.ref
@@ -0,0 +1,2 @@
+ xx010 | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case14Rp0.ref b/patch_cmds/diffstat/testing/case14Rp0.ref
new file mode 100644
index 0000000..4a9cbc9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14Rp0.ref
@@ -0,0 +1,2 @@
+ /tmp/xx010 | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case14b.ref b/patch_cmds/diffstat/testing/case14b.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14b.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14f0.ref b/patch_cmds/diffstat/testing/case14f0.ref
new file mode 100644
index 0000000..da5213d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14f0.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 1 + 0 - 0 !
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14k.ref b/patch_cmds/diffstat/testing/case14k.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14k.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14p1.ref b/patch_cmds/diffstat/testing/case14p1.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14p1.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14p9.ref b/patch_cmds/diffstat/testing/case14p9.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14p9.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14r1.ref b/patch_cmds/diffstat/testing/case14r1.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14r1.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14r2.ref b/patch_cmds/diffstat/testing/case14r2.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14r2.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case14u.ref b/patch_cmds/diffstat/testing/case14u.ref
new file mode 100644
index 0000000..51424e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case14u.ref
@@ -0,0 +1,2 @@
+ ncurses.c | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case15.pat b/patch_cmds/diffstat/testing/case15.pat
new file mode 100644
index 0000000..7db58a4
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15.pat
@@ -0,0 +1,443 @@
+--- nvi-1.79.orig/build/Makefile.in
++++ nvi-1.79/build/Makefile.in
+@@ -95,15 +95,15 @@
+ ($(mkdir) $(mandir)/cat1 && $(chmod) $(dmode) $(mandir)/cat1)
+ @echo "Installing man pages: $(mandir) ..."
+ cd $(mandir)/cat1 && $(rm) -f `echo vi.0 | sed '$(transform)'`
+- $(cp) $(srcdir)/docs/USD.doc/vi.man/vi.0 \
+- $(mandir)/cat1/`echo vi.0 | sed '$(transform)'`
+- cd $(mandir)/cat1 && $(chmod) $(fmode) `echo vi.0 | sed '$(transform)'`
+- cd $(mandir)/cat1 && $(rm) -f `echo ex.0 | sed '$(transform)'`
+- cd $(mandir)/cat1 && $(rm) -f `echo view.0 | sed '$(transform)'`
+- cd $(mandir)/cat1 && $(ln) \
+- `echo vi.0 | sed '$(transform)'` `echo ex.0 | sed '$(transform)'`
+- cd $(mandir)/cat1 && $(ln) \
+- `echo vi.0 | sed '$(transform)'` `echo view.0 | sed '$(transform)'`
++ #$(cp) $(srcdir)/docs/USD.doc/vi.man/vi.0 \
++ #$(mandir)/cat1/`echo vi.0 | sed '$(transform)'`
++ #cd $(mandir)/cat1 && $(chmod) $(fmode) `echo vi.0 | sed '$(transform)'`
++ #cd $(mandir)/cat1 && $(rm) -f `echo ex.0 | sed '$(transform)'`
++ #cd $(mandir)/cat1 && $(rm) -f `echo view.0 | sed '$(transform)'`
++ #cd $(mandir)/cat1 && $(ln) \
++ #`echo vi.0 | sed '$(transform)'` `echo ex.0 | sed '$(transform)'`
++ #cd $(mandir)/cat1 && $(ln) \
++ #`echo vi.0 | sed '$(transform)'` `echo view.0 | sed '$(transform)'`
+ [ -d $(mandir)/man1 ] || \
+ ($(mkdir) $(mandir)/man1 && $(chmod) $(dmode) $(mandir)/man1)
+ cd $(mandir)/man1 && $(rm) -f `echo vi.1 | sed '$(transform)'`
+@@ -137,16 +137,16 @@
+ $(chmod) $(dmode) $(datadir)/vi/catalog
+ (cd $(srcdir)/catalog && $(cp) $(cat) $(datadir)/vi/catalog && \
+ cd $(datadir)/vi/catalog && $(chmod) $(fmode) *)
+- @echo "Installing Perl scripts: $(datadir)/vi/perl ..."
+- $(mkdir) $(datadir)/vi/perl && $(chmod) $(dmode) $(datadir)/vi/perl
+- [ -f VI.pm ] && $(cp) VI.pm $(datadir)/vi/perl && \
+- cd $(datadir)/vi/perl && $(chmod) $(fmode) VI.pm)
+- (cd $(srcdir)/perl_scripts && $(cp) *.pl $(datadir)/vi/perl && \
+- cd $(datadir)/vi/perl && $(chmod) $(fmode) *.pl)
+- @echo "Installing Tcl scripts: $(datadir)/vi/tcl ..."
+- $(mkdir) $(datadir)/vi/tcl && $(chmod) $(dmode) $(datadir)/vi/tcl
+- (cd $(srcdir)/tcl_scripts && $(cp) *.tcl $(datadir)/vi/tcl && \
+- cd $(datadir)/vi/tcl && $(chmod) $(fmode) *.tcl)
++ #@echo "Installing Perl scripts: $(datadir)/vi/perl ..."
++ #$(mkdir) $(datadir)/vi/perl && $(chmod) $(dmode) $(datadir)/vi/perl
++ #[ -f VI.pm ] && $(cp) VI.pm $(datadir)/vi/perl && \
++ # cd $(datadir)/vi/perl && $(chmod) $(fmode) VI.pm)
++ #(cd $(srcdir)/perl_scripts && $(cp) *.pl $(datadir)/vi/perl && \
++ # cd $(datadir)/vi/perl && $(chmod) $(fmode) *.pl)
++ #@echo "Installing Tcl scripts: $(datadir)/vi/tcl ..."
++ #$(mkdir) $(datadir)/vi/tcl && $(chmod) $(dmode) $(datadir)/vi/tcl
++ #(cd $(srcdir)/tcl_scripts && $(cp) *.tcl $(datadir)/vi/tcl && \
++ # cd $(datadir)/vi/tcl && $(chmod) $(fmode) *.tcl)
+ @echo "Installing recover script: $(datadir)/vi/recover ..."
+ ($(cp) recover $(datadir)/vi/recover && \
+ $(chmod) $(emode) $(datadir)/vi/recover)
+--- nvi-1.79.orig/build/recover
++++ nvi-1.79/build/recover
+@@ -0,0 +1,49 @@
++#!/bin/sh -
++#
++# @(#)recover.in 8.8 (Berkeley) 10/10/96
++#
++# Script to recover nvi edit sessions.
++
++RECDIR="/var/tmp/vi.recover"
++SENDMAIL="/usr/sbin/sendmail"
++
++echo 'Recovering nvi editor sessions.'
++
++# Check editor backup files.
++vibackup=`echo $RECDIR/vi.*`
++if [ "$vibackup" != "$RECDIR/vi.*" ]; then
++ for i in $vibackup; do
++ # Only test files that are readable.
++ if test ! -r $i; then
++ continue
++ fi
++
++ # Unmodified nvi editor backup files either have the
++ # execute bit set or are zero length. Delete them.
++ if test -x $i -o ! -s $i; then
++ rm $i
++ fi
++ done
++fi
++
++# It is possible to get incomplete recovery files, if the editor crashes
++# at the right time.
++virecovery=`echo $RECDIR/recover.*`
++if [ "$virecovery" != "$RECDIR/recover.*" ]; then
++ for i in $virecovery; do
++ # Only test files that are readable.
++ if test ! -r $i; then
++ continue
++ fi
++
++ # Delete any recovery files that are zero length, corrupted,
++ # or that have no corresponding backup file. Else send mail
++ # to the user.
++ recfile=`awk '/^X-vi-recover-path:/{print $2}' < $i`
++ if test -n "$recfile" -a -s "$recfile"; then
++ $SENDMAIL -t < $i
++ else
++ rm $i
++ fi
++ done
++fi
+--- nvi-1.79.orig/debian/README.debian
++++ nvi-1.79/debian/README.debian
+@@ -0,0 +1,14 @@
++nvi for DEBIAN
++----------------------
++
++This package was debianized by Steve Greenland
++<stevegr@master.debian.org> on Tue, 29 Oct 1996, using
++the new source format. Much of it is based on previous work by Robert
++Sanders <Robert.Sanders@linux.org> or <rsanders@mindspring.com>, and
++Ian Murdock <imurdock@debian.org>.
++
++It was downloaded from ftp://mongoose.bostic.com/pub/nvi.tar.gz,
++which seems to be the new home site: ftp.cs.berkeley.edu no longer
++archives nvi.
++
++Steve Greenland <stevegr@master.debian.org>, Sat, 15 Nov 1997
+--- nvi-1.79.orig/debian/changelog
++++ nvi-1.79/debian/changelog
+@@ -0,0 +1,53 @@
++nvi (1.79-5) frozen unstable; urgency=low
++
++ * Fixed removal of editor alternative in prerm (reported by Dale Scheetz)
++
++ -- Steve Greenland <stevegr@master.debian.org> Sun, 10 May 1998 18:54:02 -0500
++
++nvi (1.79-4) unstable; urgency=low
++
++ * fixed uncompressed alternatives links (closes:Bug#16171)
++ * fixed build problem (clean failed when already clean) (closes:Bug#15263)
++
++ -- Steve Greenland <stevegr@master.debian.org> Sun, 5 Apr 1998 13:31:46 -0500
++
++nvi (1.79-3) frozen unstable; urgency=low
++
++ * Rebuilt with clean md5sum file. (closes:Bug#19377,Bug#18683)
++
++ -- Steve Greenland <stevegr@master.debian.org> Thu, 19 Mar 1998 22:14:12 -0600
++
++nvi (1.79-2) unstable; urgency=low
++
++ * Fixed build (actually clean) procedure (Bug#15263)
++
++ -- Steve Greenland <stevegr@master.debian.org> Fri, 28 Nov 1997 13:58:17 -0600
++
++nvi (1.79-1) unstable; urgency=low
++
++ * Removed cleanup of nvi-1.34-4 from postinst, shouldn't be necessary
++ any longer (Bug #6563)
++ * Removed /usr/man/cat1 from package (Bug #6240, #8226)
++ * Fixed permissions on executables (and man pages) (Bug #5998)
++ * New upstream version (Bug #14086)
++ * Compiled for libc6 (Bug #11709)
++ * debian/rules calls 'make distclean' on clean to remove configuration stuff
++ * Added update-alternatve calls to support Debian's /usr/bin/editor.
++
++ -- Steve Greenland <stevegr@master.debian.org> Sat, 15 Nov 1997 17:50:02 -0600
++
++nvi (1.76-1) unstable; urgency=low
++
++ * New upstream version. (Fixes Bugs 2825, 3967, 4511)
++ * Modified Makefile.in permissions.
++ * New source package format, using debstd (from debmake package).
++ * Modified Makefile.in to not install pre-formatted man pages.
++ * Cleaned up postinst to avoid dangling links from update alternatives.
++ * Modified Makefile.in to not install Perl, Tcl, and Tk stuff. (Will
++ probably add back later as a separate package.)
++
++ -- Steve Greenland <stevegr@master.debian.org> Sun, 1 Dec 1996 22:03:37 -0600
++
++Local variables:
++mode: debian-changelog
++End:
+--- nvi-1.79.orig/debian/conffiles
++++ nvi-1.79/debian/conffiles
+@@ -0,0 +1 @@
++/etc/rc.boot/nvi
+--- nvi-1.79.orig/debian/control
++++ nvi-1.79/debian/control
+@@ -0,0 +1,19 @@
++Source: nvi
++Section: editors
++Priority: important
++Maintainer: Steve Greenland <stevegr@master.debian.org>
++Standards-Version: 2.4.0.0
++
++Package: nvi
++Architecture: any
++Depends: ${shlibs:Depends}
++Description: 4.4BSD re-implementation of vi.
++ Vi is the original screen based text editor for Unix systems.
++ It is considered the standard text editor, and is available on
++ almost all Unix systems.
++ .
++ Nvi is intended as a "bug-for-bug compatible" clone of the original
++ BSD vi editor. As such, it doesn't have a lot of snazzy features as do
++ some of the other vi clones such as elvis and vim. However, if all
++ you want is vi, this is the one to get.
++
+--- nvi-1.79.orig/debian/postinst
++++ nvi-1.79/debian/postinst
+@@ -0,0 +1,21 @@
++#! /bin/sh
++
++# Remove the old view link (nvi-1.34-14, maybe earlier)
++# Don't bother the user with it.
++update-alternatives --remove view /usr/bin/nvi >/dev/null
++
++update-alternatives --install /usr/bin/ex ex /usr/bin/nex 30 \
++ --slave /usr/man/man1/ex.1.gz ex.1.gz /usr/man/man1/nex.1.gz
++update-alternatives --install /usr/bin/vi vi /usr/bin/nvi 30 \
++ --slave /usr/man/man1/vi.1.gz vi.1.gz /usr/man/man1/nvi.1.gz
++update-alternatives --install /usr/bin/view view /usr/bin/nview 30 \
++ --slave /usr/man/man1/view.1.gz view.1.gz /usr/man/man1/nview.1.gz
++
++# These are for the generic editor links
++
++update-alternatives --install /usr/bin/editor editor /usr/bin/nvi 100 \
++ --slave /usr/man/man1/editor.1.gz editor.1.gz /usr/man/man1/nvi.1.gz
++
++
++
++exit 0
+--- nvi-1.79.orig/debian/prerm
++++ nvi-1.79/debian/prerm
+@@ -0,0 +1,11 @@
++#! /bin/sh
++
++if [ "$1" != "upgrade" ]
++then
++ update-alternatives --remove editor /usr/bin/nvi
++ update-alternatives --remove ex /usr/bin/nex
++ update-alternatives --remove vi /usr/bin/nvi
++ update-alternatives --remove view /usr/bin/nview
++fi
++
++exit 0
+--- nvi-1.79.orig/debian/rc.boot
++++ nvi-1.79/debian/rc.boot
+@@ -0,0 +1,58 @@
++#!/bin/sh
++# @(#)recover.script 8.7 (Berkeley) 8/16/94
++#
++# Script to recover nvi edit sessions.
++#
++RECDIR=/var/tmp/vi.recover
++SENDMAIL=/usr/lib/sendmail
++
++case "$1" in
++ start)
++ echo -n 'Recovering nvi editor sessions... '
++
++ # Check editor backup files.
++ vibackup=`echo $RECDIR/vi.*`
++ if [ "$vibackup" != "$RECDIR/vi.*" ]; then
++ for i in $vibackup; do
++ # Only test files that are readable.
++ if test ! -r $i; then
++ continue
++ fi
++
++ # Unmodified nvi editor backup files either have the
++ # execute bit set or are zero length. Delete them.
++ if test -x $i -o ! -s $i; then
++ rm $i
++ fi
++ done
++ fi
++
++ # It is possible to get incomplete recovery files, if the editor crashes
++ # at the right time.
++ virecovery=`echo $RECDIR/recover.*`
++ if [ "$virecovery" != "$RECDIR/recover.*" ]; then
++ for i in $virecovery; do
++ # Only test files that are readable.
++ if test ! -r $i; then
++ continue
++ fi
++
++ # Delete any recovery files that are zero length, corrupted,
++ # or that have no corresponding backup file. Else send mail
++ # to the user.
++ recfile=`awk '/^X-vi-recover-path:/{print $2}' < $i`
++ if test -n "$recfile" -a -s "$recfile"; then
++ $SENDMAIL -t < $i
++ else
++ rm $i
++ fi
++ done
++ fi
++
++ echo "done."
++ ;;
++ stop)
++ ;;
++esac
++
++exit 0
+--- nvi-1.79.orig/debian/rules
++++ nvi-1.79/debian/rules
+@@ -0,0 +1,89 @@
++#!/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
++
++# There used to be `source' and `diff' targets in this file, and many
++# packages also had `changes' and `dist' targets. These functions
++# have been taken over by dpkg-source, dpkg-genchanges and
++# dpkg-buildpackage in a package-independent way, and so these targets
++# are obsolete.
++
++package=nvi
++
++# This is needed for the install target
++curdir=$(shell pwd)
++
++# This bit with build.deb is because the nvi package has a
++# 'build' directory, and the normal use of 'touch build' won't
++# work.
++
++build: build.deb
++
++build.deb:
++ $(checkdir)
++ (cd ./build && CC=gcc ADDCPPFLAGS="-O2 -g" ./configure --prefix=/usr --disable-curses --datadir=/usr/lib --program-prefix=n)
++ (cd ./build && make)
++ touch build.deb
++
++
++clean:
++ $(checkdir)
++ -rm -f build.deb
++ (cd ./build && make distclean || /bin/true )
++ -rm -rf *~ debian/tmp debian/*~ debian/files*
++
++binary-indep: checkroot build.deb
++ $(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.deb
++ $(checkdir)
++ -rm -rf debian/tmp
++ install -d debian/tmp/usr/bin debian/tmp/etc
++ (cd build && make install prefix=$(curdir)/debian/tmp/usr)
++ -rmdir debian/tmp/usr/man/cat1
++ chmod u+w debian/tmp/usr/bin/* debian/tmp/usr/man/man1/nvi.*
++ cp LICENSE debian/copyright
++ # Compress the man pages -- debstd can't do this because they
++ # are all links. Also, make them soft links instead of hard links
++ (cd debian/tmp/usr/man/man1 && \
++ rm {nex,nview}.1 && gzip -9 nvi.1 && \
++ ln -s nvi.1.gz nex.1.gz && ln -s nvi.1.gz nview.1.gz)
++# Must have debmake installed for this to work. Otherwise please copy
++# /usr/bin/debstd into the debian directory and change debstd to debian/debstd
++ debstd -m docs/changelog README FAQ
++ #
++ # Compress the changelogs if debstd didn't
++ #
++ ( set -e && cd debian/tmp/usr/doc/nvi && \
++ if [ -f changelog ] ; then gzip -9 changelog ; fi &&\
++ if [ -f changelog.Debian ] ; then gzip -9 changelog.Debian;fi)
++ dpkg-gencontrol
++ 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
+--- nvi-1.79.orig/debian/substvars
++++ nvi-1.79/debian/substvars
+@@ -0,0 +1 @@
++shlibs:Depends=libc6, ncurses3.4
+--- nvi-1.79.orig/debian/copyright
++++ nvi-1.79/debian/copyright
+@@ -0,0 +1,40 @@
++The vi program is freely redistributable. You are welcome to copy, modify
++and share it with others under the conditions listed in this file. If any
++company (not any individual!) finds vi sufficiently useful that you would
++have purchased it, or if any company wishes to redistribute it, contributions
++to the authors would be appreciated.
++
++/*-
++ * Copyright (c) 1991, 1992, 1993, 1994
++ * The Regents of the University of California. All rights reserved.
++ * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996
++ * Keith Bostic. All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in the
++ * documentation and/or other materials provided with the distribution.
++ * 3. All advertising materials mentioning features or use of this software
++ * must display the following acknowledgement:
++ * This product includes software developed by the University of
++ * California, Berkeley and its contributors.
++ * 4. Neither the name of the University nor the names of its contributors
++ * may be used to endorse or promote products derived from this software
++ * without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
++ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
++ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
++ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
++ * SUCH DAMAGE.
++ */
diff --git a/patch_cmds/diffstat/testing/case15.ref b/patch_cmds/diffstat/testing/case15.ref
new file mode 100644
index 0000000..28906ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 ++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1
+ debian/control | 19 ++++++++++
+ debian/copyright | 40 ++++++++++++++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15R.ref b/patch_cmds/diffstat/testing/case15R.ref
new file mode 100644
index 0000000..ee378c8
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15R.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 ++++++++++-----------
+ build/recover | 49 ----------------------------
+ debian/README.debian | 14 --------
+ debian/changelog | 53 ------------------------------
+ debian/conffiles | 1
+ debian/control | 19 ----------
+ debian/copyright | 40 ----------------------
+ debian/postinst | 21 ------------
+ debian/prerm | 11 ------
+ debian/rc.boot | 58 ---------------------------------
+ debian/rules | 89 ---------------------------------------------------
+ debian/substvars | 1
+ 12 files changed, 19 insertions(+), 375 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15Rp0.ref b/patch_cmds/diffstat/testing/case15Rp0.ref
new file mode 100644
index 0000000..d7ff549
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15Rp0.ref
@@ -0,0 +1,13 @@
+ nvi-1.79.orig/build/Makefile.in | 38 +++++++--------
+ nvi-1.79.orig/build/recover | 49 --------------------
+ nvi-1.79.orig/debian/README.debian | 14 -----
+ nvi-1.79.orig/debian/changelog | 53 ----------------------
+ nvi-1.79.orig/debian/conffiles | 1
+ nvi-1.79.orig/debian/control | 19 -------
+ nvi-1.79.orig/debian/copyright | 40 ----------------
+ nvi-1.79.orig/debian/postinst | 21 --------
+ nvi-1.79.orig/debian/prerm | 11 ----
+ nvi-1.79.orig/debian/rc.boot | 58 ------------------------
+ nvi-1.79.orig/debian/rules | 89 -------------------------------------
+ nvi-1.79.orig/debian/substvars | 1
+ 12 files changed, 19 insertions(+), 375 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15b.ref b/patch_cmds/diffstat/testing/case15b.ref
new file mode 100644
index 0000000..28906ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15b.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 ++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1
+ debian/control | 19 ++++++++++
+ debian/copyright | 40 ++++++++++++++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15f0.ref b/patch_cmds/diffstat/testing/case15f0.ref
new file mode 100644
index 0000000..6664f4f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15f0.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 19 + 19 - 0 !
+ build/recover | 49 49 + 0 - 0 !
+ debian/README.debian | 14 14 + 0 - 0 !
+ debian/changelog | 53 53 + 0 - 0 !
+ debian/conffiles | 1 1 + 0 - 0 !
+ debian/control | 19 19 + 0 - 0 !
+ debian/copyright | 40 40 + 0 - 0 !
+ debian/postinst | 21 21 + 0 - 0 !
+ debian/prerm | 11 11 + 0 - 0 !
+ debian/rc.boot | 58 58 + 0 - 0 !
+ debian/rules | 89 89 + 0 - 0 !
+ debian/substvars | 1 1 + 0 - 0 !
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15k.ref b/patch_cmds/diffstat/testing/case15k.ref
new file mode 100644
index 0000000..28906ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15k.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 ++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1
+ debian/control | 19 ++++++++++
+ debian/copyright | 40 ++++++++++++++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15p1.ref b/patch_cmds/diffstat/testing/case15p1.ref
new file mode 100644
index 0000000..28906ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15p1.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 ++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1
+ debian/control | 19 ++++++++++
+ debian/copyright | 40 ++++++++++++++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15p9.ref b/patch_cmds/diffstat/testing/case15p9.ref
new file mode 100644
index 0000000..4fe8965
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15p9.ref
@@ -0,0 +1,13 @@
+ Makefile.in | 38 ++++++++++++------------
+ README.debian | 14 +++++++++
+ changelog | 53 ++++++++++++++++++++++++++++++++++
+ conffiles | 1
+ control | 19 ++++++++++++
+ copyright | 40 ++++++++++++++++++++++++++
+ postinst | 21 +++++++++++++
+ prerm | 11 +++++++
+ rc.boot | 58 +++++++++++++++++++++++++++++++++++++
+ recover | 49 +++++++++++++++++++++++++++++++
+ rules | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ substvars | 1
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15r1.ref b/patch_cmds/diffstat/testing/case15r1.ref
new file mode 100644
index 0000000..91bf4a2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15r1.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 +++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1 +
+ debian/control | 19 +++++++++++
+ debian/copyright | 40 +++++++++++++++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1 +
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15r2.ref b/patch_cmds/diffstat/testing/case15r2.ref
new file mode 100644
index 0000000..91bf4a2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15r2.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 +++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1 +
+ debian/control | 19 +++++++++++
+ debian/copyright | 40 +++++++++++++++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1 +
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case15u.ref b/patch_cmds/diffstat/testing/case15u.ref
new file mode 100644
index 0000000..2c98d98
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case15u.ref
@@ -0,0 +1,13 @@
+ build/Makefile.in | 38 ++++++++++-----------
+ build/recover | 49 ++++++++++++++++++++++++++++
+ debian/README.debian | 14 ++++++++
+ debian/changelog | 53 ++++++++++++++++++++++++++++++
+ debian/conffiles | 1
+ debian/control | 19 ++++++++++
+ debian/postinst | 21 ++++++++++++
+ debian/prerm | 11 ++++++
+ debian/rc.boot | 58 +++++++++++++++++++++++++++++++++
+ debian/rules | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ debian/substvars | 1
+ debian/copyright | 40 ++++++++++++++++++++++
+ 12 files changed, 375 insertions(+), 19 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16.pat b/patch_cmds/diffstat/testing/case16.pat
new file mode 100644
index 0000000..839a330
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16.pat
@@ -0,0 +1,2036 @@
+
+ PDCurses 2.5
+ (Public Domain Curses for DOS, OS/2, X11 and Win32)
+
+
+INTRODUCTION:
+
+This release of PDCurses includes the following changes:
+
+- full support of X11 selection handling
+- removed the need for the cursos2.h file
+- enabled the "shifted" key on the numeric keypad
+- added native clipboard support for X11, Win32 and OS/2
+- added extra functions for obtaining internal PDCUrses status
+- added clipboard and key modifier tests in testcurs.c
+- fixes for panel library
+- key modifiers pressed by themselves are now returned as keys
+- Added X11 shared library support
+- Added extra slk formats supported by ncurses
+- Fixed bug with resizing the terminal when slk were on.
+- Changed behaviour of slk_attrset(), slk_attron() alk_attroff()
+ functions to work more like ncurses.
+
+BUGS FIXED:
+
+some minor bug and portability fixes were included in this release
+
+NEW FUNCTIONS:
+
+PDC_getclipboard() and PDC_setclipboard() for accessing the native
+clipboard.
+PDC_set_title() for setting the title of the window (X11 and Win32 only)
+PDC_get_input_fd() for getting the file handle of the PDCurses input
+PDC_get_key_modifiers() for getting the keyboard modifier settings at the
+time of the last (w)getch()
+initscrX() (only for X11 port) which allows standard X11 switches to
+be passed to the application
+
+
+NEW COMPILER SUPPORT:
+
+- MingW32 GNU compiler under Win95/NT
+- Cygnus Win32 GNU compiler under Win95/NT
+- Borland C++ for OS/2 1.0+
+- lcc-win32 compiler under Win95/NT
+
+Makefiles for each platform/compiler option reside in the platform
+directory. These all have an extension of .mak.
+
+
+ACKNOWLEGEMENTS: (for this release)
+
+Georg Fuchs for various changes.
+Juan David Palomar for pointing out getnstr() was not implemented.
+William McBrine for fix to allow black/black as valid color pair.
+Peter Preus for pointing out the missing bccos2.mak file.
+Laura Michaels for a couple of bug fixes and changes required to support
+ Mingw32 compiler.
+Frank Heckenbach for PDC_get_input_fd() and some portability fixes and
+ the fixes for panel library.
+Matthias Burian for the lcc-win32 compiler support.
+
+Cheers, Mark
+------------------------------------------------------------------------
+ Mark Hessling Email: M.Hessling@qut.edu.au
+ PO Box 203 http://www.lightlink.com/hessling/
+ Bellara AUTHOR of | MAINTAINER of
+ QLD 4507 THE | PDCurses
+ Australia Rexx/SQL | Regina
+ Member of RexxLA: http://www.rexxla.org/
+------------------------------------------------------------------------
+
+ Module: PDCurses
+ Detailed differences between 2_4 and Latest
+
+--------------------------------------------------------------------------------
+
+Index: PDCurses/Makefile.in
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/Makefile.in,v
+retrieving revision 1.1
+retrieving revision 1.3
+diff -b -w -r1.1 -r1.3
+7,8c7,8
+< VER=24
+< VER_DOT=2.4
+---
+> VER=25
+> VER_DOT=2.5
+18,19c18
+< INSTALL =@INSTALL@
+< INSTALL_DATA =@INSTALL_DATA@
+---
+> INSTALL =$(srcdir)/install-sh
+20a20,22
+> RXLIBPRE = @RXLIBPRE@
+> RXLIBPST = @RXLIBPST@
+> SHLFILE = XCurses
+35,42c37,46
+< $(INSTALL_DATA) $(srcdir)/curses.h $(includedir)/xcurses.h
+< sed -e 's/#include <curses.h>/#include<xcurses.h>/' < panel.h > xpanel.h
+< $(INSTALL_DATA) $(srcdir)/xpanel.h $(includedir)/panel.h
+< $(INSTALL_DATA) pdcurses/libXCurses.a $(libdir)/libXCurses.a
+< $(INSTALL_DATA) pdcurses/$(RXLIBPRE)$(SHLFILE)$(RXLIBPST) $(libdir)/$(RXLIBPRE)$(SHLFILE)$(RXLIBPST)
+< $(RANLIB) $(libdir)/libXCurses.a
+< $(INSTALL_DATA) panel/libpanel.a $(libdir)/libpanel.a
+< $(RANLIB) $(libdir)/libpanel.a
+---
+> $(INSTALL) -d -m 755 $(libdir)
+> $(INSTALL) -d -m 755 $(includedir)
+> $(INSTALL) -c -m 644 $(srcdir)/curses.h $(includedir)/xcurses.h
+> sed -e 's/#include <curses.h>/#include <xcurses.h>/' < $(srcdir)/panel.h > ./xpanel.h
+> $(INSTALL) -m 644 ./xpanel.h $(includedir)/xpanel.h
+> $(INSTALL) -c -m 644 pdcurses/libXCurses.a $(libdir)/libXCurses.a
+> -$(RANLIB) $(libdir)/libXCurses.a
+> $(INSTALL) -c -m 555 pdcurses/$(RXLIBPRE)$(SHLFILE)$(RXLIBPST) $(libdir)/$(RXLIBPRE)$(SHLFILE)$(RXLIBPST)
+> $(INSTALL) -c -m 644 panel/libpanel.a $(libdir)/libpanel.a
+> -$(RANLIB) $(libdir)/libpanel.a
+57c61
+< curses.h xcurses.h curspriv.h panel.h x11.h maintain.er readme.* makezip.cmd \
+---
+> curses.h xcurses.h curspriv.h panel.h maintain.er readme.* makezip.cmd \
+63c67,68
+< x11/README x11/*.c x11/*.xbm x11/*.def x11/*.h \
+---
+> x11/README x11/*.c x11/*.xbm x11/*.def x11/*.h x11/process/*.c x11/*.exp \
+> x11/process/*.c x11/process/*.h x11/thread/*.c x11/thread/*.h \
+66c71
+< pdcurses/Makefile.in demos/Makefile.in panel/Makefile.in tools/Makefile.in
+---
+> pdcurses/Makefile.in pdcurses/Makefile.aix.in demos/Makefile.in panel/Makefile.in tools/Makefile.in
+69c74
+< (cd ..; tar cvf - $(PDC_DIR)/README $(PDC_DIR)/INSTALL $(PDC_DIR)/README $(PDC_DIR)/Makefile.in \
+---
+> (cd ..; tar cvf - $(PDC_DIR)/README $(PDC_DIR)/INSTALL $(PDC_DIR)/TODO $(PDC_DIR)/Makefile.in \
+71c76
+< $(PDC_DIR)/config.sub $(PDC_DIR)/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/xcurses.h \
+---
+> $(PDC_DIR)/config.sub $(PDC_DIR)/configure.in $(PDC_DIR)/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/xcurses.h \
+73c78
+< $(PDC_DIR)/x11.h $(PDC_DIR)/maintain.er $(PDC_DIR)/readme.* $(PDC_DIR)/makezip.cmd \
+---
+> $(PDC_DIR)/maintain.er $(PDC_DIR)/readme.* $(PDC_DIR)/makezip.cmd \
+75c80
+< $(PDC_DIR)/panel/README $(PDC_DIR)/panel/*.c \
+---
+> $(PDC_DIR)/panel/README $(PDC_DIR)/panel/*.c $(PDC_DIR)/*.spec \
+79c84,85
+< $(PDC_DIR)/x11/README $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.def $(PDC_DIR)/x11/*.h \
+---
+> $(PDC_DIR)/x11/README $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.def $(PDC_DIR)/x11/*.h $(PDC_DIR)/x11/*.exp \
+> $(PDC_DIR)/x11/process/*.c $(PDC_DIR)/x11/process/*.h $(PDC_DIR)/x11/thread/*.c $(PDC_DIR)/x11/thread/*.h \
+82c88
+< $(PDC_DIR)/pdcurses/Makefile.in $(PDC_DIR)/demos/Makefile.in $(PDC_DIR)/tools/Makefile.in \
+---
+> $(PDC_DIR)/pdcurses/Makefile.in $(PDC_DIR)/pdcurses/Makefile.aix.in $(PDC_DIR)/demos/Makefile.in $(PDC_DIR)/tools/Makefile.in \
+86c92
+< (cd ..; tar cvf - $(PDC_DIR)/README $(PDC_DIR)/INSTALL $(PDC_DIR)/README $(PDC_DIR)/Makefile.in \
+---
+> (cd ..; tar cvf - $(PDC_DIR)/README $(PDC_DIR)/INSTALL $(PDC_DIR)/TODO $(PDC_DIR)/Makefile.in \
+88c94
+< $(PDC_DIR)/config.sub $(PDC_DIR)/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/xcurses.h \
+---
+> $(PDC_DIR)/config.sub $(PDC_DIR)/configure.in $(PDC_DIR)/install-sh $(PDC_DIR)/curses.h $(PDC_DIR)/xcurses.h \
+90c96
+< $(PDC_DIR)/x11.h $(PDC_DIR)/maintain.er $(PDC_DIR)/readme.* $(PDC_DIR)/makezip.cmd \
+---
+> $(PDC_DIR)/maintain.er $(PDC_DIR)/readme.* $(PDC_DIR)/makezip.cmd \
+92c98
+< $(PDC_DIR)/panel/README $(PDC_DIR)/panel/*.c \
+---
+> $(PDC_DIR)/panel/README $(PDC_DIR)/panel/*.c $(PDC_DIR)/*.spec \
+96c102,103
+< $(PDC_DIR)/x11/README $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.def $(PDC_DIR)/x11/*.h \
+---
+> $(PDC_DIR)/x11/README $(PDC_DIR)/x11/*.c $(PDC_DIR)/x11/*.xbm $(PDC_DIR)/x11/*.def $(PDC_DIR)/x11/*.h $(PDC_DIR)/x11/*.exp \
+> $(PDC_DIR)/x11/process/*.c $(PDC_DIR)/x11/process/*.h $(PDC_DIR)/x11/thread/*.c $(PDC_DIR)/x11/thread/*.h \
+99c106
+< $(PDC_DIR)/pdcurses/Makefile.in $(PDC_DIR)/demos/Makefile.in $(PDC_DIR)/tools/Makefile.in \
+---
+> $(PDC_DIR)/pdcurses/Makefile.in $(PDC_DIR)/pdcurses/Makefile.aix.in $(PDC_DIR)/demos/Makefile.in $(PDC_DIR)/tools/Makefile.in \
+
+Index: PDCurses/README
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/README,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+21,22c21,23
+< PDCurses has been ported to DOS, OS/2, X11, WIN32 and Flexos. A
+< directory containing the port-specific source files exists for each
+---
+> PDCurses has been ported to DOS, OS/2, X11, WIN32 and Amiga. A port
+> to Flexos is also included, but likely to be out of date.
+> A directory containing the port-specific source files exists for each
+
+Index: PDCurses/aclocal.m4
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/aclocal.m4,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+329c329,334
+< LD_RXLIB1="${CC} -Wl,-shared"
+---
+> LD_RXLIB1="${CC} -shared"
+> RXLIBPRE="lib"
+> RXLIBPST=".so"
+> ;;
+> *nto-qnx*)
+> LD_RXLIB1="${CC} -shared"
+
+Index: PDCurses/config.h.in
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/config.h.in,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+127a128,133
+> /* Define if you want to build XCurses with threads */
+> #undef USE_THREADS
+>
+> /* Define if you want to build XCurses with processes */
+> #undef USE_PROCESSES
+>
+
+Index: PDCurses/configure
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/configure,v
+retrieving revision 1.1
+retrieving revision 1.4
+diff -b -w -r1.1 -r1.4
+4c4
+< # Generated automatically using autoconf version 2.12
+---
+> # Generated automatically using autoconf version 2.13
+18a19,20
+> --with-threads build XCurses with threads"
+> ac_help="$ac_help
+59a62
+> SHELL=${CONFIG_SHELL-/bin/sh}
+343c346
+< echo "configure generated by autoconf version 2.12"
+---
+> echo "configure generated by autoconf version 2.13"
+513c516
+< ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+---
+> ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+515a519,520
+> ac_exeext=
+> ac_objext=o
+537c542
+< echo "configure:538: checking for one of the following C compilers: $all_words" >&5
+---
+> echo "configure:543: checking for one of the following C compilers: $all_words" >&5
+576c581
+< echo "configure:577: checking for $ac_word" >&5
+---
+> echo "configure:582: checking for $ac_word" >&5
+583,584c588,590
+< IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+< for ac_dir in $PATH; do
+---
+> IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+> ac_dummy="$PATH"
+> for ac_dir in $ac_dummy; do
+605c611
+< echo "configure:606: checking for $ac_word" >&5
+---
+> echo "configure:612: checking for $ac_word" >&5
+612c618
+< IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+---
+> IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+614c620,621
+< for ac_dir in $PATH; do
+---
+> ac_dummy="$PATH"
+> for ac_dir in $ac_dummy; do
+648a656,689
+> if test -z "$CC"; then
+> case "`uname -s`" in
+> *win32* | *WIN32*)
+> # Extract the first word of "cl", so it can be a program name with args.
+> set dummy cl; ac_word=$2
+> echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+> echo "configure:663: checking for $ac_word" >&5
+> if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+> echo $ac_n "(cached) $ac_c" 1>&6
+> else
+> if test -n "$CC"; then
+> ac_cv_prog_CC="$CC" # Let the user override the test.
+> else
+> IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+> ac_dummy="$PATH"
+> for ac_dir in $ac_dummy; do
+> test -z "$ac_dir" && ac_dir=.
+> if test -f $ac_dir/$ac_word; then
+> ac_cv_prog_CC="cl"
+> break
+> fi
+> done
+> IFS="$ac_save_ifs"
+> fi
+> fi
+> CC="$ac_cv_prog_CC"
+> if test -n "$CC"; then
+> echo "$ac_t""$CC" 1>&6
+> else
+> echo "$ac_t""no" 1>&6
+> fi
+> ;;
+> esac
+> fi
+653c694
+< echo "configure:654: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+---
+> echo "configure:695: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+659c700
+< ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+---
+> ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+663c704,705
+< #line 664 "configure"
+---
+>
+> #line 706 "configure"
+664a707
+>
+667c710
+< if { (eval echo configure:668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+---
+> if { (eval echo configure:711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+680a724,729
+> ac_ext=c
+> # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+> ac_cpp='$CPP $CPPFLAGS'
+> ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+> ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+> cross_compiling=$ac_cv_prog_cc_cross
+687c736
+< echo "configure:688: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+---
+> echo "configure:737: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+692c741
+< echo "configure:693: checking whether we are using GNU C" >&5
+---
+> echo "configure:742: checking whether we are using GNU C" >&5
+701c750
+< if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:702: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+---
+> if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+711a761,764
+> else
+> GCC=
+> fi
+>
+716c769
+< echo "configure:717: checking whether ${CC-cc} accepts -g" >&5
+---
+> echo "configure:770: checking whether ${CC-cc} accepts -g" >&5
+733a787
+> if test "$GCC" = yes; then
+736c790
+< CFLAGS="-O2"
+---
+> CFLAGS="-g"
+739,740c793,797
+< GCC=
+< test "${CFLAGS+set}" = set || CFLAGS="-g"
+---
+> if test "$GCC" = yes; then
+> CFLAGS="-O2"
+> else
+> CFLAGS=
+> fi
+744c801
+< echo "configure:745: checking for POSIXized ISC" >&5
+---
+> echo "configure:802: checking for POSIXized ISC" >&5
+808c865
+< if $ac_config_sub sun4 >/dev/null 2>&1; then :
+---
+> if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+813c870
+< echo "configure:814: checking host system type" >&5
+---
+> echo "configure:871: checking host system type" >&5
+820c877
+< if host_alias=`$ac_config_guess`; then :
+---
+> if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+827c884
+< host=`$ac_config_sub $host_alias`
+---
+> host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+834c891
+< echo "configure:835: checking target system type" >&5
+---
+> echo "configure:892: checking target system type" >&5
+845c902
+< target=`$ac_config_sub $target_alias`
+---
+> target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
+852c909
+< echo "configure:853: checking build system type" >&5
+---
+> echo "configure:910: checking build system type" >&5
+863c920
+< build=`$ac_config_sub $build_alias`
+---
+> build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
+874a932
+> mymakefile="Makefile"
+881a940
+> mymakefile="Makefile.aix"
+894a954,955
+> *nto-qnx*)
+> ;;
+907c968
+< echo "configure:908: checking for maximum signal specifier:" >&5
+---
+> echo "configure:969: checking for maximum signal specifier:" >&5
+914c975
+< #line 915 "configure"
+---
+> #line 976 "configure"
+921c982
+< if { (eval echo configure:922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+953c1014
+< echo "configure:954: checking for main in -l$mh_lib" >&5
+---
+> echo "configure:1015: checking for main in -l$mh_lib" >&5
+961c1022
+< #line 962 "configure"
+---
+> #line 1023 "configure"
+968c1029
+< if { (eval echo configure:969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+---
+> if { (eval echo configure:1030: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+1002c1063
+< echo "configure:1003: checking for $ac_word" >&5
+---
+> echo "configure:1064: checking for $ac_word" >&5
+1009,1010c1070,1072
+< IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+< for ac_dir in $PATH; do
+---
+> IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
+> ac_dummy="$PATH"
+> for ac_dir in $ac_dummy; do
+1034a1097
+> # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+1039c1102
+< echo "configure:1040: checking for a BSD compatible install" >&5
+---
+> echo "configure:1103: checking for a BSD compatible install" >&5
+1044c1107
+< IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:"
+---
+> IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+1051c1114,1116
+< for ac_prog in ginstall installbsd scoinst install; do
+---
+> # Don't use installbsd from OSF since it installs stuff as root
+> # by default.
+> for ac_prog in ginstall scoinst install; do
+1056d1120
+< # OSF/1 installbsd also uses dspmsg, but is usable.
+1085a1150,1151
+> test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
+>
+1089c1155
+< echo "configure:1090: checking whether ${MAKE-make} sets \${MAKE}" >&5
+---
+> echo "configure:1156: checking whether ${MAKE-make} sets \${MAKE}" >&5
+1117c1183
+< echo "configure:1118: checking how to run the C preprocessor" >&5
+---
+> echo "configure:1184: checking how to run the C preprocessor" >&5
+1132c1198
+< #line 1133 "configure"
+---
+> #line 1199 "configure"
+1138,1139c1204,1205
+< { (eval echo configure:1139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+< ac_err=`grep -v '^ *+' conftest.out`
+---
+> { (eval echo configure:1205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+1149c1215
+< #line 1150 "configure"
+---
+> #line 1216 "configure"
+1155,1156c1221,1239
+< { (eval echo configure:1156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+< ac_err=`grep -v '^ *+' conftest.out`
+---
+> { (eval echo configure:1222: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+> if test -z "$ac_err"; then
+> :
+> else
+> echo "$ac_err" >&5
+> echo "configure: failed program was:" >&5
+> cat conftest.$ac_ext >&5
+> rm -rf conftest*
+> CPP="${CC-cc} -nologo -E"
+> cat > conftest.$ac_ext <<EOF
+> #line 1233 "configure"
+> #include "confdefs.h"
+> #include <assert.h>
+> Syntax Error
+> EOF
+> ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+> { (eval echo configure:1239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+1168a1252,1253
+> fi
+> rm -f conftest*
+1179c1264
+< echo "configure:1180: checking for System V IPC support" >&5
+---
+> echo "configure:1265: checking for System V IPC support" >&5
+1182c1267
+< echo "configure:1183: checking for sys/ipc.h" >&5
+---
+> echo "configure:1268: checking for sys/ipc.h" >&5
+1187c1272
+< #line 1188 "configure"
+---
+> #line 1273 "configure"
+1192,1193c1277,1278
+< { (eval echo configure:1193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+< ac_err=`grep -v '^ *+' conftest.out`
+---
+> { (eval echo configure:1278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+1220c1305
+< echo "configure:1221: checking for ANSI C header files" >&5
+---
+> echo "configure:1306: checking for ANSI C header files" >&5
+1225c1310
+< #line 1226 "configure"
+---
+> #line 1311 "configure"
+1233,1234c1318,1319
+< { (eval echo configure:1234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+< ac_err=`grep -v '^ *+' conftest.out`
+---
+> { (eval echo configure:1319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+1250c1335
+< #line 1251 "configure"
+---
+> #line 1336 "configure"
+1268c1353
+< #line 1269 "configure"
+---
+> #line 1354 "configure"
+1289c1374
+< #line 1290 "configure"
+---
+> #line 1375 "configure"
+1300c1385
+< if { (eval echo configure:1301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+---
+> if { (eval echo configure:1386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+1339c1424
+< echo "configure:1340: checking for $ac_hdr" >&5
+---
+> echo "configure:1425: checking for $ac_hdr" >&5
+1344c1429
+< #line 1345 "configure"
+---
+> #line 1430 "configure"
+1349,1350c1434,1435
+< { (eval echo configure:1350: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+< ac_err=`grep -v '^ *+' conftest.out`
+---
+> { (eval echo configure:1435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+1377c1462
+< echo "configure:1378: checking if compiler supports ANSI prototypes" >&5
+---
+> echo "configure:1463: checking if compiler supports ANSI prototypes" >&5
+1380c1465
+< #line 1381 "configure"
+---
+> #line 1466 "configure"
+1387c1472
+< if { (eval echo configure:1388: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:1473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+1405c1490
+< echo "configure:1406: checking for working const" >&5
+---
+> echo "configure:1491: checking for working const" >&5
+1410c1495
+< #line 1411 "configure"
+---
+> #line 1496 "configure"
+1459c1544
+< if { (eval echo configure:1460: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:1545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+1480c1565
+< echo "configure:1481: checking for size_t" >&5
+---
+> echo "configure:1566: checking for size_t" >&5
+1485c1570
+< #line 1486 "configure"
+---
+> #line 1571 "configure"
+1494c1579
+< egrep "size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+---
+> egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+1513c1598
+< echo "configure:1514: checking whether time.h and sys/time.h may both be included" >&5
+---
+> echo "configure:1599: checking whether time.h and sys/time.h may both be included" >&5
+1518c1603
+< #line 1519 "configure"
+---
+> #line 1604 "configure"
+1527c1612
+< if { (eval echo configure:1528: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:1613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+1548c1633
+< echo "configure:1549: checking whether struct tm is in sys/time.h or time.h" >&5
+---
+> echo "configure:1634: checking whether struct tm is in sys/time.h or time.h" >&5
+1553c1638
+< #line 1554 "configure"
+---
+> #line 1639 "configure"
+1561c1646
+< if { (eval echo configure:1562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:1647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+1586c1671
+< echo "configure:1587: checking for main in -l$mh_lib" >&5
+---
+> echo "configure:1672: checking for main in -l$mh_lib" >&5
+1594c1679
+< #line 1595 "configure"
+---
+> #line 1680 "configure"
+1601c1686
+< if { (eval echo configure:1602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+---
+> if { (eval echo configure:1687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+1633c1718
+< echo "configure:1634: checking whether $CC understand -c and -o together" >&5
+---
+> echo "configure:1719: checking whether $CC understand -c and -o together" >&5
+1644c1729
+< if { (eval echo configure:__oline__: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && test -f conftest.ooo && { (eval echo configure:1645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+---
+> if { (eval echo configure:__oline__: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && test -f conftest.ooo && { (eval echo configure:1730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+1647c1732
+< if { (eval echo configure:__oline__: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && test -f conftest.ooo && { (eval echo configure:1648: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+---
+> if { (eval echo configure:__oline__: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && test -f conftest.ooo && { (eval echo configure:1733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+1672c1757
+< echo "configure:1673: checking whether ${CC-cc} needs -traditional" >&5
+---
+> echo "configure:1758: checking whether ${CC-cc} needs -traditional" >&5
+1678c1763
+< #line 1679 "configure"
+---
+> #line 1764 "configure"
+1696c1781
+< #line 1697 "configure"
+---
+> #line 1782 "configure"
+1718c1803
+< echo "configure:1719: checking for 8-bit clean memcmp" >&5
+---
+> echo "configure:1804: checking for 8-bit clean memcmp" >&5
+1726c1811
+< #line 1727 "configure"
+---
+> #line 1812 "configure"
+1736c1821
+< if { (eval echo configure:1737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+---
+> if { (eval echo configure:1822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+1751c1836
+< test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
+---
+> test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
+1754c1839
+< echo "configure:1755: checking return type of signal handlers" >&5
+---
+> echo "configure:1840: checking return type of signal handlers" >&5
+1759c1844
+< #line 1760 "configure"
+---
+> #line 1845 "configure"
+1776c1861
+< if { (eval echo configure:1777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:1862: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+1795c1880
+< echo "configure:1796: checking for vprintf" >&5
+---
+> echo "configure:1881: checking for vprintf" >&5
+1800c1885
+< #line 1801 "configure"
+---
+> #line 1886 "configure"
+1823c1908
+< if { (eval echo configure:1824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+---
+> if { (eval echo configure:1909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+1847c1932
+< echo "configure:1848: checking for _doprnt" >&5
+---
+> echo "configure:1933: checking for _doprnt" >&5
+1852c1937
+< #line 1853 "configure"
+---
+> #line 1938 "configure"
+1875c1960
+< if { (eval echo configure:1876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+---
+> if { (eval echo configure:1961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+1902c1987
+< echo "configure:1903: checking for $ac_func" >&5
+---
+> echo "configure:1988: checking for $ac_func" >&5
+1907c1992
+< #line 1908 "configure"
+---
+> #line 1993 "configure"
+1930c2015
+< if { (eval echo configure:1931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+---
+> if { (eval echo configure:2016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+1957c2042
+< echo "configure:1958: checking for location of X headers" >&5
+---
+> echo "configure:2043: checking for location of X headers" >&5
+2052c2137
+< echo "configure:2053: checking for location of X libraries" >&5
+---
+> echo "configure:2138: checking for location of X libraries" >&5
+2187c2272
+< echo "configure:2188: checking for $ac_hdr" >&5
+---
+> echo "configure:2273: checking for $ac_hdr" >&5
+2192c2277
+< #line 2193 "configure"
+---
+> #line 2278 "configure"
+2197,2198c2282,2283
+< { (eval echo configure:2198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+< ac_err=`grep -v '^ *+' conftest.out`
+---
+> { (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+> ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+2232c2317
+< echo "configure:2233: checking for $mh_keydef in keysym.h" >&5
+---
+> echo "configure:2318: checking for $mh_keydef in keysym.h" >&5
+2235c2320
+< #line 2236 "configure"
+---
+> #line 2321 "configure"
+2242c2327
+< if { (eval echo configure:2243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+---
+> if { (eval echo configure:2328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+2316a2402,2424
+> # Check whether --with-threads or --without-threads was given.
+> if test "${with_threads+set}" = set; then
+> withval="$with_threads"
+> with_threads=$withval
+> else
+> with_threads=no
+> fi
+>
+> if test "$with_threads" = yes; then
+> cat >> confdefs.h <<\EOF
+> #define USE_THREADS 1
+> EOF
+>
+> x11type="thread"
+> else
+> cat >> confdefs.h <<\EOF
+> #define USE_PROCESSES 1
+> EOF
+>
+> x11type="process"
+> fi
+>
+>
+2397c2505
+< echo "configure:2398: checking compiler flags for a dynamic object" >&5
+---
+> echo "configure:2506: checking compiler flags for a dynamic object" >&5
+2400c2508
+< #line 2401 "configure"
+---
+> #line 2509 "configure"
+2412c2520
+< if { (eval echo configure:2413: \"$mh_compile\") 1>&5; (eval $mh_compile) 2>&5; }; then
+---
+> if { (eval echo configure:2521: \"$mh_compile\") 1>&5; (eval $mh_compile) 2>&5; }; then
+2500c2608
+< LD_RXLIB1="ld"
+---
+> LD_RXLIB1="ld -assert pure-text"
+2510c2618,2623
+< LD_RXLIB1="${CC} -Wl,-shared"
+---
+> LD_RXLIB1="${CC} -shared"
+> RXLIBPRE="lib"
+> RXLIBPST=".so"
+> ;;
+> *nto-qnx*)
+> LD_RXLIB1="${CC} -shared"
+2524c2637
+< #line 2525 "configure"
+---
+> #line 2638 "configure"
+2530c2643
+< if { (eval echo configure:2531: \"$mh_compile\") 1>&5; (eval $mh_compile) 2>&5; } && test -s conftest.o; then
+---
+> if { (eval echo configure:2644: \"$mh_compile\") 1>&5; (eval $mh_compile) 2>&5; } && test -s conftest.o; then
+2532c2645
+< if { (eval echo configure:2533: \"$mh_dyn_link\") 1>&5; (eval $mh_dyn_link) 2>&5; } && test -s conftest.rxlib; then
+---
+> if { (eval echo configure:2646: \"$mh_dyn_link\") 1>&5; (eval $mh_dyn_link) 2>&5; } && test -s conftest.rxlib; then
+2538c2651
+< if { (eval echo configure:2539: \"$mh_dyn_link\") 1>&5; (eval $mh_dyn_link) 2>&5; } && test -s conftest.rxlib; then
+---
+> if { (eval echo configure:2652: \"$mh_dyn_link\") 1>&5; (eval $mh_dyn_link) 2>&5; } && test -s conftest.rxlib; then
+2606c2719
+< case `(ac_space=' '; set) 2>&1` in
+---
+> case `(ac_space=' '; set | grep ac_space) 2>&1` in
+2673c2786
+< echo "$CONFIG_STATUS generated by autoconf version 2.12"
+---
+> echo "$CONFIG_STATUS generated by autoconf version 2.13"
+2684c2797
+< trap 'rm -fr `echo "Makefile pdcurses/Makefile demos/Makefile panel/Makefile tools/Makefile saa/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+---
+> trap 'rm -fr `echo "Makefile pdcurses/$mymakefile demos/Makefile panel/Makefile tools/Makefile saa/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+2692a2806
+> s%@SHELL@%$SHELL%g
+2695a2810
+> s%@FFLAGS@%$FFLAGS%g
+2732a2848
+> s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
+2739a2856
+> s%@x11type@%$x11type%g
+2802c2919
+< CONFIG_FILES=\${CONFIG_FILES-"Makefile pdcurses/Makefile demos/Makefile panel/Makefile tools/Makefile saa/Makefile"}
+---
+> CONFIG_FILES=\${CONFIG_FILES-"Makefile pdcurses/$mymakefile demos/Makefile panel/Makefile tools/Makefile saa/Makefile"}
+2979a3097,3105
+>
+> case "$target" in
+> *ibm-aix*)
+> mv pdcurses/Makefile.aix pdcurses/Makefile
+> echo "$ac_t""renaming pdcurses/Makefile.aix to pdcurses/Makefile" 1>&6
+> ;;
+> *)
+> ;;
+> esac
+
+Index: PDCurses/curses.h
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/curses.h,v
+retrieving revision 1.2
+retrieving revision 1.5
+diff -b -w -r1.2 -r1.5
+21c21
+< @Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @
+---
+> @Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @
+172c172
+< #define PDC_BUILD 2401
+---
+> #define PDC_BUILD 2501
+970a971,972
+> short line_color; /* Color of line attributes - default white */
+>
+1044,1045d1045
+< #define A_STANDOUT 0x00A00000L
+< #define A_BOLD 0x00800000L
+1048a1049,1050
+> # define A_BOLD 0x00800000L
+> # define A_RIGHTLINE 0x00010000L
+1050,1051d1051
+< #define A_INVIS 0x00080000L
+< #define A_PROTECT 0x00010000L
+1052a1053
+> # define A_INVIS 0x00080000L
+1056a1058,1062
+> # define A_LEFTLINE A_DIM
+> # define A_ITALIC A_INVIS
+> # define A_STANDOUT ( A_BOLD | A_REVERSE )
+> # define A_PROTECT ( A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE )
+>
+1059c1065
+< #define A_NORMAL (chtype)0x0000 /* SysV */
+---
+> # define A_NORMAL (chtype)0x0000 /* System V */
+1499c1505,1507
+< # define KEY_MAX 0x222 /* Maximum curses key */
+---
+> # define KEY_SUP 0x223 /* Shifted up arrow */
+> # define KEY_SDOWN 0x224 /* Shifted down arrow */
+> # define KEY_MAX 0x224 /* Maximum curses key */
+1712a1721
+> int PDC_CDECL PDC_curs_set( int );
+1714a1724,1728
+> int PDC_CDECL PDC_wunderline( WINDOW*, int, bool );
+> int PDC_CDECL PDC_wleftline( WINDOW*, int, bool );
+> int PDC_CDECL PDC_wrightline( WINDOW*, int, bool );
+> int PDC_CDECL PDC_set_line_color( short );
+>
+1914a1929
+> int PDC_CDECL PDC_curs_set( /* int */ );
+1916a1932,1936
+> int PDC_CDECL PDC_wunderline( /* WINDOW*, int, bool */ );
+> int PDC_CDECL PDC_wleftline( /* WINDOW*, int, bool */ );
+> int PDC_CDECL PDC_wrightline( /* WINDOW*, int, bool */ );
+> int PDC_CDECL PDC_set_line_color( /* short */ );
+>
+1954a1975
+> #define getbkgd(w) ((w)->_bkgd)
+
+Index: PDCurses/curspriv.h
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/curspriv.h,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+21c21
+< @Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @
+---
+> @Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @
+370,371c370,371
+< int XCurses_display_cursor(int,int,int,int);
+< int XCurses_rawgetch(void);
+---
+> int XCurses_display_cursor(int,int,int,int,int);
+> int XCurses_rawgetch(int);
+385d384
+< void XCurses_set_title(char *);
+490,491c489,490
+< int XCurses_display_cursor( /*int,int,int,int*/ );
+< int XCurses_rawgetch( /*void*/ );
+---
+> int XCurses_display_cursor( /*int,int,int,int,int*/ );
+> int XCurses_rawgetch( /*int*/ );
+577a577
+> #define CURSES_DISPLAY_CURSOR 999986
+
+Index: PDCurses/demos/testcurs.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/demos/testcurs.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+36c36
+< char *rcsid_testcurs = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_testcurs = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+826c826,830
+< attrset(A_NORMAL);
+---
+> #ifdef XCURSES
+> attrset(A_PROTECT);
+> #else
+> attrset(A_BOLD);
+> #endif
+827a832
+> attrset(A_NORMAL);
+
+Index: PDCurses/doc/intro.man
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/doc/intro.man,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+366,376c366,376
+< *** slk_attroff slk
+< *** slk_attron slk
+< *** slk_attrset slk
+< *** slk_clear slk
+< *** slk_init slk
+< *** slk_label slk
+< *** slk_noutrefresh slk
+< *** slk_refresh slk
+< *** slk_restore slk
+< *** slk_set slk
+< *** slk_touch slk
+---
+> slk_attroff slk
+> slk_attron slk
+> slk_attrset slk
+> slk_clear slk
+> slk_init slk
+> slk_label slk
+> slk_noutrefresh slk
+> slk_refresh slk
+> slk_restore slk
+> slk_set slk
+> slk_touch slk
+497a498,499
+> PDC_get_input_fd pdckbd
+> PDC_get_key_modifiers pdckbd
+499a502
+> PDC_getclipboard pdcclip
+519a523,524
+> PDC_set_title pdcsetsc
+> PDC_setclipboard pdcclip
+
+Index: PDCurses/doc/x11.man
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/doc/x11.man,v
+retrieving revision 1.1
+retrieving revision 1.3
+diff -b -w -r1.1 -r1.3
+11,12c11,12
+< To use XCurses with an existing curses program, you need to make two
+< changes to your code.
+---
+> To use XCurses with an existing curses program, you need to make one
+> change to your code:
+14,25c14
+< The first is the addition of a definition of the program name as a
+< global char pointer. eg.
+<
+< #ifdef XCURSES
+< char *XCursesProgramName="sample";
+< #endif
+<
+< This name is used as the title of the X window, and for defining X
+< resources specific to your program.
+<
+< The second is a call to XCursesExit() just before exiting from your
+< program. eg.
+---
+> Call XCursesExit() just before exiting from your program. eg.
+35c24,26
+< When compiling your curses application, you need to add -DXCURSES.
+---
+> When compiling your curses application, you need to add -DXCURSES, and
+> include the <curses.h> or <xcurses.h> that comes with XCurses. You also
+> need to link your code with the XCurses library.
+47a39,45
+> To get the most out of XCurses in your curses application you need
+> to call Xinitscr() rather than initscr(). This allows you to pass
+> your program name and resource overrides to XCurses.
+>
+> The program name is used as the title of the X window, and for defining X
+> resources specific to your program.
+>
+70c68
+< boldFont
+---
+> italicFont
+82a81,88
+> colorBoldBlack
+> colorBoldRed
+> colorBoldGreen
+> colorBoldYellow
+> colorBoldBlue
+> colorBoldMagenta
+> colorBoldCyan
+> colorBoldWhite
+104c110
+< normalFont: the name of a fixed width font, used for A_NORMAL attribute
+---
+> normalFont: the name of a fixed width font
+107,110c113,116
+< boldFont: the name of a fixed width font, used for A_BOLD attribute
+< Default: 7x13bold
+<
+< NB. The dimensions of font and boldFont MUST be the same.
+---
+> italicFont: the name of a fixed width font to be used for
+> characters with A_ITALIC attributes. Must have the same
+> cell size as normalFont
+> Default: 7x13 (obviously not an italic font)
+125a132
+> Default: Black
+126a134
+> Default: red3
+127a136
+> Default: green3
+128a138
+> Default: yellow3
+129a140
+> Default: blue3
+130a142
+> Default: magenta3
+131a144
+> Default: cyan3
+133c146,162
+< Defaults are obvious :)
+---
+> Default: Grey
+> colorBoldBlack: the color of the COLOR_BLACK attribute combined with A_BOLD
+> Default: grey40
+> colorBoldRed the color of the COLOR_RED attribute combined with A_BOLD
+> Default: red1
+> colorBoldGreen the color of the COLOR_GREEN attribute combined with A_BOLD
+> Default: green1
+> colorBoldYellow the color of the COLOR_YELLOW attribute combined with A_BOLD
+> Default: yellow1
+> colorBoldBlue the color of the COLOR_BLUE attribute combined with A_BOLD
+> Default: blue1
+> colorBoldMagenta the color of the COLOR_MAGENTA attribute combined with A_BOLD
+> Default: magenta1
+> colorBoldCyan the color of the COLOR_CYAN attribute combined with A_BOLD
+> Default: cyan1
+> colorBoldWhite the color of the COLOR_WHITE attribute combined with A_BOLD
+> Default: White
+222d250
+< XCurses*boldFont: 9x13bold
+236,242c264,276
+< the.normalFont: 9x15
+< the.boldFont: 9x15bold
+< the.lines: 40
+< the.cols: 86
+< the.pointer: xterm
+< the.pointerForeColor: black
+< the.pointerBackColor: black
+---
+> ! resources with the * wildcard can be overridden by a parameter passed
+> ! to initscr()
+> !
+> the*normalFont: 9x15
+> the*lines: 40
+> the*cols: 86
+> the*pointer: xterm
+> the*pointerForeColor: white
+> the*pointerBackColor: black
+> !
+> ! resources with the . format can not be overridden by a parameter passed
+> ! to Xinitscr()
+> !
+243a278,283
+>
+> Resources may also be passed as a parameter to the Xinitscr() function.
+> The parameter is a string in the form of switches. eg. to set the color
+> "red" to "indianred", and the number of lines to 30, the string passed to
+> Xinitscr would be:
+> "-colorRed indianred -lines 30"
+
+Index: PDCurses/dos/pdckbd.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/dos/pdckbd.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+35c35
+< char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+56a57,62
+> /* Shifted Keypad */
+> 0xb0, KEY_SHOME, 0xb1, KEY_SUP, 0xb2, KEY_SPREVIOUS,
+> 0xb3, KEY_SLEFT, 0xb4, KEY_SRIGHT,
+> 0xb5, KEY_SEND, 0xb6, KEY_SDOWN, 0xb7, KEY_SNEXT,
+> 0xb8, KEY_SIC, 0xb9, KEY_SDC,
+>
+338a345,364
+> if (ascii == 0xe0 && scan == 0x47 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Home */
+> return ((int) (0xb0 << 8));
+> if (ascii == 0xe0 && scan == 0x48 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Up */
+> return ((int) (0xb1 << 8));
+> if (ascii == 0xe0 && scan == 0x49 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift PgUp */
+> return ((int) (0xb2 << 8));
+> if (ascii == 0xe0 && scan == 0x4b && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Left */
+> return ((int) (0xb3 << 8));
+> if (ascii == 0xe0 && scan == 0x4d && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Right */
+> return ((int) (0xb4 << 8));
+> if (ascii == 0xe0 && scan == 0x4f && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift End */
+> return ((int) (0xb5 << 8));
+> if (ascii == 0xe0 && scan == 0x50 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Down */
+> return ((int) (0xb6 << 8));
+> if (ascii == 0xe0 && scan == 0x51 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift PgDn */
+> return ((int) (0xb7 << 8));
+> if (ascii == 0xe0 && scan == 0x52 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Ins */
+> return ((int) (0xb8 << 8));
+> if (ascii == 0xe0 && scan == 0x53 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Del */
+> return ((int) (0xb9 << 8));
+
+Index: PDCurses/dos/wccdos.lrf
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/dos/wccdos.lrf,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+
+Index: PDCurses/dos/wccdos16.mak
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/dos/wccdos16.mak,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+
+Index: PDCurses/dos/wccdos4g.mak
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/dos/wccdos4g.mak,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+
+Index: PDCurses/install-sh
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/install-sh,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+4c4,16
+< # This comes from X11R5.
+---
+> # This comes from X11R5 (mit/util/scripts/install.sh).
+> #
+> # Copyright 1991 by the Massachusetts Institute of Technology
+> #
+> # Permission to use, copy, modify, distribute, and sell this software and its
+> # documentation for any purpose is hereby granted without fee, provided that
+> # the above copyright notice appear in all copies and that both that
+> # copyright notice and this permission notice appear in supporting
+> # documentation, and that the name of M.I.T. not be used in advertising or
+> # publicity pertaining to distribution of the software without specific,
+> # written prior permission. M.I.T. makes no representations about the
+> # suitability of this software for any purpose. It is provided "as is"
+> # without express or implied warranty.
+11,12c23,24
+< # from scratch.
+< #
+---
+> # from scratch. It can only install one file at a time, a restriction
+> # shared with many OS's install programs.
+17a30,32
+> #
+> # Modified 1 Feb 2000 MHES to cater for mkdir -p
+> #
+32c47
+< tranformbasename=""
+---
+> transformbasename=""
+40a56
+> mkdircmd="$mkdirprog -p"
+171c187
+< $mkdirprog "${pathcomp}"
+---
+> $mkdircmd "${pathcomp}"
+
+Index: PDCurses/os2/gccos2.mak
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/os2/gccos2.mak,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+18c18
+< PDCURSES_HOME =c:\curses
+---
+> PDCURSES_HOME =e:\curses
+50c50
+< DLLTARGET = pdcurses.dll
+---
+> DLLTARGET = curses.dll
+62c62
+< DLLCURSES = pdcurses_dll.lib
+---
+> DLLCURSES = curses.lib
+206,209c206,209
+< pdcurses.dll : $(DLLOBJS) $(PDCDLOS)
+< $(LINK) $(DLLFLAGS) -o pdcurses.dll $(DLLOBJS) $(PDCDLOS) $(osdir)\pdcurses.def
+< emximp -o pdcurses_dll.lib $(osdir)\pdcurses.def
+< emximp -o pdcurses_dll.a pdcurses_dll.lib
+---
+> curses.dll : $(DLLOBJS) $(PDCDLOS)
+> $(LINK) $(DLLFLAGS) -o curses.dll $(DLLOBJS) $(PDCDLOS) $(osdir)\pdcurses.def
+> emximp -o curses.lib $(osdir)\pdcurses.def
+> emximp -o curses.a curses.lib
+
+Index: PDCurses/os2/pdckbd.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/os2/pdckbd.c,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -b -w -r1.2 -r1.3
+36c36
+< char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+57a58,63
+> /* Shifted Keypad */
+> 0xb0, KEY_SHOME, 0xb1, KEY_SUP, 0xb2, KEY_SPREVIOUS,
+> 0xb3, KEY_SLEFT, 0xb4, KEY_SRIGHT,
+> 0xb5, KEY_SEND, 0xb6, KEY_SDOWN, 0xb7, KEY_SNEXT,
+> 0xb8, KEY_SIC, 0xb9, KEY_SDC,
+>
+358a365,384
+> if (ascii == 0xe0 && scan == 0x47 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Home */
+> return ((int) (0xb0 << 8));
+> if (ascii == 0xe0 && scan == 0x48 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Up */
+> return ((int) (0xb1 << 8));
+> if (ascii == 0xe0 && scan == 0x49 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift PgUp */
+> return ((int) (0xb2 << 8));
+> if (ascii == 0xe0 && scan == 0x4b && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Left */
+> return ((int) (0xb3 << 8));
+> if (ascii == 0xe0 && scan == 0x4d && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Right */
+> return ((int) (0xb4 << 8));
+> if (ascii == 0xe0 && scan == 0x4f && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift End */
+> return ((int) (0xb5 << 8));
+> if (ascii == 0xe0 && scan == 0x50 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Down */
+> return ((int) (0xb6 << 8));
+> if (ascii == 0xe0 && scan == 0x51 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift PgDn */
+> return ((int) (0xb7 << 8));
+> if (ascii == 0xe0 && scan == 0x52 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Ins */
+> return ((int) (0xb8 << 8));
+> if (ascii == 0xe0 && scan == 0x53 && pdc_key_modifiers & PDC_KEY_MODIFIER_SHIFT) /* Shift Del */
+> return ((int) (0xb9 << 8));
+
+Index: PDCurses/os2/pdcurses.def
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/os2/pdcurses.def,v
+retrieving revision 1.2
+retrieving revision 1.4
+diff -b -w -r1.2 -r1.4
+1c1
+< LIBRARY PDCURSES
+---
+> LIBRARY CURSES
+95a96,98
+> slk_attroff
+> slk_attron
+> slk_attrset
+97a101
+> slk_label
+98a103,104
+> slk_refresh
+> slk_restore
+
+Index: PDCurses/pdcurses/Makefile.in
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/pdcurses/Makefile.in,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+13c13,14
+< x11dir = $(srcdir)/../x11
+---
+> x11basedir = $(srcdir)/../x11
+> x11dir = $(x11basedir)/@x11type@
+26c27
+< PDCURSES_X11_H =$(PDCURSES_HOME)/x11.h
+---
+> PDCURSES_X11_H =$(x11basedir)/pdcx11.h
+47c48
+< CPPFLAGS = -I$(INCDIR) -I$(srcdir)/.. -I.. @DEFS@ -DXCURSES @SYS_DEFS@
+---
+> CPPFLAGS = -I$(INCDIR) -I$(srcdir)/.. -I.. @DEFS@ -DXCURSES @SYS_DEFS@ -I$(x11basedir) -I$(x11dir)
+129a131,133
+> pdcx11.o \
+> x11curses.o \
+> x11common.o \
+185a190,192
+> pdcx11.sho \
+> x11curses.sho \
+> x11common.sho \
+311,312c318,319
+< pdcclip.o: $(x11dir)/pdcclip.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdcclip.c
+---
+> pdcclip.o: $(x11basedir)/pdcclip.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcclip.c
+317,318c324,325
+< pdcdisp.o: $(x11dir)/pdcdisp.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdcdisp.c
+---
+> pdcdisp.o: $(x11basedir)/pdcdisp.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcdisp.c
+320,321c327,328
+< pdcgetsc.o: $(x11dir)/pdcgetsc.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdcgetsc.c
+---
+> pdcgetsc.o: $(x11basedir)/pdcgetsc.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcgetsc.c
+323,324c330,331
+< pdckbd.o: $(x11dir)/pdckbd.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdckbd.c
+---
+> pdckbd.o: $(x11basedir)/pdckbd.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdckbd.c
+326,327c333,334
+< pdcprint.o: $(x11dir)/pdcprint.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdcprint.c
+---
+> pdcprint.o: $(x11basedir)/pdcprint.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcprint.c
+329,330c336,337
+< pdcscrn.o: $(x11dir)/pdcscrn.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdcscrn.c
+---
+> pdcscrn.o: $(x11basedir)/pdcscrn.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcscrn.c
+332,333c339,340
+< pdcsetsc.o: $(x11dir)/pdcsetsc.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/pdcsetsc.c
+---
+> pdcsetsc.o: $(x11basedir)/pdcsetsc.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcsetsc.c
+341,342c348,355
+< x11.o: $(x11dir)/x11.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/x11.c
+---
+> pdcx11.o: $(x11basedir)/pdcx11.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/pdcx11.c
+>
+> ScrollBox.o: $(x11basedir)/ScrollBox.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/ScrollBox.c
+>
+> sb.o: $(x11basedir)/sb.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11basedir)/sb.c
+344,345c357,361
+< ScrollBox.o: $(x11dir)/ScrollBox.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/ScrollBox.c
+---
+> x11common.o: $(x11dir)/x11common.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11dir)/x11common.c
+>
+> x11.o: $(x11dir)/x11.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11dir)/x11.c
+347,348c363,364
+< sb.o: $(x11dir)/sb.c $(PDCURSES_HEADERS)
+< $(CC) $(CCFLAGS) -o $@ $(x11dir)/sb.c
+---
+> x11curses.o: $(x11dir)/x11curses.c $(PDCURSES_HEADERS)
+> $(CC) $(CCFLAGS) -o $@ $(x11dir)/x11curses.c
+574c590
+< pdcclip.sho: $(x11dir)/pdcclip.c $(PDCURSES_HEADERS)
+---
+> pdcclip.sho: $(x11basedir)/pdcclip.c $(PDCURSES_HEADERS)
+576c592
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdcclip.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcclip.c
+586c602
+< pdcdisp.sho: $(x11dir)/pdcdisp.c $(PDCURSES_HEADERS)
+---
+> pdcdisp.sho: $(x11basedir)/pdcdisp.c $(PDCURSES_HEADERS)
+588c604
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdcdisp.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcdisp.c
+592c608
+< pdcgetsc.sho: $(x11dir)/pdcgetsc.c $(PDCURSES_HEADERS)
+---
+> pdcgetsc.sho: $(x11basedir)/pdcgetsc.c $(PDCURSES_HEADERS)
+594c610
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdcgetsc.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcgetsc.c
+598c614
+< pdckbd.sho: $(x11dir)/pdckbd.c $(PDCURSES_HEADERS)
+---
+> pdckbd.sho: $(x11basedir)/pdckbd.c $(PDCURSES_HEADERS)
+600c616
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdckbd.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdckbd.c
+604c620
+< pdcprint.sho: $(x11dir)/pdcprint.c $(PDCURSES_HEADERS)
+---
+> pdcprint.sho: $(x11basedir)/pdcprint.c $(PDCURSES_HEADERS)
+606c622
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdcprint.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcprint.c
+610c626
+< pdcscrn.sho: $(x11dir)/pdcscrn.c $(PDCURSES_HEADERS)
+---
+> pdcscrn.sho: $(x11basedir)/pdcscrn.c $(PDCURSES_HEADERS)
+612c628
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdcscrn.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcscrn.c
+616c632
+< pdcsetsc.sho: $(x11dir)/pdcsetsc.c $(PDCURSES_HEADERS)
+---
+> pdcsetsc.sho: $(x11basedir)/pdcsetsc.c $(PDCURSES_HEADERS)
+618c634
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/pdcsetsc.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcsetsc.c
+634c650
+< x11.sho: $(x11dir)/x11.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+---
+> pdcx11.sho: $(x11basedir)/pdcx11.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+636c652,658
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/x11.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/pdcx11.c
+> $(O2SHO)
+> $(SAVE2O)
+>
+> ScrollBox.sho: $(x11basedir)/ScrollBox.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+> $(O2SAVE)
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/ScrollBox.c
+640c662
+< ScrollBox.sho: $(x11dir)/ScrollBox.c $(PDCURSES_HEADERS) $(PDCURSES_X11_H)
+---
+> sb.sho: $(x11basedir)/sb.c $(PDCURSES_HEADERS)
+642c664,676
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/ScrollBox.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11basedir)/sb.c
+> $(O2SHO)
+> $(SAVE2O)
+>
+> x11common.sho: $(x11dir)/x11common.c $(PDCURSES_HEADERS)
+> $(O2SAVE)
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/x11common.c
+> $(O2SHO)
+> $(SAVE2O)
+>
+> x11.sho: $(x11dir)/x11.c $(PDCURSES_HEADERS)
+> $(O2SAVE)
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/x11.c
+646c680
+< sb.sho: $(x11dir)/sb.c $(PDCURSES_HEADERS)
+---
+> x11curses.sho: $(x11dir)/x11curses.c $(PDCURSES_HEADERS)
+648c682
+< $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/sb.c
+---
+> $(CC) $(CCFLAGS) $(DYN_COMP) $(CC2O) $(x11dir)/x11curses.c
+
+Index: PDCurses/pdcurses/border.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/pdcurses/border.c,v
+retrieving revision 1.1
+retrieving revision 1.3
+diff -b -w -r1.1 -r1.3
+33a34,36
+> #undef PDC_wunderline
+> #undef PDC_leftline
+> #undef PDC_rightline
+40c43
+< char *rcsid_border = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_border = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+56a60,62
+> int PDC_wunderline(WINDOW *win, int n, bool state);
+> int PDC_wleftline(WINDOW *win, int n, bool state);
+> int PDC_wrightline(WINDOW *win, int n, bool state);
+90c96
+< Portability X/Open BSD SYS V
+---
+> Portability X/Open BSD SYS V PDCurses
+92,98c98,107
+< border - - 4.0
+< wborder - - 4.0
+< box Y Y Y
+< hline - - 4.0
+< whline - - 4.0
+< vline - - 4.0
+< wvline - - 4.0
+---
+> border - - 4.0 Y
+> wborder - - 4.0 Y
+> box Y Y Y Y
+> hline - - 4.0 Y
+> whline - - 4.0 Y
+> vline - - 4.0 Y
+> wvline - - 4.0 Y
+> PDC_wunderline - - - Y
+> PDC_wleftline - - - Y
+> PDC_wrightline - - - Y
+415a425,565
+>
+> if (win->_firstch[n] == _NO_CHANGE)
+> {
+> win->_firstch[n] = win->_curx;
+> win->_lastch[n] = win->_curx;
+> }
+> else
+> {
+> win->_firstch[n] = min(win->_firstch[n], win->_curx);
+> win->_lastch[n] = max(win->_lastch[n], win->_curx);
+> }
+> }
+>
+> PDC_sync(win);
+> return (OK);
+> }
+> /***********************************************************************/
+> #ifdef HAVE_PROTO
+> int PDC_CDECL PDC_wunderline(WINDOW *win, int n, bool state)
+> #else
+> int PDC_CDECL PDC_wunderline(win,n,state)
+> WINDOW *win;
+> int n;
+> bool state;
+> #endif
+> /***********************************************************************/
+> {
+> int endpos;
+>
+> #ifdef PDCDEBUG
+> if (trace_on) PDC_debug("PDC_wunderline() - called\n");
+> #endif
+>
+> if (win == (WINDOW *)NULL)
+> return( ERR );
+>
+> if (n < 1)
+> return( ERR );
+>
+> endpos = min(win->_cury + n -1, win->_maxy);
+>
+> for (n = win->_cury; n <= endpos; n++)
+> {
+> if ( state )
+> win->_y[n][win->_curx] |= A_UNDERLINE; /* Turn ON A_UNDERLINE */
+> else
+> win->_y[n][win->_curx] |= ~A_UNDERLINE; /* Turn OFF A_UNDERLINE */
+>
+> if (win->_firstch[n] == _NO_CHANGE)
+> {
+> win->_firstch[n] = win->_curx;
+> win->_lastch[n] = win->_curx;
+> }
+> else
+> {
+> win->_firstch[n] = min(win->_firstch[n], win->_curx);
+> win->_lastch[n] = max(win->_lastch[n], win->_curx);
+> }
+> }
+>
+> PDC_sync(win);
+> return (OK);
+> }
+> /***********************************************************************/
+> #ifdef HAVE_PROTO
+> int PDC_CDECL PDC_wleftline(WINDOW *win, int n, bool state)
+> #else
+> int PDC_CDECL PDC_wleftline(win,n,state)
+> WINDOW *win;
+> int n;
+> bool state;
+> #endif
+> /***********************************************************************/
+> {
+> int endpos;
+>
+> #ifdef PDCDEBUG
+> if (trace_on) PDC_debug("PDC_wleftline() - called\n");
+> #endif
+>
+> if (win == (WINDOW *)NULL)
+> return( ERR );
+>
+> if (n < 1)
+> return( ERR );
+>
+> endpos = min(win->_cury + n -1, win->_maxy);
+>
+> for (n = win->_cury; n <= endpos; n++)
+> {
+> if ( state )
+> win->_y[n][win->_curx] |= A_LEFTLINE; /* Turn ON A_LEFTLINE */
+> else
+> win->_y[n][win->_curx] |= ~A_LEFTLINE; /* Turn OFF A_LEFTLINE */
+>
+> if (win->_firstch[n] == _NO_CHANGE)
+> {
+> win->_firstch[n] = win->_curx;
+> win->_lastch[n] = win->_curx;
+> }
+> else
+> {
+> win->_firstch[n] = min(win->_firstch[n], win->_curx);
+> win->_lastch[n] = max(win->_lastch[n], win->_curx);
+> }
+> }
+>
+> PDC_sync(win);
+> return (OK);
+> }
+> /***********************************************************************/
+> #ifdef HAVE_PROTO
+> int PDC_CDECL PDC_wrightline(WINDOW *win, int n, bool state)
+> #else
+> int PDC_CDECL PDC_wrightline(win,n,state)
+> WINDOW *win;
+> int n;
+> bool state;
+> #endif
+> /***********************************************************************/
+> {
+> int endpos;
+>
+> #ifdef PDCDEBUG
+> if (trace_on) PDC_debug("PDC_wrightline() - called\n");
+> #endif
+>
+> if (win == (WINDOW *)NULL)
+> return( ERR );
+>
+> if (n < 1)
+> return( ERR );
+>
+> endpos = min(win->_cury + n -1, win->_maxy);
+>
+> for (n = win->_cury; n <= endpos; n++)
+> {
+> if ( state )
+> win->_y[n][win->_curx] |= A_RIGHTLINE; /* Turn ON A_RIGHTLINE */
+> else
+> win->_y[n][win->_curx] |= ~A_RIGHTLINE; /* Turn OFF A_RIGHTLINE */
+
+Index: PDCurses/pdcurses/color.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/pdcurses/color.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+38a39
+> #undef PDC_set_line_color
+51c52
+< char *rcsid_color = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_color = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+65a67
+> int PDC_set_line_color(short color);
+101a104,107
+> PDC_set_line_color() is used to set the color, globally, for the
+> color of the lines drawn for the attributes: A_UNDERLINE, A_OVERLINE,
+> A_LEFTLINE and A_RIGHTLINE. PDCurses only feature.
+>
+111c117
+< Portability X/Open BSD SYS V
+---
+> Portability X/Open BSD SYS V PDCurses
+119a126
+> PDC_set_line_color - - - Y
+349a357,371
+> return(OK);
+> }
+> /***********************************************************************/
+> #ifdef HAVE_PROTO
+> int PDC_CDECL PDC_set_line_color(short color)
+> #else
+> int PDC_CDECL PDC_set_line_color(color)
+> short color;
+> #endif
+> /***********************************************************************/
+> {
+>
+> if (color >= COLORS || color < 0)
+> return(ERR);
+> SP->line_color = color;
+
+Index: PDCurses/pdcurses/getch.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/pdcurses/getch.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+42c42
+< char *rcsid_getch = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_getch = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+163c163
+< int waitingtenths = SP->delaytenths;
+---
+> int waitingtenths = 0;
+171a172,174
+> if ( SP->delaytenths )
+> waitingtenths = 10*SP->delaytenths;
+>
+282c285,286
+< napms(100);
+---
+> napms(10);
+> continue;
+304c308
+< if (SP->raw_inp || SP->cbreak)
+---
+> if ( (SP->raw_inp || SP->cbreak) )
+
+Index: PDCurses/pdcurses/initscr.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/pdcurses/initscr.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+64c64
+< char *rcsid_initscr = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_initscr = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+324,325c324,325
+< ACS_SBSS = (chtype)21|A_ALTCHARSET;
+< ACS_SSSB = (chtype)22|A_ALTCHARSET;
+---
+> ACS_SBSS = (chtype)22|A_ALTCHARSET;
+> ACS_SSSB = (chtype)21|A_ALTCHARSET;
+
+Index: PDCurses/pdcurses/util.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/pdcurses/util.c,v
+retrieving revision 1.1
+retrieving revision 1.3
+diff -b -w -r1.1 -r1.3
+68c68
+< char *rcsid_util = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_util = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+237c237
+< "KEY_RESIZE"
+---
+> "KEY_RESIZE", "KEY_SUP", "KEY_SDOWN"
+352c352
+< (void)XCurses_rawgetch();
+---
+> (void)XCurses_rawgetch(0);
+
+Index: PDCurses/win32/curses.def
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/win32/curses.def,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+2a3,5
+> ; used for Win32 port as well as AIX port
+> ; each entry point MUST be on a seperate line prefixed
+> ; by EXPORTS in column 1
+
+Index: PDCurses/win32/pdckbd.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/win32/pdckbd.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+28c28
+< char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+318c318
+< {KEY_UP, SHF_UP, CTL_UP, ALT_UP }, /* 38 */
+---
+> {KEY_UP, KEY_SUP, CTL_UP, ALT_UP }, /* 38 */
+320,322c320,322
+< {KEY_DOWN, SHF_DOWN, CTL_DOWN, ALT_DOWN }, /* 40 */
+< {KEY_IC, SHF_IC, CTL_INS, ALT_INS }, /* 45 */
+< {KEY_DC, SHF_DC, CTL_DEL, ALT_DEL }, /* 46 */
+---
+> {KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN }, /* 40 */
+> {KEY_IC, KEY_SIC, CTL_INS, ALT_INS }, /* 45 */
+> {KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL }, /* 46 */
+
+Index: PDCurses/x11/README
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/x11/README,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+12c12
+< The files in this directory are copyright Mark Hessling 1995-1999.
+---
+> The files in this directory are copyright Mark Hessling 1995-2000.
+26a27,39
+>
+> Structure
+> ---------
+>
+> x11.c - contains functions that are X11 specific functions that are
+> used by both the process and thread implementations
+> x11.h - #defines and includes for the X11 process/thread
+> x11_proc.c - contains functions that are used by the X11 (child) process
+> in the process implementation
+> curses_proc.c - contains functions that are used by the curses (parent)
+> process in the process implementation
+> x11_thread.c -
+> curses_thread.c -
+
+Index: PDCurses/x11/ScrollBox.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/x11/ScrollBox.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+124c124
+< Widget main, vscroll, hscroll;
+---
+> Widget wmain, vscroll, hscroll;
+130a131
+> #if 0
+132a134
+> #endif
+151c153
+< main = sbw->composite.children[0];
+---
+> wmain = sbw->composite.children[0];
+161c163
+< (2 * main->core.border_width);
+---
+> (2 * wmain->core.border_width);
+165c167
+< (2 * main->core.border_width);
+---
+> (2 * wmain->core.border_width);
+167c169
+< vx = main->core.x + mw + sbw->scrollBox.h_space + main->core.border_width + vscroll->core.border_width;
+---
+> vx = wmain->core.x + mw + sbw->scrollBox.h_space + wmain->core.border_width + vscroll->core.border_width;
+169c171
+< hy = main->core.y + mh + sbw->scrollBox.v_space + main->core.border_width + hscroll->core.border_width;
+---
+> hy = wmain->core.y + mh + sbw->scrollBox.v_space + wmain->core.border_width + hscroll->core.border_width;
+175c177
+< XtResizeWidget(main, mw, mh, 1);
+---
+> XtResizeWidget(wmain, mw, mh, 1);
+177c179
+< tw = main->core.width + (2 * sbw->scrollBox.h_space) +
+---
+> tw = wmain->core.width + (2 * sbw->scrollBox.h_space) +
+179c181
+< (2 * main->core.border_width);
+---
+> (2 * wmain->core.border_width);
+181c183
+< th = main->core.height + (2 * sbw->scrollBox.v_space) +
+---
+> th = wmain->core.height + (2 * sbw->scrollBox.v_space) +
+183c185
+< (2 * main->core.border_width);
+---
+> (2 * wmain->core.border_width);
+185,186c187,188
+< hw = mw = main->core.width;
+< vh = mh = main->core.height;
+---
+> hw = mw = wmain->core.width;
+> vh = mh = wmain->core.height;
+188c190
+< vx = main->core.x + mw + sbw->scrollBox.h_space + main->core.border_width + vscroll->core.border_width;
+---
+> vx = wmain->core.x + mw + sbw->scrollBox.h_space + wmain->core.border_width + vscroll->core.border_width;
+190c192
+< hy = main->core.y + mh + sbw->scrollBox.v_space + main->core.border_width + hscroll->core.border_width;
+---
+> hy = wmain->core.y + mh + sbw->scrollBox.v_space + wmain->core.border_width + hscroll->core.border_width;
+
+Index: PDCurses/x11/pdcdisp.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/x11/pdcdisp.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+37c37
+< char *rcsid_PDCdisp = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCdisp = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+201c201
+< XCurses_display_cursor(SP->cursrow,SP->curscol,row,col);
+---
+> XCurses_display_cursor(SP->cursrow,SP->curscol,row,col,SP->visibility);
+
+Index: PDCurses/x11/pdckbd.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/x11/pdckbd.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+28c28
+< char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCkbd = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+243c243
+< c = XCurses_rawgetch();
+---
+> c = XCurses_rawgetch( SP->delaytenths );
+
+Index: PDCurses/x11/pdcscrn.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/x11/pdcscrn.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+27c27
+< char *rcsid_PDCscrn = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCscrn = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+179a180
+> internal->line_color = COLOR_WHITE;
+
+Index: PDCurses/x11/pdcsetsc.c
+===================================================================
+RCS file: /usr/local/cvsroot/PDCurses/x11/pdcsetsc.c,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -b -w -r1.1 -r1.2
+27c27
+< char *rcsid_PDCsetsc = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+---
+> char *rcsid_PDCsetsc = "@Id: case16.pat,v 1.1 2001/04/22 23:30:04 tom Exp @";
+123c123
+< int ret_vis;
+---
+> int ret_vis = SP->visibility;
+129c129,130
+< ret_vis = SP->visibility;
+---
+> if ( visibility != -1 )
+> {
+131,132c132,133
+<
+< XCurses_display_cursor(SP->cursrow,SP->curscol,SP->cursrow,SP->curscol);
+---
+> }
+> XCurses_display_cursor(SP->cursrow,SP->curscol,SP->cursrow,SP->curscol,visibility);
diff --git a/patch_cmds/diffstat/testing/case16.ref b/patch_cmds/diffstat/testing/case16.ref
new file mode 100644
index 0000000..222db1b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5
+ aclocal.m4 | 7
+ config.h.in | 6
+ configure | 386 +++++++++++++++++++++++++++++++++------------------
+ curses.h | 37 +++-
+ curspriv.h | 12 -
+ demos/testcurs.c | 9 -
+ doc/intro.man | 27 ++-
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 +++
+ install-sh | 26 ++-
+ os2/gccos2.mak | 14 -
+ os2/pdckbd.c | 28 +++
+ os2/pdcurses.def | 8 -
+ pdcurses/Makefile.in | 120 ++++++++++-----
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 -
+ x11/README | 15 +
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 -
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16R.ref b/patch_cmds/diffstat/testing/case16R.ref
new file mode 100644
index 0000000..4325241
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16R.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 +++-----
+ README | 5
+ aclocal.m4 | 7
+ config.h.in | 6
+ configure | 386 +++++++++++++++++----------------------------------
+ curses.h | 37 +---
+ curspriv.h | 12 -
+ demos/testcurs.c | 9 -
+ doc/intro.man | 27 +--
+ doc/x11.man | 100 +++----------
+ dos/pdckbd.c | 28 ---
+ dos/wccdos.lrf | 26 ---
+ os2/gccos2.mak | 14 -
+ os2/pdckbd.c | 28 ---
+ os2/pdcurses.def | 8 -
+ pdcurses/Makefile.in | 120 +++++----------
+ pdcurses/border.c | 168 +---------------------
+ pdcurses/color.c | 26 ---
+ pdcurses/getch.c | 12 -
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 -
+ x11/README | 15 -
+ x11/ScrollBox.c | 32 +---
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 -
+ 29 files changed, 327 insertions(+), 847 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16Rp0.ref b/patch_cmds/diffstat/testing/case16Rp0.ref
new file mode 100644
index 0000000..4054d02
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16Rp0.ref
@@ -0,0 +1,30 @@
+ PDCurses/Makefile.in | 61 ++----
+ PDCurses/README | 5
+ PDCurses/aclocal.m4 | 7
+ PDCurses/config.h.in | 6
+ PDCurses/configure | 386 ++++++++++++++----------------------------
+ PDCurses/curses.h | 37 ----
+ PDCurses/curspriv.h | 12 -
+ PDCurses/demos/testcurs.c | 9
+ PDCurses/doc/intro.man | 27 +-
+ PDCurses/doc/x11.man | 100 +++-------
+ PDCurses/dos/pdckbd.c | 28 ---
+ PDCurses/dos/wccdos.lrf | 26 --
+ PDCurses/os2/gccos2.mak | 14 -
+ PDCurses/os2/pdckbd.c | 28 ---
+ PDCurses/os2/pdcurses.def | 8
+ PDCurses/pdcurses/Makefile.in | 120 ++++---------
+ PDCurses/pdcurses/border.c | 168 ------------------
+ PDCurses/pdcurses/color.c | 26 --
+ PDCurses/pdcurses/getch.c | 12 -
+ PDCurses/pdcurses/initscr.c | 6
+ PDCurses/pdcurses/util.c | 6
+ PDCurses/win32/curses.def | 3
+ PDCurses/win32/pdckbd.c | 10 -
+ PDCurses/x11/README | 15 -
+ PDCurses/x11/ScrollBox.c | 32 +--
+ PDCurses/x11/pdcdisp.c | 4
+ PDCurses/x11/pdckbd.c | 4
+ PDCurses/x11/pdcscrn.c | 3
+ PDCurses/x11/pdcsetsc.c | 11 -
+ 29 files changed, 327 insertions(+), 847 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16b.ref b/patch_cmds/diffstat/testing/case16b.ref
new file mode 100644
index 0000000..222db1b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16b.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5
+ aclocal.m4 | 7
+ config.h.in | 6
+ configure | 386 +++++++++++++++++++++++++++++++++------------------
+ curses.h | 37 +++-
+ curspriv.h | 12 -
+ demos/testcurs.c | 9 -
+ doc/intro.man | 27 ++-
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 +++
+ install-sh | 26 ++-
+ os2/gccos2.mak | 14 -
+ os2/pdckbd.c | 28 +++
+ os2/pdcurses.def | 8 -
+ pdcurses/Makefile.in | 120 ++++++++++-----
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 -
+ x11/README | 15 +
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 -
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16f0.ref b/patch_cmds/diffstat/testing/case16f0.ref
new file mode 100644
index 0000000..e18c43a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16f0.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 34 + 27 - 0 !
+ README | 5 3 + 2 - 0 !
+ aclocal.m4 | 7 6 + 1 - 0 !
+ config.h.in | 6 6 + 0 - 0 !
+ configure | 386 256 + 130 - 0 !
+ curses.h | 37 29 + 8 - 0 !
+ curspriv.h | 12 6 + 6 - 0 !
+ demos/testcurs.c | 9 7 + 2 - 0 !
+ doc/intro.man | 27 16 + 11 - 0 !
+ doc/x11.man | 100 70 + 30 - 0 !
+ dos/pdckbd.c | 28 27 + 1 - 0 !
+ install-sh | 26 21 + 5 - 0 !
+ os2/gccos2.mak | 14 7 + 7 - 0 !
+ os2/pdckbd.c | 28 27 + 1 - 0 !
+ os2/pdcurses.def | 8 7 + 1 - 0 !
+ pdcurses/Makefile.in | 120 77 + 43 - 0 !
+ pdcurses/border.c | 168 159 + 9 - 0 !
+ pdcurses/color.c | 26 24 + 2 - 0 !
+ pdcurses/getch.c | 12 8 + 4 - 0 !
+ pdcurses/initscr.c | 6 3 + 3 - 0 !
+ pdcurses/util.c | 6 3 + 3 - 0 !
+ win32/curses.def | 3 3 + 0 - 0 !
+ win32/pdckbd.c | 10 5 + 5 - 0 !
+ x11/README | 15 14 + 1 - 0 !
+ x11/ScrollBox.c | 32 17 + 15 - 0 !
+ x11/pdcdisp.c | 4 2 + 2 - 0 !
+ x11/pdckbd.c | 4 2 + 2 - 0 !
+ x11/pdcscrn.c | 3 2 + 1 - 0 !
+ x11/pdcsetsc.c | 11 6 + 5 - 0 !
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16k.ref b/patch_cmds/diffstat/testing/case16k.ref
new file mode 100644
index 0000000..222db1b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16k.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5
+ aclocal.m4 | 7
+ config.h.in | 6
+ configure | 386 +++++++++++++++++++++++++++++++++------------------
+ curses.h | 37 +++-
+ curspriv.h | 12 -
+ demos/testcurs.c | 9 -
+ doc/intro.man | 27 ++-
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 +++
+ install-sh | 26 ++-
+ os2/gccos2.mak | 14 -
+ os2/pdckbd.c | 28 +++
+ os2/pdcurses.def | 8 -
+ pdcurses/Makefile.in | 120 ++++++++++-----
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 -
+ x11/README | 15 +
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 -
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16p1.ref b/patch_cmds/diffstat/testing/case16p1.ref
new file mode 100644
index 0000000..222db1b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16p1.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5
+ aclocal.m4 | 7
+ config.h.in | 6
+ configure | 386 +++++++++++++++++++++++++++++++++------------------
+ curses.h | 37 +++-
+ curspriv.h | 12 -
+ demos/testcurs.c | 9 -
+ doc/intro.man | 27 ++-
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 +++
+ install-sh | 26 ++-
+ os2/gccos2.mak | 14 -
+ os2/pdckbd.c | 28 +++
+ os2/pdcurses.def | 8 -
+ pdcurses/Makefile.in | 120 ++++++++++-----
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 -
+ x11/README | 15 +
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 -
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16p9.ref b/patch_cmds/diffstat/testing/case16p9.ref
new file mode 100644
index 0000000..818a0de
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16p9.ref
@@ -0,0 +1,25 @@
+ Makefile.in | 181 ++++++++++++++++-----------
+ README | 20 ++-
+ ScrollBox.c | 32 ++--
+ aclocal.m4 | 7 -
+ border.c | 168 ++++++++++++++++++++++++-
+ color.c | 26 +++
+ config.h.in | 6
+ configure | 386 +++++++++++++++++++++++++++++++++++++++--------------------
+ curses.def | 3
+ curses.h | 37 ++++-
+ curspriv.h | 12 -
+ gccos2.mak | 14 +-
+ getch.c | 12 +
+ initscr.c | 6
+ install-sh | 26 +++
+ intro.man | 27 ++--
+ pdcdisp.c | 4
+ pdckbd.c | 70 +++++++++-
+ pdcscrn.c | 3
+ pdcsetsc.c | 11 -
+ pdcurses.def | 8 +
+ testcurs.c | 9 +
+ util.c | 6
+ x11.man | 100 ++++++++++-----
+ 24 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16r1.ref b/patch_cmds/diffstat/testing/case16r1.ref
new file mode 100644
index 0000000..cfa76c0
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16r1.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5
+ aclocal.m4 | 7 +
+ config.h.in | 6 +
+ configure | 386 ++++++++++++++++++++++++++++++++++-----------------
+ curses.h | 37 ++++-
+ curspriv.h | 12 +-
+ demos/testcurs.c | 9 +
+ doc/intro.man | 27 ++-
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 ++++
+ install-sh | 26 +++-
+ os2/gccos2.mak | 14 +-
+ os2/pdckbd.c | 28 ++++
+ os2/pdcurses.def | 8 +
+ pdcurses/Makefile.in | 120 ++++++++++------
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +-
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 +-
+ x11/README | 15 ++
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 +-
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16r2.ref b/patch_cmds/diffstat/testing/case16r2.ref
new file mode 100644
index 0000000..4c56b61
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16r2.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5 +
+ aclocal.m4 | 7 +
+ config.h.in | 6 +
+ configure | 386 ++++++++++++++++++++++++++++++++++-----------------
+ curses.h | 37 ++++-
+ curspriv.h | 12 +-
+ demos/testcurs.c | 9 +
+ doc/intro.man | 27 ++--
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 ++++
+ install-sh | 26 +++
+ os2/gccos2.mak | 14 +-
+ os2/pdckbd.c | 28 ++++
+ os2/pdcurses.def | 8 +
+ pdcurses/Makefile.in | 120 ++++++++++------
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +-
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3 +
+ win32/pdckbd.c | 10
+ x11/README | 15 ++
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3 +
+ x11/pdcsetsc.c | 11 +
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case16u.ref b/patch_cmds/diffstat/testing/case16u.ref
new file mode 100644
index 0000000..222db1b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case16u.ref
@@ -0,0 +1,30 @@
+ Makefile.in | 61 ++++----
+ README | 5
+ aclocal.m4 | 7
+ config.h.in | 6
+ configure | 386 +++++++++++++++++++++++++++++++++------------------
+ curses.h | 37 +++-
+ curspriv.h | 12 -
+ demos/testcurs.c | 9 -
+ doc/intro.man | 27 ++-
+ doc/x11.man | 100 +++++++++----
+ dos/pdckbd.c | 28 +++
+ install-sh | 26 ++-
+ os2/gccos2.mak | 14 -
+ os2/pdckbd.c | 28 +++
+ os2/pdcurses.def | 8 -
+ pdcurses/Makefile.in | 120 ++++++++++-----
+ pdcurses/border.c | 168 +++++++++++++++++++++-
+ pdcurses/color.c | 26 +++
+ pdcurses/getch.c | 12 +
+ pdcurses/initscr.c | 6
+ pdcurses/util.c | 6
+ win32/curses.def | 3
+ win32/pdckbd.c | 10 -
+ x11/README | 15 +
+ x11/ScrollBox.c | 32 ++--
+ x11/pdcdisp.c | 4
+ x11/pdckbd.c | 4
+ x11/pdcscrn.c | 3
+ x11/pdcsetsc.c | 11 -
+ 29 files changed, 847 insertions(+), 327 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case17.pat b/patch_cmds/diffstat/testing/case17.pat
new file mode 100644
index 0000000..3149deb
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17.pat
@@ -0,0 +1,115 @@
+--- linux/kernel/sched.c.user 2002-08-08 11:52:55.000000000 -0300
++++ linux/kernel/sched.c 2002-08-08 20:44:01.000000000 -0300
+@@ -124,6 +124,9 @@
+ # define finish_arch_switch(rq) spin_unlock_irq(&(rq)->lock)
+ #endif
+
++/* Per-user fair scheduler on/off switch. */
++int fairsched_enabled;
++
+ /*
+ * task_rq_lock - lock the runqueue a given task resides on and disable
+ * interrupts. Note the ordering: we can safely lookup the task_rq without
+@@ -167,6 +170,44 @@
+ p->array = array;
+ }
+
++/*
++ * Modify the per task bonus with a bonus based on the CPU usage
++ * of all the user's tasks combined. This won't just redistribute
++ * the CPU more fairly between the users, it will also make the
++ * interactive tasks of a CPU-hogging user "feel slower", giving
++ * that user a good reason to not hog the system ;)
++ */
++static inline int peruser_bonus(int bonus, struct user_struct * user)
++{
++ int userbonus, i, max_cpu;
++
++ /*
++ * Decay the per-user cpu usage once for every STARVATION_LIMIT
++ * interval. We round up the number of intervals so we won't
++ * have to recalculate again immediately and always increment
++ * user->cpu_lastcalc with a multiple of STARVATION_LIMIT so
++ * we don't have different decay rates for users with different
++ * wakeup patterns.
++ */
++ if (time_after(jiffies, user->cpu_lastcalc + STARVATION_LIMIT)) {
++ i = ((jiffies - user->cpu_lastcalc) / STARVATION_LIMIT) + 1;
++ user->cpu_lastcalc += i * STARVATION_LIMIT;
++ user->cpu_time >>= i;
++ }
++
++ /*
++ * 0% cpu usage -> + BONUS
++ * 50% cpu usage -> 0
++ * 100% cpu usage -> - BONUS
++ */
++ max_cpu = smp_num_cpus * STARVATION_LIMIT * 3 / 4;
++
++ /**** FIXME ****/
++ userbonus = max_cpu - (user->cpu_time + 1)
++
++ return (bonus + userbonus) / 2;
++}
++
+ static inline int effective_prio(task_t *p)
+ {
+ int bonus, prio;
+@@ -185,6 +226,9 @@
+ bonus = MAX_USER_PRIO*PRIO_BONUS_RATIO*p->sleep_avg/MAX_SLEEP_AVG/100 -
+ MAX_USER_PRIO*PRIO_BONUS_RATIO/100/2;
+
++ if (fairsched_enabled)
++ bonus = peruser_bonus(bonus, p->user);
++
+ prio = p->static_prio - bonus;
+ if (prio < MAX_RT_PRIO)
+ prio = MAX_RT_PRIO;
+@@ -673,6 +717,9 @@
+ kstat.per_cpu_user[cpu] += user_tick;
+ kstat.per_cpu_system[cpu] += system;
+
++ if (fairsched_enabled && p->user)
++ p->user->cpu_time++;
++
+ /* Task might have expired already, but not scheduled off yet */
+ if (p->array != rq->active) {
+ set_tsk_need_resched(p);
+--- linux/kernel/user.c.user 2002-08-08 19:30:05.000000000 -0300
++++ linux/kernel/user.c 2002-08-08 19:40:43.000000000 -0300
+@@ -101,6 +101,8 @@
+ atomic_set(&new->__count, 1);
+ atomic_set(&new->processes, 0);
+ atomic_set(&new->files, 0);
++ new->cpu_time = 0;
++ new->cpu_lastcalc = jiffies;
+
+ /*
+ * Before adding this, check whether we raced
+--- linux/include/linux/sched.h.user 2002-08-08 11:53:28.000000000 -0300
++++ linux/include/linux/sched.h 2002-08-08 20:25:13.000000000 -0300
+@@ -80,6 +80,9 @@
+ extern unsigned long nr_running(void);
+ extern unsigned long nr_uninterruptible(void);
+
++/* Per-user fair scheduler on/off switch */
++extern int fairsched_enabled;
++
+ //#include <linux/fs.h>
+ #include <linux/time.h>
+ #include <linux/param.h>
+@@ -288,6 +291,14 @@
+ atomic_t processes; /* How many processes does this user have? */
+ atomic_t files; /* How many open files does this user have? */
+
++ /*
++ * Fair scheduler CPU usage counting. If the per-user fair scheduler
++ * is enabled, we keep track of how much CPU time this user is using,
++ * using a floating average.
++ */
++ unsigned long cpu_time;
++ unsigned long cpu_lastcalc;
++
+ /* Hash table maintenance information */
+ struct user_struct *next, **pprev;
+ uid_t uid;
diff --git a/patch_cmds/diffstat/testing/case17.ref b/patch_cmds/diffstat/testing/case17.ref
new file mode 100644
index 0000000..2d08606
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 +++++++++++
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17R.ref b/patch_cmds/diffstat/testing/case17R.ref
new file mode 100644
index 0000000..e9d1af7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17R.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h.user | 11 ----------
+ kernel/sched.c.user | 47 ---------------------------------------------
+ kernel/user.c.user | 2 -
+ 3 files changed, 60 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case17Rp0.ref b/patch_cmds/diffstat/testing/case17Rp0.ref
new file mode 100644
index 0000000..d1f5725
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17Rp0.ref
@@ -0,0 +1,4 @@
+ linux/include/linux/sched.h.user | 11 ---------
+ linux/kernel/sched.c.user | 47 ---------------------------------------
+ linux/kernel/user.c.user | 2 -
+ 3 files changed, 60 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case17b.ref b/patch_cmds/diffstat/testing/case17b.ref
new file mode 100644
index 0000000..2d08606
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17b.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 +++++++++++
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17f0.ref b/patch_cmds/diffstat/testing/case17f0.ref
new file mode 100644
index 0000000..c5fc68e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17f0.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 11 + 0 - 0 !
+ kernel/sched.c | 47 47 + 0 - 0 !
+ kernel/user.c | 2 2 + 0 - 0 !
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17k.ref b/patch_cmds/diffstat/testing/case17k.ref
new file mode 100644
index 0000000..2d08606
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17k.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 +++++++++++
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17p1.ref b/patch_cmds/diffstat/testing/case17p1.ref
new file mode 100644
index 0000000..2d08606
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17p1.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 +++++++++++
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17p9.ref b/patch_cmds/diffstat/testing/case17p9.ref
new file mode 100644
index 0000000..8fab6ab
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17p9.ref
@@ -0,0 +1,4 @@
+ sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ sched.h | 11 +++++++++++
+ user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17r1.ref b/patch_cmds/diffstat/testing/case17r1.ref
new file mode 100644
index 0000000..2d08606
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17r1.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 +++++++++++
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17r2.ref b/patch_cmds/diffstat/testing/case17r2.ref
new file mode 100644
index 0000000..2d08606
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17r2.ref
@@ -0,0 +1,4 @@
+ include/linux/sched.h | 11 +++++++++++
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case17u.ref b/patch_cmds/diffstat/testing/case17u.ref
new file mode 100644
index 0000000..c832b99
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case17u.ref
@@ -0,0 +1,4 @@
+ kernel/sched.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ kernel/user.c | 2 ++
+ include/linux/sched.h | 11 +++++++++++
+ 3 files changed, 60 insertions(+)
diff --git a/patch_cmds/diffstat/testing/case18.pat b/patch_cmds/diffstat/testing/case18.pat
new file mode 100644
index 0000000..42111ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18.pat
@@ -0,0 +1,7 @@
+diff -urN tst/foo tst.new/foo
+--- tst/foo 2002-11-27 17:21:54.000000000 +0200
++++ tst.new/foo 2002-11-27 17:22:00.000000000 +0200
+@@ -1,3 +1,2 @@
+ lalala
+--- ALWAYS!</b>:
+ foobar
diff --git a/patch_cmds/diffstat/testing/case18.ref b/patch_cmds/diffstat/testing/case18.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18R.ref b/patch_cmds/diffstat/testing/case18R.ref
new file mode 100644
index 0000000..14aa1f7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18R.ref
@@ -0,0 +1,2 @@
+ foo | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case18Rp0.ref b/patch_cmds/diffstat/testing/case18Rp0.ref
new file mode 100644
index 0000000..e98fad1
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18Rp0.ref
@@ -0,0 +1,2 @@
+ tst/foo | 1 +
+ 1 file changed, 1 insertion(+)
diff --git a/patch_cmds/diffstat/testing/case18b.ref b/patch_cmds/diffstat/testing/case18b.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18b.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18f0.ref b/patch_cmds/diffstat/testing/case18f0.ref
new file mode 100644
index 0000000..ad90571
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18f0.ref
@@ -0,0 +1,2 @@
+ foo | 1 0 + 1 - 0 !
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18k.ref b/patch_cmds/diffstat/testing/case18k.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18k.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18p1.ref b/patch_cmds/diffstat/testing/case18p1.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18p1.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18p9.ref b/patch_cmds/diffstat/testing/case18p9.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18p9.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18r1.ref b/patch_cmds/diffstat/testing/case18r1.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18r1.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18r2.ref b/patch_cmds/diffstat/testing/case18r2.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18r2.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case18u.ref b/patch_cmds/diffstat/testing/case18u.ref
new file mode 100644
index 0000000..60a4d2b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case18u.ref
@@ -0,0 +1,2 @@
+ foo | 1 -
+ 1 file changed, 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case19.pat b/patch_cmds/diffstat/testing/case19.pat
new file mode 100644
index 0000000..dc7e362
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19.pat
@@ -0,0 +1,14 @@
+--- data.old Sat Jan 4 13:26:04 2003
++++ data.new Sat Jan 4 13:27:20 2003
+@@ -1,5 +1,8 @@
+ -Readme file for DiffStat.
+ -
+--This program is a simple filter that reads the output of the 'diff' program,
+--- and produces a histogram of the total number of lines that were changed. It is
+-useful for scanning a patch file to see which files were changed.
++-This program is
++- a simple filter that reads the output of the 'diff' program,
++++ and produces a histogram
++- of the total number of lines that were changed. It is
++++ useful
+++ for scanning a patch file to see which files were changed.
diff --git a/patch_cmds/diffstat/testing/case19.ref b/patch_cmds/diffstat/testing/case19.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19R.ref b/patch_cmds/diffstat/testing/case19R.ref
new file mode 100644
index 0000000..d3fb950
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19R.ref
@@ -0,0 +1,2 @@
+ data.old | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19Rp0.ref b/patch_cmds/diffstat/testing/case19Rp0.ref
new file mode 100644
index 0000000..d3fb950
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19Rp0.ref
@@ -0,0 +1,2 @@
+ data.old | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19b.ref b/patch_cmds/diffstat/testing/case19b.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19b.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19f0.ref b/patch_cmds/diffstat/testing/case19f0.ref
new file mode 100644
index 0000000..2413833
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19f0.ref
@@ -0,0 +1,2 @@
+ data.new | 9 6 + 3 - 0 !
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19k.ref b/patch_cmds/diffstat/testing/case19k.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19k.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19p1.ref b/patch_cmds/diffstat/testing/case19p1.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19p1.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19p9.ref b/patch_cmds/diffstat/testing/case19p9.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19p9.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19r1.ref b/patch_cmds/diffstat/testing/case19r1.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19r1.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19r2.ref b/patch_cmds/diffstat/testing/case19r2.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19r2.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case19u.ref b/patch_cmds/diffstat/testing/case19u.ref
new file mode 100644
index 0000000..14976e9
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case19u.ref
@@ -0,0 +1,2 @@
+ data.new | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case20.pat b/patch_cmds/diffstat/testing/case20.pat
new file mode 100644
index 0000000..b132730
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20.pat
@@ -0,0 +1,111 @@
+diff -c 'vile-9.3+/README' 'vile-9.3j+/README'
+Index: ./README
+Prereq: 1.88
+*** ./README Tue Jun 25 20:25:57 2002
+--- ./README Sun Jun 30 16:27:52 2002
+***************
+*** 23,41 ****
+ impatient? just type "./configure; make", and get a cup of coffee, decaf
+ if necessary.
+
+ want X11 support? you'd better look at doc/config.doc, although
+ "./configure --with-screen=x11"; make" may well do what you want.
+
+ want PC support? look for precompiled binaries at the various ftp sites.
+
+ want to build vile on a PC host? refer to the file README.PC .
+
+! want VMS support? you'll need to build vile yourself. refer to the
+! file README.VMS .
+!
+! if you like vile, and wish to be informed of new releases, let me
+! know -- i maintain a mailing list for that purpose. don't worry -- the
+! volume won't fill your inbox.
+
+ paul fox, pgf@foxharp.boston.ma.us (original author)
+ kevin buettner, kev@primenet.com
+--- 23,49 ----
+ impatient? just type "./configure; make", and get a cup of coffee, decaf
+ if necessary.
+
++ want to know more about configure options? type "./configure --help"
++ and then read doc/config.doc for further details.
++
+ want X11 support? you'd better look at doc/config.doc, although
+ "./configure --with-screen=x11"; make" may well do what you want.
+
++ want syntax coloring? add "--with-builtin-filters" to your configure
++ options and then read the topics "Color basics" and "Syntax coloring" in
++ the file vile.hlp.
++
+ want PC support? look for precompiled binaries at the various ftp sites.
+
+ want to build vile on a PC host? refer to the file README.PC .
+
+! want VMS support? some precompiled binaries are available at
+! ftp://ftp.phred.org/pub/vile. otherwise, you'll need to build vile
+! yourself. In either case, refer to the file README.VMS .
+!
+! if you like vile, and wish to be informed of new releases, let me know -- i
+! maintain a mailing list for that purpose (scroll down a bit for details).
+! don't worry -- the volume won't fill your inbox.
+
+ paul fox, pgf@foxharp.boston.ma.us (original author)
+ kevin buettner, kev@primenet.com
+***************
+*** 628,632 ****
+ + add $prompt variable, to allow changing the command-line prompt.
+
+ -------------------------------
+! @Header: /users/tom/src/diffstat/testing/RCS/case20.pat,v 1.1 2003/01/04 18:59:35 tom Exp @
+ -------------------------------
+--- 636,640 ----
+ + add $prompt variable, to allow changing the command-line prompt.
+
+ -------------------------------
+! @Header: /users/tom/src/diffstat/testing/RCS/case20.pat,v 1.1 2003/01/04 18:59:35 tom Exp @
+ -------------------------------
+diff -c 'vile-9.3+/README.PC' 'vile-9.3j+/README.PC'
+Index: ./README.PC
+Prereq: 1.29
+*** ./README.PC Tue Jun 25 20:25:57 2002
+--- ./README.PC Sun Jun 30 16:27:52 2002
+***************
+*** 198,208 ****
+ install it in a directory located in your PATH and add the following
+ command-line option:
+
+! nmake -f makefile.wnt <OPTIONS_FROM_ABOVE> LEX=flex # or LEX=lex
+
+ take note that flex is a component of cygwin's GNU emulation package
+ and works quite well for this purpose. cygwin can be obtained from
+! Redhat at http://sources.redhat.com/cygwin.
+
+ [2] this option requires prior installation of perl. refer to the section
+ entitled "Perl preconditions" below.
+--- 198,209 ----
+ install it in a directory located in your PATH and add the following
+ command-line option:
+
+! nmake -f makefile.wnt <OPTIONS_FROM_ABOVE> FLT=1 LEX=flex # or LEX=lex
+
+ take note that flex is a component of cygwin's GNU emulation package
+ and works quite well for this purpose. cygwin can be obtained from
+! Redhat at http://sources.redhat.com/cygwin. the FLT option binds
+! all syntax coloring filters into the resultant [win]vile executable.
+
+ [2] this option requires prior installation of perl. refer to the section
+ entitled "Perl preconditions" below.
+***************
+*** 263,267 ****
+ paul fox, pgf@foxharp.boston.ma.us (home)
+
+ ------------------------
+! @Header: /users/tom/src/diffstat/testing/RCS/case20.pat,v 1.1 2003/01/04 18:59:35 tom Exp @
+ ------------------------
+--- 264,268 ----
+ paul fox, pgf@foxharp.boston.ma.us (home)
+
+ ------------------------
+! @Header: /users/tom/src/diffstat/testing/RCS/case20.pat,v 1.1 2003/01/04 18:59:35 tom Exp @
+ ------------------------
diff --git a/patch_cmds/diffstat/testing/case20.ref b/patch_cmds/diffstat/testing/case20.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20R.ref b/patch_cmds/diffstat/testing/case20R.ref
new file mode 100644
index 0000000..fdf305d
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20R.ref
@@ -0,0 +1,3 @@
+ README | 22 -------!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 deletions(-), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20Rp0.ref b/patch_cmds/diffstat/testing/case20Rp0.ref
new file mode 100644
index 0000000..e1fb657
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20Rp0.ref
@@ -0,0 +1,3 @@
+ vile-9.3+/README | 22 -------!!!!!!!!!!!!!!!
+ vile-9.3+/README.PC | 7 !!!!!!!
+ 2 files changed, 7 deletions(-), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20b.ref b/patch_cmds/diffstat/testing/case20b.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20b.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20f0.ref b/patch_cmds/diffstat/testing/case20f0.ref
new file mode 100644
index 0000000..9d74623
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20f0.ref
@@ -0,0 +1,3 @@
+ README | 22 7 + 0 - 15 !
+ README.PC | 7 0 + 0 - 7 !
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20k.ref b/patch_cmds/diffstat/testing/case20k.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20k.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20p1.ref b/patch_cmds/diffstat/testing/case20p1.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20p1.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20p9.ref b/patch_cmds/diffstat/testing/case20p9.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20p9.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20r1.ref b/patch_cmds/diffstat/testing/case20r1.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20r1.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20r2.ref b/patch_cmds/diffstat/testing/case20r2.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20r2.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case20u.ref b/patch_cmds/diffstat/testing/case20u.ref
new file mode 100644
index 0000000..4c948ee
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case20u.ref
@@ -0,0 +1,3 @@
+ README | 22 +++++++!!!!!!!!!!!!!!!
+ README.PC | 7 !!!!!!!
+ 2 files changed, 7 insertions(+), 22 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21.pat b/patch_cmds/diffstat/testing/case21.pat
new file mode 100644
index 0000000..2ff04a5
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21.pat
@@ -0,0 +1,74 @@
+# remove duplicated files when reading applypatch input
+#
+# To apply this patch:
+# STEP 1: Chdir to the source directory.
+# STEP 2: Run the 'applypatch' program with this patch file as input.
+#
+# If you do not have 'applypatch', it is part of the 'makepatch' package
+# that you can fetch from the Comprehensive Perl Archive Network:
+# http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz
+# In the above URL, 'x' should be 2 or higher.
+#
+# To apply this patch without the use of 'applypatch':
+# STEP 1: Chdir to the source directory.
+# STEP 2: Run the 'patch' program with this file as input.
+#
+#### End of Preamble ####
+
+#### Patch data follows ####
+diff -c 'diffstat-1.31/diffstat.c' 'diffstat-1.31_applypatch/diffstat.c'
+Index: ./diffstat.c
+Prereq: 1.31
+*** ./diffstat.c Tue Aug 20 19:38:52 2002
+--- ./diffstat.c Sat Nov 9 22:54:12 2002
+***************
+*** 483,489 ****
+ if (match(buffer, "Index: ")) {
+ s = strrchr(buffer, BLANK); /* last token is name */
+ blip('.');
+! that = new_data(s + 1);
+ ok = begin_data(that);
+ }
+ break;
+--- 483,491 ----
+ if (match(buffer, "Index: ")) {
+ s = strrchr(buffer, BLANK); /* last token is name */
+ blip('.');
+! if (strlen(that->name) != 0)
+! s = do_merging(that, s + 1);
+! that = new_data(s);
+ ok = begin_data(that);
+ }
+ break;
+***************
+*** 493,499 ****
+ && *(s = skip_options(buffer + 5)) != '\0') {
+ s = strrchr(buffer, BLANK);
+ blip('.');
+! that = new_data(s + 1);
+ ok = begin_data(that);
+ }
+ break;
+--- 495,503 ----
+ && *(s = skip_options(buffer + 5)) != '\0') {
+ s = strrchr(buffer, BLANK);
+ blip('.');
+! if (strlen(that->name) != 0)
+! s = do_merging(that, s + 1);
+! that = new_data(s);
+ ok = begin_data(that);
+ }
+ break;
+#### End of Patch data ####
+
+#### ApplyPatch data follows ####
+# Data version : 1.0
+# Date generated : Sat Nov 9 22:55:16 2002
+# Generated by : makepatch 2.00_05
+# Recurse directories : Yes
+# p 'diffstat.c' 21017 1036900452 0100644
+#### End of ApplyPatch data ####
+
+#### End of Patch kit [created: Sat Nov 9 22:55:16 2002] ####
+#### Patch checksum: 55 1528 36697 ####
+#### Checksum: 73 2205 27936 ####
diff --git a/patch_cmds/diffstat/testing/case21.ref b/patch_cmds/diffstat/testing/case21.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21R.ref b/patch_cmds/diffstat/testing/case21R.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21R.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21Rp0.ref b/patch_cmds/diffstat/testing/case21Rp0.ref
new file mode 100644
index 0000000..32019b3
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21Rp0.ref
@@ -0,0 +1,2 @@
+ diffstat-1.31/diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21b.ref b/patch_cmds/diffstat/testing/case21b.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21b.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21f0.ref b/patch_cmds/diffstat/testing/case21f0.ref
new file mode 100644
index 0000000..c5e255c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21f0.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 0 + 0 - 8 !
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21k.ref b/patch_cmds/diffstat/testing/case21k.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21k.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21p1.ref b/patch_cmds/diffstat/testing/case21p1.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21p1.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21p9.ref b/patch_cmds/diffstat/testing/case21p9.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21p9.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21r1.ref b/patch_cmds/diffstat/testing/case21r1.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21r1.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21r2.ref b/patch_cmds/diffstat/testing/case21r2.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21r2.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case21u.ref b/patch_cmds/diffstat/testing/case21u.ref
new file mode 100644
index 0000000..5c225f6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case21u.ref
@@ -0,0 +1,2 @@
+ diffstat.c | 8 !!!!!!!!
+ 1 file changed, 8 modifications(!)
diff --git a/patch_cmds/diffstat/testing/case22.pat b/patch_cmds/diffstat/testing/case22.pat
new file mode 100644
index 0000000..773ff0b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22.pat
@@ -0,0 +1,651 @@
+--- pgp-menu-traditional/PATCHES Dec 2002 17:44:54 -0000 3.6
++++ pgp-menu-traditional/PATCHES Feb 2003 11:26:39 -0000
+@@ -0,0 +1 @@
++patch-1.5.3.dw.pgp-menu-traditional.1
+--- pgp-menu-traditional/compose.c Dec 2002 11:19:39 -0000 3.8
++++ pgp-menu-traditional/compose.c Feb 2003 11:26:42 -0000
+@@ -145,2 +145,6 @@ static void redraw_crypt_lines (HEADER *
+ addstr (_("Clear"));
++#ifdef HAVE_PGP
++ if ((msg->security & PGPINLINE) == PGPINLINE)
++ addstr (_(" (inline)"));
++#endif
+ clrtoeol ();
+@@ -174,4 +178,4 @@ static int pgp_send_menu (HEADER *msg, i
+
+- switch (mutt_multi_choice (_("PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "),
+- _("esabf")))
++ switch (mutt_multi_choice (_("PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline or (f)orget it? "),
++ _("esabtf")))
+ {
+@@ -208,6 +212,11 @@ static int pgp_send_menu (HEADER *msg, i
+ case 4: /* (b)oth */
+- msg->security = PGPENCRYPT | PGPSIGN;
++ msg->security |= PGPENCRYPT | PGPSIGN;
+ break;
+
+- case 5: /* (f)orget it */
++ case 5: /* (t)raditional inline */
++ if (msg->security & (ENCRYPT | SIGN))
++ msg->security |= PGPINLINE; /* should this be a toggle instead */
++ break;
++
++ case 6: /* (f)orget it */
+ msg->security = 0;
+--- pgp-menu-traditional/crypt.c Dec 2002 22:23:42 -0000 3.11
++++ pgp-menu-traditional/crypt.c Feb 2003 11:26:43 -0000
+@@ -172,3 +172,2 @@ int mutt_protect (HEADER *msg, char *key
+ BODY *tmp_pgp_pbody = NULL;
+- int traditional = 0;
+ int flags = msg->security, i;
+@@ -179,18 +178,9 @@ int mutt_protect (HEADER *msg, char *key
+ #ifdef HAVE_PGP
+- if (msg->security & APPLICATION_PGP)
++ if ((msg->security & PGPINLINE) == PGPINLINE)
+ {
+- if ((msg->content->type == TYPETEXT) &&
+- !ascii_strcasecmp (msg->content->subtype, "plain"))
+- {
+- if ((i = query_quadoption (OPT_PGPTRADITIONAL, _("Create an inline PGP message?"))) == -1)
+- return -1;
+- else if (i == M_YES)
+- traditional = 1;
+- }
+- if (traditional)
++ /* they really want to send it inline... go for it */
++ if (!isendwin ()) mutt_endwin _("Invoking PGP...");
++ pbody = pgp_traditional_encryptsign (msg->content, flags, keylist);
++ if (pbody)
+ {
+- if (!isendwin ()) mutt_endwin _("Invoking PGP...");
+- if (!(pbody = pgp_traditional_encryptsign (msg->content, flags, keylist)))
+- return -1;
+-
+ msg->content = pbody;
+@@ -198,2 +188,8 @@ int mutt_protect (HEADER *msg, char *key
+ }
++
++ /* otherwise inline won't work...ask for revert */
++ if ((i = query_quadoption (OPT_PGPMIMEASK, _("Message can't be sent inline. Revert to using PGP/MIME?"))) != M_YES)
++ return -1;
++
++ /* go ahead with PGP/MIME */
+ }
+--- pgp-menu-traditional/init.h Dec 2002 18:09:49 -0000 3.28
++++ pgp-menu-traditional/init.h Feb 2003 11:26:48 -0000
+@@ -1352,2 +1352,44 @@ struct option_t MuttVars[] = {
+ */
++ { "pgp_create_traditional", DT_SYN, R_NONE, UL "pgp_autoinline", 0 },
++ { "pgp_autoinline", DT_BOOL, R_NONE, OPTPGPAUTOINLINE, 0 },
++ /*
++ ** .pp
++ ** This option controls whether Mutt generates old-style inline
++ ** (traditional) PGP encrypted or signed messages under certain
++ ** circumstances. This can be overridden by use of the \fIpgp-menu\fP,
++ ** when inline is not required.
++ ** .pp
++ ** Note that Mutt might automatically use PGP/MIME for messages
++ ** which consist of more than a single MIME part. Mutt can be
++ ** configured to ask before sending PGP/MIME messages when inline
++ ** (traditional) would not work.
++ ** See also: ``$$pgp_mime_ask''.
++ ** .pp
++ ** Also note that using the old-style PGP message format is \fBstrongly\fP
++ ** \fBdeprecated\fP.
++ ** (PGP only)
++ */
++ { "pgp_auto_traditional", DT_SYN, R_NONE, UL "pgp_replyinline", 0 },
++ { "pgp_replyinline", DT_BOOL, R_NONE, OPTPGPREPLYINLINE, 0 },
++ /*
++ ** .pp
++ ** Setting this variable will cause Mutt to always attempt to
++ ** create an inline (traditional) message when replying to a
++ ** message which is PGP encrypted/signed inline. This can be
++ ** overridden by use of the \fIpgp-menu\fP, when inline is not
++ ** required. This option does not automatically detect if the
++ ** (replied-to) message is inline; instead it relies on Mutt
++ ** internals for previously checked/flagged messages.
++ ** .pp
++ ** Note that Mutt might automatically use PGP/MIME for messages
++ ** which consist of more than a single MIME part. Mutt can be
++ ** configured to ask before sending PGP/MIME messages when inline
++ ** (traditional) would not work.
++ ** See also: ``$$pgp_mime_ask''.
++ ** .pp
++ ** Also note that using the old-style PGP message format is \fBstrongly\fP
++ ** \fBdeprecated\fP.
++ ** (PGP only)
++ **
++ */
+ { "pgp_show_unusable", DT_BOOL, R_NONE, OPTPGPSHOWUNUSABLE, 1 },
+@@ -1396,11 +1438,8 @@ struct option_t MuttVars[] = {
+ */
+- { "pgp_create_traditional", DT_QUAD, R_NONE, OPT_PGPTRADITIONAL, M_NO },
++ { "pgp_mime_ask", DT_QUAD, R_NONE, OPT_PGPMIMEASK, M_NO },
+ /*
+ ** .pp
+- ** This option controls whether Mutt generates old-style PGP encrypted
+- ** or signed messages under certain circumstances.
+- ** .pp
+- ** Note that PGP/MIME will be used automatically for messages which have
+- ** a character set different from us-ascii, or which consist of more than
+- ** a single MIME part.
++ ** This option controls whether Mutt will prompt you for
++ ** automatically sending a (signed/encrypted) message using
++ ** PGP/MIME when inline (traditional) fails (for any reason).
+ ** .pp
+@@ -1409,2 +1448,3 @@ struct option_t MuttVars[] = {
+ */
++
+
+--- pgp-menu-traditional/mutt.h Dec 2002 08:53:21 -0000 3.12
++++ pgp-menu-traditional/mutt.h Feb 2003 11:26:51 -0000
+@@ -270,3 +270,3 @@ enum
+ #ifdef HAVE_PGP
+- OPT_PGPTRADITIONAL, /* create old-style PGP messages */
++ OPT_PGPMIMEASK, /* ask to revert to PGP/MIME when inline fails */
+ #endif
+@@ -447,2 +447,4 @@ enum
+ OPTPGPLONGIDS,
++ OPTPGPAUTOINLINE,
++ OPTPGPREPLYINLINE,
+ #endif
+--- pgp-menu-traditional/pgp.c Dec 2002 17:59:51 -0000 3.18
++++ pgp-menu-traditional/pgp.c Feb 2003 11:26:55 -0000
+@@ -535,2 +535,5 @@ int mutt_is_application_pgp (BODY *m)
+ }
++ if (t)
++ t |= PGPINLINE;
++
+ return t;
+@@ -1057,3 +1060,3 @@ char *pgp_findKeys (ADDRESS *to, ADDRESS
+ int i;
+- pgp_key_t *k_info, *key;
++ pgp_key_t *k_info, *key = NULL;
+
+--- pgp-menu-traditional/pgplib.h Dec 2002 11:19:40 -0000 3.3
++++ pgp-menu-traditional/pgplib.h Feb 2003 11:26:56 -0000
+@@ -27,2 +27,3 @@
+ #define PGPKEY (APPLICATION_PGP | (1 << 3))
++#define PGPINLINE (APPLICATION_PGP | (1 << 4))
+
+--- pgp-menu-traditional/postpone.c Dec 2002 11:19:40 -0000 3.7
++++ pgp-menu-traditional/postpone.c Feb 2003 11:26:57 -0000
+@@ -492,2 +492,9 @@ int mutt_parse_crypt_hdr (char *p, int s
+
++ case 'i':
++ case 'I':
++#ifdef HAVE_PGP
++ pgp |= (PGPINLINE & ~APPLICATION_PGP);
++#endif
++ break;
++
+ default:
+--- pgp-menu-traditional/send.c Dec 2002 22:47:57 -0000 3.15
++++ pgp-menu-traditional/send.c Feb 2003 11:27:01 -0000
+@@ -1259,3 +1259,3 @@ ci_send_message (int flags, /* send mod
+ msg->security |= SIGN;
+- }
++ }
+
+@@ -1279,2 +1279,8 @@ ci_send_message (int flags, /* send mod
+ msg->security |= APPLICATION_PGP;
++ /*
++ * we leave this so late because PGPINLINE should be applied only when APPLICATION_PGP is high
++ * perhaps reserving a bit in crypt.h would be more reasonable, though it doesn't apply with S/MIME
++ */
++ if (option (OPTPGPREPLYINLINE) && (cur->security & PGPINLINE) == PGPINLINE)
++ msg->security |= PGPINLINE;
+ #endif /* HAVE_PGP */
+@@ -1294,2 +1300,10 @@ ci_send_message (int flags, /* send mod
+ }
++#ifdef HAVE_PGP
++ /*
++ * we leave this so late because PGPINLINE should be applied only when APPLICATION_PGP is high
++ * perhaps reserving a bit in crypt.h would be more reasonable, though it doesn't apply with S/MIME
++ */
++ if ((msg->security & APPLICATION_PGP) && (option (OPTPGPAUTOINLINE)))
++ msg->security |= PGPINLINE;
++#endif
+ #endif /* HAVE_PGP || HAVE_SMIME */
+--- pgp-menu-traditional/sendlib.c Dec 2002 20:56:48 -0000 3.18
++++ pgp-menu-traditional/sendlib.c Feb 2003 11:27:02 -0000
+@@ -2429,2 +2429,4 @@ int mutt_write_fcc (const char *path, HE
+ }
++ if ((hdr->security & PGPINLINE) == PGPINLINE)
++ fputc ('I', msg->fp);
+ fputc ('\n', msg->fp);
+--- pgp-menu-traditional/po/ca.po Dec 2002 10:37:21 -0000 3.7
++++ pgp-menu-traditional/po/ca.po Feb 2003 11:27:19 -0000
+@@ -596,10 +596,10 @@ msgstr "Xifra"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "(x)ifra, (s)igna, s(i)gna com a, (a)mbdós, o en (c)lar? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "(x)ifra, (s)igna, s(i)gna com a, (a)mbdós, traditional en (l)ínia, o en (c)lar? "
+
+ # ivb (2001/11/19)
+-# ivb (x)ifra, (s)igna, s(i)gna com a, (a)mbdós, (c)lar
++# ivb (x)ifra, (s)igna, s(i)gna com a, (a)mbdós, traditional en (l)ínia, o en (c)lar
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "xsiac"
++msgid "esabtf"
++msgstr "xsialc"
+
+--- pgp-menu-traditional/po/cs.po Dec 2002 10:37:21 -0000 3.6
++++ pgp-menu-traditional/po/cs.po Feb 2003 11:27:20 -0000
+@@ -676,4 +676,4 @@ msgstr "Za¹ifrovat"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "(¹)ifrovat, (p)odepsat, podepsat (j)ako, (o)bojí, èi (n)ic?"
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "(¹)ifrovat, (p)odepsat, podepsat (j)ako, (o)bojí, (t)raditional/pøímý, èi (n)ic?"
+
+@@ -681,4 +681,4 @@ msgstr "(¹)ifrovat, (p)odepsat, podepsat
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "¹pjon"
++msgid "esabtf"
++msgstr "¹pjotn"
+
+--- pgp-menu-traditional/po/da.po Dec 2002 10:37:21 -0000 3.6
++++ pgp-menu-traditional/po/da.po Feb 2003 11:27:21 -0000
+@@ -566,8 +566,8 @@ msgstr "Kryptér"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "(k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, (i)ngen PGP"
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "(k)ryptér, (u)nderskriv, underskriv (s)om, (b)egge, (t)raditional integreret, (i)ngen PGP"
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "kusbi"
++msgid "esabtf"
++msgstr "kusbti"
+
+--- pgp-menu-traditional/po/de.po Dec 2002 10:37:21 -0000 3.7
++++ pgp-menu-traditional/po/de.po Feb 2003 11:27:22 -0000
+@@ -558,8 +558,8 @@ msgstr "Verschlüsseln mit: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, (k)ein PGP? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (v)erschl., (s)ign., sign. (a)ls, (b)eides, (t)raditionelles Inline, (k)ein PGP? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "vsabk"
++msgid "esabtf"
++msgstr "vsabtk"
+
+--- pgp-menu-traditional/po/el.po Dec 2002 10:37:21 -0000 3.7
++++ pgp-menu-traditional/po/el.po Feb 2003 11:27:24 -0000
+@@ -690,4 +690,4 @@ msgstr "ÊñõðôïãñÜöçóç ìå: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, Þ (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional êåßìåíï, Þ (f)orget it? "
+
+@@ -696,4 +696,4 @@ msgstr "PGP (e)ncrypt, (s)ign, sign (a)s
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "esabf"
++msgid "esabtf"
++msgstr "esabtf"
+
+--- pgp-menu-traditional/po/eo.po Dec 2002 10:37:21 -0000 3.6
++++ pgp-menu-traditional/po/eo.po Feb 2003 11:27:25 -0000
+@@ -566,8 +566,8 @@ msgstr "Æifri"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "æ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaý, aý (f)orgesi? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "æ(i)fri, (s)ubskribi, subskribi (k)iel, (a)mbaý, (t)raditional \"inline\", aý (f)orgesi? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "iskaf"
++msgid "esabtf"
++msgstr "iskatf"
+
+--- pgp-menu-traditional/po/es.po Dec 2002 10:37:22 -0000 3.7
++++ pgp-menu-traditional/po/es.po Feb 2003 11:27:26 -0000
+@@ -564,8 +564,9 @@ msgstr "Cifrar"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "¿co(d)ificar, f(i)rmar (c)omo, amb(o)s o ca(n)celar? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "¿co(d)ificar, f(i)rmar (c)omo, amb(o)s, (t)radicional incluido, o ca(n)celar? "
++
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "dicon"
++msgid "esabtf"
++msgstr "dicotn"
+
+--- pgp-menu-traditional/po/et.po Dec 2002 10:37:22 -0000 3.8
++++ pgp-menu-traditional/po/et.po Feb 2003 11:27:27 -0000
+@@ -559,7 +559,7 @@ msgstr "Krüpti kasutades: "
+ msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (k)rüpti, (a)llkiri, allk. ku(i), (m)õlemad või (u)nusta? "
++msgstr "PGP (k)rüpti, (a)llkiri, allk. ku(i), (m)õlemad, (t)raditional kehasse, või (u)nusta? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "kaimu"
++msgid "esabtf"
++msgstr "kaimtu"
+
+--- pgp-menu-traditional/po/fr.po Dec 2002 10:37:22 -0000 3.13
++++ pgp-menu-traditional/po/fr.po Feb 2003 11:27:28 -0000
+@@ -585,8 +585,8 @@ msgstr "Chiffrer avec : "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "(c)hiffrer PGP, (s)igner, (e)n tant que, les (d)eux, ou (o)ublier ? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "(c)hiffrer PGP, (s)igner, (e)n tant que, les (d)eux, (t)raditionnel en ligne, ou (o)ublier ? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "csedo"
++msgid "esabtf"
++msgstr "csedto"
+
+--- pgp-menu-traditional/po/gl.po Dec 2002 10:37:22 -0000 3.6
++++ pgp-menu-traditional/po/gl.po Feb 2003 11:27:30 -0000
+@@ -568,8 +568,8 @@ msgstr "Encriptar"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "¿(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas ou (o)lvidar? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "¿(e)ncriptar, (f)irmar, firmar (c)omo, (a)mbas, (t)raditional interior, ou (o)lvidar? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "efcao"
++msgid "esabtf"
++msgstr "efcato"
+
+--- pgp-menu-traditional/po/hu.po Dec 2002 10:37:23 -0000 3.6
++++ pgp-menu-traditional/po/hu.po Feb 2003 11:27:31 -0000
+@@ -569,8 +569,8 @@ msgstr "Titkosít"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "(t)itkosít, (a)láír, aláír (m)int, titkosít é(s) aláír, mé(g)se? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "(t)itkosít, (a)láír, aláír (m)int, titkosít é(s) aláír, traditional (b)eágyazott, mé(g)se? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "tamsg"
++msgid "esabtf"
++msgstr "tamsbg"
+
+--- pgp-menu-traditional/po/id.po Dec 2002 10:37:23 -0000 3.7
++++ pgp-menu-traditional/po/id.po Feb 2003 11:27:33 -0000
+@@ -562,8 +562,8 @@ msgstr "Enkrip dengan: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, (b)atal? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (e)nkrip, (t)andatangan, tandatangan (s)bg, ke(d)uanya, traditional (i)nline, (b)atal? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "etsdb"
++msgid "esabtf"
++msgstr "etsdib"
+
+--- pgp-menu-traditional/po/it.po Dec 2002 10:37:23 -0000 3.6
++++ pgp-menu-traditional/po/it.po Feb 2003 11:27:34 -0000
+@@ -570,8 +570,8 @@ msgstr "Crittografa"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "cifra(e), firma(s), firma come(a), entrambi(b), annulla(f) "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "cifra(e), firma(s), firma come(a), entrambi(b), (t)radizionale in linea , annulla(f) "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "esabf"
++msgid "esabtf"
++msgstr "esabtf"
+
+--- pgp-menu-traditional/po/ja.po Dec 2002 10:37:23 -0000 3.13
++++ pgp-menu-traditional/po/ja.po Feb 2003 11:27:35 -0000
+@@ -558,8 +558,9 @@ msgstr " °Å¹æ²½Êý¼°: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (e)°Å¹æ²½,(s)½ð̾,(a)..¤È¤·¤Æ½ð̾,(b)ξ¼Ô,(f)²ò½ü?"
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (e)°Å¹æ²½,(s)½ð̾,(a)..¤È¤·¤Æ½ð̾,(b)ξ¼Ô,(i)nline,(f)²ò½ü?"
++
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr ""
++msgid "esabtf"
++msgstr "esabif"
+
+--- pgp-menu-traditional/po/ko.po Dec 2002 10:37:23 -0000 3.9
++++ pgp-menu-traditional/po/ko.po Feb 2003 11:27:36 -0000
+@@ -560,8 +560,8 @@ msgstr "¾Ïȣȭ ¹æ½Ä: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP ¾Ïȣȭ(e), ¼­¸í(s), »ç¿ë ¼­¸í(a), µÑ ´Ù(b), Ãë¼Ò(f)? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP ¾Ïȣȭ(e), ¼­¸í(s), »ç¿ë ¼­¸í(a), µÑ ´Ù(b), (i)nline, Ãë¼Ò(f)? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "esabf"
++msgid "esabtf"
++msgstr "esabif"
+
+--- pgp-menu-traditional/po/lt.po Dec 2002 10:37:23 -0000 3.6
++++ pgp-menu-traditional/po/lt.po Feb 2003 11:27:38 -0000
+@@ -566,5 +566,5 @@ msgstr "Uþðifruoti"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
+ msgstr ""
+-"(u)þðifruot, pa(s)iraðyt, pasiraðyt k(a)ip, a(b)u, rinktis (m)ic algoritmà, "
++"(u)þðifruot, pa(s)iraðyt, pasiraðyt k(a)ip, a(b)u, traditional (l)aiðke, "
+ "ar (p)amirðti?"
+@@ -573,4 +573,4 @@ msgstr ""
+ #, fuzzy
+-msgid "esabf"
+-msgstr "usabmp"
++msgid "esabtf"
++msgstr "usablp"
+
+@@ -586,4 +586,3 @@ msgid ""
+ msgstr ""
+-"(u)þðifruot, pa(s)iraðyt, pasiraðyt k(a)ip, a(b)u, rinktis (m)ic algoritmà, "
+-"ar (p)amirðti?"
++"(u)þðifruot, pa(s)iraðyt, uþðifruo(t) su, pasiraðyt k(a)ip, a(b)u, ar (p)amirðti?"
+
+@@ -592,3 +591,3 @@ msgstr ""
+ msgid "eswabf"
+-msgstr "usabmp"
++msgstr "ustabp"
+
+--- pgp-menu-traditional/po/nl.po Dec 2002 10:37:23 -0000 3.7
++++ pgp-menu-traditional/po/nl.po Feb 2003 11:27:39 -0000
+@@ -553,8 +553,8 @@ msgstr "Versleutelen met: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (v)ersleutel, (o)ndertekenen, ondert. (a)ls, (b)eide, (g)een? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (v)ersleutel, (o)ndertekenen, ondert. (a)ls, (b)eide, (t)raditioneel bericht, (g)een? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "voabg"
++msgid "esabtf"
++msgstr "voabtg"
+
+--- pgp-menu-traditional/po/pl.po Dec 2002 10:37:23 -0000 3.8
++++ pgp-menu-traditional/po/pl.po Feb 2003 11:27:40 -0000
+@@ -560,8 +560,8 @@ msgstr "Zaszyfruj u¿ywaj±c: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, b(e)z PGP? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (z)aszyfruj, podpi(s)z, podpisz j(a)ko, o(b)a, (t)raditional inline, b(e)z PGP? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "zsabe"
++msgid "esabtf"
++msgstr "zsabte"
+
+--- pgp-menu-traditional/po/pt_BR.po Dec 2002 10:37:23 -0000 3.7
++++ pgp-menu-traditional/po/pt_BR.po Feb 2003 11:27:41 -0000
+@@ -569,5 +569,5 @@ msgstr "Encriptar"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
+ msgstr ""
+-"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, escolhe (m)ic, ou es(q)uece? "
++"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, (t)raditional em (l)inha, ou es(q)uece? "
+
+@@ -575,4 +575,4 @@ msgstr ""
+ #, fuzzy
+-msgid "esabf"
+-msgstr "escamq"
++msgid "esabtf"
++msgstr "escalq"
+
+@@ -588,3 +588,3 @@ msgid ""
+ msgstr ""
+-"(e)ncripa, a(s)sina, assina (c)omo, (a)mbos, escolhe (m)ic, ou es(q)uece? "
++"(e)ncripa, a(s)sina, e(n)cripa com, assina (c)omo, (a)mbos, ou es(q)uece? "
+
+@@ -593,3 +593,3 @@ msgstr ""
+ msgid "eswabf"
+-msgstr "escamq"
++msgstr "esncaq"
+
+--- pgp-menu-traditional/po/ru.po Dec 2002 10:37:24 -0000 3.10
++++ pgp-menu-traditional/po/ru.po Feb 2003 11:27:43 -0000
+@@ -567,8 +567,8 @@ msgstr "úÁÛÉÆÒÏ×ÁÔØ: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP (e)ÛÉÆÒ, (s)ÐÏÄÐÉÓØ, (a)ÐÏÄÐÉÓØ ËÁË, (b)ÏÂÁ, (f)ÏÔËÁÚÁÔØÓÑ? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP (e)ÛÉÆÒ, (s)ÐÏÄÐÉÓØ, (a)ÐÏÄÐÉÓØ ËÁË, (b)ÏÂÁ, traditional (i)nline, (f)ÏÔËÁÚÁÔØÓÑ? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "esabf"
++msgid "esabtf"
++msgstr "esabif"
+
+--- pgp-menu-traditional/po/sk.po Dec 2002 10:37:24 -0000 3.6
++++ pgp-menu-traditional/po/sk.po Feb 2003 11:27:44 -0000
+@@ -574,5 +574,5 @@ msgstr "Za¹ifruj"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
+ msgstr ""
+-"(e)-¹ifr, (s)-podp, podp (a)ko, o(b)e, oznaè alg. mi(c), alebo (f)-zabudnú» "
++"(e)-¹ifr, (s)-podp, podp (a)ko, o(b)e, (t)raditional inline, alebo (f)-zabudnú» "
+ "na to? "
+@@ -581,4 +581,4 @@ msgstr ""
+ #, fuzzy
+-msgid "esabf"
+-msgstr "esabmf"
++msgid "esabtf"
++msgstr "esabtf"
+
+@@ -594,4 +594,3 @@ msgid ""
+ msgstr ""
+-"(e)-¹ifr, (s)-podp, podp (a)ko, o(b)e, oznaè alg. mi(c), alebo (f)-zabudnú» "
+-"na to? "
++"(e)-¹ifr, (s)-podp, (w)-¹ifr s, podp (a)ko, o(b)e, alebo (f)-zabudnú» na to? "
+
+@@ -600,3 +599,3 @@ msgstr ""
+ msgid "eswabf"
+-msgstr "esabmf"
++msgstr "eswabf"
+
+--- pgp-menu-traditional/po/sv.po Dec 2002 10:37:24 -0000 3.7
++++ pgp-menu-traditional/po/sv.po Feb 2003 11:27:45 -0000
+@@ -555,8 +555,8 @@ msgstr "Kryptera med: "
+ #: compose.c:175
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "PGP: (k)ryptera, (s)ignera, signera s(o)m, (b)åda, eller sk(i)ppa det?"
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "PGP: (k)ryptera, (s)ignera, signera s(o)m, (b)åda, (t)raditional infogat, eller sk(i)ppa det?"
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "ksobi"
++msgid "esabtf"
++msgstr "ksobti"
+
+--- pgp-menu-traditional/po/tr.po Dec 2002 10:37:24 -0000 3.6
++++ pgp-menu-traditional/po/tr.po Feb 2003 11:27:47 -0000
+@@ -565,5 +565,5 @@ msgstr "Þifrele"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
+ msgstr ""
+-"þ(i)frele, i(m)zala, (f)arklý imzala, i(k)isi de, mi(c) algoritmini seç "
++"þ(i)frele, i(m)zala, (f)arklý imzala, i(k)isi de, (t)raditional inline, "
+ "yoksa i(p)talmý? "
+@@ -571,4 +571,4 @@ msgstr ""
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "imfkcp"
++msgid "esabtf"
++msgstr "imfktp"
+
+--- pgp-menu-traditional/po/uk.po Dec 2002 10:37:24 -0000 3.7
++++ pgp-menu-traditional/po/uk.po Feb 2003 11:27:48 -0000
+@@ -560,8 +560,8 @@ msgstr "ûÉÆÒÕ×ÁÎÎÑ"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
+-msgstr "ÛÉÆÒ.(e), ЦÄÐ.(s), ЦÄÐ. ÑË(a), ÕÓÅ(b) ÞÉ ×¦ÄͦÎÁ(f)? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
++msgstr "ÛÉÆÒ.(e), ЦÄÐ.(s), ЦÄÐ. ÑË(a), ÕÓÅ(b), traditional (i)nline ÞÉ ×¦ÄͦÎÁ(f)? "
+
+ #: compose.c:176
+-msgid "esabf"
+-msgstr ""
++msgid "esabtf"
++msgstr "esabif"
+
+--- pgp-menu-traditional/po/zh_CN.po Dec 2002 10:37:24 -0000 3.6
++++ pgp-menu-traditional/po/zh_CN.po Feb 2003 11:27:50 -0000
+@@ -573,5 +573,5 @@ msgstr "¼ÓÃÜ"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
+ msgstr ""
+-"(e)¼ÓÃÜ, (s)Ç©Ãû, (a)ÓñðµÄÉí·ÝÇ©, (b)Á½Õß½ÔÒª, Ñ¡Ôñ (m)ic ÑÝËã·¨ »ò (f)·Å"
++"(e)¼ÓÃÜ, (s)Ç©Ãû, (a)ÓñðµÄÉí·ÝÇ©, (b)Á½Õß½ÔÒª, (t)raditional inline, »ò (f)·Å"
+ "Æú£¿"
+@@ -579,3 +579,3 @@ msgstr ""
+ #: compose.c:176
+-msgid "esabf"
++msgid "esabtf"
+ msgstr ""
+--- pgp-menu-traditional/po/zh_TW.po Dec 2002 10:37:24 -0000 3.6
++++ pgp-menu-traditional/po/zh_TW.po Feb 2003 11:27:51 -0000
+@@ -565,3 +565,3 @@ msgstr "加密"
+ #, fuzzy
+-msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it? "
++msgid "PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (t)raditional inline, or (f)orget it? "
+ msgstr "(1)加密, (2)ç°½å, (3)用別的身份簽, (4)兩者皆è¦, 或 (5)放棄?"
+@@ -569,4 +569,4 @@ msgstr "(1)加密, (2)ç°½å, (3)用別ç
+ #: compose.c:176
+-msgid "esabf"
+-msgstr "12345"
++msgid "esabtf"
++msgstr "1234t5"
+
diff --git a/patch_cmds/diffstat/testing/case22.ref b/patch_cmds/diffstat/testing/case22.ref
new file mode 100644
index 0000000..0cb180f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22R.ref b/patch_cmds/diffstat/testing/case22R.ref
new file mode 100644
index 0000000..b9c699b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22R.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 -
+ compose.c | 17 ++++-------------
+ crypt.c | 26 +++++++++++++++-----------
+ init.h | 54 +++++++-----------------------------------------------
+ mutt.h | 4 +---
+ pgp.c | 5 +----
+ pgplib.h | 1 -
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 ++++-----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 ++++-----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 +++++++------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 +++++++------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 -------
+ send.c | 16 +---------------
+ sendlib.c | 2 --
+ 36 files changed, 139 insertions(+), 214 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22Rp0.ref b/patch_cmds/diffstat/testing/case22Rp0.ref
new file mode 100644
index 0000000..fa59c21
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22Rp0.ref
@@ -0,0 +1,37 @@
+ pgp-menu-traditional/PATCHES | 1
+ pgp-menu-traditional/compose.c | 17 ++----------
+ pgp-menu-traditional/crypt.c | 26 ++++++++++--------
+ pgp-menu-traditional/init.h | 54 +++++----------------------------------
+ pgp-menu-traditional/mutt.h | 4 --
+ pgp-menu-traditional/pgp.c | 5 ---
+ pgp-menu-traditional/pgplib.h | 1
+ pgp-menu-traditional/po/ca.po | 10 +++----
+ pgp-menu-traditional/po/cs.po | 8 ++---
+ pgp-menu-traditional/po/da.po | 8 ++---
+ pgp-menu-traditional/po/de.po | 8 ++---
+ pgp-menu-traditional/po/el.po | 8 ++---
+ pgp-menu-traditional/po/eo.po | 8 ++---
+ pgp-menu-traditional/po/es.po | 9 ++----
+ pgp-menu-traditional/po/et.po | 6 ++--
+ pgp-menu-traditional/po/fr.po | 8 ++---
+ pgp-menu-traditional/po/gl.po | 8 ++---
+ pgp-menu-traditional/po/hu.po | 8 ++---
+ pgp-menu-traditional/po/id.po | 8 ++---
+ pgp-menu-traditional/po/it.po | 8 ++---
+ pgp-menu-traditional/po/ja.po | 9 ++----
+ pgp-menu-traditional/po/ko.po | 8 ++---
+ pgp-menu-traditional/po/lt.po | 13 +++++----
+ pgp-menu-traditional/po/nl.po | 8 ++---
+ pgp-menu-traditional/po/pl.po | 8 ++---
+ pgp-menu-traditional/po/pt_BR.po | 12 ++++----
+ pgp-menu-traditional/po/ru.po | 8 ++---
+ pgp-menu-traditional/po/sk.po | 13 +++++----
+ pgp-menu-traditional/po/sv.po | 8 ++---
+ pgp-menu-traditional/po/tr.po | 8 ++---
+ pgp-menu-traditional/po/uk.po | 8 ++---
+ pgp-menu-traditional/po/zh_CN.po | 6 ++--
+ pgp-menu-traditional/po/zh_TW.po | 6 ++--
+ pgp-menu-traditional/postpone.c | 7 -----
+ pgp-menu-traditional/send.c | 16 -----------
+ pgp-menu-traditional/sendlib.c | 2 -
+ 36 files changed, 139 insertions(+), 214 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22b.ref b/patch_cmds/diffstat/testing/case22b.ref
new file mode 100644
index 0000000..0cb180f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22b.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22f0.ref b/patch_cmds/diffstat/testing/case22f0.ref
new file mode 100644
index 0000000..cb44a93
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22f0.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 1 + 0 - 0 !
+ compose.c | 17 13 + 4 - 0 !
+ crypt.c | 26 11 + 15 - 0 !
+ init.h | 54 47 + 7 - 0 !
+ mutt.h | 4 3 + 1 - 0 !
+ pgp.c | 5 4 + 1 - 0 !
+ pgplib.h | 1 1 + 0 - 0 !
+ po/ca.po | 10 5 + 5 - 0 !
+ po/cs.po | 8 4 + 4 - 0 !
+ po/da.po | 8 4 + 4 - 0 !
+ po/de.po | 8 4 + 4 - 0 !
+ po/el.po | 8 4 + 4 - 0 !
+ po/eo.po | 8 4 + 4 - 0 !
+ po/es.po | 9 5 + 4 - 0 !
+ po/et.po | 6 3 + 3 - 0 !
+ po/fr.po | 8 4 + 4 - 0 !
+ po/gl.po | 8 4 + 4 - 0 !
+ po/hu.po | 8 4 + 4 - 0 !
+ po/id.po | 8 4 + 4 - 0 !
+ po/it.po | 8 4 + 4 - 0 !
+ po/ja.po | 9 5 + 4 - 0 !
+ po/ko.po | 8 4 + 4 - 0 !
+ po/lt.po | 13 6 + 7 - 0 !
+ po/nl.po | 8 4 + 4 - 0 !
+ po/pl.po | 8 4 + 4 - 0 !
+ po/pt_BR.po | 12 6 + 6 - 0 !
+ po/ru.po | 8 4 + 4 - 0 !
+ po/sk.po | 13 6 + 7 - 0 !
+ po/sv.po | 8 4 + 4 - 0 !
+ po/tr.po | 8 4 + 4 - 0 !
+ po/uk.po | 8 4 + 4 - 0 !
+ po/zh_CN.po | 6 3 + 3 - 0 !
+ po/zh_TW.po | 6 3 + 3 - 0 !
+ postpone.c | 7 7 + 0 - 0 !
+ send.c | 16 15 + 1 - 0 !
+ sendlib.c | 2 2 + 0 - 0 !
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22k.ref b/patch_cmds/diffstat/testing/case22k.ref
new file mode 100644
index 0000000..0cb180f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22k.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22p1.ref b/patch_cmds/diffstat/testing/case22p1.ref
new file mode 100644
index 0000000..0cb180f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22p1.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22p9.ref b/patch_cmds/diffstat/testing/case22p9.ref
new file mode 100644
index 0000000..2f2e7a2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22p9.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ ca.po | 10 +++++-----
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ cs.po | 8 ++++----
+ da.po | 8 ++++----
+ de.po | 8 ++++----
+ el.po | 8 ++++----
+ eo.po | 8 ++++----
+ es.po | 9 +++++----
+ et.po | 6 +++---
+ fr.po | 8 ++++----
+ gl.po | 8 ++++----
+ hu.po | 8 ++++----
+ id.po | 8 ++++----
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ it.po | 8 ++++----
+ ja.po | 9 +++++----
+ ko.po | 8 ++++----
+ lt.po | 13 ++++++-------
+ mutt.h | 4 +++-
+ nl.po | 8 ++++----
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ pl.po | 8 ++++----
+ postpone.c | 7 +++++++
+ pt_BR.po | 12 ++++++------
+ ru.po | 8 ++++----
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ sk.po | 13 ++++++-------
+ sv.po | 8 ++++----
+ tr.po | 8 ++++----
+ uk.po | 8 ++++----
+ zh_CN.po | 6 +++---
+ zh_TW.po | 6 +++---
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22r1.ref b/patch_cmds/diffstat/testing/case22r1.ref
new file mode 100644
index 0000000..0cb180f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22r1.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22r2.ref b/patch_cmds/diffstat/testing/case22r2.ref
new file mode 100644
index 0000000..0cb180f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22r2.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case22u.ref b/patch_cmds/diffstat/testing/case22u.ref
new file mode 100644
index 0000000..328b2f4
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case22u.ref
@@ -0,0 +1,37 @@
+ PATCHES | 1 +
+ compose.c | 17 +++++++++++++----
+ crypt.c | 26 +++++++++++---------------
+ init.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
+ mutt.h | 4 +++-
+ pgp.c | 5 ++++-
+ pgplib.h | 1 +
+ postpone.c | 7 +++++++
+ send.c | 16 +++++++++++++++-
+ sendlib.c | 2 ++
+ po/ca.po | 10 +++++-----
+ po/cs.po | 8 ++++----
+ po/da.po | 8 ++++----
+ po/de.po | 8 ++++----
+ po/el.po | 8 ++++----
+ po/eo.po | 8 ++++----
+ po/es.po | 9 +++++----
+ po/et.po | 6 +++---
+ po/fr.po | 8 ++++----
+ po/gl.po | 8 ++++----
+ po/hu.po | 8 ++++----
+ po/id.po | 8 ++++----
+ po/it.po | 8 ++++----
+ po/ja.po | 9 +++++----
+ po/ko.po | 8 ++++----
+ po/lt.po | 13 ++++++-------
+ po/nl.po | 8 ++++----
+ po/pl.po | 8 ++++----
+ po/pt_BR.po | 12 ++++++------
+ po/ru.po | 8 ++++----
+ po/sk.po | 13 ++++++-------
+ po/sv.po | 8 ++++----
+ po/tr.po | 8 ++++----
+ po/uk.po | 8 ++++----
+ po/zh_CN.po | 6 +++---
+ po/zh_TW.po | 6 +++---
+ 36 files changed, 214 insertions(+), 139 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23.pat b/patch_cmds/diffstat/testing/case23.pat
new file mode 100644
index 0000000..47d9bcc
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23.pat
@@ -0,0 +1,227 @@
+diff -ur bfm-0.6.1.orig/README bfm-0.6.1/README
+--- bfm-0.6.1.orig/README 2003-10-11 03:29:08.000000000 -0500
++++ bfm-0.6.1/README 2003-11-01 20:59:22.000000000 -0600
+@@ -7,7 +7,6 @@
+
+
+ TODO
+-- Any way to fix the update speed? Gkrellm maximum update is 10 per second.
+ - Someone tests/does the FreeBSD and SunOS platform?
+ - Possible/Make more sense, to make a gkrellm swallow plugin?
+ (Quick search on google:
+diff -ur bfm-0.6.1.orig/gkrellm-bfm.c bfm-0.6.1/gkrellm-bfm.c
+--- bfm-0.6.1.orig/gkrellm-bfm.c 2003-11-01 10:44:15.000000000 -0600
++++ bfm-0.6.1/gkrellm-bfm.c 2003-11-01 20:58:57.000000000 -0600
+@@ -68,6 +68,8 @@
+ static Chart *chart = NULL;
+ static ChartConfig *chart_config = NULL;
+
++static gint timeout_id,
++ update_interval;
+
+
+ /* From the actual bfm */
+@@ -92,13 +94,13 @@
+ GtkWidget *clock_check = NULL;
+ GtkWidget *fish_traffic_check = NULL;
+
+-static void
++static gboolean
+ update_plugin(void)
+ {
+ GdkEventExpose event;
+ gint ret_val;
+ gtk_signal_emit_by_name(GTK_OBJECT(chart->drawing_area), "expose_event", &event, &ret_val);
+-
++ return TRUE; /* restart timer */
+ }
+
+
+@@ -154,6 +156,15 @@
+ return TRUE;
+ }
+
++
++static void
++disable_plugin(void)
++ {
++ if (timeout_id)
++ gtk_timeout_remove(timeout_id);
++ timeout_id = 0;
++ }
++
+ static void
+ create_plugin(GtkWidget *vbox, gint first_create)
+ {
+@@ -182,7 +193,10 @@
+ "leave_notify_event", GTK_SIGNAL_FUNC(leave_notify_event),
+ NULL);
+ }
+-
++ if (!timeout_id)
++ timeout_id = gtk_timeout_add(1000 / update_interval,
++ (GtkFunction) update_plugin, NULL);
++ gkrellm_disable_plugin_connect(mon, disable_plugin);
+ }
+
+
+@@ -240,6 +254,44 @@
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fish_traffic_check), fish_traffic);
+ }
+
++
++static void
++cb_interval_modified(GtkWidget *widget, GtkSpinButton *spin)
++ {
++ update_interval = gtk_spin_button_get_value_as_int(spin);
++ if (timeout_id)
++ gtk_timeout_remove(timeout_id);
++ timeout_id = gtk_timeout_add(1000 / update_interval,
++ (GtkFunction) update_plugin, NULL);
++ }
++
++static gchar *pending_prog;
++
++static void
++cb_prog_entry(GtkWidget *widget, gpointer data)
++{
++ gboolean activate_sig = GPOINTER_TO_INT(data);
++ gchar *s = gkrellm_gtk_entry_get_text(&prog_entry);
++
++ if (activate_sig)
++ {
++ gkrellm_dup_string(&prog, s);
++ g_free(pending_prog);
++ pending_prog = NULL;
++ }
++ else /* "changed" sig, entry is pending on "activate" or config close */
++ gkrellm_dup_string(&pending_prog, s);
++}
++
++static void
++config_destroyed(void)
++ {
++ if (pending_prog)
++ gkrellm_dup_string(&prog, pending_prog);
++ g_free(pending_prog);
++ pending_prog = NULL;
++ }
++
+ static void
+ create_plugin_tab(GtkWidget *tab_vbox)
+ {
+@@ -287,10 +339,7 @@
+ " fish swiming from right to left represents incoming traffic)\n",
+ "- Cute little duck swimming...\n",
+ "- Clock hands representing time (obviously)...\n",
+- "- Click and it will run a command for you (requested by Nick =)\n\n",
+- "<i>Notes\n\n",
+- "- Currently Gkrellm updates at most 10 times a second, and so\n",
+- " BFM updates is a bit jerky still.\n",
++ "- Click and it will run a command for you (requested by Nick =)\n",
+ "\n\n",
+ };
+
+@@ -307,6 +356,8 @@
+ tabs = gtk_notebook_new();
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tabs), GTK_POS_TOP);
+ gtk_box_pack_start(GTK_BOX(tab_vbox), tabs, TRUE, TRUE, 0);
++ g_signal_connect(G_OBJECT(tabs),"destroy",
++ G_CALLBACK(config_destroyed), NULL);
+
+ /* Options tab */
+ options_tab = gkrellm_create_tab(tabs, _("Options"));
+@@ -346,6 +397,10 @@
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_widget_show (prog_entry);
+ gtk_box_pack_start (GTK_BOX (prog_box), prog_entry, TRUE, TRUE, 0);
++ g_signal_connect(G_OBJECT(prog_entry), "activate",
++ G_CALLBACK(cb_prog_entry), GINT_TO_POINTER(1));
++ g_signal_connect(G_OBJECT(prog_entry), "changed",
++ G_CALLBACK(cb_prog_entry), GINT_TO_POINTER(0));
+
+ row1 = gtk_hbox_new (FALSE, 0);
+ gtk_widget_set_name (row1, "row1");
+@@ -470,6 +525,11 @@
+ gtk_widget_show (fish_traffic_check);
+ gtk_box_pack_start (GTK_BOX (fish_traffic_box), fish_traffic_check, TRUE, TRUE, 0);
+
++ gkrellm_gtk_spin_button(main_box, NULL, update_interval,
++ 10.0, 50.0, 1.0, 5.0, 0, 60,
++ cb_interval_modified, NULL, FALSE,
++ _("Updates per second"));
++
+ setup_toggle_buttons();
+
+ gtk_signal_connect(GTK_OBJECT(cpu_check), "toggled", GTK_SIGNAL_FUNC(option_toggled_cb), NULL);
+@@ -494,15 +554,6 @@
+
+ }
+
+-static void
+-apply_plugin_config(void)
+-{
+- if(prog)
+- {
+- g_free(prog);
+- }
+- prog = g_strdup(gtk_editable_get_chars(GTK_EDITABLE(prog_entry), 0, -1));
+-}
+
+ static void
+ save_plugin_config(FILE *f)
+@@ -511,13 +562,15 @@
+ {
+ fprintf(f, "%s prog %s\n", PLUGIN_KEYWORD, prog);
+ }
+- fprintf(f, "%s options %d.%d.%d.%d.%d.%d\n", PLUGIN_KEYWORD,
++ fprintf(f, "%s options %d.%d.%d.%d.%d.%d.%d\n", PLUGIN_KEYWORD,
+ cpu_enabled,
+ duck_enabled,
+ memscreen_enabled,
+ fish_enabled,
+ fish_traffic,
+- time_enabled);
++ time_enabled,
++ update_interval);
++
+ }
+
+ static void
+@@ -539,13 +592,14 @@
+ }
+ else if(!strcmp(config_item, "options"))
+ {
+- sscanf(value, "%d.%d.%d.%d.%d.%d",
++ sscanf(value, "%d.%d.%d.%d.%d.%d.%d",
+ &cpu_enabled,
+ &duck_enabled,
+ &memscreen_enabled,
+ &fish_enabled,
+ &fish_traffic,
+- &time_enabled);
++ &time_enabled,
++ &update_interval);
+ }
+
+ }
+@@ -556,9 +610,9 @@
+ PLUGIN_NAME, /* Name, for config tab. */
+ 0, /* Id, 0 if a plugin */
+ create_plugin, /* The create_plugin() function */
+- update_plugin, /* The update_plugin() function */
++ NULL, /* The update_plugin() function */
+ create_plugin_tab, /* The create_plugin_tab() config function */
+- apply_plugin_config, /* The apply_plugin_config() function */
++ NULL, /* The apply_plugin_config() function */
+
+ save_plugin_config, /* The save_plugin_config() function */
+ load_plugin_config, /* The load_plugin_config() function */
+@@ -577,6 +631,7 @@
+ Monitor *
+ init_plugin(void)
+ {
++ update_interval = 20;
+ style_id = gkrellm_add_meter_style(&bfm_mon, PLUGIN_STYLE);
+ return (mon = &bfm_mon);
+ }
diff --git a/patch_cmds/diffstat/testing/case23.ref b/patch_cmds/diffstat/testing/case23.ref
new file mode 100644
index 0000000..7a6ac84
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23R.ref b/patch_cmds/diffstat/testing/case23R.ref
new file mode 100644
index 0000000..5ca71ed
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23R.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 ++++++++++++----------------------------------------------
+ 2 files changed, 23 insertions(+), 77 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23Rp0.ref b/patch_cmds/diffstat/testing/case23Rp0.ref
new file mode 100644
index 0000000..e5c3893
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23Rp0.ref
@@ -0,0 +1,3 @@
+ bfm-0.6.1.orig/README | 1
+ bfm-0.6.1.orig/gkrellm-bfm.c | 99 +++++++++----------------------------------
+ 2 files changed, 23 insertions(+), 77 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23b.ref b/patch_cmds/diffstat/testing/case23b.ref
new file mode 100644
index 0000000..7a6ac84
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23b.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23f0.ref b/patch_cmds/diffstat/testing/case23f0.ref
new file mode 100644
index 0000000..29339c7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23f0.ref
@@ -0,0 +1,3 @@
+ README | 1 0 + 1 - 0 !
+ gkrellm-bfm.c | 99 77 + 22 - 0 !
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23k.ref b/patch_cmds/diffstat/testing/case23k.ref
new file mode 100644
index 0000000..7a6ac84
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23k.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23p1.ref b/patch_cmds/diffstat/testing/case23p1.ref
new file mode 100644
index 0000000..7a6ac84
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23p1.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23p9.ref b/patch_cmds/diffstat/testing/case23p9.ref
new file mode 100644
index 0000000..7a6ac84
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23p9.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23r1.ref b/patch_cmds/diffstat/testing/case23r1.ref
new file mode 100644
index 0000000..2200a09
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23r1.ref
@@ -0,0 +1,3 @@
+ README | 1 -
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23r2.ref b/patch_cmds/diffstat/testing/case23r2.ref
new file mode 100644
index 0000000..2200a09
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23r2.ref
@@ -0,0 +1,3 @@
+ README | 1 -
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case23u.ref b/patch_cmds/diffstat/testing/case23u.ref
new file mode 100644
index 0000000..7a6ac84
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case23u.ref
@@ -0,0 +1,3 @@
+ README | 1
+ gkrellm-bfm.c | 99 +++++++++++++++++++++++++++++++++++++++++++++-------------
+ 2 files changed, 77 insertions(+), 23 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24.pat b/patch_cmds/diffstat/testing/case24.pat
new file mode 100644
index 0000000..dfb7406
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24.pat
@@ -0,0 +1,217 @@
+# ncurses 5.4 - patch 20040821 - T.Dickey
+#
+# ------------------------------------------------------------------------------
+#
+# Ncurses 5.4 is at
+# ftp.gnu.org:/pub/gnu
+#
+# Patches for ncurses 5.4 are in the subdirectory
+# ftp://invisible-island.net/ncurses/5.4
+#
+# ------------------------------------------------------------------------------
+Index: Ada95/gen/gen.c
+--- ncurses-5.4-20040814+/Ada95/gen/gen.c 2003-10-25 15:39:18.000000000 +0000
++++ ncurses-5.4-20040821/Ada95/gen/gen.c 2004-08-21 20:37:13.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
++ * Copyright (c) 1998,2000,2004 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+@@ -32,7 +32,7 @@
+
+ /*
+ Version Control
+- @Revision: 1.36 @
++ @Id: gen.c,v 1.38 2004/08/21 20:37:13 tom Exp @
+ --------------------------------------------------------------------------*/
+ /*
+ This program generates various record structures and constants from the
+@@ -131,7 +131,6 @@
+ printf(" %-*s : Boolean;\n",width,nap[i].name);
+ }
+ printf(" end record;\n");
+- printf(" pragma Pack (%s);\n",name);
+ printf(" pragma Convention (C, %s);\n\n",name);
+
+ printf(" for %s use\n",name);
+Index: Ada95/gen/terminal_interface-curses-mouse.ads.m4
+--- ncurses-5.4-20040814+/Ada95/gen/terminal_interface-curses-mouse.ads.m4 2003-10-25 15:39:18.000000000 +0000
++++ ncurses-5.4-20040821/Ada95/gen/terminal_interface-curses-mouse.ads.m4 2004-08-21 21:37:00.000000000 +0000
+@@ -10,7 +10,7 @@
+ -- S P E C --
+ -- --
+ ------------------------------------------------------------------------------
+--- Copyright (c) 1998 Free Software Foundation, Inc. --
++-- Copyright (c) 1998,2004 Free Software Foundation, Inc. --
+ -- --
+ -- Permission is hereby granted, free of charge, to any person obtaining a --
+ -- copy of this software and associated documentation files (the --
+@@ -38,7 +38,8 @@
+ ------------------------------------------------------------------------------
+ -- Author: Juergen Pfeifer, 1996
+ -- Version Control:
+--- @Revision: 1.22 @
++-- @Revision: 1.25 @
++-- @Date: 2004/08/21 21:37:00 @
+ -- Binding Version 01.00
+ ------------------------------------------------------------------------------
+ include(`Mouse_Base_Defs')
+@@ -169,7 +170,6 @@
+ Bstate : Event_Mask;
+ end record;
+ pragma Convention (C, Mouse_Event);
+- pragma Pack (Mouse_Event);
+
+ include(`Mouse_Event_Rep')
+ Generation_Bit_Order : constant System.Bit_Order := System.M4_BIT_ORDER;
+Index: Ada95/gen/terminal_interface-curses.ads.m4
+--- ncurses-5.4-20040814+/Ada95/gen/terminal_interface-curses.ads.m4 2003-10-25 15:39:18.000000000 +0000
++++ ncurses-5.4-20040821/Ada95/gen/terminal_interface-curses.ads.m4 2004-08-21 21:37:00.000000000 +0000
+@@ -9,7 +9,7 @@
+ -- S P E C --
+ -- --
+ ------------------------------------------------------------------------------
+--- Copyright (c) 1998 Free Software Foundation, Inc. --
++-- Copyright (c) 1998,2004 Free Software Foundation, Inc. --
+ -- --
+ -- Permission is hereby granted, free of charge, to any person obtaining a --
+ -- copy of this software and associated documentation files (the --
+@@ -37,7 +37,8 @@
+ ------------------------------------------------------------------------------
+ -- Author: Juergen Pfeifer, 1996
+ -- Version Control:
+--- @Revision: 1.31 @
++-- @Revision: 1.35 @
++-- @Date: 2004/08/21 21:37:00 @
+ -- Binding Version 01.00
+ ------------------------------------------------------------------------------
+ include(`Base_Defs')
+@@ -59,11 +60,12 @@
+ subtype Column_Count is Column_Position range 1 .. Column_Position'Last;
+ -- Type to count columns. We do not allow null windows, so must be positive
+
+- type Key_Code is new Natural;
++ type Key_Code is new Integer;
+ -- That is anything including real characters, special keys and logical
+ -- request codes.
+
+- subtype Real_Key_Code is Key_Code range 0 .. M4_KEY_MAX;
++ -- FIXME: The "-1" should be Curses_Err
++ subtype Real_Key_Code is Key_Code range -1 .. M4_KEY_MAX;
+ -- This are the codes that potentially represent a real keystroke.
+ -- Not all codes may be possible on a specific terminal. To check the
+ -- availability of a special key, the Has_Key function is provided.
+Index: Ada95/samples/ncurses2-acs_and_scroll.adb
+--- ncurses-5.4-20040814+/Ada95/samples/ncurses2-acs_and_scroll.adb 2000-12-02 22:31:22.000000000 +0000
++++ ncurses-5.4-20040821/Ada95/samples/ncurses2-acs_and_scroll.adb 2004-08-21 21:37:00.000000000 +0000
+@@ -7,7 +7,7 @@
+ -- B O D Y --
+ -- --
+ ------------------------------------------------------------------------------
+--- Copyright (c) 2000 Free Software Foundation, Inc. --
++-- Copyright (c) 2000,2004 Free Software Foundation, Inc. --
+ -- --
+ -- Permission is hereby granted, free of charge, to any person obtaining a --
+ -- copy of this software and associated documentation files (the --
+@@ -35,7 +35,8 @@
+ ------------------------------------------------------------------------------
+ -- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+ -- Version Control
+--- @Revision: 1.1 @
++-- @Revision: 1.6 @
++-- @Date: 2004/08/21 21:37:00 @
+ -- Binding Version 01.00
+ ------------------------------------------------------------------------------
+ -- Windows and scrolling tester.
+@@ -224,8 +225,8 @@
+ );
+
+ buf : Bounded_String;
+- do_keypad : Boolean := HaveKeyPad (curpw);
+- do_scroll : Boolean := HaveScroll (curpw);
++ do_keypad : constant Boolean := HaveKeyPad (curpw);
++ do_scroll : constant Boolean := HaveScroll (curpw);
+
+ pos : Natural;
+
+@@ -331,8 +332,8 @@
+ res : pair;
+ i : Line_Position := 0;
+ j : Column_Position := 0;
+- si : Line_Position := lri - uli + 1;
+- sj : Column_Position := lrj - ulj + 1;
++ si : constant Line_Position := lri - uli + 1;
++ sj : constant Column_Position := lrj - ulj + 1;
+ begin
+ res.y := uli;
+ res.x := ulj;
+@@ -714,7 +715,7 @@
+
+ Allow_Scrolling (Mode => True);
+
+- End_Mouse;
++ End_Mouse (Mask2);
+ Set_Raw_Mode (SwitchOn => True);
+ Erase;
+ End_Windows;
+Index: Ada95/samples/ncurses2-acs_display.adb
+--- ncurses-5.4-20040814+/Ada95/samples/ncurses2-acs_display.adb 2000-12-02 22:31:23.000000000 +0000
++++ ncurses-5.4-20040821/Ada95/samples/ncurses2-acs_display.adb 2004-08-21 21:37:00.000000000 +0000
+@@ -7,7 +7,7 @@
+ -- B O D Y --
+ -- --
+ ------------------------------------------------------------------------------
+--- Copyright (c) 2000 Free Software Foundation, Inc. --
++-- Copyright (c) 2000,2004 Free Software Foundation, Inc. --
+ -- --
+ -- Permission is hereby granted, free of charge, to any person obtaining a --
+ -- copy of this software and associated documentation files (the --
+@@ -35,7 +35,8 @@
+ ------------------------------------------------------------------------------
+ -- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
+ -- Version Control
+--- @Revision: 1.1 @
++-- @Revision: 1.4 @
++-- @Date: 2004/08/21 21:37:00 @
+ -- Binding Version 01.00
+ ------------------------------------------------------------------------------
+ with ncurses2.util; use ncurses2.util;
+@@ -57,8 +58,8 @@
+
+
+ procedure show_upper_chars (first : Integer) is
+- C1 : Boolean := (first = 128);
+- last : Integer := first + 31;
++ C1 : constant Boolean := (first = 128);
++ last : constant Integer := first + 31;
+ package p is new ncurses2.genericPuts (200);
+ use p;
+ use p.BS;
+@@ -91,9 +92,11 @@
+
+ for code in first .. last loop
+ declare
+- row : Line_Position := Line_Position (4 + ((code - first) mod 16));
+- col : Column_Position := Column_Position (((code - first) / 16) *
+- Integer (Columns) / 2);
++ row : constant Line_Position
++ := Line_Position (4 + ((code - first) mod 16));
++ col : constant Column_Position
++ := Column_Position (((code - first) / 16) *
++ Integer (Columns) / 2);
+ tmp3 : String (1 .. 3);
+ tmpx : String (1 .. Integer (Columns / 4));
+ reply : Key_Code;
+@@ -129,8 +132,8 @@
+ code : Attributed_Character)
+ return Integer is
+ height : constant Integer := 16;
+- row : Line_Position := Line_Position (4 + (N mod height));
+- col : Column_Position := Column_Position ((N / height) *
++ row : constant Line_Position := Line_Position (4 + (N mod height));
++ col : constant Column_Position := Column_Position ((N / height) *
+ Integer (Columns) / 2);
+ tmpx : String (1 .. Integer (Columns) / 3);
+ begin
diff --git a/patch_cmds/diffstat/testing/case24.ref b/patch_cmds/diffstat/testing/case24.ref
new file mode 100644
index 0000000..ab81687
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 ++---
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24R.ref b/patch_cmds/diffstat/testing/case24R.ref
new file mode 100644
index 0000000..c9486b7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24R.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 +++--
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++------
+ samples/ncurses2-acs_and_scroll.adb | 15 +++++++--------
+ samples/ncurses2-acs_display.adb | 21 +++++++++------------
+ 5 files changed, 26 insertions(+), 31 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24Rp0.ref b/patch_cmds/diffstat/testing/case24Rp0.ref
new file mode 100644
index 0000000..1315b22
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24Rp0.ref
@@ -0,0 +1,6 @@
+ Ada95/gen/gen.c | 5 +++--
+ Ada95/gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ Ada95/gen/terminal_interface-curses.ads.m4 | 10 ++++------
+ Ada95/samples/ncurses2-acs_and_scroll.adb | 15 +++++++--------
+ Ada95/samples/ncurses2-acs_display.adb | 21 +++++++++------------
+ 5 files changed, 26 insertions(+), 31 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24b.ref b/patch_cmds/diffstat/testing/case24b.ref
new file mode 100644
index 0000000..ab81687
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24b.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 ++---
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24f0.ref b/patch_cmds/diffstat/testing/case24f0.ref
new file mode 100644
index 0000000..9efc375
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24f0.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 2 + 3 - 0 !
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 3 + 3 - 0 !
+ gen/terminal_interface-curses.ads.m4 | 10 6 + 4 - 0 !
+ samples/ncurses2-acs_and_scroll.adb | 15 8 + 7 - 0 !
+ samples/ncurses2-acs_display.adb | 21 12 + 9 - 0 !
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24k.ref b/patch_cmds/diffstat/testing/case24k.ref
new file mode 100644
index 0000000..ab81687
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24k.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 ++---
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24p1.ref b/patch_cmds/diffstat/testing/case24p1.ref
new file mode 100644
index 0000000..8d4d22a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24p1.ref
@@ -0,0 +1,6 @@
+ Ada95/gen/gen.c | 5 ++---
+ Ada95/gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ Ada95/gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ Ada95/samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ Ada95/samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24p9.ref b/patch_cmds/diffstat/testing/case24p9.ref
new file mode 100644
index 0000000..113c4b8
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24p9.ref
@@ -0,0 +1,6 @@
+ gen.c | 5 ++---
+ ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ ncurses2-acs_display.adb | 21 ++++++++++++---------
+ terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ terminal_interface-curses.ads.m4 | 10 ++++++----
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24r1.ref b/patch_cmds/diffstat/testing/case24r1.ref
new file mode 100644
index 0000000..ab81687
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24r1.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 ++---
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24r2.ref b/patch_cmds/diffstat/testing/case24r2.ref
new file mode 100644
index 0000000..ab81687
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24r2.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 ++---
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case24u.ref b/patch_cmds/diffstat/testing/case24u.ref
new file mode 100644
index 0000000..ab81687
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case24u.ref
@@ -0,0 +1,6 @@
+ gen/gen.c | 5 ++---
+ gen/terminal_interface-curses-mouse.ads.m4 | 6 +++---
+ gen/terminal_interface-curses.ads.m4 | 10 ++++++----
+ samples/ncurses2-acs_and_scroll.adb | 15 ++++++++-------
+ samples/ncurses2-acs_display.adb | 21 ++++++++++++---------
+ 5 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25.pat b/patch_cmds/diffstat/testing/case25.pat
new file mode 100644
index 0000000..8edbd31
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25.pat
@@ -0,0 +1,471 @@
+# vile 9.4m - patch 2004/12/15 - Thomas Dickey <dickey@his.com>
+# ------------------------------------------------------------------------------
+# $Header: | 1
+# CHANGES | 58
+# MANIFEST | 3
+# buffer.c | 208 ++-
+# buglist | 7
+# builtflt.c | 68 +
+# cmdtbl | 15
+# configure | 2652 ++++++++++++++++++++---------------------
+# configure.in | 16
+# display.c | 80 -
+# doc/filters.doc | 34
+# doc/macros.doc | 67 -
+# edef.h | 5
+# estruct.h | 13
+# eval.c | 196 ++-
+# filters/as-filt.l | 6
+# filters/asm-filt.l | 8
+# filters/au3-filt.l | 8
+# filters/bat-filt.l | 6
+# filters/c-filt.c | 20
+# filters/filterio.c | 33
+# filters/filters.c | 3
+# filters/filters.h | 7
+# filters/filters.rc | 40
+# filters/htmlfilt.l | 9
+# filters/imakeflt.l | 19
+# filters/key-filt.c | 11
+# filters/m4-filt.c | 3
+# filters/makefilt.l | 19
+# filters/pl-filt.c | 24
+# filters/pot-filt.l | 5
+# filters/ps-filt.l | 5
+# filters/rb-filt.l | 3
+# filters/rpm-filt.l | 16
+# filters/rubyfilt.c | 30
+# filters/sccsfilt.l | 5
+# filters/sed-filt.c | 3
+# filters/sh-filt.l | 16
+# filters/spell.rc | 36
+# filters/spellflt.l | 8
+# filters/sql-filt.l | 9
+# filters/tc-filt.l | 12
+# filters/tcl-filt.l | 4
+# filters/vilefilt.l | 10
+# filters/vl-filt.l | 20
+# filters/xml-filt.l | 50
+# filters/xresfilt.l | 11
+# input.c | 4
+# macros/gnugpg.rc | 8
+# macros/which.rc | 107 +
+# main.c | 5
+# makefile.in | 17
+# makefile.wnt | 3
+# modes.c | 358 +++--
+# modetbl | 22
+# ntconio.c | 51
+# ntwinio.c | 53
+# patchlev.h | 2
+# proto.h | 19
+# revlist | 129 +
+# statevar.c | 8
+# tbuff.c | 14
+# tcap.c | 3
+# vile-9.4.spec | 9
+# vile-9.4m/macros/showeach.rc | 78 +
+# vile.hlp | 16
+# x11.c | 370 ++---
+# 67 files changed, 3017 insertions(+), 2141 deletions(-)
+# ------------------------------------------------------------------------------
+Index: CHANGES
+--- vile-9.4l+/CHANGES 2004-12-08 01:01:53.000000000 +0000
++++ vile-9.4m/CHANGES 2004-12-15 23:56:47.000000000 +0000
+@@ -1,5 +1,63 @@
+ Changes for vile 9.5 (released ??? ??? ?? ????)
+
++ 20041215 (m)
++ > Tom Dickey:
++ + modify x11.c, ntconio.c and ntwinio.c to make modifiers work with tab
++ key, e.g., to add shift-key as a back-tab key.
++ + add macro show-each-buffer (file showeach.rc), which splits up the
++ screen into equal chunks to display as many of the non-scratch
++ buffers as possible.
++ + modify macro parameter evaluation so it does not attempt to compute
++ a value for function tokens or goto-labels. Otherwise pathnames such
++ as "~\foo" look like macro directives and produce an error.
++ + correct slash/backslash translation (win32, etc) for some of the
++ built-in functions; the translated result was not actually the return
++ value: &path and &pcat.
++ + correct flags in modetbl used to annotate trace of &seq and a few
++ other operators.
++ + correct length computed for $bflags variable; an empty string was
++ returned.
++ + add a section on command-line options to doc/filters.doc
++ + add macro which-filter to show which locations would be checked for
++ an external filter. If the filter happens to be built-in, this is
++ also noted, in the message line.
++ + improve 'eval' command, provide for mixture of functions and other
++ tokens which are passed to the script interpreter.
++ + modify SpellFilter macro to use the results from [Filter Messages]
++ with the error-finder to step through the misspellings.
++ + add macro show-filtermsgs to show syntax filter messages, setting the
++ list to the error-buffer to provide simple stepping through the
++ errors which are found.
++ + add commands popup-buffer and popdown-buffer, which open/close
++ windows for the given buffer rather than changing the current window
++ to show a different buffer. The popup-buffer command is a wrapper
++ for the existing logic used for help and similar commands. The
++ popdown-buffer command differs from delete-window by closing all
++ windows for the given buffer.
++ + remove the pre-9.4e workarounds for set-highlighting and
++ which-keywords macros.
++ + modify kdb_reply() to shift the minibuffer left/right as needed after
++ doing the initial tab of a name-completion, in case that left the
++ cursor position past the end of the line (report by Paul Fox).
++ + add new operators to make it simpler for macros to check for
++ features: &isa, &classof and &mclass.
++ + modify historical-buffer to allow tab/back-tab to cycle through the
++ first 9 buffers, solves the problem of seeing more than the first
++ few possibilities on the message line. Toggling with the repeated
++ '_' selects the first buffer shown.
++ + add back-tab to termcap/terminfo driver as a bindable key.
++ + modify configure script to make builtflt.h part of $(BUILTHDRS) to
++ simplify "make sources" rule.
++ + modify htmlfilt.l to match </script> in the middle of a line to
++ accommodate pages where the script is given by a "src=".
++ + add filtermsgs mode, for built-in filters to report syntax errors
++ into [Filter Messages] buffer so that one may use the error finder to
++ locate these (motivated by a 200,000 line xml file).
++ + correct state manipulation in xml-filt.l, which was confused by
++ CDATA pattern.
++ + correct $CPPFLAGS for linting configurations with built-in filters.
++ + correct typo in configure script from 9.4k fixes for iconv_open().
++
+ 20041207 (l)
+ > Clark Morgan:
+ + modify special treatment of "#" which prevents it from being shifted
+Index: MANIFEST
+--- vile-9.4l+/MANIFEST 2004-12-08 01:48:52.000000000 +0000
++++ vile-9.4m/MANIFEST 2004-12-16 00:53:14.000000000 +0000
+@@ -1,4 +1,4 @@
+-MANIFEST for vile, version v9_4l
++MANIFEST for vile, version v9_4m
+ --------------------------------------------------------------------------------
+ MANIFEST this file
+ CHANGES Change-log for VILE
+@@ -332,6 +332,7 @@
+ macros/pictmode.rc macros to support "picture-mode" editing
+ macros/search.rc find a file in one of several locations
+ macros/shifts.rc macros to shift words left/right
++macros/showeach.rc show-each-buffer
+ macros/vile-pager use vile as a pager
+ macros/vileinit.rc sample initialization file
+ macros/vilemenu.rc sample menu for xvile
+Index: cmdtbl
+Prereq: 1.230
+--- vile-9.4l+/cmdtbl 2004-12-07 01:28:55.000000000 +0000
++++ vile-9.4m/cmdtbl 2004-12-14 20:18:42.000000000 +0000
+@@ -97,7 +97,7 @@
+ # in '!' listed, then the flag does nothing, and should be
+ # viewed simply as documentation.
+ #
+-# @Header: /usr/build/vile/vile/RCS/cmdtbl,v 1.230 2004/12/07 01:28:55 tom Exp @
++# @Header: /usr/build/vile/vile/RCS/cmdtbl,v 1.233 2004/12/14 20:18:42 tom Exp @
+ #
+ #
+
+@@ -625,7 +625,7 @@
+ firstbuffer NONE
+ "rewind"
+ "rew!"
+- <go to first buffer in buffer list. (does nothing if \"autobuffer\" set>
++ <go to first buffer in buffer list>
+ firstnonwhite MOTION|MINIBUF
+ "first-nonwhite" !FEWNAMES
+ '^'
+@@ -1686,13 +1686,22 @@
+ edit_buffer NONE
+ "B"
+ "edit-buffer" !FEWNAMES
+- <make or switch to the given buffer; will not look for a file by that name>
++ <make or switch to the given buffer>
++popup_buffer NONE !SMALLER
++ "popup-buffer"
++ "open-window" !FEWNAMES
++ <open window for the given buffer>
++popdown_buffer NONE !SMALLER
++ "popdown-buffer"
++ "close-windows" !FEWNAMES
++ <open all windows for the given buffer>
+ usekreg REDO
+ "use-register" !FEWNAMES
+ '"'
+ <name a register, for use with a following command which references it>
+ userbeep NONE !SMALLER
+ "beep"
++ 'FN-b' KEY_BackTab
+ <force the terminal to ring (or flash, if \"set flash\" is active)>
+ visual NONE
+ "visual"
+Index: configure.in
+Prereq: 1.211
+--- vile-9.4l+/configure.in 2004-12-04 00:42:49.000000000 +0000
++++ vile-9.4m/configure.in 2004-12-10 22:52:59.000000000 +0000
+@@ -1,12 +1,12 @@
+ dnl Process this file with autoconf to produce a configure script.
+-AC_REVISION(@Revision: 1.211 @)
++AC_REVISION(@Revision: 1.214 @)
+ AC_PREREQ(2.13.20030927)
+ rm -f config.cache
+
+ ### Use "configure -with-screen" to override the default configuration, which is
+ ### termcap-based on unix systems.
+
+-dnl @Header: /usr/build/vile/vile/RCS/configure.in,v 1.211 2004/12/04 00:42:49 tom Exp @
++dnl @Header: /usr/build/vile/vile/RCS/configure.in,v 1.214 2004/12/10 22:52:59 tom Exp @
+
+ define(MAKELIST, sh $srcdir/filters/makelist.sh $srcdir/filters/genmake.mak)
+
+@@ -52,6 +52,10 @@
+ CF_LIB_PREFIX
+
+ ### options to control how much we build
++BUILTHDRS="nebind.h neproto.h neexec.h nefunc.h nemode.h nename.h nevars.h nefkeys.h nefsms.h"
++BUILTLIBS=
++BUILTSRCS=
++
+ AC_MSG_CHECKING(if you wish to build only core functions)
+ CF_ARG_DISABLE(extensions,
+ [ --disable-extensions test: build only core functions],
+@@ -287,6 +291,7 @@
+ perl_lib_path=`$PERL -MConfig -e 'print $Config{privlib}'`
+ AC_DEFINE(OPT_PERL)
+ EXTRAOBJS="$EXTRAOBJS perl.o"
++ BUILTSRCS="$BUILTSRCS perl.c"
+ LINK_PREFIX=`$PERL -MConfig -e 'print $Config{shrpenv}'`
+ ac_link="$LINK_PREFIX $ac_link"
+ CF_CHECK_CFLAGS(`$PERL -MExtUtils::Embed -e ccopts`)
+@@ -672,7 +677,7 @@
+ [cf_func_iconv="$withval"],
+ [cf_func_iconv=yes])
+ AC_MSG_RESULT($cf_func_iconv)
+-if test "$cf_func_iconv" == yes ; then
++if test "$cf_func_iconv" = yes ; then
+ AC_DEFINE(OPT_ICONV_FUNCS)
+ test "$cf_cv_func_iconv" != yes && LIBS="$cf_cv_func_iconv $LIBS"
+ fi # test $cf_func_iconv" = yes
+@@ -834,9 +839,10 @@
+
+ if test "$cf_filter_libs" = yes ; then
+ EXTRAOBJS="$EXTRAOBJS builtflt.o"
+- CFLAGS="-I\$(srcdir)/filters $CFLAGS"
++ CPPFLAGS="-I\$(srcdir)/filters $CPPFLAGS"
+ FILTER_LIBS="-Lfilters -lvlflt"
+ LIBBUILTFLT="${LIB_PREFIX}vlflt.a"
++ BUILTHDRS="$BUILTHDRS builtflt.h"
+ BUILTLIBS="$BUILTLIBS filters/$LIBBUILTFLT"
+ AC_DEFINE(OPT_FILTER)
+ else
+@@ -846,7 +852,9 @@
+ fi
+
+ AC_SUBST(EXTRAOBJS)
++AC_SUBST(BUILTHDRS)
+ AC_SUBST(BUILTLIBS)
++AC_SUBST(BUILTSRCS)
+ AC_SUBST(FILTER_LIBS)
+ AC_SUBST(LIBBUILTFLT)
+
+Index: doc/filters.doc
+Prereq: 1.32
+--- vile-9.4l+/doc/filters.doc 2004-11-11 00:47:06.000000000 +0000
++++ vile-9.4m/doc/filters.doc 2004-12-14 00:47:49.000000000 +0000
+@@ -33,7 +33,7 @@
+
+ [ If $VILE_STARTUP_PATH is not defined, the filter checks the
+ "prefix" directory specified when all filters were compiled
+- (default path is /usr/local/share/vile/vile.keyords). ]
++ (default path is /usr/local/share/vile/vile.keywords). ]
+
+ and then here:
+
+@@ -146,6 +146,38 @@
+ language keywords, if any.
+
+
++OPTIONS
++-------
++
++A few options are common to all filters:
++
++ -d is recognized when the filters have been compiled with "DEBUG" defined.
++ This is used in the more complicated filters such as perl and ruby to
++ show the parsing.
++
++ -k FILE
++
++ -q exits the filter before writing the marked-up output. This happens
++ after processing the class definitions, so it is useful in combination
++ with the -v option to simply obtain the class information.
++
++ -t holds the tabstop setting, which can be used in a filter for column
++ computations.
++
++ -v verbose, turns on extra output which can be used for troubleshooting
++ configuration problems.
++
++The C syntax filter recognizes additional options to customize it for Java and
++JavaScript:
++
++ -j Extend name- and literal-syntax to include Java.
++
++ -p Disallow preprocessor lines.
++
++ -s for JavaScript (to support jsmode). This controls whether to allow
++ regular expressions in certain cases.
++
++
+ PROGRAMS
+ --------
+
+@@ -230,4 +262,4 @@
+ The lex filters have been well tested only with flex, which treats newlines
+ differently. Older versions of lex may not support the %x states.
+
+--- @Header: /usr/build/vile/vile/doc/RCS/filters.doc,v 1.32 2004/11/11 00:47:06 tom Exp @
++-- @Header: /usr/build/vile/vile/doc/RCS/filters.doc,v 1.33 2004/12/14 00:47:49 tom Exp @
+Index: doc/macros.doc
+Prereq: 1.93
+--- vile-9.4l+/doc/macros.doc 2004-10-20 22:47:38.000000000 +0000
++++ vile-9.4m/doc/macros.doc 2004-12-12 20:29:24.000000000 +0000
+@@ -774,7 +774,7 @@
+ &mod "N1" "N2" Divide the "N1" by "N2", return remainder.
+ &negate "N" Return -(N).
+ &ascii "S" Return the ASCII code of the first
+- character in "S"
++ character in "S"
+ &random "N"
+ &rnd "N" Random number between 1 and N
+ &abs "N" Absolute value of "N"
+@@ -791,12 +791,12 @@
+ The rest return strings:
+
+ &bind "S" Return the function name bound to the
+- key sequence "S".
++ key sequence "S".
+ &cat "S1" "S2" Concatenate S1 and string "S".
+ &chr "N" Converts numeric "N" to an ASCII character.
+ &cclass "S" Character class (see "show-printable")
+ &env "S" Return the value of the user's environment
+- variable named "S".
++ variable named "S".
+ &gtkey Get a single raw keystroke from the user.
+ &gtsequence Get a complete vile key sequence from user.
+ &left "S" "N" Extract first "N" characters from "S"
+@@ -805,8 +805,8 @@
+ &middle "S" "N1" "N2" Extract "N2" chars at position "N1".
+ &upper "S" Return uppercase version of "S".
+ &trim "S" Remove whitespace at either end of "S",
+- reduce multiple spaces within "S"
+- to just one space each.
++ reduce multiple spaces within "S"
++ to just one space each.
+
+ Boolean/logical functions --
+
+@@ -820,6 +820,9 @@
+ &geq "N1" "N2" Is "N1" numerically not less than "N2"?
+ &greater "N1" "N2" Is "N1" numerically greater than "N2"?
+ &gt "N1" "N2" (same as &greater)
++ &isa "C" "N" Is "N" a member of class "C". Classes
++ include: buffer, color, mode, submode,
++ Majormode.
+ &leq "N1" "N2" Is "N1" numerically not greater than "N2"?
+ &lessthan "N1" "N2" Is "N1" numerically less than "N2"?
+ &lt "N1" "N2" (same as &lessthan)
+@@ -860,19 +863,26 @@
+
+ These all return string values:
+
++ &classof "N" Retrieves the class(es) to which the given
++ name may return. Usually this is a single
++ name, e.g., one of those checked by &isa.
++ If multiple matches are found, the result
++ contains each classname separated by a
++ space.
++
+ &default "MODENAME" Retrieves initial/default value for the
+- given mode or state variable.
++ given mode or state variable.
+
+ &global "MODENAME" Retrieves universal/global mode setting.
+
+- &indirect "S" Evaluate value of "S" as a
+- macro language variable itself.
+- Thus if %foo has value "HOME",
+- then &env &indirect %foo will
+- return the home directory pathname.
++ &indirect "S" Evaluate value of "S" as a macro language
++ variable itself. Thus if %foo has value
++ "HOME", then
++ &env &indirect %foo
++ will return the home directory pathname.
+
+ &local "MODENAME" Retrieves local mode setting (for
+- current buffer).
++ current buffer).
+
+ &lookup "N" "P" The "N" keyword tells which field to use
+ looking for the file "P":
+@@ -890,25 +900,31 @@
+ bin, startup, path, libdir. Note that
+ the directory lists may overlap.
+
++ &mclass "M" Retrieve the class to which the given
++ mode belongs. This is different from
++ &mclass since it distinguishes the modes
++ Return values include: universal buffer
++ window submode Majormode.
++
+ &qpasswd "S" Present "S" to the user and return their
+- response. Each typed character is
+- echoed as '*'. The response is not
+- recallable via the editor's history
+- mechanism.
++ response. Each typed character is
++ echoed as '*'. The response is not
++ recallable via the editor's history
++ mechanism.
+
+ &query "S" Present "S" to the user, and return
+- their typed response.
++ their typed response.
+
+ &date "F" "T" If strftime() is found, format the time "T"
+- using the "F" format. Otherwise, use
+- ctime() to format the time. Times are
+- numbers (see &ftime and &stime).
++ using the "F" format. Otherwise, use
++ ctime() to format the time. Times are
++ numbers (see &ftime and &stime).
+
+ &dquery "S" "D" Present "S" to the user, and return
+- their typed response. If "D" is given,
+- use that as the default response.
+- Otherwise use the previous response
+- as the default.
++ their typed response. If "D" is given,
++ use that as the default response.
++ Otherwise use the previous response
++ as the default.
+
+ &path "N" "P" The "N" keyword tells which field to extract
+ from the pathname "P":
+@@ -1056,7 +1072,6 @@
+ The ~break directive allows early termination of an enclosing
+ while-loop. Extending the above example:
+
+-
+ ; count the occurrences of a pattern in all buffers
+ set nowrapscan
+ set noautobuffer
+@@ -1465,6 +1480,6 @@
+ ========================= end vile.rc =======================
+
+ -----------------------------------
+- @Header: /usr/build/vile/vile/doc/RCS/macros.doc,v 1.93 2004/10/20 22:47:38 tom Exp @
++ @Header: /usr/build/vile/vile/doc/RCS/macros.doc,v 1.94 2004/12/12 20:29:24 tom Exp @
+ -----------------------------------
+
diff --git a/patch_cmds/diffstat/testing/case25.ref b/patch_cmds/diffstat/testing/case25.ref
new file mode 100644
index 0000000..a270cc6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 +-
+ cmdtbl | 15 ++++++++++--
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25R.ref b/patch_cmds/diffstat/testing/case25R.ref
new file mode 100644
index 0000000..c594cda
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25R.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ------------------------------------------------
+ MANIFEST | 3 --
+ cmdtbl | 15 ++----------
+ configure.in | 16 +++----------
+ doc/filters.doc | 36 +-----------------------------
+ doc/macros.doc | 67 +++++++++++++++++++++-----------------------------------
+ 6 files changed, 36 insertions(+), 159 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25Rp0.ref b/patch_cmds/diffstat/testing/case25Rp0.ref
new file mode 100644
index 0000000..c594cda
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25Rp0.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ------------------------------------------------
+ MANIFEST | 3 --
+ cmdtbl | 15 ++----------
+ configure.in | 16 +++----------
+ doc/filters.doc | 36 +-----------------------------
+ doc/macros.doc | 67 +++++++++++++++++++++-----------------------------------
+ 6 files changed, 36 insertions(+), 159 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25b.ref b/patch_cmds/diffstat/testing/case25b.ref
new file mode 100644
index 0000000..a270cc6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25b.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 +-
+ cmdtbl | 15 ++++++++++--
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25f0.ref b/patch_cmds/diffstat/testing/case25f0.ref
new file mode 100644
index 0000000..72c0992
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25f0.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 58 + 0 - 0 !
+ MANIFEST | 3 2 + 1 - 0 !
+ cmdtbl | 15 12 + 3 - 0 !
+ configure.in | 16 12 + 4 - 0 !
+ doc/filters.doc | 36 34 + 2 - 0 !
+ doc/macros.doc | 67 41 + 26 - 0 !
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25k.ref b/patch_cmds/diffstat/testing/case25k.ref
new file mode 100644
index 0000000..a270cc6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25k.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 +-
+ cmdtbl | 15 ++++++++++--
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25p1.ref b/patch_cmds/diffstat/testing/case25p1.ref
new file mode 100644
index 0000000..a270cc6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25p1.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 +-
+ cmdtbl | 15 ++++++++++--
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25p9.ref b/patch_cmds/diffstat/testing/case25p9.ref
new file mode 100644
index 0000000..7a6e072
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25p9.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 +-
+ cmdtbl | 15 ++++++++++---
+ configure.in | 16 ++++++++++----
+ filters.doc | 36 +++++++++++++++++++++++++++++--
+ macros.doc | 67 ++++++++++++++++++++++++++++++++++++-----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25r1.ref b/patch_cmds/diffstat/testing/case25r1.ref
new file mode 100644
index 0000000..c1f392c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25r1.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 ++-
+ cmdtbl | 15 ++++++++++---
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25r2.ref b/patch_cmds/diffstat/testing/case25r2.ref
new file mode 100644
index 0000000..c1f392c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25r2.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 ++-
+ cmdtbl | 15 ++++++++++---
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case25u.ref b/patch_cmds/diffstat/testing/case25u.ref
new file mode 100644
index 0000000..a270cc6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case25u.ref
@@ -0,0 +1,7 @@
+ CHANGES | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
+ MANIFEST | 3 +-
+ cmdtbl | 15 ++++++++++--
+ configure.in | 16 ++++++++++---
+ doc/filters.doc | 36 ++++++++++++++++++++++++++++--
+ doc/macros.doc | 67 ++++++++++++++++++++++++++++++++++----------------------
+ 6 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26.pat b/patch_cmds/diffstat/testing/case26.pat
new file mode 100644
index 0000000..fec3a21
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26.pat
@@ -0,0 +1,1901 @@
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/config.h /tmp/KfNDqvamm0/flwm-1.01/config.h
+--- /tmp/8FTwAYJlot/flwm-1.00/config.h 1999-08-24 22:59:35.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/config.h 2002-03-24 02:02:33.000000000 +0100
+@@ -25,6 +25,12 @@
+ // nothing is done if this is not defined:
+ //#define AUTO_RAISE 0.5
+
++// Perform "smart" autoplacement.
++// New windows are put at positions where they cover as few existing windows
++// as possible. A brute force algorithm is used, so it consumes quite a bit
++// of CPU time.
++#define SMART_PLACEMENT 1
++
+ // set this to zero to remove the multiple-desktop code. This will
+ // make flwm about 20K smaller
+ #define DESKTOPS 1
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/changelog /tmp/KfNDqvamm0/flwm-1.01/debian/changelog
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/changelog 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/changelog 2006-06-30 11:01:41.000000000 +0200
+@@ -1,3 +1,15 @@
++flwm (1.01-1) unstable; urgency=low
++
++ * New upstream release
++ + This release catch the release of the Alt key again. Closes: #246089.
++ + The following patches were applied upstream (Thanks Bill Spitzak).
++ 100_fl_filename_name 101_visible_focus 102_charstruct 103_man_typo
++ 104_g++-4.1_warning 105_double_ampersand 201_background_color
++ + Add 100_double_ampersand to fix atypo in this release.
++ * debian/watch: added.
++
++ -- Bill Allombert <ballombe@debian.org> Fri, 30 Jun 2006 01:17:06 +0200
++
+ flwm (1.00-10) unstable; urgency=low
+
+ * Add patch 104_g++-4.1_warning that fix five warnings.
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/100_double_ampersand.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/100_double_ampersand.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/100_double_ampersand.dpatch 1970-01-01 01:00:00.000000000 +0100
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/100_double_ampersand.dpatch 2006-06-30 11:01:41.000000000 +0200
+@@ -0,0 +1 @@
++patching file Menu.C
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/100_fl_filename_name.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/100_fl_filename_name.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/100_fl_filename_name.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/100_fl_filename_name.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,2 +0,0 @@
+-patching file main.C
+-Hunk #1 succeeded at 351 (offset -1 lines).
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/101_visible_focus.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/101_visible_focus.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/101_visible_focus.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/101_visible_focus.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-patching file main.C
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/102_charstruct.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/102_charstruct.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/102_charstruct.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/102_charstruct.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-patching file Rotated.C
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/103_man_typo.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/103_man_typo.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/103_man_typo.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/103_man_typo.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-patching file flwm.1
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/104_g++-4.1_warning.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/104_g++-4.1_warning.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/104_g++-4.1_warning.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/104_g++-4.1_warning.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,3 +0,0 @@
+-patching file Frame.C
+-patching file Menu.C
+-patching file Rotated.C
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/105_double_ampersand.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/105_double_ampersand.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/105_double_ampersand.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/105_double_ampersand.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1 +0,0 @@
+-patching file Menu.C
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patched/201_background_color.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patched/201_background_color.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patched/201_background_color.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patched/201_background_color.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,2 +0,0 @@
+-patching file Frame.C
+-patching file Menu.C
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/00list /tmp/KfNDqvamm0/flwm-1.01/debian/patches/00list
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/00list 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/00list 2006-06-30 11:01:41.000000000 +0200
+@@ -1,8 +1,2 @@
+-100_fl_filename_name
+-101_visible_focus
+-102_charstruct
+-103_man_typo
+-104_g++-4.1_warning
+-105_double_ampersand
++100_double_ampersand
+ 200_Debian_menu
+-201_background_color
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/100_double_ampersand.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/100_double_ampersand.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/100_double_ampersand.dpatch 1970-01-01 01:00:00.000000000 +0100
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/100_double_ampersand.dpatch 2006-06-30 11:01:41.000000000 +0200
+@@ -0,0 +1,19 @@
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## 100_double_ampersand.dpatch by <ballombe@debian.org>
++##
++## All lines beginning with `## DP:' are a description of the patch.
++## DP: fix handling of ampersand in titles in windows list.
++
++@DPATCH@
++diff -urNad flwm-1.01~/Menu.C flwm-1.01/Menu.C
++--- flwm-1.01~/Menu.C 2006-06-30 10:52:34.000000000 +0200
+++++ flwm-1.01/Menu.C 2006-06-30 10:54:31.000000000 +0200
++@@ -98,7 +98,7 @@
++ char* t = buf;
++ while (t < buf+254 && *l) {
++ if (*l=='&') *t++ = *l;
++- *t++ = *l;
+++ *t++ = *l++;
++ }
++ *t = 0;
++ l = buf;
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/100_fl_filename_name.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/100_fl_filename_name.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/100_fl_filename_name.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/100_fl_filename_name.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,20 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 100_fl_filename_name.dpatch by Tommi Virtanen <tv@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Transition from fltk-1.0 to fltk-1.1.
+-## DP: Applied upstream.
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/main.C flwm-1.00/main.C
+---- flwm-1.00~/main.C 2006-02-23 21:41:10.000000000 +0100
+-+++ flwm-1.00/main.C 2006-02-23 21:41:39.000000000 +0100
+-@@ -352,7 +352,7 @@
+- }
+-
+- int main(int argc, char** argv) {
+-- program_name = filename_name(argv[0]);
+-+ program_name = fl_filename_name(argv[0]);
+- int i; if (Fl::args(argc, argv, i, arg) < argc) Fl::error(
+- "options are:\n"
+- " -d[isplay] host:#.#\tX display & screen to use\n"
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/101_visible_focus.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/101_visible_focus.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/101_visible_focus.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/101_visible_focus.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,19 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 101_visible_focus.dpatch by Bill Allombert <ballombe@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Restore fltk-1.0 focus behaviour
+-## DP: (Applied upstream)
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/main.C flwm-1.00/main.C
+---- flwm-1.00~/main.C 2006-02-23 21:41:57.000000000 +0100
+-+++ flwm-1.00/main.C 2006-02-23 21:42:21.000000000 +0100
+-@@ -298,6 +298,7 @@
+- XFree((void *)wins);
+-
+- #endif
+-+ Fl::visible_focus(0);
+- }
+-
+- ////////////////////////////////////////////////////////////////
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/102_charstruct.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/102_charstruct.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/102_charstruct.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/102_charstruct.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,45 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 102_charstruct.dpatch by Tommi Virtanen <tv@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Support fonts for which fontstruct->per_char is NULL.
+-## DP: (Applied upstream).
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/Rotated.C flwm-1.00/Rotated.C
+---- flwm-1.00~/Rotated.C 2006-02-23 21:42:31.000000000 +0100
+-+++ flwm-1.00/Rotated.C 2006-02-23 21:43:03.000000000 +0100
+-@@ -116,20 +116,27 @@
+- /* font needs rotation ... */
+- /* loop through each character ... */
+- for (ichar = min_char; ichar <= max_char; ichar++) {
+-+ XCharStruct *charstruct;
+-
+- index = ichar-fontstruct->min_char_or_byte2;
+--
+-+
+-+ if (fontstruct->per_char) {
+-+ charstruct = &fontstruct->per_char[index];
+-+ } else {
+-+ charstruct = &fontstruct->min_bounds;
+-+ }
+-+
+- /* per char dimensions ... */
+- ascent = rotfont->per_char[ichar].ascent =
+-- fontstruct->per_char[index].ascent;
+-+ charstruct->ascent;
+- descent = rotfont->per_char[ichar].descent =
+-- fontstruct->per_char[index].descent;
+-+ charstruct->descent;
+- lbearing = rotfont->per_char[ichar].lbearing =
+-- fontstruct->per_char[index].lbearing;
+-+ charstruct->lbearing;
+- rbearing = rotfont->per_char[ichar].rbearing =
+-- fontstruct->per_char[index].rbearing;
+-+ charstruct->rbearing;
+- rotfont->per_char[ichar].width =
+-- fontstruct->per_char[index].width;
+-+ charstruct->width;
+-
+- /* some space chars have zero body, but a bitmap can't have ... */
+- if (!ascent && !descent)
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/103_man_typo.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/103_man_typo.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/103_man_typo.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/103_man_typo.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,19 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 103_man_typo.dpatch by Bill Allombert <ballombe@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Fix typo in man page.
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/flwm.1 flwm-1.00/flwm.1
+---- flwm-1.00~/flwm.1 2006-02-23 21:54:54.000000000 +0100
+-+++ flwm-1.00/flwm.1 2006-02-23 21:55:39.000000000 +0100
+-@@ -78,7 +78,7 @@
+-
+- .SH MENU ITEMS
+-
+--Flwm can launch programs from it's menu. This is controlled by files
+-+Flwm can launch programs from its menu. This is controlled by files
+- in the directory
+- .B ~/.wmx
+- (this was chosen to be compatible with wmx and wm2).
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/104_g++-4.1_warning.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/104_g++-4.1_warning.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/104_g++-4.1_warning.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/104_g++-4.1_warning.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,58 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 104_g++-4.1-warning.dpatch by Bill Allombert <ballombe@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Fix 5 g++ -4.1 warnings
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/Frame.C flwm-1.00/Frame.C
+---- flwm-1.00~/Frame.C 2006-06-10 13:41:04.000000000 +0200
+-+++ flwm-1.00/Frame.C 2006-06-10 13:41:08.000000000 +0200
+-@@ -1681,15 +1681,15 @@
+- int format;
+- unsigned long n, extra;
+- int status;
+-- void* prop;
+-+ uchar* prop;
+- status = XGetWindowProperty(fl_display, w,
+- a, 0L, 256L, False, type, &realType,
+-- &format, &n, &extra, (uchar**)&prop);
+-+ &format, &n, &extra, &prop);
+- if (status != Success) return 0;
+- if (!prop) return 0;
+- if (!n) {XFree(prop); return 0;}
+- if (np) *np = (int)n;
+-- return prop;
+-+ return (void *)prop;
+- }
+-
+- int Frame::getIntProperty(Atom a, Atom type, int deflt) const {
+-diff -urNad flwm-1.00~/Menu.C flwm-1.00/Menu.C
+---- flwm-1.00~/Menu.C 2006-06-10 13:41:04.000000000 +0200
+-+++ flwm-1.00/Menu.C 2006-06-10 13:41:08.000000000 +0200
+-@@ -246,8 +246,8 @@
+- if (fork() == 0) {
+- if (fork() == 0) {
+- close(ConnectionNumber(fl_display));
+-- if (name == xtermname) execlp(name, name, "-ut", 0);
+-- else execl(name, name, 0);
+-+ if (name == xtermname) execlp(name, name, "-ut", NULL);
+-+ else execl(name, name, NULL);
+- fprintf(stderr, "flwm: can't run %s, %s\n", name, strerror(errno));
+- XBell(fl_display, 70);
+- exit(1);
+-diff -urNad flwm-1.00~/Rotated.C flwm-1.00/Rotated.C
+---- flwm-1.00~/Rotated.C 2006-06-10 13:41:07.000000000 +0200
+-+++ flwm-1.00/Rotated.C 2006-06-10 13:41:41.000000000 +0200
+-@@ -242,9 +242,9 @@
+- }
+-
+- for (ichar = 0; ichar < min_char; ichar++)
+-- rotfont->per_char[ichar] = rotfont->per_char['?'];
+-+ rotfont->per_char[ichar] = rotfont->per_char[(int)'?'];
+- for (ichar = max_char+1; ichar < 256; ichar++)
+-- rotfont->per_char[ichar] = rotfont->per_char['?'];
+-+ rotfont->per_char[ichar] = rotfont->per_char[(int)'?'];
+-
+- /* free pixmap and GC ... */
+- XFreePixmap(dpy, canvas);
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/105_double_ampersand.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/105_double_ampersand.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/105_double_ampersand.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/105_double_ampersand.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,48 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 105_double_ampersand.dpatch by Bill Allombert <ballombe@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Handle & in window titles correctly in the windows list.
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/Menu.C flwm-1.00/Menu.C
+---- flwm-1.00~/Menu.C 2006-03-24 00:02:57.000000000 +0100
+-+++ flwm-1.00/Menu.C 2006-03-24 00:03:18.000000000 +0100
+-@@ -20,6 +20,24 @@
+- #include <dirent.h>
+- #include <sys/stat.h>
+-
+-+static char *double_ampersand(const char *s)
+-+{
+-+ long i,l;
+-+ for(i=0,l=0;s[i];i++)
+-+ if (s[i]=='&')
+-+ l++;
+-+ char *c = new (char [l+i+1]);
+-+ for(i=0,l=0;s[i];i++)
+-+ {
+-+ c[l++]=s[i];
+-+ if (s[i]=='&')
+-+ c[l++]=s[i];
+-+ }
+-+ c[l]=0;
+-+ return c;
+-+}
+-+
+-+
+- // it is possible for the window to be deleted or withdrawn while
+- // the menu is up. This will detect that case (with reasonable
+- // reliability):
+-@@ -90,8 +108,11 @@
+- }
+- fl_font(o->font, o->size);
+- fl_color((Fl_Color)o->color);
+-- const char* l = f->label(); if (!l) l = "unnamed";
+-+ const char* l = f->label();
+-+ if (!l) l = "unnamed";
+-+ else l = double_ampersand(f->label());
+- fl_draw(l, X+MENU_ICON_W+3, Y, W-MENU_ICON_W-3, H, align);
+-+ delete l;
+- }
+-
+- static void
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/200_Debian_menu.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/200_Debian_menu.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/200_Debian_menu.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/200_Debian_menu.dpatch 2006-06-30 11:01:41.000000000 +0200
+@@ -5,10 +5,10 @@
+ ## DP: Add Debian menu support.
+
+ @DPATCH@
+-diff -urNad flwm-1.00~/Menu.C flwm-1.00/Menu.C
+---- flwm-1.00~/Menu.C 2006-06-10 22:22:59.000000000 +0200
+-+++ flwm-1.00/Menu.C 2006-06-10 22:23:00.000000000 +0200
+-@@ -395,7 +395,11 @@
++diff -urNad flwm-1.01~/Menu.C flwm-1.01/Menu.C
++--- flwm-1.01~/Menu.C 2006-06-30 09:02:01.000000000 +0200
+++++ flwm-1.01/Menu.C 2006-06-30 09:02:05.000000000 +0200
++@@ -393,7 +393,11 @@
+ strcpy(path, home);
+ if (path[strlen(path)-1] != '/') strcat(path, "/");
+ strcat(path, ".wmx/");
+@@ -21,9 +21,9 @@
+ if (st.st_mtime == wmx_time) return;
+ wmx_time = st.st_mtime;
+ num_wmx = 0;
+-diff -urNad flwm-1.00~/flwm.1 flwm-1.00/flwm.1
+---- flwm-1.00~/flwm.1 2006-06-10 22:22:59.000000000 +0200
+-+++ flwm-1.00/flwm.1 2006-06-10 22:23:00.000000000 +0200
++diff -urNad flwm-1.01~/flwm.1 flwm-1.01/flwm.1
++--- flwm-1.01~/flwm.1 2006-06-30 09:02:01.000000000 +0200
+++++ flwm-1.01/flwm.1 2006-06-30 09:02:05.000000000 +0200
+ @@ -102,10 +102,13 @@
+ chmod +x !*
+ .fi
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/201_background_color.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/201_background_color.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/201_background_color.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/201_background_color.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,57 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 201_background_color.dpatch by Bill Allombert <ballombe@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: Fix -fg and -bg options
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/Frame.C flwm-1.00/Frame.C
+---- flwm-1.00~/Frame.C 2006-06-10 22:24:58.000000000 +0200
+-+++ flwm-1.00/Frame.C 2006-06-10 22:25:00.000000000 +0200
+-@@ -88,6 +88,7 @@
+- min_w_button.callback(button_cb_static);
+- end();
+- box(FL_NO_BOX); // relies on background color erasing interior
+-+ labelcolor(FL_FOREGROUND_COLOR);
+- next = first;
+- first = this;
+-
+-@@ -674,7 +675,7 @@
+- XSetWindowAttributes a;
+- a.background_pixel = fl_xpixel(FL_SELECTION_COLOR);
+- XChangeWindowAttributes(fl_display, fl_xid(this), CWBackPixel, &a);
+-- labelcolor(contrast(FL_BLACK, FL_SELECTION_COLOR));
+-+ labelcolor(contrast(FL_FOREGROUND_COLOR, FL_SELECTION_COLOR));
+- XClearArea(fl_display, fl_xid(this), 2, 2, w()-4, h()-4, 1);
+- #else
+- #if defined(SHOW_CLOCK)
+-@@ -694,7 +695,7 @@
+- XSetWindowAttributes a;
+- a.background_pixel = fl_xpixel(FL_GRAY);
+- XChangeWindowAttributes(fl_display, fl_xid(this), CWBackPixel, &a);
+-- labelcolor(FL_BLACK);
+-+ labelcolor(FL_FOREGROUND_COLOR);
+- XClearArea(fl_display, fl_xid(this), 2, 2, w()-4, h()-4, 1);
+- #else
+- #if defined(SHOW_CLOCK)
+-diff -urNad flwm-1.00~/Menu.C flwm-1.00/Menu.C
+---- flwm-1.00~/Menu.C 2006-06-10 22:24:59.000000000 +0200
+-+++ flwm-1.00/Menu.C 2006-06-10 22:25:00.000000000 +0200
+-@@ -99,7 +99,7 @@
+- if (h < 3) h = 3;
+- if (y+h > SCREEN_H) y = SCREEN_H-h;
+- if (y < 0) y = 0;
+-- fl_color(FL_BLACK);
+-+ fl_color(FL_FOREGROUND_COLOR);
+- if (c->state() == ICONIC)
+- fl_rect(X+x+SCREEN_DX, Y+y+SCREEN_DX, w, h);
+- else
+-@@ -304,7 +304,7 @@
+- m.shortcut(0);
+- m.labelfont(MENU_FONT_SLOT);
+- m.labelsize(MENU_FONT_SIZE);
+-- m.labelcolor(FL_BLACK);
+-+ m.labelcolor(FL_FOREGROUND_COLOR);
+- }
+-
+- #if WMX_MENU_ITEMS
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/patches/202_background_color_2.dpatch /tmp/KfNDqvamm0/flwm-1.01/debian/patches/202_background_color_2.dpatch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/patches/202_background_color_2.dpatch 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/patches/202_background_color_2.dpatch 1970-01-01 01:00:00.000000000 +0100
+@@ -1,92 +0,0 @@
+-#! /bin/sh /usr/share/dpatch/dpatch-run
+-## 203_background_color.dpatch by <ballombe@debian.org>
+-##
+-## All lines beginning with `## DP:' are a description of the patch.
+-## DP: fix the -fg -bg, -bg2 options.
+-
+-@DPATCH@
+-diff -urNad flwm-1.00~/Menu.C flwm-1.00/Menu.C
+---- flwm-1.00~/Menu.C 2006-02-23 21:32:53.000000000 +0100
+-+++ flwm-1.00/Menu.C 2006-02-23 21:36:32.000000000 +0100
+-@@ -172,10 +172,14 @@
+- new_desktop_input = new Fl_Input(10,30,170,25,"New desktop name:");
+- new_desktop_input->align(FL_ALIGN_TOP_LEFT);
+- new_desktop_input->labelfont(FL_BOLD);
+-+ new_desktop_input->labelcolor(FL_FOREGROUND_COLOR);
+-+
+- Fl_Return_Button* b = new Fl_Return_Button(100,60,80,20,"OK");
+- b->callback(new_desktop_ok_cb);
+-+ b->labelcolor(FL_FOREGROUND_COLOR);
+- Fl_Button* b2 = new Fl_Button(10,60,80,20,"Cancel");
+- b2->callback(cancel_cb);
+-+ b2->labelcolor(FL_FOREGROUND_COLOR);
+- w->set_non_modal();
+- w->end();
+- }
+-@@ -217,10 +221,13 @@
+- w = new FrameWindow(190,90);
+- Fl_Box* l = new Fl_Box(0, 0, 190, 60, "Really log out?");
+- l->labelfont(FL_BOLD);
+-+ l->labelcolor(FL_FOREGROUND_COLOR);
+- Fl_Return_Button* b = new Fl_Return_Button(100,60,80,20,"OK");
+- b->callback(exit_cb);
+-+ b->labelcolor(FL_FOREGROUND_COLOR);
+- Fl_Button* b2 = new Fl_Button(10,60,80,20,"Cancel");
+- b2->callback(cancel_cb);
+-+ b2->labelcolor(FL_FOREGROUND_COLOR);
+- w->set_non_modal();
+- w->end();
+- }
+-@@ -280,10 +287,10 @@
+- m.label(data);
+- m.flags = 0;
+- m.labeltype(FL_NORMAL_LABEL);
+-+ m.labelcolor(FL_FOREGROUND_COLOR);
+- m.shortcut(0);
+- m.labelfont(MENU_FONT_SLOT);
+- m.labelsize(MENU_FONT_SIZE);
+-- m.labelcolor(FL_FOREGROUND_COLOR);
+- }
+-
+- #if WMX_MENU_ITEMS
+-@@ -513,6 +520,7 @@
+- if (c->state() == UNMAPPED || c->transient_for()) continue;
+- init(menu[n],(char*)c);
+- menu[n].labeltype(FRAME_LABEL);
+-+ menu[n].labelcolor(FL_FOREGROUND_COLOR);
+- menu[n].callback(frame_callback, c);
+- if (is_active_frame(c)) preset = menu+n;
+- n++;
+-@@ -542,6 +550,7 @@
+- if (c->desktop() == d || !c->desktop() && d == Desktop::current()) {
+- init(menu[n],(char*)c);
+- menu[n].labeltype(FRAME_LABEL);
+-+ menu[n].labelcolor(FL_FOREGROUND_COLOR);
+- menu[n].callback(d == Desktop::current() ?
+- frame_callback : move_frame_callback, c);
+- if (d == Desktop::current() && is_active_frame(c)) preset = menu+n;
+-@@ -589,7 +598,10 @@
+- if (one_desktop)
+- #endif
+- if (!level)
+-+ {
+- menu[n].labeltype(TEXT_LABEL);
+-+ menu[n].labelcolor(FL_FOREGROUND_COLOR);
+-+ }
+-
+- int nextlev = (i==num_wmx-1)?0:strspn(wmxlist[i+1], "/")-1;
+- if (nextlev < level) {
+-@@ -621,8 +633,11 @@
+- if (one_desktop)
+- #endif
+- // fix the menus items so they are indented to align with window names:
+-- while (menu[n].label()) menu[n++].labeltype(TEXT_LABEL);
+--
+-+ while (menu[n].label())
+-+ {
+-+ menu[n].labelcolor(FL_FOREGROUND_COLOR);
+-+ menu[n++].labeltype(TEXT_LABEL);
+-+ }
+- const Fl_Menu_Item* picked =
+- menu->popup(Fl::event_x(), Fl::event_y(), 0, preset);
+- if (picked && picked->callback()) picked->do_callback(0);
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/debian/watch /tmp/KfNDqvamm0/flwm-1.01/debian/watch
+--- /tmp/8FTwAYJlot/flwm-1.00/debian/watch 1970-01-01 01:00:00.000000000 +0100
++++ /tmp/KfNDqvamm0/flwm-1.01/debian/watch 2006-06-30 11:01:41.000000000 +0200
+@@ -0,0 +1,3 @@
++# Site Directory Pattern Version Script
++version=2
++http://flwm.sourceforge.net/flwm-(.*)\.tgz debian uupdate
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/flwm.1 /tmp/KfNDqvamm0/flwm-1.01/flwm.1
+--- /tmp/8FTwAYJlot/flwm-1.00/flwm.1 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/flwm.1 2006-06-30 11:01:41.000000000 +0200
+@@ -184,14 +184,14 @@
+ the keyboard, use left arrow to go to the desktop names, move up and
+ down to the other desktop).
+
+-If a desktop is empty you can delete it. It's sub menu will show
++If a desktop is empty you can delete it. Its sub menu will show
+ .B delete this desktop.
+ Pick that and the desktop is gone.
+
+ .B Sticky
+ is a special "desktop": windows on it appear on all desktops. To make
+ a window "sticky" switch to the Sticky desktop and pick the window off
+-it's current desktop (thus "moving" it to the Sticky desktop). To
++its current desktop (thus "moving" it to the Sticky desktop). To
+ "unstick" a window go to another desktop and pick the window off the
+ sticky desktop menu.
+
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/flwm_wmconfig /tmp/KfNDqvamm0/flwm-1.01/flwm_wmconfig
+--- /tmp/8FTwAYJlot/flwm-1.00/flwm_wmconfig 1999-04-26 21:09:10.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/flwm_wmconfig 2000-09-19 18:38:37.000000000 +0200
+@@ -16,7 +16,9 @@
+ set name ""
+ set exec ""
+ while {[gets $f list]>=0} {
+- if [llength $list]<3 continue
++ set n 0
++ catch {set n [llength $list]}
++ if $n<3 continue
+ set tag [lindex $list 1]
+ set value [lrange $list 2 1000]
+ if [llength $value]==1 {set value [lindex $value 0]}
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/Frame.C /tmp/KfNDqvamm0/flwm-1.01/Frame.C
+--- /tmp/8FTwAYJlot/flwm-1.00/Frame.C 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/Frame.C 2006-06-29 08:08:35.000000000 +0200
+@@ -8,6 +8,7 @@
+ #include <FL/fl_draw.H>
+ #include "Rotated.H"
+
++
+ static Atom wm_state = 0;
+ static Atom wm_change_state;
+ static Atom wm_protocols;
+@@ -63,7 +64,7 @@
+ // passed for an already-existing window when the window manager is
+ // starting up. If so we don't want to alter the state, size, or
+ // position. If null than this is a MapRequest of a new window.
+-Frame::Frame(Window window, XWindowAttributes* existing) :
++Frame::Frame(XWindow window, XWindowAttributes* existing) :
+ Fl_Window(0,0),
+ window_(window),
+ state_flags_(0),
+@@ -78,6 +79,9 @@
+ max_w_button(BUTTON_LEFT,BUTTON_TOP+BUTTON_H,BUTTON_W,BUTTON_H,"w"),
+ min_w_button(BUTTON_LEFT,BUTTON_TOP+2*BUTTON_H,BUTTON_W,BUTTON_H,"W")
+ {
++#if FL_MAJOR_VERSION > 1
++ clear_double_buffer();
++#endif
+ close_button.callback(button_cb_static);
+ iconize_button.callback(button_cb_static);
+ max_h_button.type(FL_TOGGLE_BUTTON);
+@@ -224,20 +228,9 @@
+ show_hide_buttons();
+
+ if (autoplace && !existing && !(transient_for() && (x() || y()))) {
+- // autoplacement (stupid version for now)
+- x(Root->x()+(Root->w()-w())/2);
+- y(Root->y()+(Root->h()-h())/2);
+- // move it until it does not hide any existing windows:
+- const int delta = TITLE_WIDTH+LEFT;
+- for (Frame* f = next; f; f = f->next) {
+- if (f->x()+delta > x() && f->y()+delta > y() &&
+- f->x()+f->w()-delta < x()+w() && f->y()+f->h()-delta < y()+h()) {
+- x(max(x(),f->x()+delta));
+- y(max(y(),f->y()+delta));
+- f = this;
+- }
+- }
++ place_window();
+ }
++
+ // move window so contents and border are visible:
+ x(force_x_onscreen(x(), w()));
+ y(force_y_onscreen(y(), h()));
+@@ -261,7 +254,8 @@
+ sattr.bit_gravity = NorthWestGravity;
+ sattr.override_redirect = 1;
+ sattr.background_pixel = fl_xpixel(FL_GRAY);
+- Fl_X::set_xid(this, XCreateWindow(fl_display, fl_xid(Root),
++ Fl_X::set_xid(this, XCreateWindow(fl_display,
++ RootWindow(fl_display,fl_screen),
+ x(), y(), w(), h(), 0,
+ fl_visual->depth,
+ InputOutput,
+@@ -278,15 +272,140 @@
+ sendConfigureNotify(); // many apps expect this even if window size unchanged
+
+ #if CLICK_RAISES || CLICK_TO_TYPE
+- XGrabButton(fl_display, AnyButton, AnyModifier, window, False,
+- ButtonPressMask, GrabModeSync, GrabModeAsync, None, None);
++ if (!dont_set_event_mask)
++ XGrabButton(fl_display, AnyButton, AnyModifier, window, False,
++ ButtonPressMask, GrabModeSync, GrabModeAsync, None, None);
+ #endif
+
+ if (state_ == NORMAL) {
+ XMapWindow(fl_display, fl_xid(this));
+ if (!existing) activate_if_transient();
+ }
++ set_visible();
++}
++
++#if SMART_PLACEMENT
++// Helper functions for "smart" window placement.
++int overlap1(int p1, int l1, int p2, int l2) {
++ int ret = 0;
++ if(p1 <= p2 && p2 <= p1 + l1) {
++ ret = min(p1 + l1 - p2, l2);
++ } else if (p2 <= p1 && p1 <= p2 + l2) {
++ ret = min(p2 + l2 - p1, l1);
++ }
++ return ret;
++}
++
++int overlap(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) {
++ return (overlap1(x1, w1, x2, w2) * overlap1(y1, h1, y2, h2));
++}
++
++// Compute the overlap with existing windows.
++// For normal windows the overlapping area is taken into account plus a
++// constant value for every overlapping window.
++// The active window counts twice.
++// For iconic windows half the overlapping area is taken into account.
++int getOverlap(int x, int y, int w, int h, Frame *first, Frame *self) {
++ int ret = 0;
++ short state;
++ for (Frame* f = first; f; f = f->next) {
++ if (f != self) {
++ state = f->state();
++ if (state == NORMAL || state == ICONIC) {
++ int o = overlap(x, y, w, h, f->x(), f->y(), f->w(), f->h());
++ if (state == NORMAL) {
++ ret = ret + o + (o>0?40000:0) + (o * f->active());
++ } else if (state == ICONIC) {
++ ret = ret + o/2;
++ }
++ }
++ }
++ }
++ return ret;
++}
++
++// autoplacement (brute force version for now)
++void Frame::place_window() {
++ int min_overlap = -1;
++ int tmp_x, tmp_y, tmp_o;
++ int best_x = 0;
++ int best_y = 0;
++ int _w = w();
++ int _h = h();
++ int max_x = Root->x() + Root->w();
++ int max_y = Root->y() + Root->h();
++
++ Frame *f1 = Frame::first;
++ for(int i=0;; i++) {
++ if (i==0) {
++ tmp_x = 0;
++ } else if (i==1) {
++ tmp_x = max_x - _w;
++ } else {
++ if (f1 == this) {
++ f1 = f1->next;
++ }
++ if (!f1) {
++ break;
++ }
++ tmp_x = f1->x() + f1->w();
++ f1 = f1->next;
++ }
++ Frame *f2 = Frame::first;
++ for(int j=0;; j++) {
++ if (j==0) {
++ tmp_y = 0;
++ } else if (j==1) {
++ tmp_y = max_y - _h;
++ } else {
++ if (f2 == this) {
++ f2 = f2->next;
++ }
++ if (!f2) {
++ break;
++ }
++ tmp_y = f2->y() + f2->h();
++ f2 = f2->next;
++ }
++
++ if ((tmp_x + _w <= max_x) && (tmp_y + _h <= max_y)) {
++ tmp_o = getOverlap(tmp_x, tmp_y, _w, _h, Frame::first, this);
++ if(tmp_o < min_overlap || min_overlap < 0) {
++ best_x = tmp_x;
++ best_y = tmp_y;
++ min_overlap = tmp_o;
++ if (min_overlap == 0) {
++ break;
++ }
++ }
++ }
++ }
++ if (min_overlap == 0) {
++ break;
++ }
++ }
++ x(best_x);
++ y(best_y);
++}
++
++#else
++
++// autoplacement (stupid version for now)
++void Frame::place_window() {
++ x(Root->x()+(Root->w()-w())/2);
++ y(Root->y()+(Root->h()-h())/2);
++ // move it until it does not hide any existing windows:
++ const int delta = TITLE_WIDTH+LEFT;
++ for (Frame* f = next; f; f = f->next) {
++ if (f->x()+delta > x() && f->y()+delta > y() &&
++ f->x()+f->w()-delta < x()+w() && f->y()+f->h()-delta < y()+h()) {
++ x(max(x(),f->x()+delta));
++ y(max(y(),f->y()+delta));
++ f = this;
++ }
++ }
+ }
++#endif
+
+ // modify the passed X & W to a legal horizontal window position
+ int Frame::force_x_onscreen(int X, int W) {
+@@ -334,10 +453,12 @@
+ // a legal state value to this location:
+ state_ = UNMAPPED;
+
++#if FL_MAJOR_VERSION < 2
+ // fix fltk bug:
+ fl_xfocus = 0;
+ fl_xmousewin = 0;
+ Fl::focus_ = 0;
++#endif
+
+ // remove any pointers to this:
+ Frame** cp; for (cp = &first; *cp; cp = &((*cp)->next))
+@@ -555,7 +676,7 @@
+ // see if they set "input hint" to non-zero:
+ // prop[3] should be nonzero but the only example of this I have
+ // found is Netscape 3.0 and it sets it to zero...
+- if (!shown() && (prop[0]&4) /*&& prop[3]*/) set_flag(MODAL);
++ if (!shown() && (prop[0]&4) /*&& prop[3]*/) set_flag(::MODAL);
+
+ // see if it is forcing the iconize button back on. This makes
+ // transient_for act like group instead...
+@@ -579,7 +700,7 @@
+ delete[] window_Colormaps;
+ }
+ int n;
+- Window* cw = (Window*)getProperty(wm_colormap_windows, XA_WINDOW, &n);
++ XWindow* cw = (XWindow*)getProperty(wm_colormap_windows, XA_WINDOW, &n);
+ if (cw) {
+ colormapWinCount = n;
+ colormapWindows = cw;
+@@ -645,7 +766,7 @@
+ int Frame::activate(int warp) {
+ // see if a modal & newer window is up:
+ for (Frame* c = first; c && c != this; c = c->next)
+- if (c->flag(MODAL) && c->transient_for() == this)
++ if (c->flag(::MODAL) && c->transient_for() == this)
+ if (c->activate(warp)) return 1;
+ // ignore invisible windows:
+ if (state() != NORMAL || w() <= dwidth) return 0;
+@@ -671,14 +792,14 @@
+ if (active_ != this) {
+ if (active_) active_->deactivate();
+ active_ = this;
+-#if defined(ACTIVE_COLOR)
++#ifdef ACTIVE_COLOR
+ XSetWindowAttributes a;
+ a.background_pixel = fl_xpixel(FL_SELECTION_COLOR);
+ XChangeWindowAttributes(fl_display, fl_xid(this), CWBackPixel, &a);
+ labelcolor(contrast(FL_FOREGROUND_COLOR, FL_SELECTION_COLOR));
+ XClearArea(fl_display, fl_xid(this), 2, 2, w()-4, h()-4, 1);
+ #else
+-#if defined(SHOW_CLOCK)
++#ifdef SHOW_CLOCK
+ redraw();
+ #endif
+ #endif
+@@ -691,14 +812,14 @@
+ // this private function should only be called by constructor and if
+ // the window is active():
+ void Frame::deactivate() {
+-#if defined(ACTIVE_COLOR)
++#ifdef ACTIVE_COLOR
+ XSetWindowAttributes a;
+ a.background_pixel = fl_xpixel(FL_GRAY);
+ XChangeWindowAttributes(fl_display, fl_xid(this), CWBackPixel, &a);
+ labelcolor(FL_FOREGROUND_COLOR);
+ XClearArea(fl_display, fl_xid(this), 2, 2, w()-4, h()-4, 1);
+ #else
+-#if defined(SHOW_CLOCK)
++#ifdef SHOW_CLOCK
+ redraw();
+ #endif
+ #endif
+@@ -738,9 +859,9 @@
+ switch (newstate) {
+ case UNMAPPED:
+ throw_focus();
+- set_state_flag(IGNORE_UNMAP);
+ XUnmapWindow(fl_display, fl_xid(this));
+- XUnmapWindow(fl_display, window_);
++ //set_state_flag(IGNORE_UNMAP);
++ //XUnmapWindow(fl_display, window_);
+ XRemoveFromSaveSet(fl_display, window_);
+ break;
+ case NORMAL:
+@@ -754,9 +875,9 @@
+ XAddToSaveSet(fl_display, window_);
+ } else if (oldstate == NORMAL) {
+ throw_focus();
+- set_state_flag(IGNORE_UNMAP);
+ XUnmapWindow(fl_display, fl_xid(this));
+- XUnmapWindow(fl_display, window_);
++ //set_state_flag(IGNORE_UNMAP);
++ //XUnmapWindow(fl_display, window_);
+ } else {
+ return; // don't setStateProperty IconicState multiple times
+ }
+@@ -906,10 +1027,10 @@
+ int minh = (nh < h()) ? nh : h();
+ XClearArea(fl_display, fl_xid(this), 0, minh-BOTTOM, w(), BOTTOM, 1);
+ // see if label or close box moved, erase the minimum area:
+- int old_label_y = label_y;
+- int old_label_h = label_h;
++// int old_label_y = label_y;
++// int old_label_h = label_h;
+ h(nh); show_hide_buttons();
+-#ifdef SHOW_CLOCK
++#if 1 //def SHOW_CLOCK
+ int t = label_y + 3; // we have to clear the entire label area
+ #else
+ int t = nh;
+@@ -1076,6 +1197,12 @@
+
+ // make sure fltk does not try to set the window size:
+ void Frame::resize(int, int, int, int) {}
++// For fltk2.0:
++void Frame::layout() {
++#if FL_MAJOR_VERSION>1
++ layout_damage(0); // actually this line is not needed in newest cvs fltk2.0
++#endif
++}
+
+ ////////////////////////////////////////////////////////////////
+
+@@ -1111,19 +1238,28 @@
+
+ ////////////////////////////////////////////////////////////////
+ // Drawing code:
++#if FL_MAJOR_VERSION>1
++# include <fltk/Box.h>
++#endif
+
+ void Frame::draw() {
+ if (flag(NO_BORDER)) return;
+ if (!flag(THIN_BORDER)) Fl_Window::draw();
+ if (damage() != FL_DAMAGE_CHILD) {
+-#if ACTIVE_COLOR
++#ifdef ACTIVE_COLOR
+ fl_frame2(active() ? "AAAAJJWW" : "AAAAJJWWNNTT",0,0,w(),h());
+ if (active()) {
+ fl_color(FL_GRAY_RAMP+('N'-'A'));
+ fl_xyline(2, h()-3, w()-3, 2);
+ }
+ #else
++# if FL_MAJOR_VERSION>1
++ static fltk::FrameBox framebox(0,"AAAAJJWWNNTT");
++ drawstyle(style(),fltk::INVISIBLE); // INVISIBLE = draw edge only
++ framebox.draw(Rectangle(w(),h()));
++# else
+ fl_frame("AAAAWWJJTTNN",0,0,w(),h());
++# endif
+ #endif
+ if (!flag(THIN_BORDER) && label_h > 3) {
+ #ifdef SHOW_CLOCK
+@@ -1169,39 +1305,48 @@
+ #endif
+
+ void FrameButton::draw() {
++#if FL_MAJOR_VERSION>1
++ const int x = value()?1:0;
++ const int y = x;
++ drawstyle(style(),flags()|fltk::OUTPUT);
++ FL_UP_BOX->draw(Rectangle(w(),h()));
++#else
++ const int x = this->x();
++ const int y = this->y();
+ Fl_Widget::draw_box(value() ? FL_DOWN_FRAME : FL_UP_FRAME, FL_GRAY);
++#endif
+ fl_color(parent()->labelcolor());
+ switch (label()[0]) {
+ case 'W':
+ #if MINIMIZE_ARROW
+- fl_line (x()+2,y()+(h())/2,x()+w()-4,y()+h()/2);
+- fl_line (x()+2,y()+(h())/2,x()+2+4,y()+h()/2+4);
+- fl_line (x()+2,y()+(h())/2,x()+2+4,y()+h()/2-4);
++ fl_line (x+2,y+(h())/2,x+w()-4,y+h()/2);
++ fl_line (x+2,y+(h())/2,x+2+4,y+h()/2+4);
++ fl_line (x+2,y+(h())/2,x+2+4,y+h()/2-4);
+ #else
+- fl_rect(x()+(h()-7)/2,y()+3,2,h()-6);
++ fl_rect(x+(h()-7)/2,y+3,2,h()-6);
+ #endif
+ return;
+ case 'w':
+- fl_rect(x()+2,y()+(h()-7)/2,w()-4,7);
++ fl_rect(x+2,y+(h()-7)/2,w()-4,7);
+ return;
+ case 'h':
+- fl_rect(x()+(h()-7)/2,y()+2,7,h()-4);
++ fl_rect(x+(h()-7)/2,y+2,7,h()-4);
+ return;
+ case 'X':
+ #if CLOSE_X
+- fl_line(x()+2,y()+3,x()+w()-5,y()+h()-4);
+- fl_line(x()+3,y()+3,x()+w()-4,y()+h()-4);
+- fl_line(x()+2,y()+h()-4,x()+w()-5,y()+3);
+- fl_line(x()+3,y()+h()-4,x()+w()-4,y()+3);
++ fl_line(x+2,y+3,x+w()-5,y+h()-4);
++ fl_line(x+3,y+3,x+w()-4,y+h()-4);
++ fl_line(x+2,y+h()-4,x+w()-5,y+3);
++ fl_line(x+3,y+h()-4,x+w()-4,y+3);
+ #endif
+ #if CLOSE_HITTITE_LIGHTNING
+- fl_arc(x()+3,y()+3,w()-6,h()-6,0,360);
+- fl_line(x()+7,y()+3, x()+7,y()+11);
++ fl_arc(x+3,y+3,w()-6,h()-6,0,360);
++ fl_line(x+7,y+3, x+7,y+11);
+ #endif
+ return;
+ case 'i':
+ #if ICONIZE_BOX
+- fl_rect(x()+w()/2-1,y()+h()/2-1,3,3);
++ fl_rect(x+w()/2-1,y+h()/2-1,3,3);
+ #endif
+ return;
+ }
+@@ -1320,6 +1465,9 @@
+ c = FL_CURSOR_NESW;
+ break;
+ }
++#if FL_MAJOR_VERSION>1
++ cursor(c);
++#else
+ static Frame* previous_frame;
+ static Fl_Cursor previous_cursor;
+ if (this != previous_frame || c != previous_cursor) {
+@@ -1327,6 +1475,7 @@
+ previous_cursor = c;
+ cursor(c, CURSOR_FG_SLOT, CURSOR_BG_SLOT);
+ }
++#endif
+ }
+
+ #ifdef AUTO_RAISE
+@@ -1348,10 +1497,17 @@
+ int Frame::handle(int e) {
+ static int what, dx, dy, ix, iy, iw, ih;
+ // see if child widget handles event:
+- if (Fl_Window::handle(e) && e != FL_ENTER && e != FL_MOVE) {
++#if FL_MAJOR_VERSION > 1
++ if (fltk::Group::handle(e) && e != FL_ENTER && e != FL_MOVE) {
++ if (e == FL_PUSH) set_cursor(-1);
++ return 1;
++ }
++#else
++ if (Fl_Group::handle(e) && e != FL_ENTER && e != FL_MOVE) {
+ if (e == FL_PUSH) set_cursor(-1);
+ return 1;
+ }
++#endif
+ switch (e) {
+
+ case FL_SHOW:
+@@ -1381,42 +1537,33 @@
+ #endif
+ goto GET_CROSSINGS;
+
+- case 0:
++ case FL_MOVE:
+ GET_CROSSINGS:
+ // set cursor_inside to true when the mouse is inside a window
+ // set it false when mouse is on a frame or outside a window.
+ // fltk mangles the X enter/leave events, we need the original ones:
+
+ switch (fl_xevent->type) {
+- case EnterNotify:
++ case LeaveNotify:
++ if (fl_xevent->xcrossing.detail == NotifyInferior) {
++ // cursor moved from frame to interior
++ cursor_inside = this;
++ break;
++ } else {
++ // cursor moved to another window
++ return 1;
++ }
+
++ case EnterNotify:
+ // see if cursor skipped over frame and directly to interior:
+ if (fl_xevent->xcrossing.detail == NotifyVirtual ||
+ fl_xevent->xcrossing.detail == NotifyNonlinearVirtual)
+ cursor_inside = this;
+-
+ else {
+ // cursor is now pointing at frame:
+ cursor_inside = 0;
+ }
+-
+- // fall through to FL_MOVE:
+- break;
+-
+- case LeaveNotify:
+- if (fl_xevent->xcrossing.detail == NotifyInferior) {
+- // cursor moved from frame to interior
+- cursor_inside = this;
+- set_cursor(-1);
+- return 1;
+- }
+- return 1;
+-
+- default:
+- return 0; // other X event we don't understand
+ }
+-
+- case FL_MOVE:
+ if (Fl::belowmouse() != this || cursor_inside == this)
+ set_cursor(-1);
+ else
+@@ -1578,9 +1725,10 @@
+
+ case UnmapNotify: {
+ const XUnmapEvent* e = &(ei->xunmap);
+- if (e->from_configure);
+- else if (state_flags_&IGNORE_UNMAP) clear_state_flag(IGNORE_UNMAP);
+- else state(UNMAPPED);
++ if (e->window == window_ && !e->from_configure) {
++ if (state_flags_&IGNORE_UNMAP) clear_state_flag(IGNORE_UNMAP);
++ else state(UNMAPPED);
++ }
+ return 1;}
+
+ case DestroyNotify: {
+@@ -1677,7 +1825,7 @@
+ return ::getProperty(window_, a, type, np);
+ }
+
+-void* getProperty(Window w, Atom a, Atom type, int* np) {
++void* getProperty(XWindow w, Atom a, Atom type, int* np) {
+ Atom realType;
+ int format;
+ unsigned long n, extra;
+@@ -1690,14 +1838,14 @@
+ if (!prop) return 0;
+ if (!n) {XFree(prop); return 0;}
+ if (np) *np = (int)n;
+- return (void *)prop;
++ return (void*)prop;
+ }
+
+ int Frame::getIntProperty(Atom a, Atom type, int deflt) const {
+ return ::getIntProperty(window_, a, type, deflt);
+ }
+
+-int getIntProperty(Window w, Atom a, Atom type, int deflt) {
++int getIntProperty(XWindow w, Atom a, Atom type, int deflt) {
+ void* prop = getProperty(w, a, type);
+ if (!prop) return deflt;
+ int r = int(*(long*)prop);
+@@ -1705,7 +1853,7 @@
+ return r;
+ }
+
+-void setProperty(Window w, Atom a, Atom type, int v) {
++void setProperty(XWindow w, Atom a, Atom type, int v) {
+ long prop = v;
+ XChangeProperty(fl_display, w, a, type, 32, PropModeReplace, (uchar*)&prop,1);
+ }
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/Frame.H /tmp/KfNDqvamm0/flwm-1.01/Frame.H
+--- /tmp/8FTwAYJlot/flwm-1.00/Frame.H 1999-08-24 22:59:35.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/Frame.H 2003-12-16 16:15:40.000000000 +0100
+@@ -9,6 +9,9 @@
+ #include <FL/Fl_Window.H>
+ #include <FL/Fl_Button.H>
+ #include <FL/x.H>
++#if FL_MAJOR_VERSION<2
++# define XWindow Window
++#endif
+
+ // The state is an enumeration of reasons why the window may be invisible.
+ // Only if it is NORMAL is the window visible.
+@@ -58,7 +61,7 @@
+
+ class Frame : public Fl_Window {
+
+- Window window_;
++ XWindow window_;
+
+ short state_; // X server state: iconic, withdrawn, normal
+ short state_flags_; // above state flags
+@@ -79,14 +82,14 @@
+ int label_y, label_h; // location of label
+ int label_w; // measured width of printed label
+
+- Window transient_for_xid; // value from X
++ XWindow transient_for_xid; // value from X
+ Frame* transient_for_; // the frame for that xid, if found
+
+ Frame* revert_to; // probably the xterm this was run from
+
+ Colormap colormap; // this window's colormap
+ int colormapWinCount; // list of other windows to install colormaps for
+- Window *colormapWindows;
++ XWindow *colormapWindows;
+ Colormap *window_Colormaps; // their colormaps
+
+ Desktop* desktop_;
+@@ -101,6 +104,7 @@
+ int maximize_height();
+ int force_x_onscreen(int X, int W);
+ int force_y_onscreen(int Y, int H);
++ void place_window();
+
+ void sendMessage(Atom, Atom) const;
+ void sendConfigureNotify() const;
+@@ -122,6 +126,7 @@
+
+ void set_size(int,int,int,int, int warp=0);
+ void resize(int,int,int,int);
++ void layout();
+ void show_hide_buttons();
+
+ int handle(int); // handle fltk events
+@@ -151,10 +156,10 @@
+ static Frame* first;
+ Frame* next; // stacking order, top to bottom
+
+- Frame(Window, XWindowAttributes* = 0);
++ Frame(XWindow, XWindowAttributes* = 0);
+ ~Frame();
+
+- Window window() const {return window_;}
++ XWindow window() const {return window_;}
+ Frame* transient_for() const {return transient_for_;}
+ int is_transient_for(const Frame*) const;
+
+@@ -185,8 +190,8 @@
+ };
+
+ // handy wrappers for those ugly X routines:
+-void* getProperty(Window, Atom, Atom = AnyPropertyType, int* length = 0);
+-int getIntProperty(Window, Atom, Atom = AnyPropertyType, int deflt = 0);
+-void setProperty(Window, Atom, Atom, int);
++void* getProperty(XWindow, Atom, Atom = AnyPropertyType, int* length = 0);
++int getIntProperty(XWindow, Atom, Atom = AnyPropertyType, int deflt = 0);
++void setProperty(XWindow, Atom, Atom, int);
+
+ #endif
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/Hotkeys.C /tmp/KfNDqvamm0/flwm-1.01/Hotkeys.C
+--- /tmp/8FTwAYJlot/flwm-1.00/Hotkeys.C 2000-09-22 18:53:05.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/Hotkeys.C 2006-06-29 09:18:08.000000000 +0200
+@@ -149,6 +149,36 @@
+ #endif
+ {0}};
+
++#if FL_MAJOR_VERSION > 1
++// Define missing function, this should get put in fltk2.0:
++namespace fltk {
++int test_shortcut(int shortcut) {
++ if (!shortcut) return 0;
++
++ int shift = Fl::event_state();
++ // see if any required shift flags are off:
++ if ((shortcut&shift) != (shortcut&0x7fff0000)) return 0;
++ // record shift flags that are wrong:
++ int mismatch = (shortcut^shift)&0x7fff0000;
++ // these three must always be correct:
++ if (mismatch&(FL_META|FL_ALT|FL_CTRL)) return 0;
++
++ int key = shortcut & 0xffff;
++
++ // if shift is also correct, check for exactly equal keysyms:
++ if (!(mismatch&(FL_SHIFT)) && unsigned(key) == Fl::event_key()) return 1;
++
++ // try matching ascii, ignore shift:
++ if (key == event_text()[0]) return 1;
++
++ // kludge so that Ctrl+'_' works (as opposed to Ctrl+'^_'):
++ if ((shift&FL_CTRL) && key >= 0x3f && key <= 0x5F
++ && event_text()[0]==(key^0x40)) return 1;
++ return 0;
++}
++}
++#endif
++
+ int Handle_Hotkey() {
+ for (int i = 0; keybindings[i].key; i++) {
+ if (Fl::test_shortcut(keybindings[i].key) ||
+@@ -165,7 +195,7 @@
+ extern Fl_Window* Root;
+
+ void Grab_Hotkeys() {
+- Window root = fl_xid(Root);
++ XWindow root = fl_xid(Root);
+ for (int i = 0; keybindings[i].key; i++) {
+ int k = keybindings[i].key;
+ int keycode = XKeysymToKeycode(fl_display, k & 0xFFFF);
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/logo.fl /tmp/KfNDqvamm0/flwm-1.01/logo.fl
+--- /tmp/8FTwAYJlot/flwm-1.00/logo.fl 1970-01-01 01:00:00.000000000 +0100
++++ /tmp/KfNDqvamm0/flwm-1.01/logo.fl 2006-04-13 18:06:59.000000000 +0200
+@@ -0,0 +1,19 @@
++# data file for the FLTK User Interface Designer (FLUID)
++version 2.0100
++header_name {.h}
++code_name {.cxx}
++gridx 5
++gridy 5
++snap 3
++Function {make_window()} {open
++} {
++ {fltk::Window} {} {
++ label flwm open
++ xywh {990 285 265 115} visible
++ } {
++ {fltk::Group} {} {
++ label {The Fast Light Window Manager} open selected
++ xywh {0 0 265 115} align 128 box PLASTIC_UP_BOX labelfont 1 labeltype ENGRAVED_LABEL color 0x7d9dae00 textcolor 0x979b9700 labelcolor 0x393a3900 labelsize 27
++ } {}
++ }
++}
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/main.C /tmp/KfNDqvamm0/flwm-1.01/main.C
+--- /tmp/8FTwAYJlot/flwm-1.00/main.C 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/main.C 2006-06-29 09:17:24.000000000 +0200
+@@ -43,10 +43,15 @@
+ class Fl_Root : public Fl_Window {
+ int handle(int);
+ public:
+- Fl_Root() : Fl_Window(0,0,Fl::w(),Fl::h()) {}
++ Fl_Root() : Fl_Window(0,0,Fl::w(),Fl::h()) {
++#if FL_MAJOR_VERSION > 1
++ clear_double_buffer();
++#endif
++ }
+ void show() {
+ if (!shown()) Fl_X::set_xid(this, RootWindow(fl_display, fl_screen));
+ }
++ void flush() {}
+ };
+ Fl_Window *Root;
+
+@@ -69,7 +74,7 @@
+ // fltk calls this for any events it does not understand:
+ static int flwm_event_handler(int e) {
+ if (!e) { // XEvent that fltk did not understand.
+- Window window = fl_xevent->xany.window;
++ XWindow window = fl_xevent->xany.window;
+ // unfortunately most of the redirect events put the interesting
+ // window id in a different place:
+ switch (fl_xevent->type) {
+@@ -107,18 +112,31 @@
+ const XMapRequestEvent* e = &(fl_xevent->xmaprequest);
+ (void)new Frame(e->window);
+ return 1;}
+- case KeyRelease: {
++#if FL_MAJOR_VERSION<2
++ // this was needed for *some* earlier versions of fltk
++ case KeyRelease:
+ if (!Fl::grab()) return 0;
+- // see if they released the alt key:
+- unsigned long keysym =
++ Fl::e_keysym =
+ XKeycodeToKeysym(fl_display, fl_xevent->xkey.keycode, 0);
+- if (keysym == FL_Alt_L || keysym == FL_Alt_R) {
+- Fl::e_keysym = FL_Enter;
+- return Fl::grab()->handle(FL_KEYBOARD);
+- }
+- return 0;}
++ goto KEYUP;
++#endif
++ }
++ } else if (e == FL_KEYUP) {
++#if FL_MAJOR_VERSION<2
++ KEYUP:
++#endif
++ if (!Fl::grab()) return 0;
++ // when alt key released, pretend they hit enter & pick menu item
++ if (Fl::event_key()==FL_Alt_L || Fl::event_key()==FL_Alt_R) {
++ Fl::e_keysym = FL_Enter;
++#if FL_MAJOR_VERSION>1
++ return Fl::modal()->handle(FL_KEYBOARD);
++#else
++ return Fl::grab()->handle(FL_KEYBOARD);
++#endif
+ }
+- } else if (e == FL_SHORTCUT) {
++ return 0;
++ } else if (e == FL_SHORTCUT || e == FL_KEYBOARD) {
+ #if FL_MAJOR_VERSION == 1 && FL_MINOR_VERSION == 0 && FL_PATCH_VERSION < 3
+ // make the tab keys work in the menus in older fltk's:
+ // (they do not cycle around however, so a new fltk is a good idea)
+@@ -189,28 +207,26 @@
+ #endif
+
+ static const char* cfg, *cbg;
++#if FL_MAJOR_VERSION>1
++static fltk::Cursor* cursor = FL_CURSOR_ARROW;
++extern FL_API fltk::Color fl_cursor_fg;
++extern FL_API fltk::Color fl_cursor_bg;
++#else
+ static int cursor = FL_CURSOR_ARROW;
+-
+-static void color_setup(Fl_Color slot, const char* arg, ulong value) {
+- if (arg) {
+- XColor x;
+- if (XParseColor(fl_display, fl_colormap, arg, &x))
+- value = ((x.red>>8)<<24)|((x.green>>8)<<16)|((x.blue));
+- }
+- Fl::set_color(slot, value);
+-}
++#endif
+
+ static void initialize() {
+
+ Display* d = fl_display;
+
+ #ifdef TEST
+- Window w = XCreateSimpleWindow(d, root,
++ XWindow w = XCreateSimpleWindow(d, RootWindow(d, fl_screen),
+ 100, 100, 200, 300, 10,
+ BlackPixel(fl_display, 0),
+ // WhitePixel(fl_display, 0));
+ 0x1234);
+ Frame* frame = new Frame(w);
++ frame->label("flwm test window");
+ XSelectInput(d, w,
+ ExposureMask | StructureNotifyMask |
+ KeyPressMask | KeyReleaseMask | FocusChangeMask |
+@@ -230,9 +246,12 @@
+ ButtonPressMask | ButtonReleaseMask |
+ EnterWindowMask | LeaveWindowMask |
+ KeyPressMask | KeyReleaseMask | KeymapStateMask);
+- color_setup(CURSOR_FG_SLOT, cfg, CURSOR_FG_COLOR<<8);
+- color_setup(CURSOR_BG_SLOT, cbg, CURSOR_BG_COLOR<<8);
++#if FL_MAJOR_VERSION>1
++ Root->cursor(cursor);
++#else
+ Root->cursor((Fl_Cursor)cursor, CURSOR_FG_SLOT, CURSOR_BG_SLOT);
++#endif
++ Fl::visible_focus(0);
+
+ #ifdef TITLE_FONT
+ Fl::set_font(TITLE_FONT_SLOT, TITLE_FONT);
+@@ -247,7 +266,7 @@
+ // Gnome crap:
+ // First create a window that can be watched to see if wm dies:
+ Atom a = XInternAtom(d, "_WIN_SUPPORTING_WM_CHECK", False);
+- Window win = XCreateSimpleWindow(d, fl_xid(Root), -200, -200, 5, 5, 0, 0, 0);
++ XWindow win = XCreateSimpleWindow(d, fl_xid(Root), -200, -200, 5, 5, 0, 0, 0);
+ CARD32 val = win;
+ XChangeProperty(d, fl_xid(Root), a, XA_CARDINAL, 32, PropModeReplace, (uchar*)&val, 1);
+ XChangeProperty(d, win, a, XA_CARDINAL, 32, PropModeReplace, (uchar*)&val, 1);
+@@ -287,7 +306,7 @@
+
+ // find all the windows and create a Frame for each:
+ unsigned int n;
+- Window w1, w2, *wins;
++ XWindow w1, w2, *wins;
+ XWindowAttributes attr;
+ XQueryTree(d, fl_xid(Root), &w1, &w2, &wins, &n);
+ for (i = 0; i < n; ++i) {
+@@ -298,7 +317,6 @@
+ XFree((void *)wins);
+
+ #endif
+- Fl::visible_focus(0);
+ }
+
+ ////////////////////////////////////////////////////////////////
+@@ -329,8 +347,10 @@
+ cfg = v;
+ } else if (!strcmp(s, "cbg")) {
+ cbg = v;
++#if FL_MAJOR_VERSION < 2
+ } else if (*s == 'c') {
+ cursor = atoi(v);
++#endif
+ } else if (*s == 'v') {
+ int visid = atoi(v);
+ fl_open_display();
+@@ -351,6 +371,17 @@
+ return 2;
+ }
+
++#if FL_MAJOR_VERSION<2
++static void color_setup(Fl_Color slot, const char* arg, ulong value) {
++ if (arg) {
++ XColor x;
++ if (XParseColor(fl_display, fl_colormap, arg, &x))
++ value = ((x.red>>8)<<24)|((x.green>>8)<<16)|((x.blue));
++ }
++ Fl::set_color(slot, value);
++}
++#endif
++
+ int main(int argc, char** argv) {
+ program_name = fl_filename_name(argv[0]);
+ int i; if (Fl::args(argc, argv, i, arg) < argc) Fl::error(
+@@ -370,8 +401,22 @@
+ #ifndef FL_NORMAL_SIZE // detect new versions of fltk where this is a variable
+ FL_NORMAL_SIZE = 12;
+ #endif
++#if FL_MAJOR_VERSION>1
++ if (cfg) fl_cursor_fg = fltk::color(cfg);
++ if (cbg) fl_cursor_bg = fltk::color(cbg);
++#else
++ fl_open_display();
++ color_setup(CURSOR_FG_SLOT, cfg, CURSOR_FG_COLOR<<8);
++ color_setup(CURSOR_BG_SLOT, cbg, CURSOR_BG_COLOR<<8);
+ Fl::set_color(FL_SELECTION_COLOR,0,0,128);
+- Root = new Fl_Root();
++#endif
++ Fl_Root root;
++ Root = &root;
++#if FL_MAJOR_VERSION>1
++ // show() is not a virtual function in fltk2.0, this fools it:
++ fltk::load_theme();
++ root.show();
++#endif
+ Root->show(argc,argv); // fools fltk into using -geometry to set the size
+ XSetErrorHandler(xerror_handler);
+ initialize();
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/Makefile /tmp/KfNDqvamm0/flwm-1.01/Makefile
+--- /tmp/8FTwAYJlot/flwm-1.00/Makefile 2000-09-22 18:53:04.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/Makefile 2006-06-30 00:11:16.000000000 +0200
+@@ -1,7 +1,7 @@
+ SHELL=/bin/sh
+
+ PROGRAM = flwm
+-VERSION = 1.00
++VERSION = 1.01
+
+ CXXFILES = main.C Frame.C Rotated.C Menu.C FrameWindow.C Desktop.C Hotkeys.C
+
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/Menu.C /tmp/KfNDqvamm0/flwm-1.01/Menu.C
+--- /tmp/8FTwAYJlot/flwm-1.00/Menu.C 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/Menu.C 2006-06-30 11:01:41.000000000 +0200
+@@ -20,24 +20,6 @@
+ #include <dirent.h>
+ #include <sys/stat.h>
+
+-static char *double_ampersand(const char *s)
+-{
+- long i,l;
+- for(i=0,l=0;s[i];i++)
+- if (s[i]=='&')
+- l++;
+- char *c = new (char [l+i+1]);
+- for(i=0,l=0;s[i];i++)
+- {
+- c[l++]=s[i];
+- if (s[i]=='&')
+- c[l++]=s[i];
+- }
+- c[l]=0;
+- return c;
+-}
+-
+-
+ // it is possible for the window to be deleted or withdrawn while
+ // the menu is up. This will detect that case (with reasonable
+ // reliability):
+@@ -79,6 +61,7 @@
+
+ extern Fl_Window* Root;
+
++#if FL_MAJOR_VERSION < 2
+ static void
+ frame_label_draw(const Fl_Label* o, int X, int Y, int W, int H, Fl_Align align)
+ {
+@@ -108,11 +91,19 @@
+ }
+ fl_font(o->font, o->size);
+ fl_color((Fl_Color)o->color);
+- const char* l = f->label();
+- if (!l) l = "unnamed";
+- else l = double_ampersand(f->label());
++ const char* l = f->label(); if (!l) l = "unnamed";
++ // double any ampersands to turn off the underscores:
++ char buf[256];
++ if (strchr(l,'&')) {
++ char* t = buf;
++ while (t < buf+254 && *l) {
++ if (*l=='&') *t++ = *l;
++ *t++ = *l++;
++ }
++ *t = 0;
++ l = buf;
++ }
+ fl_draw(l, X+MENU_ICON_W+3, Y, W-MENU_ICON_W-3, H, align);
+- delete l;
+ }
+
+ static void
+@@ -152,6 +143,8 @@
+ #define FRAME_LABEL FL_FREE_LABELTYPE
+ #define TEXT_LABEL Fl_Labeltype(FL_FREE_LABELTYPE+1)
+
++#endif // FL_MAJOR_VERSION < 2
++
+ ////////////////////////////////////////////////////////////////
+
+ static void
+@@ -176,7 +169,7 @@
+
+ #if ASK_FOR_NEW_DESKTOP_NAME
+
+-static Fl_Input* new_desktop_input;
++static Fl_Input* new_desktop_input = 0;
+
+ static void
+ new_desktop_ok_cb(Fl_Widget* w, void*)
+@@ -226,6 +219,7 @@
+ static void
+ exit_cb(Fl_Widget*, void*)
+ {
++ printf("exit_cb\n");
+ Frame::save_protocol();
+ exit(0);
+ }
+@@ -233,7 +227,7 @@
+ static void
+ logout_cb(Fl_Widget*, void*)
+ {
+- static FrameWindow* w;
++ static FrameWindow* w = 0;
+ if (!w) {
+ w = new FrameWindow(190,90);
+ Fl_Box* l = new Fl_Box(0, 0, 190, 60, "Really log out?");
+@@ -267,8 +261,8 @@
+ if (fork() == 0) {
+ if (fork() == 0) {
+ close(ConnectionNumber(fl_display));
+- if (name == xtermname) execlp(name, name, "-ut", NULL);
+- else execl(name, name, NULL);
++ if (name == xtermname) execlp(name, name, "-ut", (void*)0);
++ else execl(name, name, (void*)0);
+ fprintf(stderr, "flwm: can't run %s, %s\n", name, strerror(errno));
+ XBell(fl_display, 70);
+ exit(1);
+@@ -299,7 +293,11 @@
+ m.style = 0;
+ #endif
+ m.label(data);
++#if FL_MAJOR_VERSION > 2
++ m.flags = fltk::RAW_LABEL;
++#else
+ m.flags = 0;
++#endif
+ m.labeltype(FL_NORMAL_LABEL);
+ m.shortcut(0);
+ m.labelfont(MENU_FONT_SLOT);
+@@ -444,8 +442,10 @@
+ static char beenhere;
+ if (!beenhere) {
+ beenhere = 1;
++#if FL_MAJOR_VERSION < 2
+ Fl::set_labeltype(FRAME_LABEL, frame_label_draw, frame_label_measure);
+ Fl::set_labeltype(TEXT_LABEL, label_draw, label_measure);
++#endif
+ if (exit_flag) {
+ Fl_Menu_Item* m = other_menu_items+num_other_items-2;
+ m->label("Exit");
+@@ -532,8 +532,12 @@
+ #endif
+ for (c = Frame::first; c; c = c->next) {
+ if (c->state() == UNMAPPED || c->transient_for()) continue;
++#if FL_MAJOR_VERSION < 2
+ init(menu[n],(char*)c);
+ menu[n].labeltype(FRAME_LABEL);
++#else
++ init(menu[n],c->label());
++#endif
+ menu[n].callback(frame_callback, c);
+ if (is_active_frame(c)) preset = menu+n;
+ n++;
+@@ -562,7 +566,12 @@
+ if (c->state() == UNMAPPED || c->transient_for()) continue;
+ if (c->desktop() == d || !c->desktop() && d == Desktop::current()) {
+ init(menu[n],(char*)c);
++#if FL_MAJOR_VERSION < 2
++ init(menu[n],(char*)c);
+ menu[n].labeltype(FRAME_LABEL);
++#else
++ init(menu[n],c->label());
++#endif
+ menu[n].callback(d == Desktop::current() ?
+ frame_callback : move_frame_callback, c);
+ if (d == Desktop::current() && is_active_frame(c)) preset = menu+n;
+@@ -606,13 +615,14 @@
+ cmd = wmxlist[i];
+ cmd += strspn(cmd, "/")-1;
+ init(menu[n], cmd+pathlen[level]);
++#if FL_MAJOR_VERSION < 2
+ #if DESKTOPS
+ if (one_desktop)
+ #endif
+ if (!level)
+ menu[n].labeltype(TEXT_LABEL);
+-
+- int nextlev = (i==num_wmx-1)?0:strspn(wmxlist[i+1], "/")-1;
++#endif
++ int nextlev = (i==num_wmx-1)?0:strspn(wmxlist[i+1], "/")-1;
+ if (nextlev < level) {
+ menu[n].callback(spawn_cb, cmd);
+ // Close 'em off
+@@ -638,15 +648,19 @@
+ #endif
+ #endif
+ memcpy(menu+n, other_menu_items, sizeof(other_menu_items));
++#if FL_MAJOR_VERSION < 2
+ #if DESKTOPS
+ if (one_desktop)
+ #endif
+ // fix the menus items so they are indented to align with window names:
+ while (menu[n].label()) menu[n++].labeltype(TEXT_LABEL);
++#endif
+
+ const Fl_Menu_Item* picked =
+ menu->popup(Fl::event_x(), Fl::event_y(), 0, preset);
++#if FL_MAJOR_VERSION < 2
+ if (picked && picked->callback()) picked->do_callback(0);
++#endif
+ }
+
+ void ShowMenu() {ShowTabMenu(0);}
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/patch-stamp /tmp/KfNDqvamm0/flwm-1.01/patch-stamp
+--- /tmp/8FTwAYJlot/flwm-1.00/patch-stamp 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/patch-stamp 2006-06-30 11:01:41.000000000 +0200
+@@ -1,29 +1,8 @@
+ Patches applied in the Debian version of :
+
+-debian/patches/100_fl_filename_name.dpatch (Tommi Virtanen <tv@debian.org>):
+- Transition from fltk-1.0 to fltk-1.1.
+- Applied upstream.
+-
+-debian/patches/101_visible_focus.dpatch (Bill Allombert <ballombe@debian.org>):
+- Restore fltk-1.0 focus behaviour
+- (Applied upstream)
+-
+-debian/patches/102_charstruct.dpatch (Tommi Virtanen <tv@debian.org>):
+- Support fonts for which fontstruct->per_char is NULL.
+- (Applied upstream).
+-
+-debian/patches/103_man_typo.dpatch (Bill Allombert <ballombe@debian.org>):
+- Fix typo in man page.
+-
+-debian/patches/104_g++-4.1_warning.dpatch (Bill Allombert <ballombe@debian.org>):
+- Fix 5 g++ -4.1 warnings
+-
+-debian/patches/105_double_ampersand.dpatch (Bill Allombert <ballombe@debian.org>):
+- Handle & in window titles correctly in the windows list.
++debian/patches/100_double_ampersand.dpatch (<ballombe@debian.org>):
++ fix handling of ampersand in titles in windows list.
+
+ debian/patches/200_Debian_menu.dpatch (Tommi Virtanen <tv@debian.org>):
+ Add Debian menu support.
+
+-debian/patches/201_background_color.dpatch (Bill Allombert <ballombe@debian.org>):
+- Fix -fg and -bg options
+-
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/README /tmp/KfNDqvamm0/flwm-1.01/README
+--- /tmp/8FTwAYJlot/flwm-1.00/README 1999-08-24 22:59:35.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/README 2001-04-13 17:40:54.000000000 +0200
+@@ -5,7 +5,7 @@
+ ----------------------------------------------------------------
+
+ You need fltk. If you do not have it yet, download it from
+-http://fltk.easysw.com, and compile and install it.
++http://www.fltk.org, and compile and install it.
+
+ To customize flwm (for instance to turn on click-to-type), edit the
+ config.h file.
+@@ -22,21 +22,21 @@
+ How to run flwm:
+ ----------------------------------------------------------------
+
+-Flwm should be run by X when it logs you in. This is done by putting
+-a call to flwm into the file ~/.xinitrc. With any luck you already
+-have this file. If not try copying /usr/X11/lib/X11/xinit/xinitrc.
+-Edit the file and try to remove any call to another window manager
+-(these are usually near the end).
++To run flwm as your login script, you need to create or replace
++~/.xinitrc or ~/.xsession (or both). Newer Linux systems with a login
++panel use .xsession, older systems where X was started after login
++use .xinitrc. You may also have to pick "default" from the "type of
++session" popup in your login window.
+
+-Recommended contents of ~/.xinitrc:
++The .xinitrc or .xsession file should look like this:
+
+ #!/bin/sh
+ xsetroot -solid \#006060
+ xrdb .Xresources
+-# <xset, xmodmap, other configuration programs>
++# xset, xmodmap, other configuration programs
+ flwm &
+ WindowManager=$!
+-# <xterm, other automatically-launched programs>
++# xterm, other automatically-launched programs
+ wait $WindowManager
+
+ ALLOWING THE WINDOW MANAGER TO EXIT W/O LOGOUT:
+diff -Nru /tmp/8FTwAYJlot/flwm-1.00/Rotated.C /tmp/KfNDqvamm0/flwm-1.01/Rotated.C
+--- /tmp/8FTwAYJlot/flwm-1.00/Rotated.C 2006-06-30 11:01:38.000000000 +0200
++++ /tmp/KfNDqvamm0/flwm-1.01/Rotated.C 2005-09-19 06:29:11.000000000 +0200
+@@ -27,6 +27,9 @@
+ /* ********************************************************************** */
+
+ #include <FL/x.H>
++#if FL_MAJOR_VERSION < 2
++# define XWindow Window
++#endif
+ #include <FL/fl_draw.H>
+ #include "Rotated.H"
+ #include <stdlib.h>
+@@ -67,7 +70,7 @@
+ char val;
+ XImage *I1, *I2;
+ Pixmap canvas;
+- Window root;
++ XWindow root;
+ int screen;
+ GC font_gc;
+ char text[3];/*, errstr[300];*/
+@@ -116,27 +119,21 @@
+ /* font needs rotation ... */
+ /* loop through each character ... */
+ for (ichar = min_char; ichar <= max_char; ichar++) {
+- XCharStruct *charstruct;
+
+ index = ichar-fontstruct->min_char_or_byte2;
+
+- if (fontstruct->per_char) {
+- charstruct = &fontstruct->per_char[index];
+- } else {
++ XCharStruct* charstruct;
++ if (fontstruct->per_char)
++ charstruct = fontstruct->per_char+index;
++ else
+ charstruct = &fontstruct->min_bounds;
+- }
+
+ /* per char dimensions ... */
+- ascent = rotfont->per_char[ichar].ascent =
+- charstruct->ascent;
+- descent = rotfont->per_char[ichar].descent =
+- charstruct->descent;
+- lbearing = rotfont->per_char[ichar].lbearing =
+- charstruct->lbearing;
+- rbearing = rotfont->per_char[ichar].rbearing =
+- charstruct->rbearing;
+- rotfont->per_char[ichar].width =
+- charstruct->width;
++ ascent = rotfont->per_char[ichar].ascent = charstruct->ascent;
++ descent = rotfont->per_char[ichar].descent = charstruct->descent;
++ lbearing = rotfont->per_char[ichar].lbearing = charstruct->lbearing;
++ rbearing = rotfont->per_char[ichar].rbearing = charstruct->rbearing;
++ rotfont->per_char[ichar].width = charstruct->width;
+
+ /* some space chars have zero body, but a bitmap can't have ... */
+ if (!ascent && !descent)
+@@ -242,9 +239,9 @@
+ }
+
+ for (ichar = 0; ichar < min_char; ichar++)
+- rotfont->per_char[ichar] = rotfont->per_char[(int)'?'];
++ rotfont->per_char[ichar] = rotfont->per_char[int('?')];
+ for (ichar = max_char+1; ichar < 256; ichar++)
+- rotfont->per_char[ichar] = rotfont->per_char[(int)'?'];
++ rotfont->per_char[ichar] = rotfont->per_char[int('?')];
+
+ /* free pixmap and GC ... */
+ XFreePixmap(dpy, canvas);
+@@ -358,23 +355,25 @@
+
+ static XRotFontStruct* font;
+
+-void draw_rotated(const char* text, int n, int x, int y, int angle) {
+- if (!text || !*text) return;
++static void setrotfont(int angle) {
+ /* make angle positive ... */
+ if (angle < 0) do angle += 360; while (angle < 0);
+ /* get nearest vertical or horizontal direction ... */
+ int dir = ((angle+45)/90)%4;
+-
+- if (font && font->xfontstruct == fl_xfont && font->dir == dir) {
+- ;
+- } else {
+- if (font) XRotUnloadFont(fl_display, font);
+- font = XRotLoadFont(fl_display, fl_xfont, dir);
++ if (font) {
++ if (font->xfontstruct == fl_xfont && font->dir == dir) return;
++ XRotUnloadFont(fl_display, font);
+ }
++ font = XRotLoadFont(fl_display, fl_xfont, dir);
++}
++
++void draw_rotated(const char* text, int n, int x, int y, int angle) {
++ if (!text || !*text) return;
++ setrotfont(angle);
+ XRotDrawString(fl_display, font, fl_window, fl_gc, x, y, text, n);
+ }
+
+-#ifndef FLWM
++#if !defined(FLWM) || FL_MAJOR_VERSION>=2
+ void draw_rotated(const char* text, int x, int y, int angle) {
+ if (!text || !*text) return;
+ draw_rotated(text, strlen(text), x, y, angle);
+@@ -391,12 +390,20 @@
+ if (!str || !*str) return;
+ if (w && h && !fl_not_clipped(x, y, w, h)) return;
+ if (align & FL_ALIGN_CLIP) fl_clip(x, y, w, h);
++#if FL_MAJOR_VERSION>1
++ setrotfont(90);
++ int a = font->xfontstruct->ascent;
++ int d = font->xfontstruct->descent;
++ XRotDrawString(fl_display, font, fl_window, fl_gc,
++ x+(w+a-d+1)/2, y+h, str, strlen(str));
++#else
+ int a1 = align&(-16);
+ if (align & FL_ALIGN_LEFT) a1 |= FL_ALIGN_TOP;
+ if (align & FL_ALIGN_RIGHT) a1 |= FL_ALIGN_BOTTOM;
+ if (align & FL_ALIGN_TOP) a1 |= FL_ALIGN_RIGHT;
+ if (align & FL_ALIGN_BOTTOM) a1 |= FL_ALIGN_LEFT;
+ fl_draw(str, -(y+h), x, h, w, (Fl_Align)a1, draw_rot90);
++#endif
+ if (align & FL_ALIGN_CLIP) fl_pop_clip();
+ }
+
diff --git a/patch_cmds/diffstat/testing/case26.ref b/patch_cmds/diffstat/testing/case26.ref
new file mode 100644
index 0000000..db5bece
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 ++++++++++++++++++++-------
+ Frame.H | 21 +
+ Hotkeys.C | 32 ++
+ Makefile | 2
+ Menu.C | 70 +++---
+ README | 18 -
+ Rotated.C | 61 +++--
+ config.h | 6
+ debian/changelog | 12 +
+ debian/patched/100_double_ampersand.dpatch | 1
+ debian/patched/100_fl_filename_name.dpatch | 2
+ debian/patched/101_visible_focus.dpatch | 1
+ debian/patched/102_charstruct.dpatch | 1
+ debian/patched/103_man_typo.dpatch | 1
+ debian/patched/104_g++-4.1_warning.dpatch | 3
+ debian/patched/105_double_ampersand.dpatch | 1
+ debian/patched/201_background_color.dpatch | 2
+ debian/patches/00list | 8
+ debian/patches/100_double_ampersand.dpatch | 19 +
+ debian/patches/100_fl_filename_name.dpatch | 20 -
+ debian/patches/101_visible_focus.dpatch | 19 -
+ debian/patches/102_charstruct.dpatch | 45 ----
+ debian/patches/103_man_typo.dpatch | 19 -
+ debian/patches/104_g++-4.1_warning.dpatch | 58 -----
+ debian/patches/105_double_ampersand.dpatch | 48 ----
+ debian/patches/200_Debian_menu.dpatch | 14 -
+ debian/patches/201_background_color.dpatch | 57 -----
+ debian/patches/202_background_color_2.dpatch | 92 --------
+ debian/watch | 3
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ logo.fl | 19 +
+ main.C | 99 ++++++---
+ patch-stamp | 25 --
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26R.ref b/patch_cmds/diffstat/testing/case26R.ref
new file mode 100644
index 0000000..17abff8
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26R.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 ++++++---------------------
+ Frame.H | 21 -
+ Hotkeys.C | 32 --
+ Makefile | 2
+ Menu.C | 70 ++----
+ README | 18 -
+ Rotated.C | 61 ++---
+ config.h | 6
+ debian/changelog | 12 -
+ debian/patched/100_double_ampersand.dpatch | 1
+ debian/patched/100_fl_filename_name.dpatch | 2
+ debian/patched/101_visible_focus.dpatch | 1
+ debian/patched/102_charstruct.dpatch | 1
+ debian/patched/103_man_typo.dpatch | 1
+ debian/patched/104_g++-4.1_warning.dpatch | 3
+ debian/patched/105_double_ampersand.dpatch | 1
+ debian/patched/201_background_color.dpatch | 2
+ debian/patches/00list | 8
+ debian/patches/100_double_ampersand.dpatch | 19 -
+ debian/patches/100_fl_filename_name.dpatch | 20 +
+ debian/patches/101_visible_focus.dpatch | 19 +
+ debian/patches/102_charstruct.dpatch | 45 ++++
+ debian/patches/103_man_typo.dpatch | 19 +
+ debian/patches/104_g++-4.1_warning.dpatch | 58 +++++
+ debian/patches/105_double_ampersand.dpatch | 48 ++++
+ debian/patches/200_Debian_menu.dpatch | 14 -
+ debian/patches/201_background_color.dpatch | 57 +++++
+ debian/patches/202_background_color_2.dpatch | 92 ++++++++
+ debian/watch | 3
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ logo.fl | 19 -
+ main.C | 99 ++-------
+ patch-stamp | 25 ++
+ 34 files changed, 583 insertions(+), 498 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26Rp0.ref b/patch_cmds/diffstat/testing/case26Rp0.ref
new file mode 100644
index 0000000..1998e37
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26Rp0.ref
@@ -0,0 +1,35 @@
+ /tmp/8FTwAYJlot/flwm-1.00/Frame.C | 294 ++--------
+ /tmp/8FTwAYJlot/flwm-1.00/Frame.H | 21
+ /tmp/8FTwAYJlot/flwm-1.00/Hotkeys.C | 32 -
+ /tmp/8FTwAYJlot/flwm-1.00/Makefile | 2
+ /tmp/8FTwAYJlot/flwm-1.00/Menu.C | 70 --
+ /tmp/8FTwAYJlot/flwm-1.00/README | 18
+ /tmp/8FTwAYJlot/flwm-1.00/Rotated.C | 61 --
+ /tmp/8FTwAYJlot/flwm-1.00/config.h | 6
+ /tmp/8FTwAYJlot/flwm-1.00/debian/changelog | 12
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/100_double_ampersand.dpatch | 1
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/100_fl_filename_name.dpatch | 2
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/101_visible_focus.dpatch | 1
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/102_charstruct.dpatch | 1
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/103_man_typo.dpatch | 1
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/104_g++-4.1_warning.dpatch | 3
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/105_double_ampersand.dpatch | 1
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patched/201_background_color.dpatch | 2
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/00list | 8
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/100_double_ampersand.dpatch | 19
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/100_fl_filename_name.dpatch | 20
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/101_visible_focus.dpatch | 19
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/102_charstruct.dpatch | 45 +
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/103_man_typo.dpatch | 19
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/104_g++-4.1_warning.dpatch | 58 +
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/105_double_ampersand.dpatch | 48 +
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/200_Debian_menu.dpatch | 14
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/201_background_color.dpatch | 57 +
+ /tmp/8FTwAYJlot/flwm-1.00/debian/patches/202_background_color_2.dpatch | 92 +++
+ /tmp/8FTwAYJlot/flwm-1.00/debian/watch | 3
+ /tmp/8FTwAYJlot/flwm-1.00/flwm.1 | 4
+ /tmp/8FTwAYJlot/flwm-1.00/flwm_wmconfig | 4
+ /tmp/8FTwAYJlot/flwm-1.00/logo.fl | 19
+ /tmp/8FTwAYJlot/flwm-1.00/main.C | 99 ---
+ /tmp/8FTwAYJlot/flwm-1.00/patch-stamp | 25
+ 34 files changed, 583 insertions(+), 498 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26b.ref b/patch_cmds/diffstat/testing/case26b.ref
new file mode 100644
index 0000000..db5bece
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26b.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 ++++++++++++++++++++-------
+ Frame.H | 21 +
+ Hotkeys.C | 32 ++
+ Makefile | 2
+ Menu.C | 70 +++---
+ README | 18 -
+ Rotated.C | 61 +++--
+ config.h | 6
+ debian/changelog | 12 +
+ debian/patched/100_double_ampersand.dpatch | 1
+ debian/patched/100_fl_filename_name.dpatch | 2
+ debian/patched/101_visible_focus.dpatch | 1
+ debian/patched/102_charstruct.dpatch | 1
+ debian/patched/103_man_typo.dpatch | 1
+ debian/patched/104_g++-4.1_warning.dpatch | 3
+ debian/patched/105_double_ampersand.dpatch | 1
+ debian/patched/201_background_color.dpatch | 2
+ debian/patches/00list | 8
+ debian/patches/100_double_ampersand.dpatch | 19 +
+ debian/patches/100_fl_filename_name.dpatch | 20 -
+ debian/patches/101_visible_focus.dpatch | 19 -
+ debian/patches/102_charstruct.dpatch | 45 ----
+ debian/patches/103_man_typo.dpatch | 19 -
+ debian/patches/104_g++-4.1_warning.dpatch | 58 -----
+ debian/patches/105_double_ampersand.dpatch | 48 ----
+ debian/patches/200_Debian_menu.dpatch | 14 -
+ debian/patches/201_background_color.dpatch | 57 -----
+ debian/patches/202_background_color_2.dpatch | 92 --------
+ debian/watch | 3
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ logo.fl | 19 +
+ main.C | 99 ++++++---
+ patch-stamp | 25 --
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26f0.ref b/patch_cmds/diffstat/testing/case26f0.ref
new file mode 100644
index 0000000..6c70fb3
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26f0.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 221 + 73 - 0 !
+ Frame.H | 21 13 + 8 - 0 !
+ Hotkeys.C | 32 31 + 1 - 0 !
+ Makefile | 2 1 + 1 - 0 !
+ Menu.C | 70 42 + 28 - 0 !
+ README | 18 9 + 9 - 0 !
+ Rotated.C | 61 34 + 27 - 0 !
+ config.h | 6 6 + 0 - 0 !
+ debian/changelog | 12 12 + 0 - 0 !
+ debian/patched/100_double_ampersand.dpatch | 1 1 + 0 - 0 !
+ debian/patched/100_fl_filename_name.dpatch | 2 0 + 2 - 0 !
+ debian/patched/101_visible_focus.dpatch | 1 0 + 1 - 0 !
+ debian/patched/102_charstruct.dpatch | 1 0 + 1 - 0 !
+ debian/patched/103_man_typo.dpatch | 1 0 + 1 - 0 !
+ debian/patched/104_g++-4.1_warning.dpatch | 3 0 + 3 - 0 !
+ debian/patched/105_double_ampersand.dpatch | 1 0 + 1 - 0 !
+ debian/patched/201_background_color.dpatch | 2 0 + 2 - 0 !
+ debian/patches/00list | 8 1 + 7 - 0 !
+ debian/patches/100_double_ampersand.dpatch | 19 19 + 0 - 0 !
+ debian/patches/100_fl_filename_name.dpatch | 20 0 + 20 - 0 !
+ debian/patches/101_visible_focus.dpatch | 19 0 + 19 - 0 !
+ debian/patches/102_charstruct.dpatch | 45 0 + 45 - 0 !
+ debian/patches/103_man_typo.dpatch | 19 0 + 19 - 0 !
+ debian/patches/104_g++-4.1_warning.dpatch | 58 0 + 58 - 0 !
+ debian/patches/105_double_ampersand.dpatch | 48 0 + 48 - 0 !
+ debian/patches/200_Debian_menu.dpatch | 14 7 + 7 - 0 !
+ debian/patches/201_background_color.dpatch | 57 0 + 57 - 0 !
+ debian/patches/202_background_color_2.dpatch | 92 0 + 92 - 0 !
+ debian/watch | 3 3 + 0 - 0 !
+ flwm.1 | 4 2 + 2 - 0 !
+ flwm_wmconfig | 4 3 + 1 - 0 !
+ logo.fl | 19 19 + 0 - 0 !
+ main.C | 99 72 + 27 - 0 !
+ patch-stamp | 25 2 + 23 - 0 !
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26k.ref b/patch_cmds/diffstat/testing/case26k.ref
new file mode 100644
index 0000000..db5bece
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26k.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 ++++++++++++++++++++-------
+ Frame.H | 21 +
+ Hotkeys.C | 32 ++
+ Makefile | 2
+ Menu.C | 70 +++---
+ README | 18 -
+ Rotated.C | 61 +++--
+ config.h | 6
+ debian/changelog | 12 +
+ debian/patched/100_double_ampersand.dpatch | 1
+ debian/patched/100_fl_filename_name.dpatch | 2
+ debian/patched/101_visible_focus.dpatch | 1
+ debian/patched/102_charstruct.dpatch | 1
+ debian/patched/103_man_typo.dpatch | 1
+ debian/patched/104_g++-4.1_warning.dpatch | 3
+ debian/patched/105_double_ampersand.dpatch | 1
+ debian/patched/201_background_color.dpatch | 2
+ debian/patches/00list | 8
+ debian/patches/100_double_ampersand.dpatch | 19 +
+ debian/patches/100_fl_filename_name.dpatch | 20 -
+ debian/patches/101_visible_focus.dpatch | 19 -
+ debian/patches/102_charstruct.dpatch | 45 ----
+ debian/patches/103_man_typo.dpatch | 19 -
+ debian/patches/104_g++-4.1_warning.dpatch | 58 -----
+ debian/patches/105_double_ampersand.dpatch | 48 ----
+ debian/patches/200_Debian_menu.dpatch | 14 -
+ debian/patches/201_background_color.dpatch | 57 -----
+ debian/patches/202_background_color_2.dpatch | 92 --------
+ debian/watch | 3
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ logo.fl | 19 +
+ main.C | 99 ++++++---
+ patch-stamp | 25 --
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26p1.ref b/patch_cmds/diffstat/testing/case26p1.ref
new file mode 100644
index 0000000..909791a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26p1.ref
@@ -0,0 +1,35 @@
+ tmp/KfNDqvamm0/flwm-1.01/Frame.C | 294 +++++++---
+ tmp/KfNDqvamm0/flwm-1.01/Frame.H | 21
+ tmp/KfNDqvamm0/flwm-1.01/Hotkeys.C | 32 +
+ tmp/KfNDqvamm0/flwm-1.01/Makefile | 2
+ tmp/KfNDqvamm0/flwm-1.01/Menu.C | 70 +-
+ tmp/KfNDqvamm0/flwm-1.01/README | 18
+ tmp/KfNDqvamm0/flwm-1.01/Rotated.C | 61 +-
+ tmp/KfNDqvamm0/flwm-1.01/config.h | 6
+ tmp/KfNDqvamm0/flwm-1.01/debian/changelog | 12
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/100_double_ampersand.dpatch | 1
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/100_fl_filename_name.dpatch | 2
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/101_visible_focus.dpatch | 1
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/102_charstruct.dpatch | 1
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/103_man_typo.dpatch | 1
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/104_g++-4.1_warning.dpatch | 3
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/105_double_ampersand.dpatch | 1
+ tmp/KfNDqvamm0/flwm-1.01/debian/patched/201_background_color.dpatch | 2
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/00list | 8
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/100_double_ampersand.dpatch | 19
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/100_fl_filename_name.dpatch | 20
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/101_visible_focus.dpatch | 19
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/102_charstruct.dpatch | 45 -
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/103_man_typo.dpatch | 19
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/104_g++-4.1_warning.dpatch | 58 -
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/105_double_ampersand.dpatch | 48 -
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/200_Debian_menu.dpatch | 14
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/201_background_color.dpatch | 57 -
+ tmp/KfNDqvamm0/flwm-1.01/debian/patches/202_background_color_2.dpatch | 92 ---
+ tmp/KfNDqvamm0/flwm-1.01/debian/watch | 3
+ tmp/KfNDqvamm0/flwm-1.01/flwm.1 | 4
+ tmp/KfNDqvamm0/flwm-1.01/flwm_wmconfig | 4
+ tmp/KfNDqvamm0/flwm-1.01/logo.fl | 19
+ tmp/KfNDqvamm0/flwm-1.01/main.C | 99 ++-
+ tmp/KfNDqvamm0/flwm-1.01/patch-stamp | 25
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26p9.ref b/patch_cmds/diffstat/testing/case26p9.ref
new file mode 100644
index 0000000..54ad0ed
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26p9.ref
@@ -0,0 +1,27 @@
+ 00list | 8 -
+ 100_double_ampersand.dpatch | 20 ++
+ 100_fl_filename_name.dpatch | 22 ---
+ 101_visible_focus.dpatch | 20 --
+ 102_charstruct.dpatch | 46 ------
+ 103_man_typo.dpatch | 20 --
+ 104_g++-4.1_warning.dpatch | 61 --------
+ 105_double_ampersand.dpatch | 49 -------
+ 200_Debian_menu.dpatch | 14 +-
+ 201_background_color.dpatch | 59 --------
+ 202_background_color_2.dpatch | 92 -------------
+ Frame.C | 294 +++++++++++++++++++++++++++++++-----------
+ Frame.H | 21 +--
+ Hotkeys.C | 32 ++++
+ Makefile | 2
+ Menu.C | 70 ++++++----
+ README | 18 +-
+ Rotated.C | 61 ++++----
+ changelog | 12 +
+ config.h | 6
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ logo.fl | 19 ++
+ main.C | 99 ++++++++++----
+ patch-stamp | 25 ---
+ watch | 3
+ 26 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26r1.ref b/patch_cmds/diffstat/testing/case26r1.ref
new file mode 100644
index 0000000..e28a9fd
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26r1.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 ++++++++++++++++++++-------
+ Frame.H | 21 +-
+ Hotkeys.C | 32 +++
+ Makefile | 2
+ Menu.C | 70 ++++---
+ README | 18 +-
+ Rotated.C | 61 +++--
+ config.h | 6 +
+ debian/changelog | 12 +
+ debian/patched/100_double_ampersand.dpatch | 1
+ debian/patched/100_fl_filename_name.dpatch | 2
+ debian/patched/101_visible_focus.dpatch | 1
+ debian/patched/102_charstruct.dpatch | 1
+ debian/patched/103_man_typo.dpatch | 1
+ debian/patched/104_g++-4.1_warning.dpatch | 3
+ debian/patched/105_double_ampersand.dpatch | 1
+ debian/patched/201_background_color.dpatch | 2
+ debian/patches/00list | 8 -
+ debian/patches/100_double_ampersand.dpatch | 19 ++
+ debian/patches/100_fl_filename_name.dpatch | 20 --
+ debian/patches/101_visible_focus.dpatch | 19 --
+ debian/patches/102_charstruct.dpatch | 45 ----
+ debian/patches/103_man_typo.dpatch | 19 --
+ debian/patches/104_g++-4.1_warning.dpatch | 58 -----
+ debian/patches/105_double_ampersand.dpatch | 48 ----
+ debian/patches/200_Debian_menu.dpatch | 14 +-
+ debian/patches/201_background_color.dpatch | 57 -----
+ debian/patches/202_background_color_2.dpatch | 92 --------
+ debian/watch | 3
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ logo.fl | 19 ++
+ main.C | 99 +++++++--
+ patch-stamp | 25 --
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26r2.ref b/patch_cmds/diffstat/testing/case26r2.ref
new file mode 100644
index 0000000..4566808
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26r2.ref
@@ -0,0 +1,35 @@
+ Frame.C | 294 ++++++++++++++++++++-------
+ Frame.H | 21 +-
+ Hotkeys.C | 32 +++
+ Makefile | 2
+ Menu.C | 70 ++++--
+ README | 18 +-
+ Rotated.C | 61 +++---
+ config.h | 6 +
+ debian/changelog | 12 +
+ debian/patched/100_double_ampersand.dpatch | 1 +
+ debian/patched/100_fl_filename_name.dpatch | 2 -
+ debian/patched/101_visible_focus.dpatch | 1 -
+ debian/patched/102_charstruct.dpatch | 1 -
+ debian/patched/103_man_typo.dpatch | 1 -
+ debian/patched/104_g++-4.1_warning.dpatch | 3 -
+ debian/patched/105_double_ampersand.dpatch | 1 -
+ debian/patched/201_background_color.dpatch | 2 -
+ debian/patches/00list | 8 -
+ debian/patches/100_double_ampersand.dpatch | 19 ++
+ debian/patches/100_fl_filename_name.dpatch | 20 --
+ debian/patches/101_visible_focus.dpatch | 19 --
+ debian/patches/102_charstruct.dpatch | 45 ----
+ debian/patches/103_man_typo.dpatch | 19 --
+ debian/patches/104_g++-4.1_warning.dpatch | 58 -----
+ debian/patches/105_double_ampersand.dpatch | 48 ----
+ debian/patches/200_Debian_menu.dpatch | 14
+ debian/patches/201_background_color.dpatch | 57 -----
+ debian/patches/202_background_color_2.dpatch | 92 --------
+ debian/watch | 3 +
+ flwm.1 | 4
+ flwm_wmconfig | 4 +
+ logo.fl | 19 ++
+ main.C | 99 +++++++--
+ patch-stamp | 25 --
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case26u.ref b/patch_cmds/diffstat/testing/case26u.ref
new file mode 100644
index 0000000..ab44c89
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case26u.ref
@@ -0,0 +1,35 @@
+ config.h | 6
+ debian/changelog | 12 +
+ debian/patched/100_double_ampersand.dpatch | 1
+ debian/patched/100_fl_filename_name.dpatch | 2
+ debian/patched/101_visible_focus.dpatch | 1
+ debian/patched/102_charstruct.dpatch | 1
+ debian/patched/103_man_typo.dpatch | 1
+ debian/patched/104_g++-4.1_warning.dpatch | 3
+ debian/patched/105_double_ampersand.dpatch | 1
+ debian/patched/201_background_color.dpatch | 2
+ debian/patches/00list | 8
+ debian/patches/100_double_ampersand.dpatch | 19 +
+ debian/patches/100_fl_filename_name.dpatch | 20 -
+ debian/patches/101_visible_focus.dpatch | 19 -
+ debian/patches/102_charstruct.dpatch | 45 ----
+ debian/patches/103_man_typo.dpatch | 19 -
+ debian/patches/104_g++-4.1_warning.dpatch | 58 -----
+ debian/patches/105_double_ampersand.dpatch | 48 ----
+ debian/patches/200_Debian_menu.dpatch | 14 -
+ debian/patches/201_background_color.dpatch | 57 -----
+ debian/patches/202_background_color_2.dpatch | 92 --------
+ debian/watch | 3
+ flwm.1 | 4
+ flwm_wmconfig | 4
+ Frame.C | 294 ++++++++++++++++++++-------
+ Frame.H | 21 +
+ Hotkeys.C | 32 ++
+ logo.fl | 19 +
+ main.C | 99 ++++++---
+ Makefile | 2
+ Menu.C | 70 +++---
+ patch-stamp | 25 --
+ README | 18 -
+ Rotated.C | 61 +++--
+ 34 files changed, 498 insertions(+), 583 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27.pat b/patch_cmds/diffstat/testing/case27.pat
new file mode 100644
index 0000000..f90bd44
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27.pat
@@ -0,0 +1,409 @@
+From bunk@kernel.org Fri Aug 24 01:11:51 2007
+From: Adrian Bunk <bunk@kernel.org>
+To: Andrew Morton <akpm@linux-foundation.org>,
+ Ram Pai <linuxram@us.ibm.com>, Sam Ravnborg <sam@ravnborg.org>
+Cc: linux-kernel@vger.kernel.org
+Subject: [2.6 patch] fix export_report.pl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: inline
+X-Mutt-Fcc: =sent-mail
+Status: RO
+Content-Length: 466
+Lines: 22
+
+This patch fixes an annoying bug of export_report.pl missing the usages
+of some exports.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+
+This patch has been sent on:
+- 14 Aug 2007
+
+--- a/scripts/export_report.pl
++++ b/scripts/export_report.pl
+@@ -112,7 +112,7 @@ foreach my $thismod (@allcfiles) {
+ next;
+ }
+ if ($state eq 2) {
+- if ( $_ !~ /0x[0-9a-f]{7,8},/ ) {
++ if ( $_ !~ /0x[0-9a-f]+,/ ) {
+ next;
+ }
+ my $sym = (split /([,"])/,)[4];
+
+
+From bunk@kernel.org Fri Aug 24 01:13:29 2007
+From: Adrian Bunk <bunk@kernel.org>
+To: Andrew Morton <akpm@linux-foundation.org>,
+ Ram Pai <linuxram@us.ibm.com>, Sam Ravnborg <sam@ravnborg.org>
+Cc: linux-kernel@vger.kernel.org
+Subject: [2.6 patch] call export_report from the Makefile
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: inline
+X-Mutt-Fcc: =sent-mail
+Status: RO
+Content-Length: 827
+Lines: 31
+
+The main feature is that export_report now automatically works
+for O= builds.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+
+This patch has been sent on:
+- 14 Aug 2007
+
+--- a/Makefile
++++ b/Makefile
+@@ -1153,6 +1153,7 @@ help:
+ @echo 'Static analysers'
+ @echo ' checkstack - Generate a list of stack hogs'
+ @echo ' namespacecheck - Name space analysis on compiled kernel'
++ @echo ' export_report - List the usages of all exported symbols'
+ @if [ -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
+ echo ' headers_check - Sanity check on exported headers'; \
+ fi
+@@ -1412,6 +1413,9 @@ versioncheck:
+ namespacecheck:
+ $(PERL) $(srctree)/scripts/namespace.pl
+
++export_report:
++ $(PERL) $(srctree)/scripts/export_report.pl
++
+ endif #ifeq ($(config-targets),1)
+ endif #ifeq ($(mixed-targets),1)
+
+
+
+From bunk@kernel.org Fri Aug 24 04:43:31 2007
+From: Adrian Bunk <bunk@kernel.org>
+To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
+ Andrew Morton <akpm@linux-foundation.org>,
+ linux-input@atrey.karlin.mff.cuni.cz, linux-kernel@vger.kernel.org,
+ dtor@mail.ru, Jiri Kosina <jkosina@suse.cz>
+Subject: Re: [PATCH] Console keyboard events and accessibility
+References: <20070821005718.GD3658@interface.famille.thibault.fr> <20070821130233.58faaa8a.akpm@linux-foundation.org> <20070821202251.GB3658@interface.famille.thibault.fr>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: inline
+Content-Transfer-Encoding: 8bit
+In-Reply-To: <20070821202251.GB3658@interface.famille.thibault.fr>
+X-Mutt-References: <20070821202251.GB3658@interface.famille.thibault.fr>
+X-Mutt-Fcc: =sent-mail
+Status: RO
+Content-Length: 2121
+Lines: 57
+
+On Tue, Aug 21, 2007 at 10:22:51PM +0200, Samuel Thibault wrote:
+> Hi,
+>
+> Andrew Morton, le Tue 21 Aug 2007 13:02:33 -0700, a écrit :
+> > On Tue, 21 Aug 2007 02:57:18 +0200
+> > Samuel Thibault <samuel.thibault@ens-lyon.org> wrote:
+> >
+> > > Some external modules like Speakup need to use the PC keyboard to control
+> > > them and also need to get keyboard feedback (caps lock status, etc.)
+> > >
+> > > This adds a keyboard notifier that such modules can use to get the keyboard
+> > > events and possibly eat them, at several stages:
+> >
+> > Adding hooks for non-merged modules is considered sinful. Making these new
+> > exports EXPORT_SYMBOL_GPL might ease the pain.
+>
+> That should be fine.
+>
+> I'll soon propose a notifier for the console writes too, same story.
+>
+> > Is there any prospect of getting at least one of these "external modules
+> > like Speakup" merged into mainline?
+>
+> I'm working on it. The problem is that the current code quality is
+> still far from mainline requirements (though improving over time). This
+> hook (and the other one I'll post) is a step toward merging. If these
+> hooks can go mainline, then great, that will make life easier for the
+> few distributions that want to provide speakup as modules.
+
+How long does it take you for getting the first users submitted for
+review? If you are working on it it should be in the order of "a few
+months", and earlier merging would anyway gain you only one or two
+kernel releases.
+
+> If they
+> remain in -mm for some time and people don't complain, well that's good
+> too: at least we know how speakup may hook into the kernel when it gets
+> merged.
+>...
+
+Without any users it's dead code noone uses, and complaints will most
+likely not occur until you submit the first users for review...
+
+> Samuel
+
+cu
+Adrian
+
+BTW: Are these the speakup patches that were in -ac five years ago?
+
+--
+
+ "Is there not promise of rain?" Ling Tan asked suddenly out
+ of the darkness. There had been need of rain for many days.
+ "Only a promise," Lao Er said.
+ Pearl S. Buck - Dragon Seed
+
+
+From bunk@kernel.org Fri Aug 24 04:50:47 2007
+From: Adrian Bunk <bunk@kernel.org>
+To: Andrew Morton <akpm@linux-foundation.org>,
+ Adam Belay <abelay@novell.com>,
+ Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
+ Shaohua Li <shaohua.li@intel.com>
+Cc: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org
+Subject: [-mm patch] make "struct menu_governor" static (again)
+References: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: inline
+In-Reply-To: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+X-Mutt-References: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+X-Mutt-Fcc: =sent-mail
+Status: RO
+Content-Length: 740
+Lines: 29
+
+On Wed, Aug 22, 2007 at 02:06:48AM -0700, Andrew Morton wrote:
+>...
+> Changes since 2.6.23-rc2-mm2:
+>...
+> git-acpi.patch
+>...
+> git trees
+>...
+
+"struct menu_governor" needlessly again became global.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+cb33b296204127cf50df54b84b2d79e152fb924b
+diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
+index f5a8865..8d3fdc5 100644
+--- a/drivers/cpuidle/governors/menu.c
++++ b/drivers/cpuidle/governors/menu.c
+@@ -117,7 +117,7 @@ static int menu_enable_device(struct cpuidle_device *dev)
+ return 0;
+ }
+
+-struct cpuidle_governor menu_governor = {
++static struct cpuidle_governor menu_governor = {
+ .name = "menu",
+ .rating = 20,
+ .enable = menu_enable_device,
+
+
+From bunk@kernel.org Fri Aug 24 05:01:58 2007
+From: Adrian Bunk <bunk@kernel.org>
+To: Andrew Morton <akpm@linux-foundation.org>,
+ "Eric W. Biederman" <ebiederm@xmission.com>
+Cc: linux-kernel@vger.kernel.org
+Subject: [-mm patch] remove parport_device_num()
+References: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: inline
+In-Reply-To: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+X-Mutt-References: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+X-Mutt-Fcc: =sent-mail
+Status: RO
+Content-Length: 3917
+Lines: 135
+
+On Wed, Aug 22, 2007 at 02:06:48AM -0700, Andrew Morton wrote:
+>...
+> Changes since 2.6.23-rc2-mm2:
+>...
+> +sysctl-parport-remove-binary-paths.patch
+>...
+> More sysctl work
+>...
+
+parport_device_num() is no longer used.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+
+ Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ drivers/parport/daisy.c | 29 -----------------------------
+ include/linux/parport.h | 1 -
+ 3 files changed, 3 insertions(+), 56 deletions(-)
+
+0066510df2b5d4972cfd6a4450af8b82c763adfd
+diff --git a/Documentation/parport-lowlevel.txt b/Documentation/parport-lowlevel.txt
+index 8f23024..265fcdc 100644
+--- a/Documentation/parport-lowlevel.txt
++++ b/Documentation/parport-lowlevel.txt
+@@ -25,7 +25,6 @@ Global functions:
+ parport_open
+ parport_close
+ parport_device_id
+- parport_device_num
+ parport_device_coords
+ parport_find_class
+ parport_find_device
+@@ -735,7 +734,7 @@ NULL is returned.
+
+ SEE ALSO
+
+-parport_register_device, parport_device_num
++parport_register_device
+
+ parport_close - unregister device for particular device number
+ -------------
+@@ -787,29 +786,7 @@ Many devices have ill-formed IEEE 1284 Device IDs.
+
+ SEE ALSO
+
+-parport_find_class, parport_find_device, parport_device_num
+-
+-parport_device_num - convert device coordinates to device number
+-------------------
+-
+-SYNOPSIS
+-
+-#include <linux/parport.h>
+-
+-int parport_device_num (int parport, int mux, int daisy);
+-
+-DESCRIPTION
+-
+-Convert between device coordinates (port, multiplexor, daisy chain
+-address) and device number (zero-based).
+-
+-RETURN VALUE
+-
+-Device number, or -1 if no device at given coordinates.
+-
+-SEE ALSO
+-
+-parport_device_coords, parport_open, parport_device_id
++parport_find_class, parport_find_device
+
+ parport_device_coords - convert device number to device coordinates
+ ------------------
+@@ -833,7 +810,7 @@ Zero on success, in which case the coordinates are (*parport, *mux,
+
+ SEE ALSO
+
+-parport_device_num, parport_open, parport_device_id
++parport_open, parport_device_id
+
+ parport_find_class - find a device by its class
+ ------------------
+diff --git a/drivers/parport/daisy.c b/drivers/parport/daisy.c
+index ff9f344..5bbff20 100644
+--- a/drivers/parport/daisy.c
++++ b/drivers/parport/daisy.c
+@@ -275,35 +275,6 @@ void parport_close(struct pardevice *dev)
+ parport_unregister_device(dev);
+ }
+
+-/**
+- * parport_device_num - convert device coordinates
+- * @parport: parallel port number
+- * @mux: multiplexor port number (-1 for no multiplexor)
+- * @daisy: daisy chain address (-1 for no daisy chain address)
+- *
+- * This tries to locate a device on the given parallel port,
+- * multiplexor port and daisy chain address, and returns its
+- * device number or %-ENXIO if no device with those coordinates
+- * exists.
+- **/
+-
+-int parport_device_num(int parport, int mux, int daisy)
+-{
+- int res = -ENXIO;
+- struct daisydev *dev;
+-
+- spin_lock(&topology_lock);
+- dev = topology;
+- while (dev && dev->port->portnum != parport &&
+- dev->port->muxport != mux && dev->daisy != daisy)
+- dev = dev->next;
+- if (dev)
+- res = dev->devnum;
+- spin_unlock(&topology_lock);
+-
+- return res;
+-}
+-
+ /* Send a daisy-chain-style CPP command packet. */
+ static int cpp_daisy(struct parport *port, int cmd)
+ {
+diff --git a/include/linux/parport.h b/include/linux/parport.h
+index 9cdd694..ec3f765 100644
+--- a/include/linux/parport.h
++++ b/include/linux/parport.h
+@@ -510,7 +510,6 @@ extern struct pardevice *parport_open (int devnum, const char *name,
+ int flags, void *handle);
+ extern void parport_close (struct pardevice *dev);
+ extern ssize_t parport_device_id (int devnum, char *buffer, size_t len);
+-extern int parport_device_num (int parport, int mux, int daisy);
+ extern void parport_daisy_deselect_all (struct parport *port);
+ extern int parport_daisy_select (struct parport *port, int daisy, int mode);
+
+
+
+From bunk@kernel.org Fri Aug 24 05:07:37 2007
+From: Adrian Bunk <bunk@kernel.org>
+To: Andrew Morton <akpm@linux-foundation.org>,
+ Chris Wright <chrisw@sous-sol.org>
+Cc: linux-kernel@vger.kernel.org
+Subject: [-mm patch] make do_restart_poll() static
+References: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Disposition: inline
+In-Reply-To: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+X-Mutt-References: <20070822020648.5ea3a612.akpm@linux-foundation.org>
+X-Mutt-Fcc: =sent-mail
+Status: RO
+Content-Length: 728
+Lines: 29
+
+On Wed, Aug 22, 2007 at 02:06:48AM -0700, Andrew Morton wrote:
+>...
+> Changes since 2.6.23-rc2-mm2:
+>...
+> +use-erestart_restartblock-if-poll-is-interrupted-by-a-signal.patch
+>...
+> The infamous misc
+>...
+
+do_restart_poll() can become static.
+
+Signed-off-by: Adrian Bunk <bunk@kernel.org>
+
+---
+59cd2d11f5f0189973bb280c59262eb50984cb88
+diff --git a/fs/select.c b/fs/select.c
+index 5a3ab01..3e515aa 100644
+--- a/fs/select.c
++++ b/fs/select.c
+@@ -711,7 +711,7 @@ out_fds:
+ return err;
+ }
+
+-long do_restart_poll(struct restart_block *restart_block)
++static long do_restart_poll(struct restart_block *restart_block)
+ {
+ struct pollfd __user *ufds = (struct pollfd __user*)restart_block->arg0;
+ int nfds = restart_block->arg1;
+
+
diff --git a/patch_cmds/diffstat/testing/case27.ref b/patch_cmds/diffstat/testing/case27.ref
new file mode 100644
index 0000000..1a49489
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 ++++
+ b/Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ b/drivers/cpuidle/governors/menu.c | 2 +-
+ b/drivers/parport/daisy.c | 29 -----------------------------
+ b/fs/select.c | 2 +-
+ b/include/linux/parport.h | 1 -
+ scripts/export_report.pl | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27R.ref b/patch_cmds/diffstat/testing/case27R.ref
new file mode 100644
index 0000000..9adf7c2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27R.ref
@@ -0,0 +1,8 @@
+ a/Documentation/parport-lowlevel.txt | 29 ++++++++++++++++++++++++++---
+ a/drivers/cpuidle/governors/menu.c | 2 +-
+ a/drivers/parport/daisy.c | 29 +++++++++++++++++++++++++++++
+ a/fs/select.c | 2 +-
+ a/include/linux/parport.h | 1 +
+ a/scripts/export_report.pl | 2 +-
+ b/Makefile | 4 ----
+ 7 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27Rp0.ref b/patch_cmds/diffstat/testing/case27Rp0.ref
new file mode 100644
index 0000000..9adf7c2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27Rp0.ref
@@ -0,0 +1,8 @@
+ a/Documentation/parport-lowlevel.txt | 29 ++++++++++++++++++++++++++---
+ a/drivers/cpuidle/governors/menu.c | 2 +-
+ a/drivers/parport/daisy.c | 29 +++++++++++++++++++++++++++++
+ a/fs/select.c | 2 +-
+ a/include/linux/parport.h | 1 +
+ a/scripts/export_report.pl | 2 +-
+ b/Makefile | 4 ----
+ 7 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27b.ref b/patch_cmds/diffstat/testing/case27b.ref
new file mode 100644
index 0000000..1a49489
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27b.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 ++++
+ b/Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ b/drivers/cpuidle/governors/menu.c | 2 +-
+ b/drivers/parport/daisy.c | 29 -----------------------------
+ b/fs/select.c | 2 +-
+ b/include/linux/parport.h | 1 -
+ scripts/export_report.pl | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27f0.ref b/patch_cmds/diffstat/testing/case27f0.ref
new file mode 100644
index 0000000..87c5d63
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27f0.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 4 + 0 - 0 !
+ b/Documentation/parport-lowlevel.txt | 29 3 + 26 - 0 !
+ b/drivers/cpuidle/governors/menu.c | 2 1 + 1 - 0 !
+ b/drivers/parport/daisy.c | 29 0 + 29 - 0 !
+ b/fs/select.c | 2 1 + 1 - 0 !
+ b/include/linux/parport.h | 1 0 + 1 - 0 !
+ scripts/export_report.pl | 2 1 + 1 - 0 !
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27k.ref b/patch_cmds/diffstat/testing/case27k.ref
new file mode 100644
index 0000000..1a49489
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27k.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 ++++
+ b/Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ b/drivers/cpuidle/governors/menu.c | 2 +-
+ b/drivers/parport/daisy.c | 29 -----------------------------
+ b/fs/select.c | 2 +-
+ b/include/linux/parport.h | 1 -
+ scripts/export_report.pl | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27p1.ref b/patch_cmds/diffstat/testing/case27p1.ref
new file mode 100644
index 0000000..5e90eec
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27p1.ref
@@ -0,0 +1,8 @@
+ Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ Makefile | 4 ++++
+ drivers/cpuidle/governors/menu.c | 2 +-
+ drivers/parport/daisy.c | 29 -----------------------------
+ fs/select.c | 2 +-
+ include/linux/parport.h | 1 -
+ scripts/export_report.pl | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27p9.ref b/patch_cmds/diffstat/testing/case27p9.ref
new file mode 100644
index 0000000..9f61d61
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27p9.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 ++++
+ daisy.c | 29 -----------------------------
+ export_report.pl | 2 +-
+ menu.c | 2 +-
+ parport-lowlevel.txt | 29 +++--------------------------
+ parport.h | 1 -
+ select.c | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27r1.ref b/patch_cmds/diffstat/testing/case27r1.ref
new file mode 100644
index 0000000..1a49489
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27r1.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 ++++
+ b/Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ b/drivers/cpuidle/governors/menu.c | 2 +-
+ b/drivers/parport/daisy.c | 29 -----------------------------
+ b/fs/select.c | 2 +-
+ b/include/linux/parport.h | 1 -
+ scripts/export_report.pl | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27r2.ref b/patch_cmds/diffstat/testing/case27r2.ref
new file mode 100644
index 0000000..1a49489
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27r2.ref
@@ -0,0 +1,8 @@
+ Makefile | 4 ++++
+ b/Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ b/drivers/cpuidle/governors/menu.c | 2 +-
+ b/drivers/parport/daisy.c | 29 -----------------------------
+ b/fs/select.c | 2 +-
+ b/include/linux/parport.h | 1 -
+ scripts/export_report.pl | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case27u.ref b/patch_cmds/diffstat/testing/case27u.ref
new file mode 100644
index 0000000..86b3dda
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case27u.ref
@@ -0,0 +1,8 @@
+ scripts/export_report.pl | 2 +-
+ Makefile | 4 ++++
+ b/drivers/cpuidle/governors/menu.c | 2 +-
+ b/Documentation/parport-lowlevel.txt | 29 +++--------------------------
+ b/drivers/parport/daisy.c | 29 -----------------------------
+ b/include/linux/parport.h | 1 -
+ b/fs/select.c | 2 +-
+ 7 files changed, 10 insertions(+), 59 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28.pat b/patch_cmds/diffstat/testing/case28.pat
new file mode 100644
index 0000000..c8fd4f7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28.pat
@@ -0,0 +1,326 @@
+***************
+*** 1,11 ****
+- revlist for vile-9.7c, version v9_7c
+ --------------------------------------------------------------------------------
+- aclocal.m4 1.183
+ ansi.c 1.49
+ api.c 1.44
+ api.h 1.13
+ basic.c 1.161
+- bind.c 1.320
+ blist.c 1.11
+ blist.h 1.4
+ borland.c 1.38
+--- 1,11 ----
++ revlist for vile, version v9_7d
+ --------------------------------------------------------------------------------
++ aclocal.m4 1.185
+ ansi.c 1.49
+ api.c 1.44
+ api.h 1.13
+ basic.c 1.161
++ bind.c 1.322
+ blist.c 1.11
+ blist.h 1.4
+ borland.c 1.38
+***************
+*** 14,20 ****
+ buffer.c 1.331
+ buglist 1.412
+ builtflt.c 1.63
+- CHANGES 1.1177
+ CHANGES.R3 1.1
+ CHANGES.R4 1.1
+ CHANGES.R5 1.1
+--- 14,20 ----
+ buffer.c 1.331
+ buglist 1.412
+ builtflt.c 1.63
++ CHANGES 1.1189
+ CHANGES.R3 1.1
+ CHANGES.R4 1.1
+ CHANGES.R5 1.1
+***************
+*** 23,34 ****
+ CHANGES.R8 1.1
+ charsets.c 1.56
+ chgdfunc.h 1.22
+- cmdtbl 1.253
+ config.guess 1.8
+ config_h.in 1.2
+ config.sub 1.9
+- configure 1.21
+- configure.in 1.246
+ COPYING 1.4
+ csrch.c 1.34
+ curses.c 1.38
+--- 23,34 ----
+ CHANGES.R8 1.1
+ charsets.c 1.56
+ chgdfunc.h 1.22
++ cmdtbl 1.255
+ config.guess 1.8
+ config_h.in 1.2
+ config.sub 1.9
++ configure 1.22
++ configure.in 1.247
+ COPYING 1.4
+ csrch.c 1.34
+ curses.c 1.38
+***************
+*** 37,47 ****
+ display.c 1.476
+ djhandl.c 1.6
+ dumbterm.c 1.23
+- edef.h 1.339
+ eightbit.c 1.45
+- estruct.h 1.663
+- eval.c 1.383
+- exec.c 1.314
+ externs.c 1.11
+ fences.c 1.86
+ file.c 1.415
+--- 37,47 ----
+ display.c 1.476
+ djhandl.c 1.6
+ dumbterm.c 1.23
++ edef.h 1.341
+ eightbit.c 1.45
++ estruct.h 1.665
++ eval.c 1.386
++ exec.c 1.325
+ externs.c 1.11
+ fences.c 1.86
+ file.c 1.415
+***************
+*** 52,97 ****
+ glob.c 1.93
+ gppconio.c 1.2
+ history.c 1.87
+- input.c 1.320
+ insert.c 1.167
+ INSTALL 1.6
+ install.sh 1.7
+ isearch.c 1.60
+ itbuff.c 1.25
+ lckfiles.c 1.11
+- line.c 1.193
+- main.c 1.642
+ makeargv.c 1.3
+ makeargv.h 1.3
+ makefile.blc 1.22
+ makefile.djg 1.38
+ makefile.icc 1.17
+- makefile.in 1.211
+ makefile.wnt 1.99
+ MANIFEST none
+ map.c 1.112
+- menu.c 1.51
+ mkdirs.sh 1.7
+ mkprlenv.wnt 1.9
+ mktbls.c 1.151
+ modes.c 1.363
+- modetbl 1.275
+ msgs.c 1.29
+- npopen.c 1.95
+ ntconio.c 1.91
+ ntwinio.c 1.188
+ nullterm.c 1.5
+ oneliner.c 1.112
+- opers.c 1.93
+ os2keys.h 1.2
+ os2pipe.c 1.5
+ os2vio.c 1.36
+- patchlev.h 1.378
+ path.c 1.162
+ perl.xs 1.111
+ plugin.c 1.1
+ plugin.h 1.1
+- proto.h 1.650
+ pscreen.h 1.2
+ ptypemap 1.7
+ random.c 1.319
+--- 52,97 ----
+ glob.c 1.93
+ gppconio.c 1.2
+ history.c 1.87
++ input.c 1.321
+ insert.c 1.167
+ INSTALL 1.6
+ install.sh 1.7
+ isearch.c 1.60
+ itbuff.c 1.25
+ lckfiles.c 1.11
++ line.c 1.194
++ main.c 1.647
+ makeargv.c 1.3
+ makeargv.h 1.3
+ makefile.blc 1.22
+ makefile.djg 1.38
+ makefile.icc 1.17
++ makefile.in 1.212
+ makefile.wnt 1.99
+ MANIFEST none
+ map.c 1.112
++ menu.c 1.52
+ mkdirs.sh 1.7
+ mkprlenv.wnt 1.9
+ mktbls.c 1.151
+ modes.c 1.363
++ modetbl 1.276
+ msgs.c 1.29
++ npopen.c 1.96
+ ntconio.c 1.91
+ ntwinio.c 1.188
+ nullterm.c 1.5
+ oneliner.c 1.112
++ opers.c 1.97
+ os2keys.h 1.2
+ os2pipe.c 1.5
+ os2vio.c 1.36
++ patchlev.h 1.379
+ path.c 1.162
+ perl.xs 1.111
+ plugin.c 1.1
+ plugin.h 1.1
++ proto.h 1.657
+ pscreen.h 1.2
+ ptypemap 1.7
+ random.c 1.319
+***************
+*** 100,125 ****
+ README.VMS 1.5
+ regexp.c 1.139
+ region.c 1.149
+- revlist v9_7c
+ search.c 1.146
+- select.c 1.167
+ sinstall.sh 1.1
+- spawn.c 1.195
+- statevar.c 1.122
+ tags.c 1.138
+- tbuff.c 1.68
+ tcap.c 1.177
+ tcap.h 1.14
+ termio.c 1.214
+ test_io.c 1.2
+- trace.c 1.80
+ trace.h 1.31
+ ucrypt.c 1.15
+- undo.c 1.96
+ version.c 1.66
+ vile.1 1.37
+- vile-9.7.spec 1.5
+- vile.hlp 1.655
+ vile.wmconfig 1.1
+ vl_alloc.h 1.1
+ vl_ctype.h 1.15
+--- 100,125 ----
+ README.VMS 1.5
+ regexp.c 1.139
+ region.c 1.149
++ revlist v9_7d
+ search.c 1.146
++ select.c 1.168
+ sinstall.sh 1.1
++ spawn.c 1.200
++ statevar.c 1.123
+ tags.c 1.138
++ tbuff.c 1.69
+ tcap.c 1.177
+ tcap.h 1.14
+ termio.c 1.214
+ test_io.c 1.2
++ trace.c 1.81
+ trace.h 1.31
+ ucrypt.c 1.15
++ undo.c 1.99
+ version.c 1.66
+ vile.1 1.37
++ vile-9.7.spec 1.6
++ vile.hlp 1.657
+ vile.wmconfig 1.1
+ vl_alloc.h 1.1
+ vl_ctype.h 1.15
+***************
+*** 159,165 ****
+ doc/config.doc 1.15
+ doc/dir.doc 1.3
+ doc/filters.doc 1.40
+- doc/macros.doc 1.107
+ doc/menus.doc 1.7
+ doc/modes.doc 1.17
+ doc/ncu-indent 1.16
+--- 159,165 ----
+ doc/config.doc 1.15
+ doc/dir.doc 1.3
+ doc/filters.doc 1.40
++ doc/macros.doc 1.111
+ doc/menus.doc 1.7
+ doc/modes.doc 1.17
+ doc/ncu-indent 1.16
+***************
+*** 237,250 ****
+ filters/key-filt.c 1.41
+ filters/latexflt.l 1.48
+ filters/latex.key 1.2
+- filters/lex-filt.l 1.62
+ filters/lex.key 1.8
+ filters/lispfilt.l 1.20
+ filters/lisp.key 1.2
+ filters/lua-filt.l 1.8
+ filters/lua.key 1.2
+ filters/m4-filt.c 1.30
+- filters/m4.key 1.3
+ filters/mailcap.key 1.3
+ filters/mailfilt.l 1.22
+ filters/mail.key 1.3
+--- 237,250 ----
+ filters/key-filt.c 1.41
+ filters/latexflt.l 1.48
+ filters/latex.key 1.2
++ filters/lex-filt.l 1.67
+ filters/lex.key 1.8
+ filters/lispfilt.l 1.20
+ filters/lisp.key 1.2
+ filters/lua-filt.l 1.8
+ filters/lua.key 1.2
+ filters/m4-filt.c 1.30
++ filters/m4.key 1.5
+ filters/mailcap.key 1.3
+ filters/mailfilt.l 1.22
+ filters/mail.key 1.3
+***************
+*** 332,338 ****
+ filters/vb6.key 1.5
+ filters/vb.key 1.15
+ filters/vbs.key 1.4
+- filters/vilefilt.l 1.57
+ filters/vile.key 1.8
+ filters/vim.key 1.2
+ filters/vl-filt.l 1.15
+--- 332,338 ----
+ filters/vb6.key 1.5
+ filters/vb.key 1.15
+ filters/vbs.key 1.4
++ filters/vilefilt.l 1.59
+ filters/vile.key 1.8
+ filters/vim.key 1.2
+ filters/vl-filt.l 1.15
+***************
+*** 362,368 ****
+ macros/gnugpg.rc 1.3
+ macros/loaderrs.rc 1.2
+ macros/manpage.rc 1.24
+- macros/modes.rc 1.79
+ macros/palettes.rc 1.8
+ macros/pictmode.rc 1.4
+ macros/search.rc 1.3
+--- 362,368 ----
+ macros/gnugpg.rc 1.3
+ macros/loaderrs.rc 1.2
+ macros/manpage.rc 1.24
++ macros/modes.rc 1.80
+ macros/palettes.rc 1.8
+ macros/pictmode.rc 1.4
+ macros/search.rc 1.3
diff --git a/patch_cmds/diffstat/testing/case28.ref b/patch_cmds/diffstat/testing/case28.ref
new file mode 100644
index 0000000..74f3d11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28R.ref b/patch_cmds/diffstat/testing/case28R.ref
new file mode 100644
index 0000000..74f3d11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28R.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28Rp0.ref b/patch_cmds/diffstat/testing/case28Rp0.ref
new file mode 100644
index 0000000..1300477
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28Rp0.ref
@@ -0,0 +1,2 @@
+ ./testing/case28.pat | 70 +++++++++++++++++++++++++--------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28b.ref b/patch_cmds/diffstat/testing/case28b.ref
new file mode 100644
index 0000000..74f3d11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28b.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28f0.ref b/patch_cmds/diffstat/testing/case28f0.ref
new file mode 100644
index 0000000..7b4e062
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28f0.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 35 + 35 - 0 !
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28k.ref b/patch_cmds/diffstat/testing/case28k.ref
new file mode 100644
index 0000000..74f3d11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28k.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28p1.ref b/patch_cmds/diffstat/testing/case28p1.ref
new file mode 100644
index 0000000..d36eb16
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28p1.ref
@@ -0,0 +1,2 @@
+ testing/case28.pat | 70 ++++++++++++++++++++++++++---------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28p9.ref b/patch_cmds/diffstat/testing/case28p9.ref
new file mode 100644
index 0000000..74f3d11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28p9.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28r1.ref b/patch_cmds/diffstat/testing/case28r1.ref
new file mode 100644
index 0000000..2d893c7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28r1.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28r2.ref b/patch_cmds/diffstat/testing/case28r2.ref
new file mode 100644
index 0000000..2d893c7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28r2.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case28u.ref b/patch_cmds/diffstat/testing/case28u.ref
new file mode 100644
index 0000000..74f3d11
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case28u.ref
@@ -0,0 +1,2 @@
+ case28.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29.pat b/patch_cmds/diffstat/testing/case29.pat
new file mode 100644
index 0000000..a38689f
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29.pat
@@ -0,0 +1,193 @@
+@@ -1,11 +1,11 @@
+-revlist for vile-9.7c, version v9_7c
++revlist for vile, version v9_7d
+ --------------------------------------------------------------------------------
+-aclocal.m4 1.183
++aclocal.m4 1.185
+ ansi.c 1.49
+ api.c 1.44
+ api.h 1.13
+ basic.c 1.161
+-bind.c 1.320
++bind.c 1.322
+ blist.c 1.11
+ blist.h 1.4
+ borland.c 1.38
+@@ -14,7 +14,7 @@
+ buffer.c 1.331
+ buglist 1.412
+ builtflt.c 1.63
+-CHANGES 1.1177
++CHANGES 1.1189
+ CHANGES.R3 1.1
+ CHANGES.R4 1.1
+ CHANGES.R5 1.1
+@@ -23,12 +23,12 @@
+ CHANGES.R8 1.1
+ charsets.c 1.56
+ chgdfunc.h 1.22
+-cmdtbl 1.253
++cmdtbl 1.255
+ config.guess 1.8
+ config_h.in 1.2
+ config.sub 1.9
+-configure 1.21
+-configure.in 1.246
++configure 1.22
++configure.in 1.247
+ COPYING 1.4
+ csrch.c 1.34
+ curses.c 1.38
+@@ -37,11 +37,11 @@
+ display.c 1.476
+ djhandl.c 1.6
+ dumbterm.c 1.23
+-edef.h 1.339
++edef.h 1.341
+ eightbit.c 1.45
+-estruct.h 1.663
+-eval.c 1.383
+-exec.c 1.314
++estruct.h 1.665
++eval.c 1.386
++exec.c 1.325
+ externs.c 1.11
+ fences.c 1.86
+ file.c 1.415
+@@ -52,46 +52,46 @@
+ glob.c 1.93
+ gppconio.c 1.2
+ history.c 1.87
+-input.c 1.320
++input.c 1.321
+ insert.c 1.167
+ INSTALL 1.6
+ install.sh 1.7
+ isearch.c 1.60
+ itbuff.c 1.25
+ lckfiles.c 1.11
+-line.c 1.193
+-main.c 1.642
++line.c 1.194
++main.c 1.647
+ makeargv.c 1.3
+ makeargv.h 1.3
+ makefile.blc 1.22
+ makefile.djg 1.38
+ makefile.icc 1.17
+-makefile.in 1.211
++makefile.in 1.212
+ makefile.wnt 1.99
+ MANIFEST none
+ map.c 1.112
+-menu.c 1.51
++menu.c 1.52
+ mkdirs.sh 1.7
+ mkprlenv.wnt 1.9
+ mktbls.c 1.151
+ modes.c 1.363
+-modetbl 1.275
++modetbl 1.276
+ msgs.c 1.29
+-npopen.c 1.95
++npopen.c 1.96
+ ntconio.c 1.91
+ ntwinio.c 1.188
+ nullterm.c 1.5
+ oneliner.c 1.112
+-opers.c 1.93
++opers.c 1.97
+ os2keys.h 1.2
+ os2pipe.c 1.5
+ os2vio.c 1.36
+-patchlev.h 1.378
++patchlev.h 1.379
+ path.c 1.162
+ perl.xs 1.111
+ plugin.c 1.1
+ plugin.h 1.1
+-proto.h 1.650
++proto.h 1.657
+ pscreen.h 1.2
+ ptypemap 1.7
+ random.c 1.319
+@@ -100,26 +100,26 @@
+ README.VMS 1.5
+ regexp.c 1.139
+ region.c 1.149
+-revlist v9_7c
++revlist v9_7d
+ search.c 1.146
+-select.c 1.167
++select.c 1.168
+ sinstall.sh 1.1
+-spawn.c 1.195
+-statevar.c 1.122
++spawn.c 1.200
++statevar.c 1.123
+ tags.c 1.138
+-tbuff.c 1.68
++tbuff.c 1.69
+ tcap.c 1.177
+ tcap.h 1.14
+ termio.c 1.214
+ test_io.c 1.2
+-trace.c 1.80
++trace.c 1.81
+ trace.h 1.31
+ ucrypt.c 1.15
+-undo.c 1.96
++undo.c 1.99
+ version.c 1.66
+ vile.1 1.37
+-vile-9.7.spec 1.5
+-vile.hlp 1.655
++vile-9.7.spec 1.6
++vile.hlp 1.657
+ vile.wmconfig 1.1
+ vl_alloc.h 1.1
+ vl_ctype.h 1.15
+@@ -159,7 +159,7 @@
+ doc/config.doc 1.15
+ doc/dir.doc 1.3
+ doc/filters.doc 1.40
+-doc/macros.doc 1.107
++doc/macros.doc 1.111
+ doc/menus.doc 1.7
+ doc/modes.doc 1.17
+ doc/ncu-indent 1.16
+@@ -237,14 +237,14 @@
+ filters/key-filt.c 1.41
+ filters/latexflt.l 1.48
+ filters/latex.key 1.2
+-filters/lex-filt.l 1.62
++filters/lex-filt.l 1.67
+ filters/lex.key 1.8
+ filters/lispfilt.l 1.20
+ filters/lisp.key 1.2
+ filters/lua-filt.l 1.8
+ filters/lua.key 1.2
+ filters/m4-filt.c 1.30
+-filters/m4.key 1.3
++filters/m4.key 1.5
+ filters/mailcap.key 1.3
+ filters/mailfilt.l 1.22
+ filters/mail.key 1.3
+@@ -332,7 +332,7 @@
+ filters/vb6.key 1.5
+ filters/vb.key 1.15
+ filters/vbs.key 1.4
+-filters/vilefilt.l 1.57
++filters/vilefilt.l 1.59
+ filters/vile.key 1.8
+ filters/vim.key 1.2
+ filters/vl-filt.l 1.15
+@@ -362,7 +362,7 @@
+ macros/gnugpg.rc 1.3
+ macros/loaderrs.rc 1.2
+ macros/manpage.rc 1.24
+-macros/modes.rc 1.79
++macros/modes.rc 1.80
+ macros/palettes.rc 1.8
+ macros/pictmode.rc 1.4
+ macros/search.rc 1.3
diff --git a/patch_cmds/diffstat/testing/case29.ref b/patch_cmds/diffstat/testing/case29.ref
new file mode 100644
index 0000000..15df096
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29R.ref b/patch_cmds/diffstat/testing/case29R.ref
new file mode 100644
index 0000000..15df096
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29R.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29Rp0.ref b/patch_cmds/diffstat/testing/case29Rp0.ref
new file mode 100644
index 0000000..2853ccf
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29Rp0.ref
@@ -0,0 +1,2 @@
+ ./testing/case29.pat | 70 +++++++++++++++++++++++++--------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29b.ref b/patch_cmds/diffstat/testing/case29b.ref
new file mode 100644
index 0000000..15df096
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29b.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29f0.ref b/patch_cmds/diffstat/testing/case29f0.ref
new file mode 100644
index 0000000..cfaaa2a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29f0.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 35 + 35 - 0 !
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29k.ref b/patch_cmds/diffstat/testing/case29k.ref
new file mode 100644
index 0000000..15df096
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29k.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29p1.ref b/patch_cmds/diffstat/testing/case29p1.ref
new file mode 100644
index 0000000..cc13b24
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29p1.ref
@@ -0,0 +1,2 @@
+ testing/case29.pat | 70 ++++++++++++++++++++++++++---------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29p9.ref b/patch_cmds/diffstat/testing/case29p9.ref
new file mode 100644
index 0000000..15df096
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29p9.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29r1.ref b/patch_cmds/diffstat/testing/case29r1.ref
new file mode 100644
index 0000000..7f84767
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29r1.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29r2.ref b/patch_cmds/diffstat/testing/case29r2.ref
new file mode 100644
index 0000000..7f84767
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29r2.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case29u.ref b/patch_cmds/diffstat/testing/case29u.ref
new file mode 100644
index 0000000..15df096
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case29u.ref
@@ -0,0 +1,2 @@
+ case29.pat | 70 ++++++++++++++++++++++++++++++-------------------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31.pat b/patch_cmds/diffstat/testing/case31.pat
new file mode 100644
index 0000000..392005b
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31.pat
@@ -0,0 +1,22 @@
+==== //depot/vendor/freebsd/src/sys/dev/usb/usbdevs#353 (text+ko) - //depot/projects/usb/src/sys/dev/usb/usbdevs#72 (text+ko) ==== content
+1c1
+< $FreeBSD: src/sys/dev/usb/usbdevs,v 1.421 2009/07/30 18:53:06 weongyo Exp $
+---
+> $FreeBSD: src/sys/dev/usb/usbdevs,v 1.420 2009/07/30 00:15:17 alfred Exp $
+863a864,869
+> product APPLE KBD_TP_ANSI 0x0223 Apple Internal Keyboard/Trackpad (Wellspring/ANSI)
+> product APPLE KBD_TP_ISO 0x0224 Apple Internal Keyboard/Trackpad (Wellspring/ISO)
+> product APPLE KBD_TP_JIS 0x0225 Apple Internal Keyboard/Trackpad (Wellspring/JIS)
+> product APPLE KBD_TP_ANSI2 0x0230 Apple Internal Keyboard/Trackpad (Wellspring2/ANSI)
+> product APPLE KBD_TP_ISO2 0x0231 Apple Internal Keyboard/Trackpad (Wellspring2/ISO)
+> product APPLE KBD_TP_JIS2 0x0232 Apple Internal Keyboard/Trackpad (Wellspring2/JIS)
+904a911
+> product ASUS GMSC 0x422f ASUS Generic Mass Storage
+1180,1181d1186
+< product DLINK2 DWA120_NF 0x3a0d DWA-120 (no firmware)
+< product DLINK2 DWA120 0x3a0e DWA-120
+1185a1191,1192
+> product DLINK2 DWA120_NF 0x3c0d DWA-120 (no firmware)
+> product DLINK2 DWA120 0x3c0e DWA-120
+1973a1981
+> product PHILIPS SPE3030CC 0x083a USB 2.0 External Disk
diff --git a/patch_cmds/diffstat/testing/case31.ref b/patch_cmds/diffstat/testing/case31.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31R.ref b/patch_cmds/diffstat/testing/case31R.ref
new file mode 100644
index 0000000..92ce8c7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31R.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31Rp0.ref b/patch_cmds/diffstat/testing/case31Rp0.ref
new file mode 100644
index 0000000..fcade37
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31Rp0.ref
@@ -0,0 +1,2 @@
+ //depot/vendor/freebsd/src/sys/dev/usb/usbdevs | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31b.ref b/patch_cmds/diffstat/testing/case31b.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31b.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31f0.ref b/patch_cmds/diffstat/testing/case31f0.ref
new file mode 100644
index 0000000..8e2de2e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31f0.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 11 + 3 - 0 !
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31k.ref b/patch_cmds/diffstat/testing/case31k.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31k.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31l.pat b/patch_cmds/diffstat/testing/case31l.pat
new file mode 100644
index 0000000..8c422c6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31l.pat
@@ -0,0 +1,8 @@
+==== //depot/user/ed/newcons/sys/kern/tty.c#2 - /home/ed/p4/newcons/sys/kern/tty.c ====
+@@ -1,5 +1,5 @@
+ /*-
+- * Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
++ * Copyright (c) 2009 Ed Schouten <ed@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Portions of this software were developed under sponsorship from Snow
diff --git a/patch_cmds/diffstat/testing/case31l.ref b/patch_cmds/diffstat/testing/case31l.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31l.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lR.ref b/patch_cmds/diffstat/testing/case31lR.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lR.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lRp0.ref b/patch_cmds/diffstat/testing/case31lRp0.ref
new file mode 100644
index 0000000..870e071
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lRp0.ref
@@ -0,0 +1,2 @@
+ //depot/user/ed/newcons/sys/kern/tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lb.ref b/patch_cmds/diffstat/testing/case31lb.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lb.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lf0.ref b/patch_cmds/diffstat/testing/case31lf0.ref
new file mode 100644
index 0000000..337c1eb
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lf0.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 1 + 1 - 0 !
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lk.ref b/patch_cmds/diffstat/testing/case31lk.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lk.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lp1.ref b/patch_cmds/diffstat/testing/case31lp1.ref
new file mode 100644
index 0000000..c91504a
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lp1.ref
@@ -0,0 +1,2 @@
+ /depot/user/ed/newcons/sys/kern/tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lp9.ref b/patch_cmds/diffstat/testing/case31lp9.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lp9.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lr1.ref b/patch_cmds/diffstat/testing/case31lr1.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lr1.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lr2.ref b/patch_cmds/diffstat/testing/case31lr2.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lr2.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31lu.ref b/patch_cmds/diffstat/testing/case31lu.ref
new file mode 100644
index 0000000..203a288
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31lu.ref
@@ -0,0 +1,2 @@
+ tty.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/patch_cmds/diffstat/testing/case31p1.ref b/patch_cmds/diffstat/testing/case31p1.ref
new file mode 100644
index 0000000..0481b33
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31p1.ref
@@ -0,0 +1,2 @@
+ /depot/vendor/freebsd/src/sys/dev/usb/usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31p9.ref b/patch_cmds/diffstat/testing/case31p9.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31p9.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31r1.ref b/patch_cmds/diffstat/testing/case31r1.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31r1.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31r2.ref b/patch_cmds/diffstat/testing/case31r2.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31r2.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31u.pat b/patch_cmds/diffstat/testing/case31u.pat
new file mode 100644
index 0000000..81c0046
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31u.pat
@@ -0,0 +1,51 @@
+==== //depot/vendor/freebsd/src/sys/dev/usb/usbdevs#353 (text+ko) - //depot/projects/usb/src/sys/dev/usb/usbdevs#72 (text+ko) ==== content
+@@ -1,4 +1,4 @@
+-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.421 2009/07/30 18:53:06 weongyo Exp $
++$FreeBSD: src/sys/dev/usb/usbdevs,v 1.420 2009/07/30 00:15:17 alfred Exp $
+ /* $NetBSD: usbdevs,v 1.392 2004/12/29 08:38:44 imp Exp $ */
+
+ /*-
+@@ -861,6 +861,12 @@
+
+ /* Apple Computer products */
+ product APPLE EXT_KBD 0x020c Apple Extended USB Keyboard
++product APPLE KBD_TP_ANSI 0x0223 Apple Internal Keyboard/Trackpad (Wellspring/ANSI)
++product APPLE KBD_TP_ISO 0x0224 Apple Internal Keyboard/Trackpad (Wellspring/ISO)
++product APPLE KBD_TP_JIS 0x0225 Apple Internal Keyboard/Trackpad (Wellspring/JIS)
++product APPLE KBD_TP_ANSI2 0x0230 Apple Internal Keyboard/Trackpad (Wellspring2/ANSI)
++product APPLE KBD_TP_ISO2 0x0231 Apple Internal Keyboard/Trackpad (Wellspring2/ISO)
++product APPLE KBD_TP_JIS2 0x0232 Apple Internal Keyboard/Trackpad (Wellspring2/JIS)
+ product APPLE OPTMOUSE 0x0302 Optical mouse
+ product APPLE MIGHTYMOUSE 0x0304 Mighty Mouse
+ product APPLE EXT_KBD_HUB 0x1003 Hub in Apple Extended USB Keyboard
+@@ -902,6 +908,7 @@
+ product ASUS RT2573_2 0x1724 RT2573
+ product ASUS LCM 0x1726 LCM display
+ product ASUS P535 0x420f ASUS P535 PDA
++product ASUS GMSC 0x422f ASUS Generic Mass Storage
+
+ /* ATen products */
+ product ATEN UC1284 0x2001 Parallel printer
+@@ -1177,12 +1184,12 @@
+ product DLINK DSB650TX3 0x400b 10/100 Ethernet
+ product DLINK DSB650TX2 0x4102 10/100 Ethernet
+ product DLINK DSB650 0xabc1 10/100 Ethernet
+-product DLINK2 DWA120_NF 0x3a0d DWA-120 (no firmware)
+-product DLINK2 DWA120 0x3a0e DWA-120
+ product DLINK2 DWLG122C1 0x3c03 DWL-G122 c1
+ product DLINK2 WUA1340 0x3c04 WUA-1340
+ product DLINK2 DWA111 0x3c06 DWA-111
+ product DLINK2 DWA110 0x3c07 DWA-110
++product DLINK2 DWA120_NF 0x3c0d DWA-120 (no firmware)
++product DLINK2 DWA120 0x3c0e DWA-120
+
+ /* DMI products */
+ product DMI CFSM_RW 0xa109 CF/SM Reader/Writer
+@@ -1971,6 +1978,7 @@
+ product PHILIPS PCA646VC 0x0303 PCA646VC PC Camera
+ product PHILIPS PCVC680K 0x0308 PCVC680K Vesta Pro PC Camera
+ product PHILIPS DSS150 0x0471 DSS 150 Digital Speaker System
++product PHILIPS SPE3030CC 0x083a USB 2.0 External Disk
+ product PHILIPS SNU5600 0x1236 SNU5600
+ product PHILIPS UM10016 0x1552 ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit
+ product PHILIPS DIVAUSB 0x1801 DIVA USB mp3 player
diff --git a/patch_cmds/diffstat/testing/case31u.ref b/patch_cmds/diffstat/testing/case31u.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31u.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31uR.ref b/patch_cmds/diffstat/testing/case31uR.ref
new file mode 100644
index 0000000..92ce8c7
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31uR.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31uRp0.ref b/patch_cmds/diffstat/testing/case31uRp0.ref
new file mode 100644
index 0000000..fcade37
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31uRp0.ref
@@ -0,0 +1,2 @@
+ //depot/vendor/freebsd/src/sys/dev/usb/usbdevs | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31ub.ref b/patch_cmds/diffstat/testing/case31ub.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31ub.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31uf0.ref b/patch_cmds/diffstat/testing/case31uf0.ref
new file mode 100644
index 0000000..8e2de2e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31uf0.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 11 + 3 - 0 !
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31uk.ref b/patch_cmds/diffstat/testing/case31uk.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31uk.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31up1.ref b/patch_cmds/diffstat/testing/case31up1.ref
new file mode 100644
index 0000000..0481b33
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31up1.ref
@@ -0,0 +1,2 @@
+ /depot/vendor/freebsd/src/sys/dev/usb/usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31up9.ref b/patch_cmds/diffstat/testing/case31up9.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31up9.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31ur1.ref b/patch_cmds/diffstat/testing/case31ur1.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31ur1.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31ur2.ref b/patch_cmds/diffstat/testing/case31ur2.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31ur2.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case31uu.ref b/patch_cmds/diffstat/testing/case31uu.ref
new file mode 100644
index 0000000..7a9c6ad
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case31uu.ref
@@ -0,0 +1,2 @@
+ usbdevs | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32.pat b/patch_cmds/diffstat/testing/case32.pat
new file mode 100644
index 0000000..fc30350
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32.pat
@@ -0,0 +1,13 @@
+--- README 2001-10-10 20:23:46.000000000 -0400
++++ README.new 2009-08-31 05:24:30.000000000 -0400
+@@ -1,7 +1,7 @@
+ $Id: case32.pat,v 1.1 2009/08/31 09:24:46 tom Exp $
+
+-Readme file for DiffStat.
++Readme file for dIFFsTAT.
+
+ This program is a simple filter that reads the output of the 'diff' program,
+ and produces a histogram of the total number of lines that were changed. It is
+-useful for scanning a patch file to see which files were changed.
++useful for scanning a patch file to see which files were changed.
+\ No newline at end of file
diff --git a/patch_cmds/diffstat/testing/case32.ref b/patch_cmds/diffstat/testing/case32.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32R.ref b/patch_cmds/diffstat/testing/case32R.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32R.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32Rp0.ref b/patch_cmds/diffstat/testing/case32Rp0.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32Rp0.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32b.ref b/patch_cmds/diffstat/testing/case32b.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32b.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32f0.ref b/patch_cmds/diffstat/testing/case32f0.ref
new file mode 100644
index 0000000..bd160c6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32f0.ref
@@ -0,0 +1,2 @@
+ README | 4 2 + 2 - 0 !
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32k.ref b/patch_cmds/diffstat/testing/case32k.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32k.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32p1.ref b/patch_cmds/diffstat/testing/case32p1.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32p1.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32p9.ref b/patch_cmds/diffstat/testing/case32p9.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32p9.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32r1.ref b/patch_cmds/diffstat/testing/case32r1.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32r1.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32r2.ref b/patch_cmds/diffstat/testing/case32r2.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32r2.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case32u.ref b/patch_cmds/diffstat/testing/case32u.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case32u.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33.pat b/patch_cmds/diffstat/testing/case33.pat
new file mode 100644
index 0000000..69fe5f8
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33.pat
@@ -0,0 +1,13 @@
+--- README.new 2009-08-31 05:24:30.000000000 -0400
++++ README 2001-10-10 20:23:46.000000000 -0400
+@@ -1,7 +1,7 @@
+ $Id: case33.pat,v 1.1 2009/08/31 09:24:52 tom Exp $
+
+-Readme file for dIFFsTAT.
++Readme file for DiffStat.
+
+ This program is a simple filter that reads the output of the 'diff' program,
+ and produces a histogram of the total number of lines that were changed. It is
+-useful for scanning a patch file to see which files were changed.
+\ No newline at end of file
++useful for scanning a patch file to see which files were changed.
diff --git a/patch_cmds/diffstat/testing/case33.ref b/patch_cmds/diffstat/testing/case33.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33R.ref b/patch_cmds/diffstat/testing/case33R.ref
new file mode 100644
index 0000000..204cd97
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33R.ref
@@ -0,0 +1,2 @@
+ README.new | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33Rp0.ref b/patch_cmds/diffstat/testing/case33Rp0.ref
new file mode 100644
index 0000000..204cd97
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33Rp0.ref
@@ -0,0 +1,2 @@
+ README.new | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33b.ref b/patch_cmds/diffstat/testing/case33b.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33b.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33f0.ref b/patch_cmds/diffstat/testing/case33f0.ref
new file mode 100644
index 0000000..bd160c6
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33f0.ref
@@ -0,0 +1,2 @@
+ README | 4 2 + 2 - 0 !
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33k.ref b/patch_cmds/diffstat/testing/case33k.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33k.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33p1.ref b/patch_cmds/diffstat/testing/case33p1.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33p1.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33p9.ref b/patch_cmds/diffstat/testing/case33p9.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33p9.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33r1.ref b/patch_cmds/diffstat/testing/case33r1.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33r1.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33r2.ref b/patch_cmds/diffstat/testing/case33r2.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33r2.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/case33u.ref b/patch_cmds/diffstat/testing/case33u.ref
new file mode 100644
index 0000000..59cd19c
--- /dev/null
+++ b/patch_cmds/diffstat/testing/case33u.ref
@@ -0,0 +1,2 @@
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/patch_cmds/diffstat/testing/run_atac.sh b/patch_cmds/diffstat/testing/run_atac.sh
new file mode 100644
index 0000000..646862e
--- /dev/null
+++ b/patch_cmds/diffstat/testing/run_atac.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# $Id: run_atac.sh,v 1.2 1998/01/17 01:10:06 tom Exp $
+rm -f /tmp/atac_dir/*
+run_test.sh
+atac -u ../*.atac /tmp/atac_dir/*
+atacmin ../*.atac /tmp/atac_dir/*
diff --git a/patch_cmds/diffstat/testing/run_test.sh b/patch_cmds/diffstat/testing/run_test.sh
new file mode 100644
index 0000000..c0faab2
--- /dev/null
+++ b/patch_cmds/diffstat/testing/run_test.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+# $Id: run_test.sh,v 1.15 2012/01/03 10:18:14 tom Exp $
+# Test-script for DIFFSTAT
+
+# change this for ad hoc testing of compression
+#TYPE=.pat.Z
+#TYPE=.pat.gz
+#TYPE=.pat.bz2
+TYPE=.pat
+
+if [ $# = 0 ]
+then
+ eval '"$0" *${TYPE}'
+ exit
+fi
+PATH=`cd ..;pwd`:$PATH; export PATH
+# Sanity check, remembering that not every system has `which'.
+(which diffstat) >/dev/null 2>/dev/null && echo "Checking `which diffstat`"
+
+for item in $*
+do
+ echo "testing `basename $item $TYPE`"
+ for OPTS in "" "-p1" "-p9" "-f0" "-u" "-k" "-r1" "-r2" "-b" "-R" "-Rp0"
+ do
+ NAME=`echo $item | sed -e 's/'$TYPE'$//'`
+ DATA=${NAME}${TYPE}
+ if [ ".$OPTS" != "." ] ; then
+ NAME=$NAME`echo ./$OPTS|sed -e 's@./-@@'`
+ fi
+ TEST=`basename $NAME`
+ diffstat -e $TEST.err -o $TEST.out $OPTS $DATA
+ if [ -f $NAME.ref ]
+ then
+ diff -b $NAME.ref $TEST.out >check.out
+ if test -s check.out
+ then
+ echo "?? fail: $TEST"
+ ls -l check.out
+ cat check.out
+ else
+ echo "** ok: $TEST"
+ rm -f $TEST.out
+ rm -f $TEST.err
+ fi
+ else
+ echo "** save: $TEST"
+ mv $TEST.out $NAME.ref
+ rm -f $TEST.err
+ fi
+ done
+done
diff --git a/patch_cmds/patch/Makefile b/patch_cmds/patch/Makefile
new file mode 100644
index 0000000..d7071a4
--- /dev/null
+++ b/patch_cmds/patch/Makefile
@@ -0,0 +1,6 @@
+# $OpenBSD: Makefile,v 1.4 2005/05/16 15:22:46 espie Exp $
+
+PROG= patch
+SRCS= patch.c pch.c inp.c util.c backupfile.c mkpath.c
+
+.include <bsd.prog.mk>
diff --git a/patch_cmds/patch/backupfile.c b/patch_cmds/patch/backupfile.c
new file mode 100644
index 0000000..8d19aff
--- /dev/null
+++ b/patch_cmds/patch/backupfile.c
@@ -0,0 +1,235 @@
+/* $OpenBSD: backupfile.c,v 1.20 2009/10/27 23:59:41 deraadt Exp $ */
+
+/*
+ * backupfile.c -- make Emacs style backup file names Copyright (C) 1990 Free
+ * Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * without restriction.
+ *
+ * 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.
+ */
+
+/*
+ * David MacKenzie <djm@ai.mit.edu>. Some algorithms adapted from GNU Emacs.
+ */
+
+#include <ctype.h>
+#include <dirent.h>
+#include <libgen.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "backupfile.h"
+
+
+#define ISDIGIT(c) (isascii (c) && isdigit (c))
+
+/* Which type of backup file names are generated. */
+enum backup_type backup_type = none;
+
+/*
+ * The extension added to file names to produce a simple (as opposed to
+ * numbered) backup file name.
+ */
+char *simple_backup_suffix = "~";
+
+static char *concat(const char *, const char *);
+static char *make_version_name(const char *, int);
+static int max_backup_version(const char *, const char *);
+static int version_number(const char *, const char *, size_t);
+static int argmatch(const char *, const char **);
+static void invalid_arg(const char *, const char *, int);
+
+/*
+ * Return the name of the new backup file for file FILE, allocated with
+ * malloc. Return 0 if out of memory. FILE must not end with a '/' unless it
+ * is the root directory. Do not call this function if backup_type == none.
+ */
+char *
+find_backup_file_name(const char *file)
+{
+ char *dir, *base_versions;
+ int highest_backup;
+
+ if (backup_type == simple)
+ return concat(file, simple_backup_suffix);
+ base_versions = concat(basename((char *)file), ".~");
+ if (base_versions == NULL)
+ return NULL;
+ dir = dirname((char *)file);
+ if (dir == NULL) {
+ free(base_versions);
+ return NULL;
+ }
+ highest_backup = max_backup_version(base_versions, dir);
+ free(base_versions);
+ if (backup_type == numbered_existing && highest_backup == 0)
+ return concat(file, simple_backup_suffix);
+ return make_version_name(file, highest_backup + 1);
+}
+
+/*
+ * Return the number of the highest-numbered backup file for file FILE in
+ * directory DIR. If there are no numbered backups of FILE in DIR, or an
+ * error occurs reading DIR, return 0. FILE should already have ".~" appended
+ * to it.
+ */
+static int
+max_backup_version(const char *file, const char *dir)
+{
+ DIR *dirp;
+ struct dirent *dp;
+ int highest_version, this_version;
+ size_t file_name_length;
+
+ dirp = opendir(dir);
+ if (dirp == NULL)
+ return 0;
+
+ highest_version = 0;
+ file_name_length = strlen(file);
+
+ while ((dp = readdir(dirp)) != NULL) {
+ if (dp->d_namlen <= file_name_length)
+ continue;
+
+ this_version = version_number(file, dp->d_name, file_name_length);
+ if (this_version > highest_version)
+ highest_version = this_version;
+ }
+ closedir(dirp);
+ return highest_version;
+}
+
+/*
+ * Return a string, allocated with malloc, containing "FILE.~VERSION~".
+ * Return 0 if out of memory.
+ */
+static char *
+make_version_name(const char *file, int version)
+{
+ char *backup_name;
+
+ if (asprintf(&backup_name, "%s.~%d~", file, version) == -1)
+ return NULL;
+ return backup_name;
+}
+
+/*
+ * If BACKUP is a numbered backup of BASE, return its version number;
+ * otherwise return 0. BASE_LENGTH is the length of BASE. BASE should
+ * already have ".~" appended to it.
+ */
+static int
+version_number(const char *base, const char *backup, size_t base_length)
+{
+ int version;
+ const char *p;
+
+ version = 0;
+ if (!strncmp(base, backup, base_length) && ISDIGIT(backup[base_length])) {
+ for (p = &backup[base_length]; ISDIGIT(*p); ++p)
+ version = version * 10 + *p - '0';
+ if (p[0] != '~' || p[1])
+ version = 0;
+ }
+ return version;
+}
+
+/*
+ * Return the newly-allocated concatenation of STR1 and STR2. If out of
+ * memory, return 0.
+ */
+static char *
+concat(const char *str1, const char *str2)
+{
+ char *newstr;
+
+ if (asprintf(&newstr, "%s%s", str1, str2) == -1)
+ return NULL;
+ return newstr;
+}
+
+/*
+ * If ARG is an unambiguous match for an element of the null-terminated array
+ * OPTLIST, return the index in OPTLIST of the matched element, else -1 if it
+ * does not match any element or -2 if it is ambiguous (is a prefix of more
+ * than one element).
+ */
+static int
+argmatch(const char *arg, const char **optlist)
+{
+ int i; /* Temporary index in OPTLIST. */
+ size_t arglen; /* Length of ARG. */
+ int matchind = -1; /* Index of first nonexact match. */
+ int ambiguous = 0; /* If nonzero, multiple nonexact match(es). */
+
+ arglen = strlen(arg);
+
+ /* Test all elements for either exact match or abbreviated matches. */
+ for (i = 0; optlist[i]; i++) {
+ if (!strncmp(optlist[i], arg, arglen)) {
+ if (strlen(optlist[i]) == arglen)
+ /* Exact match found. */
+ return i;
+ else if (matchind == -1)
+ /* First nonexact match found. */
+ matchind = i;
+ else
+ /* Second nonexact match found. */
+ ambiguous = 1;
+ }
+ }
+ if (ambiguous)
+ return -2;
+ else
+ return matchind;
+}
+
+/*
+ * Error reporting for argmatch. KIND is a description of the type of entity
+ * that was being matched. VALUE is the invalid value that was given. PROBLEM
+ * is the return value from argmatch.
+ */
+static void
+invalid_arg(const char *kind, const char *value, int problem)
+{
+ fprintf(stderr, "patch: ");
+ if (problem == -1)
+ fprintf(stderr, "invalid");
+ else /* Assume -2. */
+ fprintf(stderr, "ambiguous");
+ fprintf(stderr, " %s `%s'\n", kind, value);
+}
+
+static const char *backup_args[] = {
+ "never", "simple", "nil", "existing", "t", "numbered", 0
+};
+
+static enum backup_type backup_types[] = {
+ simple, simple, numbered_existing,
+ numbered_existing, numbered, numbered
+};
+
+/*
+ * Return the type of backup indicated by VERSION. Unique abbreviations are
+ * accepted.
+ */
+enum backup_type
+get_version(const char *version)
+{
+ int i;
+
+ if (version == NULL || *version == '\0')
+ return numbered_existing;
+ i = argmatch(version, backup_args);
+ if (i >= 0)
+ return backup_types[i];
+ invalid_arg("version control type", version, i);
+ exit(2);
+}
diff --git a/patch_cmds/patch/backupfile.h b/patch_cmds/patch/backupfile.h
new file mode 100644
index 0000000..7c20ddb
--- /dev/null
+++ b/patch_cmds/patch/backupfile.h
@@ -0,0 +1,38 @@
+/* $OpenBSD: backupfile.h,v 1.6 2003/07/28 18:35:36 otto Exp $ */
+
+/*
+ * backupfile.h -- declarations for making Emacs style backup file names
+ * Copyright (C) 1990 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * without restriction.
+ *
+ * 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.
+ *
+ */
+
+/* When to make backup files. */
+enum backup_type {
+ /* Never make backups. */
+ none,
+
+ /* Make simple backups of every file. */
+ simple,
+
+ /*
+ * Make numbered backups of files that already have numbered backups,
+ * and simple backups of the others.
+ */
+ numbered_existing,
+
+ /* Make numbered backups of every file. */
+ numbered
+};
+
+extern enum backup_type backup_type;
+extern char *simple_backup_suffix;
+
+char *find_backup_file_name(const char *file);
+enum backup_type get_version(const char *version);
diff --git a/patch_cmds/patch/common.h b/patch_cmds/patch/common.h
new file mode 100644
index 0000000..2027456
--- /dev/null
+++ b/patch_cmds/patch/common.h
@@ -0,0 +1,117 @@
+/* $OpenBSD: common.h,v 1.26 2006/03/11 19:41:30 otto Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+#include <sys/types.h>
+
+#include <stdbool.h>
+#include <stdint.h> // for SIZE_MAX
+
+#define DEBUGGING
+
+/* constants */
+
+#define MAXHUNKSIZE 100000 /* is this enough lines? */
+#define INITHUNKMAX 125 /* initial dynamic allocation size */
+#define MAXLINELEN 8192
+#define BUFFERSIZE 1024
+
+#define SCCSPREFIX "s."
+#define GET "get -e %s"
+#define SCCSDIFF "get -p %s | diff - %s >/dev/null"
+
+#define RCSSUFFIX ",v"
+#define CHECKOUT "co -l %s"
+#define RCSDIFF "rcsdiff %s > /dev/null"
+
+#define ORIGEXT ".orig"
+#define REJEXT ".rej"
+
+/* handy definitions */
+
+#define strNE(s1,s2) (strcmp(s1, s2))
+#define strEQ(s1,s2) (!strcmp(s1, s2))
+#define strnNE(s1,s2,l) (strncmp(s1, s2, l))
+#define strnEQ(s1,s2,l) (!strncmp(s1, s2, l))
+
+/* typedefs */
+
+typedef long LINENUM; /* must be signed */
+
+/* globals */
+
+extern mode_t filemode;
+
+extern char buf[MAXLINELEN];/* general purpose buffer */
+
+extern bool using_plan_a; /* try to keep everything in memory */
+extern bool out_of_mem; /* ran out of memory in plan a */
+
+#define MAXFILEC 2
+
+extern char *filearg[MAXFILEC];
+extern bool ok_to_create_file;
+extern char *outname;
+extern char *origprae;
+
+extern char *TMPOUTNAME;
+extern char *TMPINNAME;
+extern char *TMPREJNAME;
+extern char *TMPPATNAME;
+extern bool toutkeep;
+extern bool trejkeep;
+
+#ifdef DEBUGGING
+extern int debug;
+#endif
+
+extern bool force;
+extern bool batch;
+extern int verbose;
+extern bool reverse;
+extern bool noreverse;
+extern bool skip_rest_of_patch;
+extern int strippath;
+extern bool canonicalize;
+/* TRUE if -C was specified on command line. */
+extern bool check_only;
+extern bool warn_on_invalid_line;
+extern bool last_line_missing_eol;
+
+
+#define CONTEXT_DIFF 1
+#define NORMAL_DIFF 2
+#define ED_DIFF 3
+#define NEW_CONTEXT_DIFF 4
+#define UNI_DIFF 5
+
+extern int diff_type;
+extern char *revision; /* prerequisite revision, if any */
+extern LINENUM input_lines; /* how long is input file in lines */
+
+extern int posix;
+
diff --git a/patch_cmds/patch/inp.c b/patch_cmds/patch/inp.c
new file mode 100644
index 0000000..6b5bf34
--- /dev/null
+++ b/patch_cmds/patch/inp.c
@@ -0,0 +1,471 @@
+/* $OpenBSD: inp.c,v 1.35 2009/10/27 23:59:41 deraadt Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+#include <sys/types.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+
+#include <ctype.h>
+#include <libgen.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "common.h"
+#include "util.h"
+#include "pch.h"
+#include "inp.h"
+
+
+/* Input-file-with-indexable-lines abstract type */
+
+static off_t i_size; /* size of the input file */
+static char *i_womp; /* plan a buffer for entire file */
+static char **i_ptr; /* pointers to lines in i_womp */
+
+static int tifd = -1; /* plan b virtual string array */
+static char *tibuf[2]; /* plan b buffers */
+static LINENUM tiline[2] = {-1, -1}; /* 1st line in each buffer */
+static LINENUM lines_per_buf; /* how many lines per buffer */
+static int tireclen; /* length of records in tmp file */
+
+static bool rev_in_string(const char *);
+static bool reallocate_lines(size_t *);
+
+/* returns false if insufficient memory */
+static bool plan_a(const char *);
+
+static void plan_b(const char *);
+
+/* New patch--prepare to edit another file. */
+
+void
+re_input(void)
+{
+ if (using_plan_a) {
+ i_size = 0;
+ free(i_ptr);
+ i_ptr = NULL;
+ if (i_womp != NULL) {
+ munmap(i_womp, i_size);
+ i_womp = NULL;
+ }
+ } else {
+ using_plan_a = true; /* maybe the next one is smaller */
+ close(tifd);
+ tifd = -1;
+ free(tibuf[0]);
+ free(tibuf[1]);
+ tibuf[0] = tibuf[1] = NULL;
+ tiline[0] = tiline[1] = -1;
+ tireclen = 0;
+ }
+}
+
+/* Construct the line index, somehow or other. */
+
+void
+scan_input(const char *filename)
+{
+ if (!plan_a(filename))
+ plan_b(filename);
+ if (verbose) {
+ say("Patching file %s using Plan %s...\n", filename,
+ (using_plan_a ? "A" : "B"));
+ } else {
+ say("patching file %s\n", filename);
+ }
+}
+
+static bool
+reallocate_lines(size_t *lines_allocated)
+{
+ char **p;
+ size_t new_size;
+
+ new_size = *lines_allocated * 3 / 2;
+ p = realloc(i_ptr, (new_size + 2) * sizeof(char *));
+ if (p == NULL) { /* shucks, it was a near thing */
+ munmap(i_womp, i_size);
+ i_womp = NULL;
+ free(i_ptr);
+ i_ptr = NULL;
+ *lines_allocated = 0;
+ return false;
+ }
+ *lines_allocated = new_size;
+ i_ptr = p;
+ return true;
+}
+
+/* Try keeping everything in memory. */
+
+static bool
+plan_a(const char *filename)
+{
+ int ifd, statfailed;
+ char *p, *s, lbuf[MAXLINELEN];
+ struct stat filestat;
+ off_t i;
+ ptrdiff_t sz;
+ size_t iline, lines_allocated;
+
+#ifdef DEBUGGING
+ if (debug & 8)
+ return false;
+#endif
+
+ if (filename == NULL || *filename == '\0')
+ return false;
+
+ statfailed = stat(filename, &filestat);
+ if (statfailed && ok_to_create_file) {
+ if (verbose)
+ say("(Creating file %s...)\n", filename);
+
+ /*
+ * in check_patch case, we still display `Creating file' even
+ * though we're not. The rule is that -C should be as similar
+ * to normal patch behavior as possible
+ */
+ if (check_only)
+ return true;
+ makedirs(filename, true);
+ close(creat(filename, 0666));
+ statfailed = stat(filename, &filestat);
+ }
+ if (statfailed && check_only)
+ fatal("%s not found, -C mode, can't probe further\n", filename);
+ /* For nonexistent or read-only files, look for RCS or SCCS versions. */
+ if (statfailed ||
+ /* No one can write to it. */
+ (filestat.st_mode & 0222) == 0 ||
+ /* I can't write to it. */
+ ((filestat.st_mode & 0022) == 0 && filestat.st_uid != getuid())) {
+ char *cs = NULL, *filebase, *filedir;
+ struct stat cstat;
+
+ filebase = basename((char *)filename);
+ filedir = dirname((char *)filename);
+
+ /* Leave room in lbuf for the diff command. */
+ s = lbuf + 20;
+
+#define try(f, a1, a2, a3) \
+ (snprintf(s, sizeof lbuf - 20, f, a1, a2, a3), stat(s, &cstat) == 0)
+
+ if (try("%s/RCS/%s%s", filedir, filebase, RCSSUFFIX) ||
+ try("%s/RCS/%s%s", filedir, filebase, "") ||
+ try("%s/%s%s", filedir, filebase, RCSSUFFIX)) {
+ snprintf(buf, sizeof buf, CHECKOUT, filename);
+ snprintf(lbuf, sizeof lbuf, RCSDIFF, filename);
+ cs = "RCS";
+ } else if (try("%s/SCCS/%s%s", filedir, SCCSPREFIX, filebase) ||
+ try("%s/%s%s", filedir, SCCSPREFIX, filebase)) {
+ snprintf(buf, sizeof buf, GET, s);
+ snprintf(lbuf, sizeof lbuf, SCCSDIFF, s, filename);
+ cs = "SCCS";
+ } else if (statfailed)
+ fatal("can't find %s\n", filename);
+ /*
+ * else we can't write to it but it's not under a version
+ * control system, so just proceed.
+ */
+ if (cs) {
+ if (!statfailed) {
+ if ((filestat.st_mode & 0222) != 0)
+ /* The owner can write to it. */
+ fatal("file %s seems to be locked "
+ "by somebody else under %s\n",
+ filename, cs);
+ /*
+ * It might be checked out unlocked. See if
+ * it's safe to check out the default version
+ * locked.
+ */
+ if (verbose)
+ say("Comparing file %s to default "
+ "%s version...\n",
+ filename, cs);
+ if (system(lbuf))
+ fatal("can't check out file %s: "
+ "differs from default %s version\n",
+ filename, cs);
+ }
+ if (verbose)
+ say("Checking out file %s from %s...\n",
+ filename, cs);
+ if (system(buf) || stat(filename, &filestat))
+ fatal("can't check out file %s from %s\n",
+ filename, cs);
+ }
+ }
+ filemode = filestat.st_mode;
+ if (!S_ISREG(filemode))
+ fatal("%s is not a normal file--can't patch\n", filename);
+ i_size = filestat.st_size;
+ if (out_of_mem) {
+ set_hunkmax(); /* make sure dynamic arrays are allocated */
+ out_of_mem = false;
+ return false; /* force plan b because plan a bombed */
+ }
+ if (i_size > SIZE_MAX) {
+ say("block too large to mmap\n");
+ return false;
+ }
+ if ((ifd = open(filename, O_RDONLY)) < 0)
+ pfatal("can't open file %s", filename);
+
+ i_womp = mmap(NULL, i_size == 0 ? 64 : i_size, PROT_READ, MAP_PRIVATE, ifd, 0);
+ if (i_womp == MAP_FAILED) {
+ perror("mmap failed");
+ i_womp = NULL;
+ close(ifd);
+ return false;
+ }
+
+ close(ifd);
+ if (i_size)
+ madvise(i_womp, i_size, MADV_SEQUENTIAL);
+
+ /* estimate the number of lines */
+ lines_allocated = i_size / 25;
+ if (lines_allocated < 100)
+ lines_allocated = 100;
+
+ if (!reallocate_lines(&lines_allocated))
+ return false;
+
+ /* now scan the buffer and build pointer array */
+ iline = 1;
+ i_ptr[iline] = i_womp;
+ /* test for NUL too, to maintain the behavior of the original code */
+ for (s = i_womp, i = 0; i < i_size && *s != '\0'; s++, i++) {
+ if (*s == '\n') {
+ if (iline == lines_allocated) {
+ if (!reallocate_lines(&lines_allocated))
+ return false;
+ }
+ /* these are NOT NUL terminated */
+ i_ptr[++iline] = s + 1;
+ }
+ }
+ /* if the last line contains no EOL, append one */
+ if (i_size > 0 && i_womp[i_size - 1] != '\n') {
+ last_line_missing_eol = true;
+ /* fix last line */
+ sz = s - i_ptr[iline];
+ p = malloc(sz + 1);
+ if (p == NULL) {
+ free(i_ptr);
+ i_ptr = NULL;
+ munmap(i_womp, i_size);
+ i_womp = NULL;
+ return false;
+ }
+
+ memcpy(p, i_ptr[iline], sz);
+ p[sz] = '\n';
+ i_ptr[iline] = p;
+ /* count the extra line and make it point to some valid mem */
+ i_ptr[++iline] = "";
+ } else
+ last_line_missing_eol = false;
+
+ input_lines = iline - 1;
+
+ /* now check for revision, if any */
+
+ if (revision != NULL) {
+ if (!rev_in_string(i_womp)) {
+ if (force) {
+ if (verbose)
+ say("Warning: this file doesn't appear "
+ "to be the %s version--patching anyway.\n",
+ revision);
+ } else if (batch) {
+ fatal("this file doesn't appear to be the "
+ "%s version--aborting.\n",
+ revision);
+ } else {
+ ask("This file doesn't appear to be the "
+ "%s version--patch anyway? [n] ",
+ revision);
+ if (*buf != 'y')
+ fatal("aborted\n");
+ }
+ } else if (verbose)
+ say("Good. This file appears to be the %s version.\n",
+ revision);
+ }
+ return true; /* plan a will work */
+}
+
+/* Keep (virtually) nothing in memory. */
+
+static void
+plan_b(const char *filename)
+{
+ FILE *ifp;
+ size_t i = 0, j, maxlen = 1;
+ char *p;
+ bool found_revision = (revision == NULL);
+
+ using_plan_a = false;
+ if ((ifp = fopen(filename, "r")) == NULL)
+ pfatal("can't open file %s", filename);
+ (void) unlink(TMPINNAME);
+ if ((tifd = open(TMPINNAME, O_EXCL | O_CREAT | O_WRONLY, 0666)) < 0)
+ pfatal("can't open file %s", TMPINNAME);
+ while (fgets(buf, sizeof buf, ifp) != NULL) {
+ if (revision != NULL && !found_revision && rev_in_string(buf))
+ found_revision = true;
+ if ((i = strlen(buf)) > maxlen)
+ maxlen = i; /* find longest line */
+ }
+ last_line_missing_eol = i > 0 && buf[i - 1] != '\n';
+ if (last_line_missing_eol && maxlen == i)
+ maxlen++;
+
+ if (revision != NULL) {
+ if (!found_revision) {
+ if (force) {
+ if (verbose)
+ say("Warning: this file doesn't appear "
+ "to be the %s version--patching anyway.\n",
+ revision);
+ } else if (batch) {
+ fatal("this file doesn't appear to be the "
+ "%s version--aborting.\n",
+ revision);
+ } else {
+ ask("This file doesn't appear to be the %s "
+ "version--patch anyway? [n] ",
+ revision);
+ if (*buf != 'y')
+ fatal("aborted\n");
+ }
+ } else if (verbose)
+ say("Good. This file appears to be the %s version.\n",
+ revision);
+ }
+ fseek(ifp, 0L, SEEK_SET); /* rewind file */
+ lines_per_buf = BUFFERSIZE / maxlen;
+ tireclen = maxlen;
+ tibuf[0] = malloc(BUFFERSIZE + 1);
+ if (tibuf[0] == NULL)
+ fatal("out of memory\n");
+ tibuf[1] = malloc(BUFFERSIZE + 1);
+ if (tibuf[1] == NULL)
+ fatal("out of memory\n");
+ for (i = 1;; i++) {
+ p = tibuf[0] + maxlen * (i % lines_per_buf);
+ if (i % lines_per_buf == 0) /* new block */
+ if (write(tifd, tibuf[0], BUFFERSIZE) < BUFFERSIZE)
+ pfatal("can't write temp file");
+ if (fgets(p, maxlen + 1, ifp) == NULL) {
+ input_lines = i - 1;
+ if (i % lines_per_buf != 0)
+ if (write(tifd, tibuf[0], BUFFERSIZE) < BUFFERSIZE)
+ pfatal("can't write temp file");
+ break;
+ }
+ j = strlen(p);
+ /* These are '\n' terminated strings, so no need to add a NUL */
+ if (j == 0 || p[j - 1] != '\n')
+ p[j] = '\n';
+ }
+ fclose(ifp);
+ close(tifd);
+ if ((tifd = open(TMPINNAME, O_RDONLY)) < 0)
+ pfatal("can't reopen file %s", TMPINNAME);
+}
+
+/*
+ * Fetch a line from the input file, \n terminated, not necessarily \0.
+ */
+char *
+ifetch(LINENUM line, int whichbuf)
+{
+ if (line < 1 || line > input_lines) {
+ if (warn_on_invalid_line) {
+ say("No such line %ld in input file, ignoring\n", line);
+ warn_on_invalid_line = false;
+ }
+ return NULL;
+ }
+ if (using_plan_a)
+ return i_ptr[line];
+ else {
+ LINENUM offline = line % lines_per_buf;
+ LINENUM baseline = line - offline;
+
+ if (tiline[0] == baseline)
+ whichbuf = 0;
+ else if (tiline[1] == baseline)
+ whichbuf = 1;
+ else {
+ tiline[whichbuf] = baseline;
+
+ if (lseek(tifd, (off_t) (baseline / lines_per_buf *
+ BUFFERSIZE), SEEK_SET) < 0)
+ pfatal("cannot seek in the temporary input file");
+
+ if (read(tifd, tibuf[whichbuf], BUFFERSIZE) < 0)
+ pfatal("error reading tmp file %s", TMPINNAME);
+ }
+ return tibuf[whichbuf] + (tireclen * offline);
+ }
+}
+
+/*
+ * True if the string argument contains the revision number we want.
+ */
+static bool
+rev_in_string(const char *string)
+{
+ const char *s;
+ size_t patlen;
+
+ if (revision == NULL)
+ return true;
+ patlen = strlen(revision);
+ if (strnEQ(string, revision, patlen) && isspace(string[patlen]))
+ return true;
+ for (s = string; *s; s++) {
+ if (isspace(*s) && strnEQ(s + 1, revision, patlen) &&
+ isspace(s[patlen + 1])) {
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/patch_cmds/patch/inp.h b/patch_cmds/patch/inp.h
new file mode 100644
index 0000000..aa66208
--- /dev/null
+++ b/patch_cmds/patch/inp.h
@@ -0,0 +1,31 @@
+/* $OpenBSD: inp.h,v 1.8 2003/08/15 08:00:51 otto Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+void re_input(void);
+void scan_input(const char *);
+char *ifetch(LINENUM, int);
diff --git a/patch_cmds/patch/mkpath.c b/patch_cmds/patch/mkpath.c
new file mode 100644
index 0000000..1e600a8
--- /dev/null
+++ b/patch_cmds/patch/mkpath.c
@@ -0,0 +1,74 @@
+/* $OpenBSD: mkpath.c,v 1.2 2005/06/20 07:14:06 otto Exp $ */
+/*
+ * Copyright (c) 1983, 1992, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. 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/types.h>
+#include <sys/stat.h>
+#include <err.h>
+#include <errno.h>
+#include <string.h>
+
+/* Code taken directly from mkdir(1).
+
+ * mkpath -- create directories.
+ * path - path
+ */
+int
+mkpath(char *path)
+{
+ struct stat sb;
+ char *slash;
+ int done = 0;
+
+ slash = path;
+
+ while (!done) {
+ slash += strspn(slash, "/");
+ slash += strcspn(slash, "/");
+
+ done = (*slash == '\0');
+ *slash = '\0';
+
+ if (stat(path, &sb)) {
+ if (errno != ENOENT || (mkdir(path, 0777) &&
+ errno != EEXIST)) {
+ warn("%s", path);
+ return (-1);
+ }
+ } else if (!S_ISDIR(sb.st_mode)) {
+ warnx("%s: %s", path, strerror(ENOTDIR));
+ return (-1);
+ }
+
+ *slash = '/';
+ }
+
+ return (0);
+}
+
diff --git a/patch_cmds/patch/patch.1 b/patch_cmds/patch/patch.1
new file mode 100644
index 0000000..611d898
--- /dev/null
+++ b/patch_cmds/patch/patch.1
@@ -0,0 +1,698 @@
+.\" $OpenBSD: patch.1,v 1.25 2009/02/08 17:33:01 jmc Exp $
+.\" Copyright 1986, Larry Wall
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following condition
+.\" is met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this condition and the following disclaimer.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd $Mdocdate: February 8 2009 $
+.Dt PATCH 1
+.Os
+.Sh NAME
+.Nm patch
+.Nd apply a diff file to an original
+.Sh SYNOPSIS
+.Nm patch
+.Bk -words
+.Op Fl bCcEeflNnRstuv
+.Op Fl B Ar backup-prefix
+.Op Fl D Ar symbol
+.Op Fl d Ar directory
+.Op Fl F Ar max-fuzz
+.Op Fl i Ar patchfile
+.Op Fl o Ar out-file
+.Op Fl p Ar strip-count
+.Op Fl r Ar rej-name
+.Op Fl V Cm t | nil | never
+.Op Fl x Ar number
+.Op Fl z Ar backup-ext
+.Op Fl Fl posix
+.Op Ar origfile Op Ar patchfile
+.Ek
+.Nm patch
+.Pf \*(Lt Ar patchfile
+.Sh DESCRIPTION
+.Nm
+will take a patch file containing any of the four forms of difference
+listing produced by the
+.Xr diff 1
+program and apply those differences to an original file,
+producing a patched version.
+If
+.Ar patchfile
+is omitted, or is a hyphen, the patch will be read from the standard input.
+.Pp
+.Nm
+will attempt to determine the type of the diff listing, unless overruled by a
+.Fl c ,
+.Fl e ,
+.Fl n ,
+or
+.Fl u
+option.
+Context diffs (old-style, new-style, and unified) and
+normal diffs are applied directly by the
+.Nm
+program itself, whereas ed diffs are simply fed to the
+.Xr ed 1
+editor via a pipe.
+.Pp
+If the
+.Ar patchfile
+contains more than one patch,
+.Nm
+will try to apply each of them as if they came from separate patch files.
+This means, among other things, that it is assumed that the name of the file
+to patch must be determined for each diff listing, and that the garbage before
+each diff listing will be examined for interesting things such as file names
+and revision level (see the section on
+.Sx Filename Determination
+below).
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Xo
+.Fl B Ar backup-prefix ,
+.Fl Fl prefix Ar backup-prefix
+.Xc
+Causes the next argument to be interpreted as a prefix to the backup file
+name.
+If this argument is specified, any argument to
+.Fl z
+will be ignored.
+.It Fl b , Fl Fl backup
+Save a backup copy of the file before it is modified.
+By default the original file is saved with a backup extension of
+.Qq .orig
+unless the file already has a numbered backup, in which case a numbered
+backup is made.
+This is equivalent to specifying
+.Qo Fl V Cm existing Qc .
+This option is currently the default, unless
+.Fl -posix
+is specified.
+.It Fl C , Fl Fl check
+Checks that the patch would apply cleanly, but does not modify anything.
+.It Fl c , Fl Fl context
+Forces
+.Nm
+to interpret the patch file as a context diff.
+.It Xo
+.Fl D Ar symbol ,
+.Fl Fl ifdef Ar symbol
+.Xc
+Causes
+.Nm
+to use the
+.Qq #ifdef...#endif
+construct to mark changes.
+The argument following will be used as the differentiating symbol.
+Note that, unlike the C compiler, there must be a space between the
+.Fl D
+and the argument.
+.It Xo
+.Fl d Ar directory ,
+.Fl Fl directory Ar directory
+.Xc
+Causes
+.Nm
+to interpret the next argument as a directory,
+and change working directory to it before doing anything else.
+.It Fl E , Fl Fl remove-empty-files
+Causes
+.Nm
+to remove output files that are empty after the patches have been applied.
+This option is useful when applying patches that create or remove files.
+.It Fl e , Fl Fl ed
+Forces
+.Nm
+to interpret the patch file as an
+.Xr ed 1
+script.
+.It Xo
+.Fl F Ar max-fuzz ,
+.Fl Fl fuzz Ar max-fuzz
+.Xc
+Sets the maximum fuzz factor.
+This option only applies to context diffs, and causes
+.Nm
+to ignore up to that many lines in looking for places to install a hunk.
+Note that a larger fuzz factor increases the odds of a faulty patch.
+The default fuzz factor is 2, and it may not be set to more than
+the number of lines of context in the context diff, ordinarily 3.
+.It Fl f , Fl Fl force
+Forces
+.Nm
+to assume that the user knows exactly what he or she is doing, and to not
+ask any questions.
+It assumes the following:
+skip patches for which a file to patch can't be found;
+patch files even though they have the wrong version for the
+.Qq Prereq:
+line in the patch;
+and assume that patches are not reversed even if they look like they are.
+This option does not suppress commentary; use
+.Fl s
+for that.
+.It Xo
+.Fl i Ar patchfile ,
+.Fl Fl input Ar patchfile
+.Xc
+Causes the next argument to be interpreted as the input file name
+(i.e. a patchfile).
+This option may be specified multiple times.
+.It Fl l , Fl Fl ignore-whitespace
+Causes the pattern matching to be done loosely, in case the tabs and
+spaces have been munged in your input file.
+Any sequence of whitespace in the pattern line will match any sequence
+in the input file.
+Normal characters must still match exactly.
+Each line of the context must still match a line in the input file.
+.It Fl N , Fl Fl forward
+Causes
+.Nm
+to ignore patches that it thinks are reversed or already applied.
+See also
+.Fl R .
+.It Fl n , Fl Fl normal
+Forces
+.Nm
+to interpret the patch file as a normal diff.
+.It Xo
+.Fl o Ar out-file ,
+.Fl Fl output Ar out-file
+.Xc
+Causes the next argument to be interpreted as the output file name.
+.It Xo
+.Fl p Ar strip-count ,
+.Fl Fl strip Ar strip-count
+.Xc
+Sets the pathname strip count,
+which controls how pathnames found in the patch file are treated,
+in case you keep your files in a different directory than the person who sent
+out the patch.
+The strip count specifies how many slashes are to be stripped from
+the front of the pathname.
+(Any intervening directory names also go away.)
+For example, supposing the file name in the patch file was
+.Pa /u/howard/src/blurfl/blurfl.c :
+.Pp
+Setting
+.Fl p Ns Ar 0
+gives the entire pathname unmodified.
+.Pp
+.Fl p Ns Ar 1
+gives
+.Pp
+.D1 Pa u/howard/src/blurfl/blurfl.c
+.Pp
+without the leading slash.
+.Pp
+.Fl p Ns Ar 4
+gives
+.Pp
+.D1 Pa blurfl/blurfl.c
+.Pp
+Not specifying
+.Fl p
+at all just gives you
+.Pa blurfl.c ,
+unless all of the directories in the leading path
+.Pq Pa u/howard/src/blurfl
+exist and that path is relative,
+in which case you get the entire pathname unmodified.
+Whatever you end up with is looked for either in the current directory,
+or the directory specified by the
+.Fl d
+option.
+.It Fl R , Fl Fl reverse
+Tells
+.Nm
+that this patch was created with the old and new files swapped.
+(Yes, I'm afraid that does happen occasionally, human nature being what it
+is.)
+.Nm
+will attempt to swap each hunk around before applying it.
+Rejects will come out in the swapped format.
+The
+.Fl R
+option will not work with ed diff scripts because there is too little
+information to reconstruct the reverse operation.
+.Pp
+If the first hunk of a patch fails,
+.Nm
+will reverse the hunk to see if it can be applied that way.
+If it can, you will be asked if you want to have the
+.Fl R
+option set.
+If it can't, the patch will continue to be applied normally.
+(Note: this method cannot detect a reversed patch if it is a normal diff
+and if the first command is an append (i.e. it should have been a delete)
+since appends always succeed, due to the fact that a null context will match
+anywhere.
+Luckily, most patches add or change lines rather than delete them, so most
+reversed normal diffs will begin with a delete, which will fail, triggering
+the heuristic.)
+.It Xo
+.Fl r Ar rej-name ,
+.Fl Fl reject-file Ar rej-name
+.Xc
+Causes the next argument to be interpreted as the reject file name.
+.It Xo
+.Fl s , Fl Fl quiet ,
+.Fl Fl silent
+.Xc
+Makes
+.Nm
+do its work silently, unless an error occurs.
+.It Fl t , Fl Fl batch
+Similar to
+.Fl f ,
+in that it suppresses questions, but makes some different assumptions:
+skip patches for which a file to patch can't be found (the same as
+.Fl f ) ;
+skip patches for which the file has the wrong version for the
+.Qq Prereq:
+line in the patch;
+and assume that patches are reversed if they look like they are.
+.It Fl u , Fl Fl unified
+Forces
+.Nm
+to interpret the patch file as a unified context diff (a unidiff).
+.It Xo
+.Fl V Cm t | nil | never ,
+.Fl Fl version-control Cm t | nil | never
+.Xc
+Causes the next argument to be interpreted as a method for creating
+backup file names.
+The type of backups made can also be given in the
+.Ev PATCH_VERSION_CONTROL
+or
+.Ev VERSION_CONTROL
+environment variables, which are overridden by this option.
+The
+.Fl B
+option overrides this option, causing the prefix to always be used for
+making backup file names.
+The values of the
+.Ev PATCH_VERSION_CONTROL
+and
+.Ev VERSION_CONTROL
+environment variables and the argument to the
+.Fl V
+option are like the GNU Emacs
+.Dq version-control
+variable; they also recognize synonyms that are more descriptive.
+The valid values are (unique abbreviations are accepted):
+.Bl -tag -width Ds -offset indent
+.It Cm t , numbered
+Always make numbered backups.
+.It Cm nil , existing
+Make numbered backups of files that already have them,
+simple backups of the others.
+.It Cm never , simple
+Always make simple backups.
+.El
+.It Fl v , Fl Fl version
+Causes
+.Nm
+to print out its revision header and patch level.
+.It Xo
+.Fl x Ar number ,
+.Fl Fl debug Ar number
+.Xc
+Sets internal debugging flags, and is of interest only to
+.Nm
+patchers.
+.It Xo
+.Fl z Ar backup-ext ,
+.Fl Fl suffix Ar backup-ext
+.Xc
+Causes the next argument to be interpreted as the backup extension, to be
+used in place of
+.Qq .orig .
+.It Fl Fl posix
+Enables strict
+.St -p1003.1-2008
+conformance, specifically:
+.Bl -enum
+.It
+Backup files are not created unless the
+.Fl b
+option is specified.
+.It
+If unspecified, the file name used is the first of the old, new and
+index files that exists.
+.El
+.El
+.Ss Patch Application
+.Nm
+will try to skip any leading garbage, apply the diff,
+and then skip any trailing garbage.
+Thus you could feed an article or message containing a
+diff listing to
+.Nm patch ,
+and it should work.
+If the entire diff is indented by a consistent amount,
+this will be taken into account.
+.Pp
+With context diffs, and to a lesser extent with normal diffs,
+.Nm
+can detect when the line numbers mentioned in the patch are incorrect,
+and will attempt to find the correct place to apply each hunk of the patch.
+As a first guess, it takes the line number mentioned for the hunk, plus or
+minus any offset used in applying the previous hunk.
+If that is not the correct place,
+.Nm
+will scan both forwards and backwards for a set of lines matching the context
+given in the hunk.
+First
+.Nm
+looks for a place where all lines of the context match.
+If no such place is found, and it's a context diff, and the maximum fuzz factor
+is set to 1 or more, then another scan takes place ignoring the first and last
+line of context.
+If that fails, and the maximum fuzz factor is set to 2 or more,
+the first two and last two lines of context are ignored,
+and another scan is made.
+.Pq The default maximum fuzz factor is 2.
+.Pp
+If
+.Nm
+cannot find a place to install that hunk of the patch, it will put the hunk
+out to a reject file, which normally is the name of the output file plus
+.Qq .rej .
+(Note that the rejected hunk will come out in context diff form whether the
+input patch was a context diff or a normal diff.
+If the input was a normal diff, many of the contexts will simply be null.)
+The line numbers on the hunks in the reject file may be different than
+in the patch file: they reflect the approximate location patch thinks the
+failed hunks belong in the new file rather than the old one.
+.Pp
+As each hunk is completed, you will be told whether the hunk succeeded or
+failed, and which line (in the new file)
+.Nm
+thought the hunk should go on.
+If this is different from the line number specified in the diff,
+you will be told the offset.
+A single large offset MAY be an indication that a hunk was installed in the
+wrong place.
+You will also be told if a fuzz factor was used to make the match, in which
+case you should also be slightly suspicious.
+.Ss Filename Determination
+If no original file is specified on the command line,
+.Nm
+will try to figure out from the leading garbage what the name of the file
+to edit is.
+When checking a prospective file name, pathname components are stripped
+as specified by the
+.Fl p
+option and the file's existence and writability are checked relative
+to the current working directory (or the directory specified by the
+.Fl d
+option).
+.Pp
+If the diff is a context or unified diff,
+.Nm
+is able to determine the old and new file names from the diff header.
+For context diffs, the
+.Dq old
+file is specified in the line beginning with
+.Qq ***
+and the
+.Dq new
+file is specified in the line beginning with
+.Qq --- .
+For a unified diff, the
+.Dq old
+file is specified in the line beginning with
+.Qq ---
+and the
+.Dq new
+file is specified in the line beginning with
+.Qq +++ .
+If there is an
+.Qq Index:
+line in the leading garbage (regardless of the diff type),
+.Nm
+will use the file name from that line as the
+.Dq index
+file.
+.Pp
+.Nm
+will choose the file name by performing the following steps, with the first
+match used:
+.Bl -enum
+.It
+If
+.Nm
+is operating in strict
+.St -p1003.1-2008
+mode, the first of the
+.Dq old ,
+.Dq new
+and
+.Dq index
+file names that exist is used.
+Otherwise,
+.Nm
+will examine either the
+.Dq old
+and
+.Dq new
+file names or, for a non-context diff, the
+.Dq index
+file name, and choose the file name with the fewest path components,
+the shortest basename, and the shortest total file name length (in that order).
+.It
+If no file exists,
+.Nm
+checks for the existence of the files in an SCCS or RCS directory
+(using the appropriate prefix or suffix) using the criteria specified
+above.
+If found,
+.Nm
+will attempt to get or check out the file.
+.It
+If no suitable file was found to patch, the patch file is a context or
+unified diff, and the old file was zero length, the new file name is
+created and used.
+.It
+If the file name still cannot be determined,
+.Nm
+will prompt the user for the file name to use.
+.El
+.Pp
+Additionally, if the leading garbage contains a
+.Qq Prereq:\ \&
+line,
+.Nm
+will take the first word from the prerequisites line (normally a version
+number) and check the input file to see if that word can be found.
+If not,
+.Nm
+will ask for confirmation before proceeding.
+.Pp
+The upshot of all this is that you should be able to say, while in a news
+interface, the following:
+.Pp
+.Dl | patch -d /usr/src/local/blurfl
+.Pp
+and patch a file in the blurfl directory directly from the article containing
+the patch.
+.Ss Backup Files
+By default, the patched version is put in place of the original, with
+the original file backed up to the same name with the extension
+.Qq .orig ,
+or as specified by the
+.Fl B ,
+.Fl V ,
+or
+.Fl z
+options.
+The extension used for making backup files may also be specified in the
+.Ev SIMPLE_BACKUP_SUFFIX
+environment variable, which is overridden by the options above.
+.Pp
+If the backup file is a symbolic or hard link to the original file,
+.Nm
+creates a new backup file name by changing the first lowercase letter
+in the last component of the file's name into uppercase.
+If there are no more lowercase letters in the name,
+it removes the first character from the name.
+It repeats this process until it comes up with a
+backup file that does not already exist or is not linked to the original file.
+.Pp
+You may also specify where you want the output to go with the
+.Fl o
+option; if that file already exists, it is backed up first.
+.Ss Notes For Patch Senders
+There are several things you should bear in mind if you are going to
+be sending out patches:
+.Pp
+First, you can save people a lot of grief by keeping a
+.Pa patchlevel.h
+file which is patched to increment the patch level as the first diff in the
+patch file you send out.
+If you put a
+.Qq Prereq:
+line in with the patch, it won't let them apply
+patches out of order without some warning.
+.Pp
+Second, make sure you've specified the file names right, either in a
+context diff header, or with an
+.Qq Index:
+line.
+If you are patching something in a subdirectory, be sure to tell the patch
+user to specify a
+.Fl p
+option as needed.
+.Pp
+Third, you can create a file by sending out a diff that compares a
+null file to the file you want to create.
+This will only work if the file you want to create doesn't exist already in
+the target directory.
+.Pp
+Fourth, take care not to send out reversed patches, since it makes people wonder
+whether they already applied the patch.
+.Pp
+Fifth, while you may be able to get away with putting 582 diff listings into
+one file, it is probably wiser to group related patches into separate files in
+case something goes haywire.
+.Sh ENVIRONMENT
+.Bl -tag -width "PATCH_VERSION_CONTROL" -compact
+.It Ev POSIXLY_CORRECT
+When set,
+.Nm
+behaves as if the
+.Fl Fl posix
+option has been specified.
+.It Ev SIMPLE_BACKUP_SUFFIX
+Extension to use for backup file names instead of
+.Qq .orig .
+.It Ev TMPDIR
+Directory to put temporary files in; default is
+.Pa /tmp .
+.It Ev PATCH_VERSION_CONTROL
+Selects when numbered backup files are made.
+.It Ev VERSION_CONTROL
+Same as
+.Ev PATCH_VERSION_CONTROL .
+.El
+.Sh FILES
+.Bl -tag -width "$TMPDIR/patch*" -compact
+.It Pa $TMPDIR/patch*
+.Nm
+temporary files
+.It Pa /dev/tty
+used to read input when
+.Nm
+prompts the user
+.El
+.Sh DIAGNOSTICS
+Too many to list here, but generally indicative that
+.Nm
+couldn't parse your patch file.
+.Pp
+The message
+.Qq Hmm...
+indicates that there is unprocessed text in the patch file and that
+.Nm
+is attempting to intuit whether there is a patch in that text and, if so,
+what kind of patch it is.
+.Pp
+The
+.Nm
+utility exits with one of the following values:
+.Pp
+.Bl -tag -width Ds -compact -offset indent
+.It \&0
+Successful completion.
+.It \&1
+One or more lines were written to a reject file.
+.It \*[Gt]\&1
+An error occurred.
+.El
+.Pp
+When applying a set of patches in a loop it behooves you to check this
+exit status so you don't apply a later patch to a partially patched file.
+.Sh SEE ALSO
+.Xr diff 1
+.Sh STANDARDS
+The
+.Nm
+utility is compliant with the
+.St -p1003.1-2008
+specification
+(except as detailed above for the
+.Fl -posix
+option),
+though the presence of
+.Nm
+itself is optional.
+.Pp
+The flags
+.Op Fl BCEFfstVvxz
+and
+.Op Fl -posix
+are extensions to that specification.
+.Sh AUTHORS
+.An Larry Wall
+with many other contributors.
+.Sh CAVEATS
+.Nm
+cannot tell if the line numbers are off in an ed script, and can only detect
+bad line numbers in a normal diff when it finds a
+.Qq change
+or a
+.Qq delete
+command.
+A context diff using fuzz factor 3 may have the same problem.
+Until a suitable interactive interface is added, you should probably do
+a context diff in these cases to see if the changes made sense.
+Of course, compiling without errors is a pretty good indication that the patch
+worked, but not always.
+.Pp
+.Nm
+usually produces the correct results, even when it has to do a lot of
+guessing.
+However, the results are guaranteed to be correct only when the patch is
+applied to exactly the same version of the file that the patch was
+generated from.
+.Sh BUGS
+Could be smarter about partial matches, excessively deviant offsets and
+swapped code, but that would take an extra pass.
+.Pp
+Check patch mode
+.Pq Fl C
+will fail if you try to check several patches in succession that build on
+each other.
+The entire
+.Nm
+code would have to be restructured to keep temporary files around so that it
+can handle this situation.
+.Pp
+If code has been duplicated (for instance with #ifdef OLDCODE ... #else ...
+#endif),
+.Nm
+is incapable of patching both versions, and, if it works at all, will likely
+patch the wrong one, and tell you that it succeeded to boot.
+.Pp
+If you apply a patch you've already applied,
+.Nm
+will think it is a reversed patch, and offer to un-apply the patch.
+This could be construed as a feature.
diff --git a/patch_cmds/patch/patch.c b/patch_cmds/patch/patch.c
new file mode 100644
index 0000000..78d2ec2
--- /dev/null
+++ b/patch_cmds/patch/patch.c
@@ -0,0 +1,1058 @@
+/* $OpenBSD: patch.c,v 1.48 2009/10/27 23:59:41 deraadt Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <ctype.h>
+#include <getopt.h>
+#include <limits.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "common.h"
+#include "util.h"
+#include "pch.h"
+#include "inp.h"
+#include "backupfile.h"
+#include "pathnames.h"
+
+mode_t filemode = 0644;
+
+char buf[MAXLINELEN]; /* general purpose buffer */
+
+bool using_plan_a = true; /* try to keep everything in memory */
+bool out_of_mem = false; /* ran out of memory in plan a */
+
+#define MAXFILEC 2
+
+char *filearg[MAXFILEC];
+bool ok_to_create_file = false;
+char *outname = NULL;
+char *origprae = NULL;
+char *TMPOUTNAME;
+char *TMPINNAME;
+char *TMPREJNAME;
+char *TMPPATNAME;
+bool toutkeep = false;
+bool trejkeep = false;
+bool warn_on_invalid_line;
+bool last_line_missing_eol;
+
+#ifdef DEBUGGING
+int debug = 0;
+#endif
+
+bool force = false;
+bool batch = false;
+int verbose = false;
+bool reverse = false;
+bool noreverse = false;
+bool skip_rest_of_patch = false;
+int strippath = 957;
+bool canonicalize = false;
+bool check_only = false;
+int diff_type = 0;
+char *revision = NULL; /* prerequisite revision, if any */
+LINENUM input_lines = 0; /* how long is input file in lines */
+int posix = 0; /* strict POSIX mode? */
+
+static void reinitialize_almost_everything(void);
+static void get_some_switches(void);
+static LINENUM locate_hunk(LINENUM);
+static void abort_context_hunk(void);
+static void rej_line(int, LINENUM);
+static void abort_hunk(void);
+static void apply_hunk(LINENUM);
+static void init_output(const char *);
+static void init_reject(const char *);
+static void copy_till(LINENUM, bool);
+static void spew_output(void);
+static void dump_line(LINENUM, bool);
+static bool patch_match(LINENUM, LINENUM, LINENUM);
+static bool similar(const char *, const char *, int);
+static __dead void usage(void);
+
+/* true if -E was specified on command line. */
+static bool remove_empty_files = false;
+
+/* true if -R was specified on command line. */
+static bool reverse_flag_specified = false;
+
+/* buffer holding the name of the rejected patch file. */
+static char rejname[NAME_MAX + 1];
+
+/* buffer for stderr */
+static char serrbuf[BUFSIZ];
+
+/* how many input lines have been irretractibly output */
+static LINENUM last_frozen_line = 0;
+
+static int Argc; /* guess */
+static char **Argv;
+static int Argc_last; /* for restarting plan_b */
+static char **Argv_last;
+
+static FILE *ofp = NULL; /* output file pointer */
+static FILE *rejfp = NULL; /* reject file pointer */
+
+static int filec = 0; /* how many file arguments? */
+static LINENUM last_offset = 0;
+static LINENUM maxfuzz = 2;
+
+/* patch using ifdef, ifndef, etc. */
+static bool do_defines = false;
+/* #ifdef xyzzy */
+static char if_defined[128];
+/* #ifndef xyzzy */
+static char not_defined[128];
+/* #else */
+static const char else_defined[] = "#else\n";
+/* #endif xyzzy */
+static char end_defined[128];
+
+
+/* Apply a set of diffs as appropriate. */
+
+int
+main(int argc, char *argv[])
+{
+ int error = 0, hunk, failed, i, fd;
+ bool patch_seen;
+ LINENUM where = 0, newwhere, fuzz, mymaxfuzz;
+ const char *tmpdir;
+ char *v;
+
+ setbuf(stderr, serrbuf);
+ for (i = 0; i < MAXFILEC; i++)
+ filearg[i] = NULL;
+
+ /* Cons up the names of the temporary files. */
+ if ((tmpdir = getenv("TMPDIR")) == NULL || *tmpdir == '\0')
+ tmpdir = _PATH_TMP;
+ for (i = strlen(tmpdir) - 1; i > 0 && tmpdir[i] == '/'; i--)
+ ;
+ i++;
+ if (asprintf(&TMPOUTNAME, "%.*s/patchoXXXXXXXXXX", i, tmpdir) == -1)
+ fatal("cannot allocate memory");
+ if ((fd = mkstemp(TMPOUTNAME)) < 0)
+ pfatal("can't create %s", TMPOUTNAME);
+ close(fd);
+
+ if (asprintf(&TMPINNAME, "%.*s/patchiXXXXXXXXXX", i, tmpdir) == -1)
+ fatal("cannot allocate memory");
+ if ((fd = mkstemp(TMPINNAME)) < 0)
+ pfatal("can't create %s", TMPINNAME);
+ close(fd);
+
+ if (asprintf(&TMPREJNAME, "%.*s/patchrXXXXXXXXXX", i, tmpdir) == -1)
+ fatal("cannot allocate memory");
+ if ((fd = mkstemp(TMPREJNAME)) < 0)
+ pfatal("can't create %s", TMPREJNAME);
+ close(fd);
+
+ if (asprintf(&TMPPATNAME, "%.*s/patchpXXXXXXXXXX", i, tmpdir) == -1)
+ fatal("cannot allocate memory");
+ if ((fd = mkstemp(TMPPATNAME)) < 0)
+ pfatal("can't create %s", TMPPATNAME);
+ close(fd);
+
+ v = getenv("SIMPLE_BACKUP_SUFFIX");
+ if (v)
+ simple_backup_suffix = v;
+ else
+ simple_backup_suffix = ORIGEXT;
+
+ /* parse switches */
+ Argc = argc;
+ Argv = argv;
+ get_some_switches();
+
+ if (backup_type == none) {
+ if ((v = getenv("PATCH_VERSION_CONTROL")) == NULL)
+ v = getenv("VERSION_CONTROL");
+ if (v != NULL || !posix)
+ backup_type = get_version(v); /* OK to pass NULL. */
+ }
+
+ /* make sure we clean up /tmp in case of disaster */
+ set_signals(0);
+
+ patch_seen = false;
+ for (open_patch_file(filearg[1]); there_is_another_patch();
+ reinitialize_almost_everything()) {
+ /* for each patch in patch file */
+
+ patch_seen = true;
+
+ warn_on_invalid_line = true;
+
+ if (outname == NULL)
+ outname = savestr(filearg[0]);
+
+ /* for ed script just up and do it and exit */
+ if (diff_type == ED_DIFF) {
+ do_ed_script();
+ continue;
+ }
+ /* initialize the patched file */
+ if (!skip_rest_of_patch)
+ init_output(TMPOUTNAME);
+
+ /* initialize reject file */
+ init_reject(TMPREJNAME);
+
+ /* find out where all the lines are */
+ if (!skip_rest_of_patch)
+ scan_input(filearg[0]);
+
+ /* from here on, open no standard i/o files, because malloc */
+ /* might misfire and we can't catch it easily */
+
+ /* apply each hunk of patch */
+ hunk = 0;
+ failed = 0;
+ out_of_mem = false;
+ while (another_hunk()) {
+ hunk++;
+ fuzz = 0;
+ mymaxfuzz = pch_context();
+ if (maxfuzz < mymaxfuzz)
+ mymaxfuzz = maxfuzz;
+ if (!skip_rest_of_patch) {
+ do {
+ where = locate_hunk(fuzz);
+ if (hunk == 1 && where == 0 && !force) {
+ /* dwim for reversed patch? */
+ if (!pch_swap()) {
+ if (fuzz == 0)
+ say("Not enough memory to try swapped hunk! Assuming unswapped.\n");
+ continue;
+ }
+ reverse = !reverse;
+ /* try again */
+ where = locate_hunk(fuzz);
+ if (where == 0) {
+ /* didn't find it swapped */
+ if (!pch_swap())
+ /* put it back to normal */
+ fatal("lost hunk on alloc error!\n");
+ reverse = !reverse;
+ } else if (noreverse) {
+ if (!pch_swap())
+ /* put it back to normal */
+ fatal("lost hunk on alloc error!\n");
+ reverse = !reverse;
+ say("Ignoring previously applied (or reversed) patch.\n");
+ skip_rest_of_patch = true;
+ } else if (batch) {
+ if (verbose)
+ say("%seversed (or previously applied) patch detected! %s -R.",
+ reverse ? "R" : "Unr",
+ reverse ? "Assuming" : "Ignoring");
+ } else {
+ ask("%seversed (or previously applied) patch detected! %s -R? [y] ",
+ reverse ? "R" : "Unr",
+ reverse ? "Assume" : "Ignore");
+ if (*buf == 'n') {
+ ask("Apply anyway? [n] ");
+ if (*buf != 'y')
+ skip_rest_of_patch = true;
+ where = 0;
+ reverse = !reverse;
+ if (!pch_swap())
+ /* put it back to normal */
+ fatal("lost hunk on alloc error!\n");
+ }
+ }
+ }
+ } while (!skip_rest_of_patch && where == 0 &&
+ ++fuzz <= mymaxfuzz);
+
+ if (skip_rest_of_patch) { /* just got decided */
+ fclose(ofp);
+ ofp = NULL;
+ }
+ }
+ newwhere = pch_newfirst() + last_offset;
+ if (skip_rest_of_patch) {
+ abort_hunk();
+ failed++;
+ if (verbose)
+ say("Hunk #%d ignored at %ld.\n",
+ hunk, newwhere);
+ } else if (where == 0) {
+ abort_hunk();
+ failed++;
+ if (verbose)
+ say("Hunk #%d failed at %ld.\n",
+ hunk, newwhere);
+ } else {
+ apply_hunk(where);
+ if (verbose) {
+ say("Hunk #%d succeeded at %ld",
+ hunk, newwhere);
+ if (fuzz != 0)
+ say(" with fuzz %ld", fuzz);
+ if (last_offset)
+ say(" (offset %ld line%s)",
+ last_offset,
+ last_offset == 1L ? "" : "s");
+ say(".\n");
+ }
+ }
+ }
+
+ if (out_of_mem && using_plan_a) {
+ Argc = Argc_last;
+ Argv = Argv_last;
+ say("\n\nRan out of memory using Plan A--trying again...\n\n");
+ if (ofp)
+ fclose(ofp);
+ ofp = NULL;
+ if (rejfp)
+ fclose(rejfp);
+ rejfp = NULL;
+ continue;
+ }
+ if (hunk == 0)
+ fatal("Internal error: hunk should not be 0\n");
+
+ /* finish spewing out the new file */
+ if (!skip_rest_of_patch)
+ spew_output();
+
+ /* and put the output where desired */
+ ignore_signals();
+ if (!skip_rest_of_patch) {
+ struct stat statbuf;
+ char *realout = outname;
+
+ if (!check_only) {
+ if (move_file(TMPOUTNAME, outname) < 0) {
+ toutkeep = true;
+ realout = TMPOUTNAME;
+ chmod(TMPOUTNAME, filemode);
+ } else
+ chmod(outname, filemode);
+
+ if (remove_empty_files &&
+ stat(realout, &statbuf) == 0 &&
+ statbuf.st_size == 0) {
+ if (verbose)
+ say("Removing %s (empty after patching).\n",
+ realout);
+ unlink(realout);
+ }
+ }
+ }
+ fclose(rejfp);
+ rejfp = NULL;
+ if (failed) {
+ error = 1;
+ if (*rejname == '\0') {
+ if (strlcpy(rejname, outname,
+ sizeof(rejname)) >= sizeof(rejname))
+ fatal("filename %s is too long\n", outname);
+ if (strlcat(rejname, REJEXT,
+ sizeof(rejname)) >= sizeof(rejname))
+ fatal("filename %s is too long\n", outname);
+ }
+ if (skip_rest_of_patch) {
+ say("%d out of %d hunks ignored--saving rejects to %s\n",
+ failed, hunk, rejname);
+ } else {
+ say("%d out of %d hunks failed--saving rejects to %s\n",
+ failed, hunk, rejname);
+ }
+ if (!check_only && move_file(TMPREJNAME, rejname) < 0)
+ trejkeep = true;
+ }
+ set_signals(1);
+ }
+
+ if (!patch_seen)
+ error = 2;
+
+ my_exit(error);
+ /* NOTREACHED */
+}
+
+/* Prepare to find the next patch to do in the patch file. */
+
+static void
+reinitialize_almost_everything(void)
+{
+ re_patch();
+ re_input();
+
+ input_lines = 0;
+ last_frozen_line = 0;
+
+ filec = 0;
+ if (!out_of_mem) {
+ free(filearg[0]);
+ filearg[0] = NULL;
+ }
+
+ free(outname);
+ outname = NULL;
+
+ last_offset = 0;
+ diff_type = 0;
+
+ free(revision);
+ revision = NULL;
+
+ reverse = reverse_flag_specified;
+ skip_rest_of_patch = false;
+
+ get_some_switches();
+}
+
+/* Process switches and filenames. */
+
+static void
+get_some_switches(void)
+{
+ const char *options = "b::B:cCd:D:eEfF:i:lnNo:p:r:RstuvV:x:z:";
+ static struct option longopts[] = {
+ {"backup", no_argument, 0, 'b'},
+ {"batch", no_argument, 0, 't'},
+ {"binary", no_argument, 0, 1},
+ {"check", no_argument, 0, 'C'},
+ {"context", no_argument, 0, 'c'},
+ {"debug", required_argument, 0, 'x'},
+ {"directory", required_argument, 0, 'd'},
+ {"dry-run", no_argument, 0, 'C'},
+ {"ed", no_argument, 0, 'e'},
+ {"force", no_argument, 0, 'f'},
+ {"forward", no_argument, 0, 'N'},
+ {"fuzz", required_argument, 0, 'F'},
+ {"ifdef", required_argument, 0, 'D'},
+ {"input", required_argument, 0, 'i'},
+ {"ignore-whitespace", no_argument, 0, 'l'},
+ {"normal", no_argument, 0, 'n'},
+ {"output", required_argument, 0, 'o'},
+ {"prefix", required_argument, 0, 'B'},
+ {"quiet", no_argument, 0, 's'},
+ {"reject-file", required_argument, 0, 'r'},
+ {"remove-empty-files", no_argument, 0, 'E'},
+ {"reverse", no_argument, 0, 'R'},
+ {"silent", no_argument, 0, 's'},
+ {"strip", required_argument, 0, 'p'},
+ {"suffix", required_argument, 0, 'z'},
+ {"unified", no_argument, 0, 'u'},
+ {"version", no_argument, 0, 'v'},
+ {"version-control", required_argument, 0, 'V'},
+ {"posix", no_argument, &posix, 1},
+ {"verbose", no_argument, &verbose, true},
+ {NULL, 0, 0, 0}
+ };
+ int ch;
+
+ rejname[0] = '\0';
+ Argc_last = Argc;
+ Argv_last = Argv;
+ if (!Argc)
+ return;
+ optreset = optind = 1;
+ while ((ch = getopt_long(Argc, Argv, options, longopts, NULL)) != -1) {
+ switch (ch) {
+ case 'b':
+ if (backup_type == none)
+ backup_type = numbered_existing;
+ if (optarg == NULL)
+ break;
+ if (verbose)
+ say("Warning, the ``-b suffix'' option has been"
+ " obsoleted by the -z option.\n");
+ /* FALLTHROUGH */
+ case 'z':
+ /* must directly follow 'b' case for backwards compat */
+ simple_backup_suffix = savestr(optarg);
+ break;
+ case 'B':
+ origprae = savestr(optarg);
+ break;
+ case 'c':
+ diff_type = CONTEXT_DIFF;
+ break;
+ case 'C':
+ check_only = true;
+ break;
+ case 'd':
+ if (chdir(optarg) < 0)
+ pfatal("can't cd to %s", optarg);
+ break;
+ case 'D':
+ do_defines = true;
+ if (!isalpha(*optarg) && *optarg != '_')
+ fatal("argument to -D is not an identifier\n");
+ snprintf(if_defined, sizeof if_defined,
+ "#ifdef %s\n", optarg);
+ snprintf(not_defined, sizeof not_defined,
+ "#ifndef %s\n", optarg);
+ snprintf(end_defined, sizeof end_defined,
+ "#endif /* %s */\n", optarg);
+ break;
+ case 'e':
+ diff_type = ED_DIFF;
+ break;
+ case 'E':
+ remove_empty_files = true;
+ break;
+ case 'f':
+ force = true;
+ break;
+ case 'F':
+ maxfuzz = atoi(optarg);
+ break;
+ case 'i':
+ if (++filec == MAXFILEC)
+ fatal("too many file arguments\n");
+ filearg[filec] = savestr(optarg);
+ break;
+ case 'l':
+ canonicalize = true;
+ break;
+ case 'n':
+ diff_type = NORMAL_DIFF;
+ break;
+ case 'N':
+ noreverse = true;
+ break;
+ case 'o':
+ outname = savestr(optarg);
+ break;
+ case 'p':
+ strippath = atoi(optarg);
+ break;
+ case 'r':
+ if (strlcpy(rejname, optarg,
+ sizeof(rejname)) >= sizeof(rejname))
+ fatal("argument for -r is too long\n");
+ break;
+ case 'R':
+ reverse = true;
+ reverse_flag_specified = true;
+ break;
+ case 's':
+ verbose = false;
+ break;
+ case 't':
+ batch = true;
+ break;
+ case 'u':
+ diff_type = UNI_DIFF;
+ break;
+ case 'v':
+ version();
+ break;
+ case 'V':
+ backup_type = get_version(optarg);
+ break;
+#ifdef DEBUGGING
+ case 'x':
+ debug = atoi(optarg);
+ break;
+#endif
+ case 1:
+ /* ignored */
+ break;
+ default:
+ if (ch != '\0')
+ usage();
+ break;
+ }
+ }
+ Argc -= optind;
+ Argv += optind;
+
+ if (Argc > 0) {
+ filearg[0] = savestr(*Argv++);
+ Argc--;
+ while (Argc > 0) {
+ if (++filec == MAXFILEC)
+ fatal("too many file arguments\n");
+ filearg[filec] = savestr(*Argv++);
+ Argc--;
+ }
+ }
+
+ if (getenv("POSIXLY_CORRECT") != NULL)
+ posix = 1;
+}
+
+static __dead void
+usage(void)
+{
+ fprintf(stderr,
+"usage: patch [-bCcEeflNnRstuv] [-B backup-prefix] [-D symbol] [-d directory]\n"
+" [-F max-fuzz] [-i patchfile] [-o out-file] [-p strip-count]\n"
+" [-r rej-name] [-V t | nil | never] [-x number] [-z backup-ext]\n"
+" [--posix] [origfile [patchfile]]\n"
+" patch <patchfile\n");
+ my_exit(EXIT_SUCCESS);
+}
+
+/*
+ * Attempt to find the right place to apply this hunk of patch.
+ */
+static LINENUM
+locate_hunk(LINENUM fuzz)
+{
+ LINENUM first_guess = pch_first() + last_offset;
+ LINENUM offset;
+ LINENUM pat_lines = pch_ptrn_lines();
+ LINENUM max_pos_offset = input_lines - first_guess - pat_lines + 1;
+ LINENUM max_neg_offset = first_guess - last_frozen_line - 1 + pch_context();
+
+ if (pat_lines == 0) { /* null range matches always */
+ if (verbose && fuzz == 0 && (diff_type == CONTEXT_DIFF
+ || diff_type == NEW_CONTEXT_DIFF
+ || diff_type == UNI_DIFF)) {
+ say("Empty context always matches.\n");
+ }
+ return (first_guess);
+ }
+ if (max_neg_offset >= first_guess) /* do not try lines < 0 */
+ max_neg_offset = first_guess - 1;
+ if (first_guess <= input_lines && patch_match(first_guess, 0, fuzz))
+ return first_guess;
+ for (offset = 1; ; offset++) {
+ bool check_after = (offset <= max_pos_offset);
+ bool check_before = (offset <= max_neg_offset);
+
+ if (check_after && patch_match(first_guess, offset, fuzz)) {
+#ifdef DEBUGGING
+ if (debug & 1)
+ say("Offset changing from %ld to %ld\n",
+ last_offset, offset);
+#endif
+ last_offset = offset;
+ return first_guess + offset;
+ } else if (check_before && patch_match(first_guess, -offset, fuzz)) {
+#ifdef DEBUGGING
+ if (debug & 1)
+ say("Offset changing from %ld to %ld\n",
+ last_offset, -offset);
+#endif
+ last_offset = -offset;
+ return first_guess - offset;
+ } else if (!check_before && !check_after)
+ return 0;
+ }
+}
+
+/* We did not find the pattern, dump out the hunk so they can handle it. */
+
+static void
+abort_context_hunk(void)
+{
+ LINENUM i;
+ const LINENUM pat_end = pch_end();
+ /*
+ * add in last_offset to guess the same as the previous successful
+ * hunk
+ */
+ const LINENUM oldfirst = pch_first() + last_offset;
+ const LINENUM newfirst = pch_newfirst() + last_offset;
+ const LINENUM oldlast = oldfirst + pch_ptrn_lines() - 1;
+ const LINENUM newlast = newfirst + pch_repl_lines() - 1;
+ const char *stars = (diff_type >= NEW_CONTEXT_DIFF ? " ****" : "");
+ const char *minuses = (diff_type >= NEW_CONTEXT_DIFF ? " ----" : " -----");
+
+ fprintf(rejfp, "***************\n");
+ for (i = 0; i <= pat_end; i++) {
+ switch (pch_char(i)) {
+ case '*':
+ if (oldlast < oldfirst)
+ fprintf(rejfp, "*** 0%s\n", stars);
+ else if (oldlast == oldfirst)
+ fprintf(rejfp, "*** %ld%s\n", oldfirst, stars);
+ else
+ fprintf(rejfp, "*** %ld,%ld%s\n", oldfirst,
+ oldlast, stars);
+ break;
+ case '=':
+ if (newlast < newfirst)
+ fprintf(rejfp, "--- 0%s\n", minuses);
+ else if (newlast == newfirst)
+ fprintf(rejfp, "--- %ld%s\n", newfirst, minuses);
+ else
+ fprintf(rejfp, "--- %ld,%ld%s\n", newfirst,
+ newlast, minuses);
+ break;
+ case '\n':
+ fprintf(rejfp, "%s", pfetch(i));
+ break;
+ case ' ':
+ case '-':
+ case '+':
+ case '!':
+ fprintf(rejfp, "%c %s", pch_char(i), pfetch(i));
+ break;
+ default:
+ fatal("fatal internal error in abort_context_hunk\n");
+ }
+ }
+}
+
+static void
+rej_line(int ch, LINENUM i)
+{
+ size_t len;
+ const char *line = pfetch(i);
+
+ len = strlen(line);
+
+ fprintf(rejfp, "%c%s", ch, line);
+ if (len == 0 || line[len-1] != '\n')
+ fprintf(rejfp, "\n\\ No newline at end of file\n");
+}
+
+static void
+abort_hunk(void)
+{
+ LINENUM i, j, split;
+ int ch1, ch2;
+ const LINENUM pat_end = pch_end();
+ const LINENUM oldfirst = pch_first() + last_offset;
+ const LINENUM newfirst = pch_newfirst() + last_offset;
+
+ if (diff_type != UNI_DIFF) {
+ abort_context_hunk();
+ return;
+ }
+ split = -1;
+ for (i = 0; i <= pat_end; i++) {
+ if (pch_char(i) == '=') {
+ split = i;
+ break;
+ }
+ }
+ if (split == -1) {
+ fprintf(rejfp, "malformed hunk: no split found\n");
+ return;
+ }
+ i = 0;
+ j = split + 1;
+ fprintf(rejfp, "@@ -%ld,%ld +%ld,%ld @@\n",
+ pch_ptrn_lines() ? oldfirst : 0,
+ pch_ptrn_lines(), newfirst, pch_repl_lines());
+ while (i < split || j <= pat_end) {
+ ch1 = i < split ? pch_char(i) : -1;
+ ch2 = j <= pat_end ? pch_char(j) : -1;
+ if (ch1 == '-') {
+ rej_line('-', i);
+ i++;
+ } else if (ch1 == ' ' && ch2 == ' ') {
+ rej_line(' ', i);
+ i++;
+ j++;
+ } else if (ch1 == '!' && ch2 == '!') {
+ while (i < split && ch1 == '!') {
+ rej_line('-', i);
+ i++;
+ ch1 = i < split ? pch_char(i) : -1;
+ }
+ while (j <= pat_end && ch2 == '!') {
+ rej_line('+', j);
+ j++;
+ ch2 = j <= pat_end ? pch_char(j) : -1;
+ }
+ } else if (ch1 == '*') {
+ i++;
+ } else if (ch2 == '+' || ch2 == ' ') {
+ rej_line(ch2, j);
+ j++;
+ } else {
+ fprintf(rejfp, "internal error on (%ld %ld %ld)\n",
+ i, split, j);
+ rej_line(ch1, i);
+ rej_line(ch2, j);
+ return;
+ }
+ }
+}
+
+/* We found where to apply it (we hope), so do it. */
+
+static void
+apply_hunk(LINENUM where)
+{
+ LINENUM old = 1;
+ const LINENUM lastline = pch_ptrn_lines();
+ LINENUM new = lastline + 1;
+#define OUTSIDE 0
+#define IN_IFNDEF 1
+#define IN_IFDEF 2
+#define IN_ELSE 3
+ int def_state = OUTSIDE;
+ const LINENUM pat_end = pch_end();
+
+ where--;
+ while (pch_char(new) == '=' || pch_char(new) == '\n')
+ new++;
+
+ while (old <= lastline) {
+ if (pch_char(old) == '-') {
+ copy_till(where + old - 1, false);
+ if (do_defines) {
+ if (def_state == OUTSIDE) {
+ fputs(not_defined, ofp);
+ def_state = IN_IFNDEF;
+ } else if (def_state == IN_IFDEF) {
+ fputs(else_defined, ofp);
+ def_state = IN_ELSE;
+ }
+ fputs(pfetch(old), ofp);
+ }
+ last_frozen_line++;
+ old++;
+ } else if (new > pat_end) {
+ break;
+ } else if (pch_char(new) == '+') {
+ copy_till(where + old - 1, false);
+ if (do_defines) {
+ if (def_state == IN_IFNDEF) {
+ fputs(else_defined, ofp);
+ def_state = IN_ELSE;
+ } else if (def_state == OUTSIDE) {
+ fputs(if_defined, ofp);
+ def_state = IN_IFDEF;
+ }
+ }
+ fputs(pfetch(new), ofp);
+ new++;
+ } else if (pch_char(new) != pch_char(old)) {
+ say("Out-of-sync patch, lines %ld,%ld--mangled text or line numbers, maybe?\n",
+ pch_hunk_beg() + old,
+ pch_hunk_beg() + new);
+#ifdef DEBUGGING
+ say("oldchar = '%c', newchar = '%c'\n",
+ pch_char(old), pch_char(new));
+#endif
+ my_exit(2);
+ } else if (pch_char(new) == '!') {
+ copy_till(where + old - 1, false);
+ if (do_defines) {
+ fputs(not_defined, ofp);
+ def_state = IN_IFNDEF;
+ }
+ while (pch_char(old) == '!') {
+ if (do_defines) {
+ fputs(pfetch(old), ofp);
+ }
+ last_frozen_line++;
+ old++;
+ }
+ if (do_defines) {
+ fputs(else_defined, ofp);
+ def_state = IN_ELSE;
+ }
+ while (pch_char(new) == '!') {
+ fputs(pfetch(new), ofp);
+ new++;
+ }
+ } else {
+ if (pch_char(new) != ' ')
+ fatal("Internal error: expected ' '\n");
+ old++;
+ new++;
+ if (do_defines && def_state != OUTSIDE) {
+ fputs(end_defined, ofp);
+ def_state = OUTSIDE;
+ }
+ }
+ }
+ if (new <= pat_end && pch_char(new) == '+') {
+ copy_till(where + old - 1, false);
+ if (do_defines) {
+ if (def_state == OUTSIDE) {
+ fputs(if_defined, ofp);
+ def_state = IN_IFDEF;
+ } else if (def_state == IN_IFNDEF) {
+ fputs(else_defined, ofp);
+ def_state = IN_ELSE;
+ }
+ }
+ while (new <= pat_end && pch_char(new) == '+') {
+ fputs(pfetch(new), ofp);
+ new++;
+ }
+ }
+ if (do_defines && def_state != OUTSIDE) {
+ fputs(end_defined, ofp);
+ }
+}
+
+/*
+ * Open the new file.
+ */
+static void
+init_output(const char *name)
+{
+ ofp = fopen(name, "w");
+ if (ofp == NULL)
+ pfatal("can't create %s", name);
+}
+
+/*
+ * Open a file to put hunks we can't locate.
+ */
+static void
+init_reject(const char *name)
+{
+ rejfp = fopen(name, "w");
+ if (rejfp == NULL)
+ pfatal("can't create %s", name);
+}
+
+/*
+ * Copy input file to output, up to wherever hunk is to be applied.
+ * If endoffile is true, treat the last line specially since it may
+ * lack a newline.
+ */
+static void
+copy_till(LINENUM lastline, bool endoffile)
+{
+ if (last_frozen_line > lastline)
+ fatal("misordered hunks! output would be garbled\n");
+ while (last_frozen_line < lastline) {
+ if (++last_frozen_line == lastline && endoffile)
+ dump_line(last_frozen_line, !last_line_missing_eol);
+ else
+ dump_line(last_frozen_line, true);
+ }
+}
+
+/*
+ * Finish copying the input file to the output file.
+ */
+static void
+spew_output(void)
+{
+#ifdef DEBUGGING
+ if (debug & 256)
+ say("il=%ld lfl=%ld\n", input_lines, last_frozen_line);
+#endif
+ if (input_lines)
+ copy_till(input_lines, true); /* dump remainder of file */
+ fclose(ofp);
+ ofp = NULL;
+}
+
+/*
+ * Copy one line from input to output.
+ */
+static void
+dump_line(LINENUM line, bool write_newline)
+{
+ char *s;
+
+ s = ifetch(line, 0);
+ if (s == NULL)
+ return;
+ /* Note: string is not NUL terminated. */
+ for (; *s != '\n'; s++)
+ putc(*s, ofp);
+ if (write_newline)
+ putc('\n', ofp);
+}
+
+/*
+ * Does the patch pattern match at line base+offset?
+ */
+static bool
+patch_match(LINENUM base, LINENUM offset, LINENUM fuzz)
+{
+ LINENUM pline = 1 + fuzz;
+ LINENUM iline;
+ LINENUM pat_lines = pch_ptrn_lines() - fuzz;
+ const char *ilineptr;
+ const char *plineptr;
+ short plinelen;
+
+ for (iline = base + offset + fuzz; pline <= pat_lines; pline++, iline++) {
+ ilineptr = ifetch(iline, offset >= 0);
+ if (ilineptr == NULL)
+ return false;
+ plineptr = pfetch(pline);
+ plinelen = pch_line_len(pline);
+ if (canonicalize) {
+ if (!similar(ilineptr, plineptr, plinelen))
+ return false;
+ } else if (strnNE(ilineptr, plineptr, plinelen))
+ return false;
+ if (iline == input_lines) {
+ /*
+ * We are looking at the last line of the file.
+ * If the file has no eol, the patch line should
+ * not have one either and vice-versa. Note that
+ * plinelen > 0.
+ */
+ if (last_line_missing_eol) {
+ if (plineptr[plinelen - 1] == '\n')
+ return false;
+ } else {
+ if (plineptr[plinelen - 1] != '\n')
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+/*
+ * Do two lines match with canonicalized white space?
+ */
+static bool
+similar(const char *a, const char *b, int len)
+{
+ while (len) {
+ if (isspace(*b)) { /* whitespace (or \n) to match? */
+ if (!isspace(*a)) /* no corresponding whitespace? */
+ return false;
+ while (len && isspace(*b) && *b != '\n')
+ b++, len--; /* skip pattern whitespace */
+ while (isspace(*a) && *a != '\n')
+ a++; /* skip target whitespace */
+ if (*a == '\n' || *b == '\n')
+ return (*a == *b); /* should end in sync */
+ } else if (*a++ != *b++) /* match non-whitespace chars */
+ return false;
+ else
+ len--; /* probably not necessary */
+ }
+ return true; /* actually, this is not reached */
+ /* since there is always a \n */
+}
diff --git a/patch_cmds/patch/pathnames.h b/patch_cmds/patch/pathnames.h
new file mode 100644
index 0000000..397e3fa
--- /dev/null
+++ b/patch_cmds/patch/pathnames.h
@@ -0,0 +1,11 @@
+/* $OpenBSD: pathnames.h,v 1.1 2003/07/29 20:10:17 millert Exp $ */
+
+/*
+ * Placed in the public domain by Todd C. Miller <Todd.Miller@courtesan.com>
+ * on July 29, 2003.
+ */
+
+#include <paths.h>
+
+#define _PATH_ED "/bin/ed"
+#define _PATH_MKDIR "/bin/mkdir"
diff --git a/patch_cmds/patch/pch.c b/patch_cmds/patch/pch.c
new file mode 100644
index 0000000..a689e2e
--- /dev/null
+++ b/patch_cmds/patch/pch.c
@@ -0,0 +1,1544 @@
+/* $OpenBSD: pch.c,v 1.38 2009/10/27 23:59:41 deraadt Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <ctype.h>
+#include <libgen.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "common.h"
+#include "util.h"
+#include "pch.h"
+#include "pathnames.h"
+
+/* Patch (diff listing) abstract type. */
+
+static long p_filesize; /* size of the patch file */
+static LINENUM p_first; /* 1st line number */
+static LINENUM p_newfirst; /* 1st line number of replacement */
+static LINENUM p_ptrn_lines; /* # lines in pattern */
+static LINENUM p_repl_lines; /* # lines in replacement text */
+static LINENUM p_end = -1; /* last line in hunk */
+static LINENUM p_max; /* max allowed value of p_end */
+static LINENUM p_context = 3; /* # of context lines */
+static LINENUM p_input_line = 0; /* current line # from patch file */
+static char **p_line = NULL;/* the text of the hunk */
+static short *p_len = NULL; /* length of each line */
+static char *p_char = NULL; /* +, -, and ! */
+static int hunkmax = INITHUNKMAX; /* size of above arrays to begin with */
+static int p_indent; /* indent to patch */
+static LINENUM p_base; /* where to intuit this time */
+static LINENUM p_bline; /* line # of p_base */
+static LINENUM p_start; /* where intuit found a patch */
+static LINENUM p_sline; /* and the line number for it */
+static LINENUM p_hunk_beg; /* line number of current hunk */
+static LINENUM p_efake = -1; /* end of faked up lines--don't free */
+static LINENUM p_bfake = -1; /* beg of faked up lines */
+static FILE *pfp = NULL; /* patch file pointer */
+static char *bestguess = NULL; /* guess at correct filename */
+
+static void grow_hunkmax(void);
+static int intuit_diff_type(void);
+static void next_intuit_at(LINENUM, LINENUM);
+static void skip_to(LINENUM, LINENUM);
+static char *pgets(char *, int, FILE *);
+static char *best_name(const struct file_name *, bool);
+static char *posix_name(const struct file_name *, bool);
+static size_t num_components(const char *);
+
+/*
+ * Prepare to look for the next patch in the patch file.
+ */
+void
+re_patch(void)
+{
+ p_first = 0;
+ p_newfirst = 0;
+ p_ptrn_lines = 0;
+ p_repl_lines = 0;
+ p_end = (LINENUM) - 1;
+ p_max = 0;
+ p_indent = 0;
+}
+
+/*
+ * Open the patch file at the beginning of time.
+ */
+void
+open_patch_file(const char *filename)
+{
+ struct stat filestat;
+
+ if (filename == NULL || *filename == '\0' || strEQ(filename, "-")) {
+ pfp = fopen(TMPPATNAME, "w");
+ if (pfp == NULL)
+ pfatal("can't create %s", TMPPATNAME);
+ while (fgets(buf, sizeof buf, stdin) != NULL)
+ fputs(buf, pfp);
+ fclose(pfp);
+ filename = TMPPATNAME;
+ }
+ pfp = fopen(filename, "r");
+ if (pfp == NULL)
+ pfatal("patch file %s not found", filename);
+ fstat(fileno(pfp), &filestat);
+ p_filesize = filestat.st_size;
+ next_intuit_at(0L, 1L); /* start at the beginning */
+ set_hunkmax();
+}
+
+/*
+ * Make sure our dynamically realloced tables are malloced to begin with.
+ */
+void
+set_hunkmax(void)
+{
+ if (p_line == NULL)
+ p_line = calloc((size_t) hunkmax, sizeof(char *));
+ if (p_len == NULL)
+ p_len = calloc((size_t) hunkmax, sizeof(short));
+ if (p_char == NULL)
+ p_char = calloc((size_t) hunkmax, sizeof(char));
+}
+
+/*
+ * Enlarge the arrays containing the current hunk of patch.
+ */
+static void
+grow_hunkmax(void)
+{
+ int new_hunkmax;
+ char **new_p_line;
+ short *new_p_len;
+ char *new_p_char;
+
+ new_hunkmax = hunkmax * 2;
+
+ if (p_line == NULL || p_len == NULL || p_char == NULL)
+ fatal("Internal memory allocation error\n");
+
+ new_p_line = realloc(p_line, new_hunkmax * sizeof(char *));
+ if (new_p_line == NULL)
+ free(p_line);
+
+ new_p_len = realloc(p_len, new_hunkmax * sizeof(short));
+ if (new_p_len == NULL)
+ free(p_len);
+
+ new_p_char = realloc(p_char, new_hunkmax * sizeof(char));
+ if (new_p_char == NULL)
+ free(p_char);
+
+ p_char = new_p_char;
+ p_len = new_p_len;
+ p_line = new_p_line;
+
+ if (p_line != NULL && p_len != NULL && p_char != NULL) {
+ hunkmax = new_hunkmax;
+ return;
+ }
+
+ if (!using_plan_a)
+ fatal("out of memory\n");
+ out_of_mem = true; /* whatever is null will be allocated again */
+ /* from within plan_a(), of all places */
+}
+
+/* True if the remainder of the patch file contains a diff of some sort. */
+
+bool
+there_is_another_patch(void)
+{
+ bool exists = false;
+
+ if (p_base != 0L && p_base >= p_filesize) {
+ if (verbose)
+ say("done\n");
+ return false;
+ }
+ if (verbose)
+ say("Hmm...");
+ diff_type = intuit_diff_type();
+ if (!diff_type) {
+ if (p_base != 0L) {
+ if (verbose)
+ say(" Ignoring the trailing garbage.\ndone\n");
+ } else
+ say(" I can't seem to find a patch in there anywhere.\n");
+ return false;
+ }
+ if (verbose)
+ say(" %sooks like %s to me...\n",
+ (p_base == 0L ? "L" : "The next patch l"),
+ diff_type == UNI_DIFF ? "a unified diff" :
+ diff_type == CONTEXT_DIFF ? "a context diff" :
+ diff_type == NEW_CONTEXT_DIFF ? "a new-style context diff" :
+ diff_type == NORMAL_DIFF ? "a normal diff" :
+ "an ed script");
+ if (p_indent && verbose)
+ say("(Patch is indented %d space%s.)\n", p_indent,
+ p_indent == 1 ? "" : "s");
+ skip_to(p_start, p_sline);
+ while (filearg[0] == NULL) {
+ if (force || batch) {
+ say("No file to patch. Skipping...\n");
+ filearg[0] = savestr(bestguess);
+ skip_rest_of_patch = true;
+ return true;
+ }
+ ask("File to patch: ");
+ if (*buf != '\n') {
+ free(bestguess);
+ bestguess = savestr(buf);
+ filearg[0] = fetchname(buf, &exists, 0);
+ }
+ if (!exists) {
+ ask("No file found--skip this patch? [n] ");
+ if (*buf != 'y')
+ continue;
+ if (verbose)
+ say("Skipping patch...\n");
+ free(filearg[0]);
+ filearg[0] = fetchname(bestguess, &exists, 0);
+ skip_rest_of_patch = true;
+ return true;
+ }
+ }
+ return true;
+}
+
+/* Determine what kind of diff is in the remaining part of the patch file. */
+
+static int
+intuit_diff_type(void)
+{
+ long this_line = 0, previous_line;
+ long first_command_line = -1;
+ LINENUM fcl_line = -1;
+ bool last_line_was_command = false, this_is_a_command = false;
+ bool stars_last_line = false, stars_this_line = false;
+ char *s, *t;
+ int indent, retval;
+ struct file_name names[MAX_FILE];
+
+ memset(names, 0, sizeof(names));
+ ok_to_create_file = false;
+ fseek(pfp, p_base, SEEK_SET);
+ p_input_line = p_bline - 1;
+ for (;;) {
+ previous_line = this_line;
+ last_line_was_command = this_is_a_command;
+ stars_last_line = stars_this_line;
+ this_line = ftell(pfp);
+ indent = 0;
+ p_input_line++;
+ if (fgets(buf, sizeof buf, pfp) == NULL) {
+ if (first_command_line >= 0L) {
+ /* nothing but deletes!? */
+ p_start = first_command_line;
+ p_sline = fcl_line;
+ retval = ED_DIFF;
+ goto scan_exit;
+ } else {
+ p_start = this_line;
+ p_sline = p_input_line;
+ retval = 0;
+ goto scan_exit;
+ }
+ }
+ for (s = buf; *s == ' ' || *s == '\t' || *s == 'X'; s++) {
+ if (*s == '\t')
+ indent += 8 - (indent % 8);
+ else
+ indent++;
+ }
+ for (t = s; isdigit(*t) || *t == ','; t++)
+ ;
+ this_is_a_command = (isdigit(*s) &&
+ (*t == 'd' || *t == 'c' || *t == 'a'));
+ if (first_command_line < 0L && this_is_a_command) {
+ first_command_line = this_line;
+ fcl_line = p_input_line;
+ p_indent = indent; /* assume this for now */
+ }
+ if (!stars_last_line && strnEQ(s, "*** ", 4))
+ names[OLD_FILE].path = fetchname(s + 4,
+ &names[OLD_FILE].exists, strippath);
+ else if (strnEQ(s, "--- ", 4))
+ names[NEW_FILE].path = fetchname(s + 4,
+ &names[NEW_FILE].exists, strippath);
+ else if (strnEQ(s, "+++ ", 4))
+ /* pretend it is the old name */
+ names[OLD_FILE].path = fetchname(s + 4,
+ &names[OLD_FILE].exists, strippath);
+ else if (strnEQ(s, "Index:", 6))
+ names[INDEX_FILE].path = fetchname(s + 6,
+ &names[INDEX_FILE].exists, strippath);
+ else if (strnEQ(s, "Prereq:", 7)) {
+ for (t = s + 7; isspace(*t); t++)
+ ;
+ revision = savestr(t);
+ for (t = revision; *t && !isspace(*t); t++)
+ ;
+ *t = '\0';
+ if (*revision == '\0') {
+ free(revision);
+ revision = NULL;
+ }
+ }
+ if ((!diff_type || diff_type == ED_DIFF) &&
+ first_command_line >= 0L &&
+ strEQ(s, ".\n")) {
+ p_indent = indent;
+ p_start = first_command_line;
+ p_sline = fcl_line;
+ retval = ED_DIFF;
+ goto scan_exit;
+ }
+ if ((!diff_type || diff_type == UNI_DIFF) && strnEQ(s, "@@ -", 4)) {
+ if (strnEQ(s + 4, "0,0", 3))
+ ok_to_create_file = true;
+ p_indent = indent;
+ p_start = this_line;
+ p_sline = p_input_line;
+ retval = UNI_DIFF;
+ goto scan_exit;
+ }
+ stars_this_line = strnEQ(s, "********", 8);
+ if ((!diff_type || diff_type == CONTEXT_DIFF) && stars_last_line &&
+ strnEQ(s, "*** ", 4)) {
+ if (atol(s + 4) == 0)
+ ok_to_create_file = true;
+ /*
+ * If this is a new context diff the character just
+ * before the newline is a '*'.
+ */
+ while (*s != '\n')
+ s++;
+ p_indent = indent;
+ p_start = previous_line;
+ p_sline = p_input_line - 1;
+ retval = (*(s - 1) == '*' ? NEW_CONTEXT_DIFF : CONTEXT_DIFF);
+ goto scan_exit;
+ }
+ if ((!diff_type || diff_type == NORMAL_DIFF) &&
+ last_line_was_command &&
+ (strnEQ(s, "< ", 2) || strnEQ(s, "> ", 2))) {
+ p_start = previous_line;
+ p_sline = p_input_line - 1;
+ p_indent = indent;
+ retval = NORMAL_DIFF;
+ goto scan_exit;
+ }
+ }
+scan_exit:
+ if (retval == UNI_DIFF) {
+ /* unswap old and new */
+ struct file_name tmp = names[OLD_FILE];
+ names[OLD_FILE] = names[NEW_FILE];
+ names[NEW_FILE] = tmp;
+ }
+ if (filearg[0] == NULL) {
+ if (posix)
+ filearg[0] = posix_name(names, ok_to_create_file);
+ else {
+ /* Ignore the Index: name for context diffs, like GNU */
+ if (names[OLD_FILE].path != NULL ||
+ names[NEW_FILE].path != NULL) {
+ free(names[INDEX_FILE].path);
+ names[INDEX_FILE].path = NULL;
+ }
+ filearg[0] = best_name(names, ok_to_create_file);
+ }
+ }
+
+ free(bestguess);
+ bestguess = NULL;
+ if (filearg[0] != NULL)
+ bestguess = savestr(filearg[0]);
+ else if (!ok_to_create_file) {
+ /*
+ * We don't want to create a new file but we need a
+ * filename to set bestguess. Avoid setting filearg[0]
+ * so the file is not created automatically.
+ */
+ if (posix)
+ bestguess = posix_name(names, true);
+ else
+ bestguess = best_name(names, true);
+ }
+ free(names[OLD_FILE].path);
+ free(names[NEW_FILE].path);
+ free(names[INDEX_FILE].path);
+ return retval;
+}
+
+/*
+ * Remember where this patch ends so we know where to start up again.
+ */
+static void
+next_intuit_at(LINENUM file_pos, LINENUM file_line)
+{
+ p_base = file_pos;
+ p_bline = file_line;
+}
+
+/*
+ * Basically a verbose fseek() to the actual diff listing.
+ */
+static void
+skip_to(LINENUM file_pos, LINENUM file_line)
+{
+ char *ret;
+
+ if (p_base > file_pos)
+ fatal("Internal error: seek %ld>%ld\n", p_base, file_pos);
+ if (verbose && p_base < file_pos) {
+ fseek(pfp, p_base, SEEK_SET);
+ say("The text leading up to this was:\n--------------------------\n");
+ while (ftell(pfp) < file_pos) {
+ ret = fgets(buf, sizeof buf, pfp);
+ if (ret == NULL)
+ fatal("Unexpected end of file\n");
+ say("|%s", buf);
+ }
+ say("--------------------------\n");
+ } else
+ fseek(pfp, file_pos, SEEK_SET);
+ p_input_line = file_line - 1;
+}
+
+/* Make this a function for better debugging. */
+static void
+malformed(void)
+{
+ fatal("malformed patch at line %ld: %s", p_input_line, buf);
+ /* about as informative as "Syntax error" in C */
+}
+
+/*
+ * True if the line has been discarded (i.e. it is a line saying
+ * "\ No newline at end of file".)
+ */
+static bool
+remove_special_line(void)
+{
+ int c;
+
+ c = fgetc(pfp);
+ if (c == '\\') {
+ do {
+ c = fgetc(pfp);
+ } while (c != EOF && c != '\n');
+
+ return true;
+ }
+ if (c != EOF)
+ fseek(pfp, -1L, SEEK_CUR);
+
+ return false;
+}
+
+/*
+ * True if there is more of the current diff listing to process.
+ */
+bool
+another_hunk(void)
+{
+ long line_beginning; /* file pos of the current line */
+ LINENUM repl_beginning; /* index of --- line */
+ LINENUM fillcnt; /* #lines of missing ptrn or repl */
+ LINENUM fillsrc; /* index of first line to copy */
+ LINENUM filldst; /* index of first missing line */
+ bool ptrn_spaces_eaten; /* ptrn was slightly misformed */
+ bool repl_could_be_missing; /* no + or ! lines in this hunk */
+ bool repl_missing; /* we are now backtracking */
+ long repl_backtrack_position; /* file pos of first repl line */
+ LINENUM repl_patch_line; /* input line number for same */
+ LINENUM ptrn_copiable; /* # of copiable lines in ptrn */
+ char *s, *ret;
+ int context = 0;
+
+ while (p_end >= 0) {
+ if (p_end == p_efake)
+ p_end = p_bfake; /* don't free twice */
+ else
+ free(p_line[p_end]);
+ p_end--;
+ }
+ p_efake = -1;
+
+ p_max = hunkmax; /* gets reduced when --- found */
+ if (diff_type == CONTEXT_DIFF || diff_type == NEW_CONTEXT_DIFF) {
+ line_beginning = ftell(pfp);
+ repl_beginning = 0;
+ fillcnt = 0;
+ ptrn_spaces_eaten = false;
+ repl_could_be_missing = true;
+ repl_missing = false;
+ repl_backtrack_position = 0;
+ ptrn_copiable = 0;
+
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL || strnNE(buf, "********", 8)) {
+ next_intuit_at(line_beginning, p_input_line);
+ return false;
+ }
+ p_context = 100;
+ p_hunk_beg = p_input_line + 1;
+ while (p_end < p_max) {
+ line_beginning = ftell(pfp);
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL) {
+ if (p_max - p_end < 4) {
+ /* assume blank lines got chopped */
+ strlcpy(buf, " \n", sizeof buf);
+ } else {
+ if (repl_beginning && repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ fatal("unexpected end of file in patch\n");
+ }
+ }
+ p_end++;
+ if (p_end >= hunkmax)
+ fatal("Internal error: hunk larger than hunk "
+ "buffer size");
+ p_char[p_end] = *buf;
+ p_line[p_end] = NULL;
+ switch (*buf) {
+ case '*':
+ if (strnEQ(buf, "********", 8)) {
+ if (repl_beginning && repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ } else
+ fatal("unexpected end of hunk "
+ "at line %ld\n",
+ p_input_line);
+ }
+ if (p_end != 0) {
+ if (repl_beginning && repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ fatal("unexpected *** at line %ld: %s",
+ p_input_line, buf);
+ }
+ context = 0;
+ p_line[p_end] = savestr(buf);
+ if (out_of_mem) {
+ p_end--;
+ return false;
+ }
+ for (s = buf; *s && !isdigit(*s); s++)
+ ;
+ if (!*s)
+ malformed();
+ if (strnEQ(s, "0,0", 3))
+ memmove(s, s + 2, strlen(s + 2) + 1);
+ p_first = (LINENUM) atol(s);
+ while (isdigit(*s))
+ s++;
+ if (*s == ',') {
+ for (; *s && !isdigit(*s); s++)
+ ;
+ if (!*s)
+ malformed();
+ p_ptrn_lines = ((LINENUM) atol(s)) - p_first + 1;
+ } else if (p_first)
+ p_ptrn_lines = 1;
+ else {
+ p_ptrn_lines = 0;
+ p_first = 1;
+ }
+
+ /* we need this much at least */
+ p_max = p_ptrn_lines + 6;
+ while (p_max >= hunkmax)
+ grow_hunkmax();
+ p_max = hunkmax;
+ break;
+ case '-':
+ if (buf[1] == '-') {
+ if (repl_beginning ||
+ (p_end != p_ptrn_lines + 1 +
+ (p_char[p_end - 1] == '\n'))) {
+ if (p_end == 1) {
+ /*
+ * `old' lines were omitted;
+ * set up to fill them in
+ * from 'new' context lines.
+ */
+ p_end = p_ptrn_lines + 1;
+ fillsrc = p_end + 1;
+ filldst = 1;
+ fillcnt = p_ptrn_lines;
+ } else {
+ if (repl_beginning) {
+ if (repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ fatal("duplicate \"---\" at line %ld--check line numbers at line %ld\n",
+ p_input_line, p_hunk_beg + repl_beginning);
+ } else {
+ fatal("%s \"---\" at line %ld--check line numbers at line %ld\n",
+ (p_end <= p_ptrn_lines
+ ? "Premature"
+ : "Overdue"),
+ p_input_line, p_hunk_beg);
+ }
+ }
+ }
+ repl_beginning = p_end;
+ repl_backtrack_position = ftell(pfp);
+ repl_patch_line = p_input_line;
+ p_line[p_end] = savestr(buf);
+ if (out_of_mem) {
+ p_end--;
+ return false;
+ }
+ p_char[p_end] = '=';
+ for (s = buf; *s && !isdigit(*s); s++)
+ ;
+ if (!*s)
+ malformed();
+ p_newfirst = (LINENUM) atol(s);
+ while (isdigit(*s))
+ s++;
+ if (*s == ',') {
+ for (; *s && !isdigit(*s); s++)
+ ;
+ if (!*s)
+ malformed();
+ p_repl_lines = ((LINENUM) atol(s)) -
+ p_newfirst + 1;
+ } else if (p_newfirst)
+ p_repl_lines = 1;
+ else {
+ p_repl_lines = 0;
+ p_newfirst = 1;
+ }
+ p_max = p_repl_lines + p_end;
+ if (p_max > MAXHUNKSIZE)
+ fatal("hunk too large (%ld lines) at line %ld: %s",
+ p_max, p_input_line, buf);
+ while (p_max >= hunkmax)
+ grow_hunkmax();
+ if (p_repl_lines != ptrn_copiable &&
+ (p_context != 0 || p_repl_lines != 1))
+ repl_could_be_missing = false;
+ break;
+ }
+ goto change_line;
+ case '+':
+ case '!':
+ repl_could_be_missing = false;
+ change_line:
+ if (buf[1] == '\n' && canonicalize)
+ strlcpy(buf + 1, " \n", sizeof buf - 1);
+ if (!isspace(buf[1]) && buf[1] != '>' &&
+ buf[1] != '<' &&
+ repl_beginning && repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ if (context >= 0) {
+ if (context < p_context)
+ p_context = context;
+ context = -1000;
+ }
+ p_line[p_end] = savestr(buf + 2);
+ if (out_of_mem) {
+ p_end--;
+ return false;
+ }
+ if (p_end == p_ptrn_lines) {
+ if (remove_special_line()) {
+ int len;
+
+ len = strlen(p_line[p_end]) - 1;
+ (p_line[p_end])[len] = 0;
+ }
+ }
+ break;
+ case '\t':
+ case '\n': /* assume the 2 spaces got eaten */
+ if (repl_beginning && repl_could_be_missing &&
+ (!ptrn_spaces_eaten ||
+ diff_type == NEW_CONTEXT_DIFF)) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ p_line[p_end] = savestr(buf);
+ if (out_of_mem) {
+ p_end--;
+ return false;
+ }
+ if (p_end != p_ptrn_lines + 1) {
+ ptrn_spaces_eaten |= (repl_beginning != 0);
+ context++;
+ if (!repl_beginning)
+ ptrn_copiable++;
+ p_char[p_end] = ' ';
+ }
+ break;
+ case ' ':
+ if (!isspace(buf[1]) &&
+ repl_beginning && repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ context++;
+ if (!repl_beginning)
+ ptrn_copiable++;
+ p_line[p_end] = savestr(buf + 2);
+ if (out_of_mem) {
+ p_end--;
+ return false;
+ }
+ break;
+ default:
+ if (repl_beginning && repl_could_be_missing) {
+ repl_missing = true;
+ goto hunk_done;
+ }
+ malformed();
+ }
+ /* set up p_len for strncmp() so we don't have to */
+ /* assume null termination */
+ if (p_line[p_end])
+ p_len[p_end] = strlen(p_line[p_end]);
+ else
+ p_len[p_end] = 0;
+ }
+
+hunk_done:
+ if (p_end >= 0 && !repl_beginning)
+ fatal("no --- found in patch at line %ld\n", pch_hunk_beg());
+
+ if (repl_missing) {
+
+ /* reset state back to just after --- */
+ p_input_line = repl_patch_line;
+ for (p_end--; p_end > repl_beginning; p_end--)
+ free(p_line[p_end]);
+ fseek(pfp, repl_backtrack_position, SEEK_SET);
+
+ /* redundant 'new' context lines were omitted - set */
+ /* up to fill them in from the old file context */
+ if (!p_context && p_repl_lines == 1) {
+ p_repl_lines = 0;
+ p_max--;
+ }
+ fillsrc = 1;
+ filldst = repl_beginning + 1;
+ fillcnt = p_repl_lines;
+ p_end = p_max;
+ } else if (!p_context && fillcnt == 1) {
+ /* the first hunk was a null hunk with no context */
+ /* and we were expecting one line -- fix it up. */
+ while (filldst < p_end) {
+ p_line[filldst] = p_line[filldst + 1];
+ p_char[filldst] = p_char[filldst + 1];
+ p_len[filldst] = p_len[filldst + 1];
+ filldst++;
+ }
+#if 0
+ repl_beginning--; /* this doesn't need to be fixed */
+#endif
+ p_end--;
+ p_first++; /* do append rather than insert */
+ fillcnt = 0;
+ p_ptrn_lines = 0;
+ }
+ if (diff_type == CONTEXT_DIFF &&
+ (fillcnt || (p_first > 1 && ptrn_copiable > 2 * p_context))) {
+ if (verbose)
+ say("%s\n%s\n%s\n",
+ "(Fascinating--this is really a new-style context diff but without",
+ "the telltale extra asterisks on the *** line that usually indicate",
+ "the new style...)");
+ diff_type = NEW_CONTEXT_DIFF;
+ }
+ /* if there were omitted context lines, fill them in now */
+ if (fillcnt) {
+ p_bfake = filldst; /* remember where not to free() */
+ p_efake = filldst + fillcnt - 1;
+ while (fillcnt-- > 0) {
+ while (fillsrc <= p_end && p_char[fillsrc] != ' ')
+ fillsrc++;
+ if (fillsrc > p_end)
+ fatal("replacement text or line numbers mangled in hunk at line %ld\n",
+ p_hunk_beg);
+ p_line[filldst] = p_line[fillsrc];
+ p_char[filldst] = p_char[fillsrc];
+ p_len[filldst] = p_len[fillsrc];
+ fillsrc++;
+ filldst++;
+ }
+ while (fillsrc <= p_end && fillsrc != repl_beginning &&
+ p_char[fillsrc] != ' ')
+ fillsrc++;
+#ifdef DEBUGGING
+ if (debug & 64)
+ printf("fillsrc %ld, filldst %ld, rb %ld, e+1 %ld\n",
+ fillsrc, filldst, repl_beginning, p_end + 1);
+#endif
+ if (fillsrc != p_end + 1 && fillsrc != repl_beginning)
+ malformed();
+ if (filldst != p_end + 1 && filldst != repl_beginning)
+ malformed();
+ }
+ if (p_line[p_end] != NULL) {
+ if (remove_special_line()) {
+ p_len[p_end] -= 1;
+ (p_line[p_end])[p_len[p_end]] = 0;
+ }
+ }
+ } else if (diff_type == UNI_DIFF) {
+ long line_beginning = ftell(pfp); /* file pos of the current line */
+ LINENUM fillsrc; /* index of old lines */
+ LINENUM filldst; /* index of new lines */
+ char ch;
+
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL || strnNE(buf, "@@ -", 4)) {
+ next_intuit_at(line_beginning, p_input_line);
+ return false;
+ }
+ s = buf + 4;
+ if (!*s)
+ malformed();
+ p_first = (LINENUM) atol(s);
+ while (isdigit(*s))
+ s++;
+ if (*s == ',') {
+ p_ptrn_lines = (LINENUM) atol(++s);
+ while (isdigit(*s))
+ s++;
+ } else
+ p_ptrn_lines = 1;
+ if (*s == ' ')
+ s++;
+ if (*s != '+' || !*++s)
+ malformed();
+ p_newfirst = (LINENUM) atol(s);
+ while (isdigit(*s))
+ s++;
+ if (*s == ',') {
+ p_repl_lines = (LINENUM) atol(++s);
+ while (isdigit(*s))
+ s++;
+ } else
+ p_repl_lines = 1;
+ if (*s == ' ')
+ s++;
+ if (*s != '@')
+ malformed();
+ if (!p_ptrn_lines)
+ p_first++; /* do append rather than insert */
+ p_max = p_ptrn_lines + p_repl_lines + 1;
+ while (p_max >= hunkmax)
+ grow_hunkmax();
+ fillsrc = 1;
+ filldst = fillsrc + p_ptrn_lines;
+ p_end = filldst + p_repl_lines;
+ snprintf(buf, sizeof buf, "*** %ld,%ld ****\n", p_first,
+ p_first + p_ptrn_lines - 1);
+ p_line[0] = savestr(buf);
+ if (out_of_mem) {
+ p_end = -1;
+ return false;
+ }
+ p_char[0] = '*';
+ snprintf(buf, sizeof buf, "--- %ld,%ld ----\n", p_newfirst,
+ p_newfirst + p_repl_lines - 1);
+ p_line[filldst] = savestr(buf);
+ if (out_of_mem) {
+ p_end = 0;
+ return false;
+ }
+ p_char[filldst++] = '=';
+ p_context = 100;
+ context = 0;
+ p_hunk_beg = p_input_line + 1;
+ while (fillsrc <= p_ptrn_lines || filldst <= p_end) {
+ line_beginning = ftell(pfp);
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL) {
+ if (p_max - filldst < 3) {
+ /* assume blank lines got chopped */
+ strlcpy(buf, " \n", sizeof buf);
+ } else {
+ fatal("unexpected end of file in patch\n");
+ }
+ }
+ if (*buf == '\t' || *buf == '\n') {
+ ch = ' '; /* assume the space got eaten */
+ s = savestr(buf);
+ } else {
+ ch = *buf;
+ s = savestr(buf + 1);
+ }
+ if (out_of_mem) {
+ while (--filldst > p_ptrn_lines)
+ free(p_line[filldst]);
+ p_end = fillsrc - 1;
+ return false;
+ }
+ switch (ch) {
+ case '-':
+ if (fillsrc > p_ptrn_lines) {
+ free(s);
+ p_end = filldst - 1;
+ malformed();
+ }
+ p_char[fillsrc] = ch;
+ p_line[fillsrc] = s;
+ p_len[fillsrc++] = strlen(s);
+ if (fillsrc > p_ptrn_lines) {
+ if (remove_special_line()) {
+ p_len[fillsrc - 1] -= 1;
+ s[p_len[fillsrc - 1]] = 0;
+ }
+ }
+ break;
+ case '=':
+ ch = ' ';
+ /* FALL THROUGH */
+ case ' ':
+ if (fillsrc > p_ptrn_lines) {
+ free(s);
+ while (--filldst > p_ptrn_lines)
+ free(p_line[filldst]);
+ p_end = fillsrc - 1;
+ malformed();
+ }
+ context++;
+ p_char[fillsrc] = ch;
+ p_line[fillsrc] = s;
+ p_len[fillsrc++] = strlen(s);
+ s = savestr(s);
+ if (out_of_mem) {
+ while (--filldst > p_ptrn_lines)
+ free(p_line[filldst]);
+ p_end = fillsrc - 1;
+ return false;
+ }
+ if (fillsrc > p_ptrn_lines) {
+ if (remove_special_line()) {
+ p_len[fillsrc - 1] -= 1;
+ s[p_len[fillsrc - 1]] = 0;
+ }
+ }
+ /* FALL THROUGH */
+ case '+':
+ if (filldst > p_end) {
+ free(s);
+ while (--filldst > p_ptrn_lines)
+ free(p_line[filldst]);
+ p_end = fillsrc - 1;
+ malformed();
+ }
+ p_char[filldst] = ch;
+ p_line[filldst] = s;
+ p_len[filldst++] = strlen(s);
+ if (fillsrc > p_ptrn_lines) {
+ if (remove_special_line()) {
+ p_len[filldst - 1] -= 1;
+ s[p_len[filldst - 1]] = 0;
+ }
+ }
+ break;
+ default:
+ p_end = filldst;
+ malformed();
+ }
+ if (ch != ' ' && context > 0) {
+ if (context < p_context)
+ p_context = context;
+ context = -1000;
+ }
+ } /* while */
+ } else { /* normal diff--fake it up */
+ char hunk_type;
+ int i;
+ LINENUM min, max;
+ long line_beginning = ftell(pfp);
+
+ p_context = 0;
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL || !isdigit(*buf)) {
+ next_intuit_at(line_beginning, p_input_line);
+ return false;
+ }
+ p_first = (LINENUM) atol(buf);
+ for (s = buf; isdigit(*s); s++)
+ ;
+ if (*s == ',') {
+ p_ptrn_lines = (LINENUM) atol(++s) - p_first + 1;
+ while (isdigit(*s))
+ s++;
+ } else
+ p_ptrn_lines = (*s != 'a');
+ hunk_type = *s;
+ if (hunk_type == 'a')
+ p_first++; /* do append rather than insert */
+ min = (LINENUM) atol(++s);
+ for (; isdigit(*s); s++)
+ ;
+ if (*s == ',')
+ max = (LINENUM) atol(++s);
+ else
+ max = min;
+ if (hunk_type == 'd')
+ min++;
+ p_end = p_ptrn_lines + 1 + max - min + 1;
+ if (p_end > MAXHUNKSIZE)
+ fatal("hunk too large (%ld lines) at line %ld: %s",
+ p_end, p_input_line, buf);
+ while (p_end >= hunkmax)
+ grow_hunkmax();
+ p_newfirst = min;
+ p_repl_lines = max - min + 1;
+ snprintf(buf, sizeof buf, "*** %ld,%ld\n", p_first,
+ p_first + p_ptrn_lines - 1);
+ p_line[0] = savestr(buf);
+ if (out_of_mem) {
+ p_end = -1;
+ return false;
+ }
+ p_char[0] = '*';
+ for (i = 1; i <= p_ptrn_lines; i++) {
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL)
+ fatal("unexpected end of file in patch at line %ld\n",
+ p_input_line);
+ if (*buf != '<')
+ fatal("< expected at line %ld of patch\n",
+ p_input_line);
+ p_line[i] = savestr(buf + 2);
+ if (out_of_mem) {
+ p_end = i - 1;
+ return false;
+ }
+ p_len[i] = strlen(p_line[i]);
+ p_char[i] = '-';
+ }
+
+ if (remove_special_line()) {
+ p_len[i - 1] -= 1;
+ (p_line[i - 1])[p_len[i - 1]] = 0;
+ }
+ if (hunk_type == 'c') {
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL)
+ fatal("unexpected end of file in patch at line %ld\n",
+ p_input_line);
+ if (*buf != '-')
+ fatal("--- expected at line %ld of patch\n",
+ p_input_line);
+ }
+ snprintf(buf, sizeof(buf), "--- %ld,%ld\n", min, max);
+ p_line[i] = savestr(buf);
+ if (out_of_mem) {
+ p_end = i - 1;
+ return false;
+ }
+ p_char[i] = '=';
+ for (i++; i <= p_end; i++) {
+ ret = pgets(buf, sizeof buf, pfp);
+ p_input_line++;
+ if (ret == NULL)
+ fatal("unexpected end of file in patch at line %ld\n",
+ p_input_line);
+ if (*buf != '>')
+ fatal("> expected at line %ld of patch\n",
+ p_input_line);
+ p_line[i] = savestr(buf + 2);
+ if (out_of_mem) {
+ p_end = i - 1;
+ return false;
+ }
+ p_len[i] = strlen(p_line[i]);
+ p_char[i] = '+';
+ }
+
+ if (remove_special_line()) {
+ p_len[i - 1] -= 1;
+ (p_line[i - 1])[p_len[i - 1]] = 0;
+ }
+ }
+ if (reverse) /* backwards patch? */
+ if (!pch_swap())
+ say("Not enough memory to swap next hunk!\n");
+#ifdef DEBUGGING
+ if (debug & 2) {
+ int i;
+ char special;
+
+ for (i = 0; i <= p_end; i++) {
+ if (i == p_ptrn_lines)
+ special = '^';
+ else
+ special = ' ';
+ fprintf(stderr, "%3d %c %c %s", i, p_char[i],
+ special, p_line[i]);
+ fflush(stderr);
+ }
+ }
+#endif
+ if (p_end + 1 < hunkmax)/* paranoia reigns supreme... */
+ p_char[p_end + 1] = '^'; /* add a stopper for apply_hunk */
+ return true;
+}
+
+/*
+ * Input a line from the patch file, worrying about indentation.
+ */
+static char *
+pgets(char *bf, int sz, FILE *fp)
+{
+ char *s, *ret = fgets(bf, sz, fp);
+ int indent = 0;
+
+ if (p_indent && ret != NULL) {
+ for (s = buf;
+ indent < p_indent && (*s == ' ' || *s == '\t' || *s == 'X');
+ s++) {
+ if (*s == '\t')
+ indent += 8 - (indent % 7);
+ else
+ indent++;
+ }
+ if (buf != s && strlcpy(buf, s, sizeof(buf)) >= sizeof(buf))
+ fatal("buffer too small in pgets()\n");
+ }
+ return ret;
+}
+
+/*
+ * Reverse the old and new portions of the current hunk.
+ */
+bool
+pch_swap(void)
+{
+ char **tp_line; /* the text of the hunk */
+ short *tp_len; /* length of each line */
+ char *tp_char; /* +, -, and ! */
+ LINENUM i;
+ LINENUM n;
+ bool blankline = false;
+ char *s;
+
+ i = p_first;
+ p_first = p_newfirst;
+ p_newfirst = i;
+
+ /* make a scratch copy */
+
+ tp_line = p_line;
+ tp_len = p_len;
+ tp_char = p_char;
+ p_line = NULL; /* force set_hunkmax to allocate again */
+ p_len = NULL;
+ p_char = NULL;
+ set_hunkmax();
+ if (p_line == NULL || p_len == NULL || p_char == NULL) {
+
+ free(p_line);
+ p_line = tp_line;
+ free(p_len);
+ p_len = tp_len;
+ free(p_char);
+ p_char = tp_char;
+ return false; /* not enough memory to swap hunk! */
+ }
+ /* now turn the new into the old */
+
+ i = p_ptrn_lines + 1;
+ if (tp_char[i] == '\n') { /* account for possible blank line */
+ blankline = true;
+ i++;
+ }
+ if (p_efake >= 0) { /* fix non-freeable ptr range */
+ if (p_efake <= i)
+ n = p_end - i + 1;
+ else
+ n = -i;
+ p_efake += n;
+ p_bfake += n;
+ }
+ for (n = 0; i <= p_end; i++, n++) {
+ p_line[n] = tp_line[i];
+ p_char[n] = tp_char[i];
+ if (p_char[n] == '+')
+ p_char[n] = '-';
+ p_len[n] = tp_len[i];
+ }
+ if (blankline) {
+ i = p_ptrn_lines + 1;
+ p_line[n] = tp_line[i];
+ p_char[n] = tp_char[i];
+ p_len[n] = tp_len[i];
+ n++;
+ }
+ if (p_char[0] != '=')
+ fatal("Malformed patch at line %ld: expected '=' found '%c'\n",
+ p_input_line, p_char[0]);
+ p_char[0] = '*';
+ for (s = p_line[0]; *s; s++)
+ if (*s == '-')
+ *s = '*';
+
+ /* now turn the old into the new */
+
+ if (p_char[0] != '*')
+ fatal("Malformed patch at line %ld: expected '*' found '%c'\n",
+ p_input_line, p_char[0]);
+ tp_char[0] = '=';
+ for (s = tp_line[0]; *s; s++)
+ if (*s == '*')
+ *s = '-';
+ for (i = 0; n <= p_end; i++, n++) {
+ p_line[n] = tp_line[i];
+ p_char[n] = tp_char[i];
+ if (p_char[n] == '-')
+ p_char[n] = '+';
+ p_len[n] = tp_len[i];
+ }
+
+ if (i != p_ptrn_lines + 1)
+ fatal("Malformed patch at line %ld: expected %ld lines, "
+ "got %ld\n",
+ p_input_line, p_ptrn_lines + 1, i);
+
+ i = p_ptrn_lines;
+ p_ptrn_lines = p_repl_lines;
+ p_repl_lines = i;
+
+ free(tp_line);
+ free(tp_len);
+ free(tp_char);
+
+ return true;
+}
+
+/*
+ * Return the specified line position in the old file of the old context.
+ */
+LINENUM
+pch_first(void)
+{
+ return p_first;
+}
+
+/*
+ * Return the number of lines of old context.
+ */
+LINENUM
+pch_ptrn_lines(void)
+{
+ return p_ptrn_lines;
+}
+
+/*
+ * Return the probable line position in the new file of the first line.
+ */
+LINENUM
+pch_newfirst(void)
+{
+ return p_newfirst;
+}
+
+/*
+ * Return the number of lines in the replacement text including context.
+ */
+LINENUM
+pch_repl_lines(void)
+{
+ return p_repl_lines;
+}
+
+/*
+ * Return the number of lines in the whole hunk.
+ */
+LINENUM
+pch_end(void)
+{
+ return p_end;
+}
+
+/*
+ * Return the number of context lines before the first changed line.
+ */
+LINENUM
+pch_context(void)
+{
+ return p_context;
+}
+
+/*
+ * Return the length of a particular patch line.
+ */
+short
+pch_line_len(LINENUM line)
+{
+ return p_len[line];
+}
+
+/*
+ * Return the control character (+, -, *, !, etc) for a patch line.
+ */
+char
+pch_char(LINENUM line)
+{
+ return p_char[line];
+}
+
+/*
+ * Return a pointer to a particular patch line.
+ */
+char *
+pfetch(LINENUM line)
+{
+ return p_line[line];
+}
+
+/*
+ * Return where in the patch file this hunk began, for error messages.
+ */
+LINENUM
+pch_hunk_beg(void)
+{
+ return p_hunk_beg;
+}
+
+/*
+ * Apply an ed script by feeding ed itself.
+ */
+void
+do_ed_script(void)
+{
+ char *t;
+ long beginning_of_this_line;
+ FILE *pipefp = NULL;
+
+ if (!skip_rest_of_patch) {
+ if (copy_file(filearg[0], TMPOUTNAME) < 0) {
+ unlink(TMPOUTNAME);
+ fatal("can't create temp file %s", TMPOUTNAME);
+ }
+ snprintf(buf, sizeof buf, "%s%s%s", _PATH_ED,
+ verbose ? " " : " -s ", TMPOUTNAME);
+ pipefp = popen(buf, "w");
+ }
+ for (;;) {
+ beginning_of_this_line = ftell(pfp);
+ if (pgets(buf, sizeof buf, pfp) == NULL) {
+ next_intuit_at(beginning_of_this_line, p_input_line);
+ break;
+ }
+ p_input_line++;
+ for (t = buf; isdigit(*t) || *t == ','; t++)
+ ;
+ /* POSIX defines allowed commands as {a,c,d,i,s} */
+ if (isdigit(*buf) && (*t == 'a' || *t == 'c' || *t == 'd' ||
+ *t == 'i' || *t == 's')) {
+ if (pipefp != NULL)
+ fputs(buf, pipefp);
+ if (*t != 'd') {
+ while (pgets(buf, sizeof buf, pfp) != NULL) {
+ p_input_line++;
+ if (pipefp != NULL)
+ fputs(buf, pipefp);
+ if (strEQ(buf, ".\n"))
+ break;
+ }
+ }
+ } else {
+ next_intuit_at(beginning_of_this_line, p_input_line);
+ break;
+ }
+ }
+ if (pipefp == NULL)
+ return;
+ fprintf(pipefp, "w\n");
+ fprintf(pipefp, "q\n");
+ fflush(pipefp);
+ pclose(pipefp);
+ ignore_signals();
+ if (!check_only) {
+ if (move_file(TMPOUTNAME, outname) < 0) {
+ toutkeep = true;
+ chmod(TMPOUTNAME, filemode);
+ } else
+ chmod(outname, filemode);
+ }
+ set_signals(1);
+}
+
+/*
+ * Choose the name of the file to be patched based on POSIX rules.
+ * NOTE: the POSIX rules are amazingly stupid and we only follow them
+ * if the user specified --posix or set POSIXLY_CORRECT.
+ */
+static char *
+posix_name(const struct file_name *names, bool assume_exists)
+{
+ char *path = NULL;
+ int i;
+
+ /*
+ * POSIX states that the filename will be chosen from one
+ * of the old, new and index names (in that order) if
+ * the file exists relative to CWD after -p stripping.
+ */
+ for (i = 0; i < MAX_FILE; i++) {
+ if (names[i].path != NULL && names[i].exists) {
+ path = names[i].path;
+ break;
+ }
+ }
+ if (path == NULL && !assume_exists) {
+ /*
+ * No files found, look for something we can checkout from
+ * RCS/SCCS dirs. Same order as above.
+ */
+ for (i = 0; i < MAX_FILE; i++) {
+ if (names[i].path != NULL &&
+ (path = checked_in(names[i].path)) != NULL)
+ break;
+ }
+ /*
+ * Still no match? Check to see if the diff could be creating
+ * a new file.
+ */
+ if (path == NULL && ok_to_create_file &&
+ names[NEW_FILE].path != NULL)
+ path = names[NEW_FILE].path;
+ }
+
+ return path ? savestr(path) : NULL;
+}
+
+/*
+ * Choose the name of the file to be patched based the "best" one
+ * available.
+ */
+static char *
+best_name(const struct file_name *names, bool assume_exists)
+{
+ size_t min_components, min_baselen, min_len, tmp;
+ char *best = NULL;
+ int i;
+
+ /*
+ * The "best" name is the one with the fewest number of path
+ * components, the shortest basename length, and the shortest
+ * overall length (in that order). We only use the Index: file
+ * if neither of the old or new files could be intuited from
+ * the diff header.
+ */
+ min_components = min_baselen = min_len = SIZE_MAX;
+ for (i = INDEX_FILE; i >= OLD_FILE; i--) {
+ if (names[i].path == NULL ||
+ (!names[i].exists && !assume_exists))
+ continue;
+ if ((tmp = num_components(names[i].path)) > min_components)
+ continue;
+ min_components = tmp;
+ if ((tmp = strlen(basename(names[i].path))) > min_baselen)
+ continue;
+ min_baselen = tmp;
+ if ((tmp = strlen(names[i].path)) > min_len)
+ continue;
+ min_len = tmp;
+ best = names[i].path;
+ }
+ if (best == NULL) {
+ /*
+ * No files found, look for something we can checkout from
+ * RCS/SCCS dirs. Logic is identical to that above...
+ */
+ min_components = min_baselen = min_len = SIZE_MAX;
+ for (i = INDEX_FILE; i >= OLD_FILE; i--) {
+ if (names[i].path == NULL ||
+ checked_in(names[i].path) == NULL)
+ continue;
+ if ((tmp = num_components(names[i].path)) > min_components)
+ continue;
+ min_components = tmp;
+ if ((tmp = strlen(basename(names[i].path))) > min_baselen)
+ continue;
+ min_baselen = tmp;
+ if ((tmp = strlen(names[i].path)) > min_len)
+ continue;
+ min_len = tmp;
+ best = names[i].path;
+ }
+ /*
+ * Still no match? Check to see if the diff could be creating
+ * a new file.
+ */
+ if (best == NULL && ok_to_create_file &&
+ names[NEW_FILE].path != NULL)
+ best = names[NEW_FILE].path;
+ }
+
+ return best ? savestr(best) : NULL;
+}
+
+static size_t
+num_components(const char *path)
+{
+ size_t n;
+ const char *cp;
+
+ for (n = 0, cp = path; (cp = strchr(cp, '/')) != NULL; n++, cp++) {
+ while (*cp == '/')
+ cp++; /* skip consecutive slashes */
+ }
+ return n;
+}
diff --git a/patch_cmds/patch/pch.h b/patch_cmds/patch/pch.h
new file mode 100644
index 0000000..b7bf8e8
--- /dev/null
+++ b/patch_cmds/patch/pch.h
@@ -0,0 +1,56 @@
+/* $OpenBSD: pch.h,v 1.9 2003/10/31 20:20:45 millert Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+#define OLD_FILE 0
+#define NEW_FILE 1
+#define INDEX_FILE 2
+#define MAX_FILE 3
+
+struct file_name {
+ char *path;
+ bool exists;
+};
+
+void re_patch(void);
+void open_patch_file(const char *);
+void set_hunkmax(void);
+bool there_is_another_patch(void);
+bool another_hunk(void);
+bool pch_swap(void);
+char *pfetch(LINENUM);
+short pch_line_len(LINENUM);
+LINENUM pch_first(void);
+LINENUM pch_ptrn_lines(void);
+LINENUM pch_newfirst(void);
+LINENUM pch_repl_lines(void);
+LINENUM pch_end(void);
+LINENUM pch_context(void);
+LINENUM pch_hunk_beg(void);
+char pch_char(LINENUM);
+char *pfetch(LINENUM);
+void do_ed_script(void);
diff --git a/patch_cmds/patch/util.c b/patch_cmds/patch/util.c
new file mode 100644
index 0000000..d89d29c
--- /dev/null
+++ b/patch_cmds/patch/util.c
@@ -0,0 +1,420 @@
+/* $OpenBSD: util.c,v 1.33 2009/10/27 23:59:41 deraadt Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+#include <sys/param.h>
+#include <sys/stat.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <paths.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "common.h"
+#include "util.h"
+#include "backupfile.h"
+#include "pathnames.h"
+
+/* Rename a file, copying it if necessary. */
+
+int
+move_file(const char *from, const char *to)
+{
+ int fromfd;
+ ssize_t i;
+
+ /* to stdout? */
+
+ if (strEQ(to, "-")) {
+#ifdef DEBUGGING
+ if (debug & 4)
+ say("Moving %s to stdout.\n", from);
+#endif
+ fromfd = open(from, O_RDONLY);
+ if (fromfd < 0)
+ pfatal("internal error, can't reopen %s", from);
+ while ((i = read(fromfd, buf, sizeof buf)) > 0)
+ if (write(STDOUT_FILENO, buf, i) != i)
+ pfatal("write failed");
+ close(fromfd);
+ return 0;
+ }
+ if (backup_file(to) < 0) {
+ say("Can't backup %s, output is in %s: %s\n", to, from,
+ strerror(errno));
+ return -1;
+ }
+#ifdef DEBUGGING
+ if (debug & 4)
+ say("Moving %s to %s.\n", from, to);
+#endif
+ if (rename(from, to) < 0) {
+ if (errno != EXDEV || copy_file(from, to) < 0) {
+ say("Can't create %s, output is in %s: %s\n",
+ to, from, strerror(errno));
+ return -1;
+ }
+ }
+ return 0;
+}
+
+/* Backup the original file. */
+
+int
+backup_file(const char *orig)
+{
+ struct stat filestat;
+ char bakname[MAXPATHLEN], *s, *simplename;
+ dev_t orig_device;
+ ino_t orig_inode;
+
+ if (backup_type == none || stat(orig, &filestat) != 0)
+ return 0; /* nothing to do */
+ orig_device = filestat.st_dev;
+ orig_inode = filestat.st_ino;
+
+ if (origprae) {
+ if (strlcpy(bakname, origprae, sizeof(bakname)) >= sizeof(bakname) ||
+ strlcat(bakname, orig, sizeof(bakname)) >= sizeof(bakname))
+ fatal("filename %s too long for buffer\n", origprae);
+ } else {
+ if ((s = find_backup_file_name(orig)) == NULL)
+ fatal("out of memory\n");
+ if (strlcpy(bakname, s, sizeof(bakname)) >= sizeof(bakname))
+ fatal("filename %s too long for buffer\n", s);
+ free(s);
+ }
+
+ if ((simplename = strrchr(bakname, '/')) != NULL)
+ simplename = simplename + 1;
+ else
+ simplename = bakname;
+
+ /*
+ * Find a backup name that is not the same file. Change the
+ * first lowercase char into uppercase; if that isn't
+ * sufficient, chop off the first char and try again.
+ */
+ while (stat(bakname, &filestat) == 0 &&
+ orig_device == filestat.st_dev && orig_inode == filestat.st_ino) {
+ /* Skip initial non-lowercase chars. */
+ for (s = simplename; *s && !islower(*s); s++)
+ ;
+ if (*s)
+ *s = toupper(*s);
+ else
+ memmove(simplename, simplename + 1,
+ strlen(simplename + 1) + 1);
+ }
+#ifdef DEBUGGING
+ if (debug & 4)
+ say("Moving %s to %s.\n", orig, bakname);
+#endif
+ if (rename(orig, bakname) < 0) {
+ if (errno != EXDEV || copy_file(orig, bakname) < 0)
+ return -1;
+ }
+ return 0;
+}
+
+/*
+ * Copy a file.
+ */
+int
+copy_file(const char *from, const char *to)
+{
+ int tofd, fromfd;
+ ssize_t i;
+
+ tofd = open(to, O_CREAT|O_TRUNC|O_WRONLY, 0666);
+ if (tofd < 0)
+ return -1;
+ fromfd = open(from, O_RDONLY, 0);
+ if (fromfd < 0)
+ pfatal("internal error, can't reopen %s", from);
+ while ((i = read(fromfd, buf, sizeof buf)) > 0)
+ if (write(tofd, buf, i) != i)
+ pfatal("write to %s failed", to);
+ close(fromfd);
+ close(tofd);
+ return 0;
+}
+
+/*
+ * Allocate a unique area for a string.
+ */
+char *
+savestr(const char *s)
+{
+ char *rv;
+
+ if (!s)
+ s = "Oops";
+ rv = strdup(s);
+ if (rv == NULL) {
+ if (using_plan_a)
+ out_of_mem = true;
+ else
+ fatal("out of memory\n");
+ }
+ return rv;
+}
+
+/*
+ * Vanilla terminal output (buffered).
+ */
+void
+say(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fflush(stderr);
+}
+
+/*
+ * Terminal output, pun intended.
+ */
+void
+fatal(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ fprintf(stderr, "patch: **** ");
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ my_exit(2);
+}
+
+/*
+ * Say something from patch, something from the system, then silence . . .
+ */
+void
+pfatal(const char *fmt, ...)
+{
+ va_list ap;
+ int errnum = errno;
+
+ fprintf(stderr, "patch: **** ");
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fprintf(stderr, ": %s\n", strerror(errnum));
+ my_exit(2);
+}
+
+/*
+ * Get a response from the user via /dev/tty
+ */
+void
+ask(const char *fmt, ...)
+{
+ va_list ap;
+ ssize_t nr;
+ static int ttyfd = -1;
+
+ va_start(ap, fmt);
+ vfprintf(stdout, fmt, ap);
+ va_end(ap);
+ fflush(stdout);
+ if (ttyfd < 0)
+ ttyfd = open(_PATH_TTY, O_RDONLY);
+ if (ttyfd >= 0) {
+ if ((nr = read(ttyfd, buf, sizeof(buf))) > 0 &&
+ buf[nr - 1] == '\n')
+ buf[nr - 1] = '\0';
+ }
+ if (ttyfd < 0 || nr <= 0) {
+ /* no tty or error reading, pretend user entered 'return' */
+ putchar('\n');
+ buf[0] = '\0';
+ }
+}
+
+/*
+ * How to handle certain events when not in a critical region.
+ */
+void
+set_signals(int reset)
+{
+ static sig_t hupval, intval;
+
+ if (!reset) {
+ hupval = signal(SIGHUP, SIG_IGN);
+ if (hupval != SIG_IGN)
+ hupval = (sig_t) my_exit;
+ intval = signal(SIGINT, SIG_IGN);
+ if (intval != SIG_IGN)
+ intval = (sig_t) my_exit;
+ }
+ signal(SIGHUP, hupval);
+ signal(SIGINT, intval);
+}
+
+/*
+ * How to handle certain events when in a critical region.
+ */
+void
+ignore_signals(void)
+{
+ signal(SIGHUP, SIG_IGN);
+ signal(SIGINT, SIG_IGN);
+}
+
+/*
+ * Make sure we'll have the directories to create a file. If `striplast' is
+ * true, ignore the last element of `filename'.
+ */
+
+void
+makedirs(const char *filename, bool striplast)
+{
+ char *tmpbuf;
+
+ if ((tmpbuf = strdup(filename)) == NULL)
+ fatal("out of memory\n");
+
+ if (striplast) {
+ char *s = strrchr(tmpbuf, '/');
+ if (s == NULL)
+ return; /* nothing to be done */
+ *s = '\0';
+ }
+ if (mkpath(tmpbuf) != 0)
+ pfatal("creation of %s failed", tmpbuf);
+ free(tmpbuf);
+}
+
+/*
+ * Make filenames more reasonable.
+ */
+char *
+fetchname(const char *at, bool *exists, int strip_leading)
+{
+ char *fullname, *name, *t;
+ int sleading, tab;
+ struct stat filestat;
+
+ if (at == NULL || *at == '\0')
+ return NULL;
+ while (isspace(*at))
+ at++;
+#ifdef DEBUGGING
+ if (debug & 128)
+ say("fetchname %s %d\n", at, strip_leading);
+#endif
+ /* So files can be created by diffing against /dev/null. */
+ if (strnEQ(at, _PATH_DEVNULL, sizeof(_PATH_DEVNULL) - 1))
+ return NULL;
+ name = fullname = t = savestr(at);
+
+ tab = strchr(t, '\t') != NULL;
+ /* Strip off up to `strip_leading' path components and NUL terminate. */
+ for (sleading = strip_leading; *t != '\0' && ((tab && *t != '\t') ||
+ !isspace(*t)); t++) {
+ if (t[0] == '/' && t[1] != '/' && t[1] != '\0')
+ if (--sleading >= 0)
+ name = t + 1;
+ }
+ *t = '\0';
+
+ /*
+ * If no -p option was given (957 is the default value!), we were
+ * given a relative pathname, and the leading directories that we
+ * just stripped off all exist, put them back on.
+ */
+ if (strip_leading == 957 && name != fullname && *fullname != '/') {
+ name[-1] = '\0';
+ if (stat(fullname, &filestat) == 0 && S_ISDIR(filestat.st_mode)) {
+ name[-1] = '/';
+ name = fullname;
+ }
+ }
+ name = savestr(name);
+ free(fullname);
+
+ *exists = stat(name, &filestat) == 0;
+ return name;
+}
+
+/*
+ * Takes the name returned by fetchname and looks in RCS/SCCS directories
+ * for a checked in version.
+ */
+char *
+checked_in(char *file)
+{
+ char *filebase, *filedir, tmpbuf[MAXPATHLEN];
+ struct stat filestat;
+
+ filebase = basename(file);
+ filedir = dirname(file);
+
+#define try(f, a1, a2, a3) \
+(snprintf(tmpbuf, sizeof tmpbuf, f, a1, a2, a3), stat(tmpbuf, &filestat) == 0)
+
+ if (try("%s/RCS/%s%s", filedir, filebase, RCSSUFFIX) ||
+ try("%s/RCS/%s%s", filedir, filebase, "") ||
+ try("%s/%s%s", filedir, filebase, RCSSUFFIX) ||
+ try("%s/SCCS/%s%s", filedir, SCCSPREFIX, filebase) ||
+ try("%s/%s%s", filedir, SCCSPREFIX, filebase))
+ return file;
+
+ return NULL;
+}
+
+void
+version(void)
+{
+ fprintf(stderr, "Patch version 2.0-12u8-Apple\n");
+ my_exit(EXIT_SUCCESS);
+}
+
+/*
+ * Exit with cleanup.
+ */
+void
+my_exit(int status)
+{
+ unlink(TMPINNAME);
+ if (!toutkeep)
+ unlink(TMPOUTNAME);
+ if (!trejkeep)
+ unlink(TMPREJNAME);
+ unlink(TMPPATNAME);
+ exit(status);
+}
diff --git a/patch_cmds/patch/util.h b/patch_cmds/patch/util.h
new file mode 100644
index 0000000..b27bbe3
--- /dev/null
+++ b/patch_cmds/patch/util.h
@@ -0,0 +1,50 @@
+/* $OpenBSD: util.h,v 1.15 2005/06/20 07:14:06 otto Exp $ */
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
+
+char *fetchname(const char *, bool *, int);
+char *checked_in(char *);
+int backup_file(const char *);
+int move_file(const char *, const char *);
+int copy_file(const char *, const char *);
+void say(const char *, ...)
+ __attribute__((__format__(__printf__, 1, 2)));
+void fatal(const char *, ...)
+ __attribute__((__format__(__printf__, 1, 2)));
+void pfatal(const char *, ...)
+ __attribute__((__format__(__printf__, 1, 2)));
+void ask(const char *, ...)
+ __attribute__((__format__(__printf__, 1, 2)));
+char *savestr(const char *);
+void set_signals(int);
+void ignore_signals(void);
+void makedirs(const char *, bool);
+void version(void);
+void my_exit(int) __attribute__((noreturn));
+
+/* in mkpath.c */
+extern int mkpath(char *);
diff --git a/patch_cmds/patch_cmds.plist b/patch_cmds/patch_cmds.plist
new file mode 100644
index 0000000..a6df14c
--- /dev/null
+++ b/patch_cmds/patch_cmds.plist
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<array>
+ <dict>
+ <key>OpenSourceProject</key>
+ <string>diffstat</string>
+ <key>OpenSourceVersion</key>
+ <string>1.55</string>
+ <key>OpenSourceWebsiteURL</key>
+ <string>http://invisible-island.net/diffstat/</string>
+ <key>OpenSourceURL</key>
+ <string>ftp://invisible-island.net/diffstat/diffstat-1.55.tgz</string>
+ <key>OpenSourceSHA1</key>
+ <string>625650a9f1a27edbb98316adb3013e57c8e2e23a</string>
+ <key>OpenSourceImportDate</key>
+ <string>2012-11-29</string>
+ <key>OpenSourceModifications</key>
+ <array>
+ <string>Added manually-generated config.h file.</string>
+ <string>Build with -D_DARWIN_C_SOURCE to fix a warning.</string>
+ </array>
+ <key>OpenSourceLicense</key>
+ <string>MIT</string>
+ <key>OpenSourceLicenseFile</key>
+ <string>patch_cmds.txt</string>
+ </dict>
+ <dict>
+ <key>OpenSourceProject</key>
+ <string>patch</string>
+ <key>OpenSourceVersion</key>
+ <string>2009-10-27</string>
+ <key>OpenSourceWebsiteURL</key>
+ <string>http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/</string>
+ <key>OpenSourceCVS</key>
+ <string>cvs -d anoncvs@anoncvs1.usa.openbsd.org:/cvs co src/usr.bin/patch</string>
+ <key>OpenSourceImportDate</key>
+ <string>2009-11-05</string>
+ <key>OpenSourceModifications</key>
+ <array>
+ <string>Correctly cast some arguments to basename/dirname.</string>
+ <string>Disable verbose mode by default, add --verbose option.</string>
+ <string>Print &quot;patching file&quot; message when not in verbose mode.</string>
+ <string>Change version output to Apple.</string>
+ <string>Add --binary option (ignored).</string>
+ <string>Add --dry-run option as an alias for -C/--check.</string>
+ </array>
+ <key>OpenSourceLicense</key>
+ <string>BSD</string>
+ <key>OpenSourceLicenseFile</key>
+ <string>patch_cmds.txt</string>
+ </dict>
+</array>
+</plist>
diff --git a/patch_cmds/patch_cmds.txt b/patch_cmds/patch_cmds.txt
new file mode 100644
index 0000000..255365c
--- /dev/null
+++ b/patch_cmds/patch_cmds.txt
@@ -0,0 +1,50 @@
+diffstat:
+
+/******************************************************************************
+ * Copyright 1994-2008,2009 by Thomas E. Dickey *
+ * All Rights Reserved. *
+ * *
+ * Permission to use, copy, modify, and distribute this software and its *
+ * documentation for any purpose and without fee is hereby granted, provided *
+ * that the above copyright notice appear in all copies and that both that *
+ * copyright notice and this permission notice appear in supporting *
+ * documentation, and that the name of the above listed copyright holder(s) *
+ * not be used in advertising or publicity pertaining to distribution of the *
+ * software without specific, written prior permission. *
+ * *
+ * THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD *
+ * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND *
+ * FITNESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE *
+ * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES *
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN *
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR *
+ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *
+ ******************************************************************************/
+
+patch:
+
+/*
+ * patch - a program to apply diffs to original files
+ *
+ * Copyright 1986, Larry Wall
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following condition is met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this condition and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * -C option added in 1998, original code by Marc Espie, based on FreeBSD
+ * behaviour
+ */
diff --git a/patch_cmds/patch_cmds.xcodeproj/project.pbxproj b/patch_cmds/patch_cmds.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..42734f6
--- /dev/null
+++ b/patch_cmds/patch_cmds.xcodeproj/project.pbxproj
@@ -0,0 +1,398 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ FDDB0E80109661D2003751DE /* Default */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = FDDB0E8B109661DB003751DE /* Build configuration list for PBXAggregateTarget "Default" */;
+ buildPhases = (
+ );
+ dependencies = (
+ FD50541B10A4CAEA0060248B /* PBXTargetDependency */,
+ FDDB0F00109665B7003751DE /* PBXTargetDependency */,
+ );
+ name = Default;
+ productName = Default;
+ };
+ FDDB0EFB1096659F003751DE /* Open Source Info */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = FDDB0F0A109665C3003751DE /* Build configuration list for PBXAggregateTarget "Open Source Info" */;
+ buildPhases = (
+ FDDB0EFA1096659F003751DE /* OpenSourceVersions */,
+ FDDB0F09109665C3003751DE /* OpenSourceLicenses */,
+ );
+ dependencies = (
+ );
+ name = "Open Source Info";
+ productName = "Open Source Info";
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ FD50541D10A4CB1F0060248B /* diffstat.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FD5052B210A4CABA0060248B /* diffstat.1 */; };
+ FD50541E10A4CB210060248B /* diffstat.c in Sources */ = {isa = PBXBuildFile; fileRef = FD5052B310A4CABA0060248B /* diffstat.c */; };
+ FDDB0E9D10966219003751DE /* backupfile.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB0E90109661FE003751DE /* backupfile.c */; };
+ FDDB0E9E10966219003751DE /* inp.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB0E93109661FE003751DE /* inp.c */; };
+ FDDB0E9F10966219003751DE /* mkpath.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB0E95109661FE003751DE /* mkpath.c */; };
+ FDDB0EA010966219003751DE /* patch.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB0E97109661FE003751DE /* patch.c */; };
+ FDDB0EA110966219003751DE /* pch.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB0E99109661FE003751DE /* pch.c */; };
+ FDDB0EA210966219003751DE /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = FDDB0E9B109661FE003751DE /* util.c */; };
+ FDDB0ED710966403003751DE /* patch.1 in Install man1 */ = {isa = PBXBuildFile; fileRef = FDDB0E96109661FE003751DE /* patch.1 */; };
+ FDDB0F01109665BB003751DE /* patch_cmds.plist in OpenSourceVersions */ = {isa = PBXBuildFile; fileRef = FDDB0EF710966590003751DE /* patch_cmds.plist */; };
+ FDDB0F03109665C2003751DE /* patch_cmds.txt in OpenSourceLicenses */ = {isa = PBXBuildFile; fileRef = FDDB0EF810966590003751DE /* patch_cmds.txt */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ FD50541A10A4CAEA0060248B /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = FDDB0E77109661C0003751DE /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = FD50541610A4CAE40060248B;
+ remoteInfo = diffstat;
+ };
+ FDDB0EFF109665B7003751DE /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = FDDB0E77109661C0003751DE /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = FDDB0EFB1096659F003751DE;
+ remoteInfo = "Open Source Info";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ FD50541F10A4CB270060248B /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /usr/share/man/man1;
+ dstSubfolderSpec = 0;
+ files = (
+ FD50541D10A4CB1F0060248B /* diffstat.1 in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+ FDDB0EDB10966409003751DE /* Install man1 */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /usr/share/man/man1;
+ dstSubfolderSpec = 0;
+ files = (
+ FDDB0ED710966403003751DE /* patch.1 in Install man1 */,
+ );
+ name = "Install man1";
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+ FDDB0EFA1096659F003751DE /* OpenSourceVersions */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /usr/local/OpenSourceVersions;
+ dstSubfolderSpec = 0;
+ files = (
+ FDDB0F01109665BB003751DE /* patch_cmds.plist in OpenSourceVersions */,
+ );
+ name = OpenSourceVersions;
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+ FDDB0F09109665C3003751DE /* OpenSourceLicenses */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /usr/local/OpenSourceLicenses;
+ dstSubfolderSpec = 0;
+ files = (
+ FDDB0F03109665C2003751DE /* patch_cmds.txt in OpenSourceLicenses */,
+ );
+ name = OpenSourceLicenses;
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ FD5052B210A4CABA0060248B /* diffstat.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = diffstat.1; sourceTree = "<group>"; };
+ FD5052B310A4CABA0060248B /* diffstat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = diffstat.c; sourceTree = "<group>"; };
+ FD50541710A4CAE40060248B /* diffstat */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = diffstat; sourceTree = BUILT_PRODUCTS_DIR; };
+ FDDB0E86109661DB003751DE /* patch */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = patch; sourceTree = BUILT_PRODUCTS_DIR; };
+ FDDB0E90109661FE003751DE /* backupfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = backupfile.c; sourceTree = "<group>"; };
+ FDDB0E91109661FE003751DE /* backupfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = backupfile.h; sourceTree = "<group>"; };
+ FDDB0E92109661FE003751DE /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = "<group>"; };
+ FDDB0E93109661FE003751DE /* inp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inp.c; sourceTree = "<group>"; };
+ FDDB0E94109661FE003751DE /* inp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inp.h; sourceTree = "<group>"; };
+ FDDB0E95109661FE003751DE /* mkpath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mkpath.c; sourceTree = "<group>"; };
+ FDDB0E96109661FE003751DE /* patch.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = patch.1; sourceTree = "<group>"; };
+ FDDB0E97109661FE003751DE /* patch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = patch.c; sourceTree = "<group>"; };
+ FDDB0E98109661FE003751DE /* pathnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pathnames.h; sourceTree = "<group>"; };
+ FDDB0E99109661FE003751DE /* pch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pch.c; sourceTree = "<group>"; };
+ FDDB0E9A109661FE003751DE /* pch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch.h; sourceTree = "<group>"; };
+ FDDB0E9B109661FE003751DE /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = util.c; sourceTree = "<group>"; };
+ FDDB0E9C109661FE003751DE /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; };
+ FDDB0EF710966590003751DE /* patch_cmds.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = patch_cmds.plist; sourceTree = "<group>"; };
+ FDDB0EF810966590003751DE /* patch_cmds.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = patch_cmds.txt; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ FD50541510A4CAE40060248B /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FDDB0E84109661DB003751DE /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ FD5052A910A4CABA0060248B /* diffstat */ = {
+ isa = PBXGroup;
+ children = (
+ FD5052B210A4CABA0060248B /* diffstat.1 */,
+ FD5052B310A4CABA0060248B /* diffstat.c */,
+ );
+ path = diffstat;
+ sourceTree = "<group>";
+ };
+ FDDB0E75109661C0003751DE = {
+ isa = PBXGroup;
+ children = (
+ FDDB0EF710966590003751DE /* patch_cmds.plist */,
+ FDDB0EF810966590003751DE /* patch_cmds.txt */,
+ FD5052A910A4CABA0060248B /* diffstat */,
+ FDDB0E8D109661FE003751DE /* patch */,
+ FDDB0E87109661DB003751DE /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ FDDB0E87109661DB003751DE /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ FDDB0E86109661DB003751DE /* patch */,
+ FD50541710A4CAE40060248B /* diffstat */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ FDDB0E8D109661FE003751DE /* patch */ = {
+ isa = PBXGroup;
+ children = (
+ FDDB0E90109661FE003751DE /* backupfile.c */,
+ FDDB0E91109661FE003751DE /* backupfile.h */,
+ FDDB0E92109661FE003751DE /* common.h */,
+ FDDB0E93109661FE003751DE /* inp.c */,
+ FDDB0E94109661FE003751DE /* inp.h */,
+ FDDB0E95109661FE003751DE /* mkpath.c */,
+ FDDB0E96109661FE003751DE /* patch.1 */,
+ FDDB0E97109661FE003751DE /* patch.c */,
+ FDDB0E98109661FE003751DE /* pathnames.h */,
+ FDDB0E99109661FE003751DE /* pch.c */,
+ FDDB0E9A109661FE003751DE /* pch.h */,
+ FDDB0E9B109661FE003751DE /* util.c */,
+ FDDB0E9C109661FE003751DE /* util.h */,
+ );
+ path = patch;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ FD50541610A4CAE40060248B /* diffstat */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = FD50542010A4CB270060248B /* Build configuration list for PBXNativeTarget "diffstat" */;
+ buildPhases = (
+ FD50541410A4CAE40060248B /* Sources */,
+ FD50541510A4CAE40060248B /* Frameworks */,
+ FD50541F10A4CB270060248B /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = diffstat;
+ productName = diffstat;
+ productReference = FD50541710A4CAE40060248B /* diffstat */;
+ productType = "com.apple.product-type.tool";
+ };
+ FDDB0E85109661DB003751DE /* patch */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = FDDB0E8C109661DB003751DE /* Build configuration list for PBXNativeTarget "patch" */;
+ buildPhases = (
+ FDDB0E83109661DB003751DE /* Sources */,
+ FDDB0E84109661DB003751DE /* Frameworks */,
+ FDDB0EDB10966409003751DE /* Install man1 */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = patch;
+ productName = patch;
+ productReference = FDDB0E86109661DB003751DE /* patch */;
+ productType = "com.apple.product-type.tool";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ FDDB0E77109661C0003751DE /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = FDDB0E7A109661C0003751DE /* Build configuration list for PBXProject "patch_cmds" */;
+ compatibilityVersion = "Xcode 3.2";
+ hasScannedForEncodings = 0;
+ mainGroup = FDDB0E75109661C0003751DE;
+ productRefGroup = FDDB0E87109661DB003751DE /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ FDDB0E80109661D2003751DE /* Default */,
+ FD50541610A4CAE40060248B /* diffstat */,
+ FDDB0E85109661DB003751DE /* patch */,
+ FDDB0EFB1096659F003751DE /* Open Source Info */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ FD50541410A4CAE40060248B /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FD50541E10A4CB210060248B /* diffstat.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ FDDB0E83109661DB003751DE /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ FDDB0EA010966219003751DE /* patch.c in Sources */,
+ FDDB0EA110966219003751DE /* pch.c in Sources */,
+ FDDB0E9E10966219003751DE /* inp.c in Sources */,
+ FDDB0EA210966219003751DE /* util.c in Sources */,
+ FDDB0E9D10966219003751DE /* backupfile.c in Sources */,
+ FDDB0E9F10966219003751DE /* mkpath.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ FD50541B10A4CAEA0060248B /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = FD50541610A4CAE40060248B /* diffstat */;
+ targetProxy = FD50541A10A4CAEA0060248B /* PBXContainerItemProxy */;
+ };
+ FDDB0F00109665B7003751DE /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = FDDB0EFB1096659F003751DE /* Open Source Info */;
+ targetProxy = FDDB0EFF109665B7003751DE /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ FD50541910A4CAE50060248B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ HAVE_CONFIG_H,
+ "_XOPEN_SOURCE=500",
+ _DARWIN_C_SOURCE,
+ );
+ HEADER_SEARCH_PATHS = "$(SRCROOT)/diffstat";
+ INSTALL_PATH = /usr/bin;
+ PRODUCT_NAME = diffstat;
+ };
+ name = Release;
+ };
+ FDDB0E79109661C0003751DE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+ CODE_SIGN_IDENTITY = "-";
+ CURRENT_PROJECT_VERSION = "$(RC_ProjectSourceVersion)";
+ DEAD_CODE_STRIPPING = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ PREBINDING = NO;
+ USE_HEADERMAP = NO;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = __;
+ WARNING_CFLAGS = "-Wall";
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ FDDB0E82109661D2003751DE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = Default;
+ };
+ name = Release;
+ };
+ FDDB0E8A109661DB003751DE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ INSTALL_PATH = /usr/bin;
+ PRODUCT_NAME = patch;
+ };
+ name = Release;
+ };
+ FDDB0EFC1096659F003751DE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "Open Source Info";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ FD50542010A4CB270060248B /* Build configuration list for PBXNativeTarget "diffstat" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FD50541910A4CAE50060248B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FDDB0E7A109661C0003751DE /* Build configuration list for PBXProject "patch_cmds" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FDDB0E79109661C0003751DE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FDDB0E8B109661DB003751DE /* Build configuration list for PBXAggregateTarget "Default" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FDDB0E82109661D2003751DE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FDDB0E8C109661DB003751DE /* Build configuration list for PBXNativeTarget "patch" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FDDB0E8A109661DB003751DE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ FDDB0F0A109665C3003751DE /* Build configuration list for PBXAggregateTarget "Open Source Info" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FDDB0EFC1096659F003751DE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = FDDB0E77109661C0003751DE /* Project object */;
+}