From: drh Date: Tue, 7 Dec 2010 15:49:03 +0000 (+0000) Subject: Merge in all changes to the trunk through version 3.7.4rc3. X-Git-Tag: mountain-lion~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67d225da53e798558f8437f175155149d59c802c;p=thirdparty%2Fsqlite.git Merge in all changes to the trunk through version 3.7.4rc3. FossilOrigin-Name: d2ccf7fc0673e875ff7b84cd37b89c65df4bec7f --- 67d225da53e798558f8437f175155149d59c802c diff --cc manifest index 30e6570b25,14f5ca8663..f108f2d3a0 --- a/manifest +++ b/manifest @@@ -1,10 -1,10 +1,10 @@@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 - C Merge\sall\sthe\slatest\schanges\sfrom\sthe\strunk\sinto\sthe\sapple-osx\sbranch. - D 2010-11-19T23:50:48 -C Version\s3.7.4\srelease\scandidate\s3 -D 2010-12-07T14:59:22 ++C Merge\sin\sall\schanges\sto\sthe\strunk\sthrough\sversion\s3.7.4rc3. ++D 2010-12-07T15:49:03 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f - F Makefile.in 9a343cc2c92c47da1b51941ab10a37db213e50b3 -F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0 ++F Makefile.in dec697a7eb6ee9d6c04f77f4e46b1aff020d2662 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.vxworks c85ec1d8597fe2f7bc225af12ac1666e21379151 F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6 @@@ -83,7 -83,7 +83,7 @@@ F ext/icu/README.txt bf8461d8cdc6b8f514 F ext/icu/icu.c 850e9a36567bbcce6bd85a4b68243cad8e3c2de2 F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761 - F ext/rtree/rtree.c d818635ff92b7ec84ed055b136b97da262b4f4d1 -F ext/rtree/rtree.c 05b293c85403cf39bb5af0e7c010b0cafeab5e47 ++F ext/rtree/rtree.c cc46316fd9ab80a2384e49d3c05ab87cf77ca318 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e F ext/rtree/rtree1.test dbd4250ac0ad367a262eb9676f7e3080b0368206 F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba @@@ -134,10 -131,10 +134,10 @@@ F src/complete.c dc1d136c0feee03c2f7550 F src/ctime.c 4f3aadad62c6c9f0d4e5a96718516ac4e3c598df F src/date.c 1548fdac51377e4e7833251de878b4058c148e1b F src/delete.c 7ed8a8c8b5f748ece92df173d7e0f7810c899ebd - F src/expr.c 4b05c74061e9597f16bea6857b5598a8b5d5be5e + F src/expr.c 1810f3056b11de99cc10e24629edf00e5fbd3a75 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 17950a28f28b23e8ad3feaac5fc88c324d2f600a -F src/func.c 2b7cf54d2569c2eba42fe81165d1932b546681a3 +F src/func.c 3856c6899fa4a9cb2da7b00cf5796171d88e34ae F src/global.c 02335177cf6946fe5525c6f0755cf181140debf3 F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970 @@@ -166,31 -163,30 +166,31 @@@ F src/os.c 22ac61d06e72a0dac90040014733 F src/os.h 9dbed8c2b9c1f2f2ebabc09e49829d4777c26bf9 F src/os_common.h a8f95b81eca8a1ab8593d23e94f8a35f35d4078f F src/os_os2.c 72d0b2e562952a2464308c4ce5f7913ac10bef3e - F src/os_unix.c 357e5f1b261c601f0fef1211a040cc699056298f -F src/os_unix.c 0240c5b547b4cf585c8cac351a95c3e85ce00772 ++F src/os_unix.c 49f8334f45bd3f44970e9afd8a70e8dd0f8a2282 F src/os_win.c 2f90f7bdec714fad51cd31b4ecad3cc1b4bb5aad - F src/pager.c a8b36940ca8afcb45224e0017669782b3b2c90a3 + F src/pager.c c0aca5c733c15a16fe158c3215d857841a4e5381 F src/pager.h 0ea59db2a33bc6c2c02cae34de33367e1effdf76 F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58 F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050 F src/pcache1.c e9578a3beac26f229ee558a4e16c863f2498185f - F src/pragma.c a56ea45deaa2e81227a8a26a2aa6745f21699700 - F src/prepare.c 75d214bf34d3891cfafb8c4c75df3f7f9acbc4d6 -F src/pragma.c 8a6cd3c787f882fa44f6490d2411fc26839ce8f3 -F src/prepare.c c8b877b80721d70b68053fd9ae30ec6d63eeeadc ++F src/pragma.c 3ff495d7f9c51c58d33269dfb8d5bd9f82c3d566 ++F src/prepare.c 7f225d1bf1670fdfb37c9c63b342e4206a252c29 F src/printf.c 8ae5082dd38a1b5456030c3755ec3a392cd51506 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50 F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697 - F src/select.c 550d67688f5e8bc8022faf6d014838afba1415af + F src/select.c 8a7ba246b0b4bb45df7fbc52681728a0e3deaaa7 F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056 - F src/sqlite.h.in e6e87d10e6a3756b8c7e9a11703716b6a1575a40 + F src/sqlite.h.in b7e8a4e4749cfae9c99e1fbe3f9f87763cbbf7a2 +F src/sqlite3_private.h 2a814d17913732831acf13e7e87860105a3416e4 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754 - F src/sqliteInt.h f5b5041bfebd5654212992f6ebaa3f575c4b9c17 + F src/sqliteInt.h b96d5ddb8b419a2ed7cf69a7778b53872d73e8a7 F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44 F src/status.c 496913d4e8441195f6f2a75b1c95993a45b9b30b F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e F src/tclsqlite.c 77c5c4b8ac7b2d94ee480e1ad626fbd921d948e4 - F src/test1.c b0cea79b02e227a8199c89c2e7a97b6e9cc613a2 -F src/test1.c 397809a3069c171a507a49b6f6edfc4255b0afbc ++F src/test1.c 665cd9008b5e491e69076e4c58f540d29393ca76 F src/test2.c 80d323d11e909cf0eb1b6fbb4ac22276483bcf31 F src/test3.c 056093cfef69ff4227a6bdb9108564dc7f45e4bc F src/test4.c 0528360b5025688002a5feb6be906ddce52eaaee @@@ -233,15 -229,15 +233,15 @@@ F src/tokenize.c 604607d6813e9551cf5189 F src/trigger.c b8bedb9c0084ceb51a40f54fcca2ce048c8de852 F src/update.c 227e6cd512108b84f69421fc6c7aa1b83d60d6e0 F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685 - F src/util.c cd78524566fe45671863eee78685969a4bfd4e4c + F src/util.c ab1c92426494f499f42b9e307537b03e923d75c1 F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f - F src/vdbe.c d623683612ebfc7fd7cae7f900dd95b92d114aa5 -F src/vdbe.c 5d310eaf1a4d8383602126fa82e01291ab7d3cf3 ++F src/vdbe.c 624c618542806c2075588ee5d2bdf43d91e34c21 F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2 - F src/vdbeInt.h 7f4cf1b2b69bef3a432b1f23dfebef57275436b4 + F src/vdbeInt.h 1f2137b905969f4de0648256aeb73abdf88f9213 -F src/vdbeapi.c fb0036185b3c56e15916a5ee96309cd4acf6818f +F src/vdbeapi.c 09ebd299007972e9262dec825d8fc3baedf0d239 - F src/vdbeaux.c 762c2b146cf5fe7a7f743af1bbfed4a966aa937a - F src/vdbeblob.c e0ce3c54cc0c183af2ec67b63a289acf92251df4 - F src/vdbemem.c 23723a12cd3ba7ab3099193094cbb2eb78956aa9 + F src/vdbeaux.c b810a66902ee40c71cdb9c64f43760da516c91df + F src/vdbeblob.c 18955f0ee6b133cd08e1592010cb9a6b11e9984c + F src/vdbemem.c 411649a35686f54268ccabeda175322c4697f5a6 F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2 F src/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30 F src/wal.c f26b8d297bd11cb792e609917f9d4c6718ac8e0e @@@ -525,13 -524,12 +528,13 @@@ F test/lock.test db74fdf5a73bad29ab3d86 F test/lock2.test 5242d8ac4e2d59c403aebff606af449b455aceff F test/lock3.test f271375930711ae044080f4fe6d6eda930870d00 F test/lock4.test c82268c031d39345d05efa672f80b025481b3ae5 -F test/lock5.test b2abb5e711bc59b0eae00f6c97a36ec9f458fada -F test/lock6.test ad5b387a3a8096afd3c68a55b9535056431b0cf5 +F test/lock5.test d0d313f059ae5661726d3f197ba6ed8f69257d8e +F test/lock6.test 83434ae8ca1d1c5e2eaf74d4e44aa24ab62b291c F test/lock7.test 64006c84c1c616657e237c7ad6532b765611cf64 - F test/lock_common.tcl 43fef46b1c5b8ac05e382eab214705c23c70bc88 + F test/lock_common.tcl d279887a0ab16cdb6d935c1203e64113c5a000e9 +F test/lock_proxy.test 95be9c32d79be25cf643b4e41a0aa0e53aa21621 F test/lookaside.test 382e7bc2fab23d902c8eafb1b9ed7ababfff75a6 -F test/main.test 9d7bbfcc1b52c88ba7b2ba6554068ecf9939f252 +F test/main.test 753e2b772c041bd8dbd17c7e4132b3981378eaab F test/make-where7.tcl 05c16b5d4f5d6512881dfec560cb793915932ef9 F test/malloc.test 927e6c8668a1d48c23aa6189bda02aff5a1b83de F test/malloc3.test 4128b1e6ffa506103b278ad97af89174f310c7ca @@@ -553,11 -551,11 +556,11 @@@ F test/mallocH.test 79b65aed612c9b3ed2d F test/mallocI.test a88c2b9627c8506bf4703d8397420043a786cdb6 F test/mallocJ.test b5d1839da331d96223e5f458856f8ffe1366f62e F test/mallocK.test d79968641d1b70d88f6c01bdb9a7eb4a55582cc9 - F test/malloc_common.tcl 520f8f1318586d09b6378315803c937d0be7795d -F test/malloc_common.tcl 27087a2bfad8f695ca6f8b463ecac5d71b9b0712 -F test/manydb.test b3d3bc4c25657e7f68d157f031eb4db7b3df0d3c -F test/memdb.test 0825155b2290e900264daaaf0334b6dfe69ea498 ++F test/malloc_common.tcl 2c807f3ca596a1a41fc5d7131e12eed913f60824 +F test/manydb.test 7faa0df55bbab2b14c25f323801db336c4e7ce3a +F test/memdb.test f773146f66ee2c635854a8264317f39a6cc3e18c F test/memleak.test 10b9c6c57e19fc68c32941495e9ba1c50123f6e2 -F test/memsubsys1.test 4cbec6f202c91504bfc4717bfc2ffd6160316c4c +F test/memsubsys1.test 6827c7d06d5d60eda7a23c8d0b75d6922bd539dc F test/memsubsys2.test 72a731225997ad5e8df89fdbeae9224616b6aecc F test/minmax.test 722d80816f7e096bf2c04f4111f1a6c1ba65453d F test/minmax2.test 33504c01a03bd99226144e4b03f7631a274d66e0 @@@ -580,17 -578,17 +583,17 @@@ F test/notify3.test d60923e186e0900f481 F test/notnull.test cc7c78340328e6112a13c3e311a9ab3127114347 F test/null.test a8b09b8ed87852742343b33441a9240022108993 F test/openv2.test af02ed0a9cbc0d2a61b8f35171d4d117e588e4ec - F test/pager1.test 07b06b89d50bc38bb118a18b99c7bee645b315de + F test/pager1.test e066fb2e2dc1ac1cd9ef2b44a28ae3cc79a9150f F test/pager2.test 0fbb6b6dc40ce1fecfe758c555a748ad2e9beaa3 F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f -F test/pagerfault.test 9de4d3e0c59970b4c6cb8dac511fa242f335d8a7 +F test/pagerfault.test bea066b9162e1ab6843c2c1524ebb0965715e956 F test/pagerfault2.test 1f79ea40d1133b2683a2f811b00f2399f7ec2401 F test/pageropt.test 8146bf448cf09e87bb1867c2217b921fb5857806 F test/pagesize.test 76aa9f23ecb0741a4ed9d2e16c5fa82671f28efb F test/pcache.test 4118a183908ecaed343a06fcef3ba82e87e0129d F test/pcache2.test 0d85f2ab6963aee28c671d4c71bec038c00a1d16 - F test/permutations.test 193238b7828759805091ecddd9a0912767f236a4 + F test/permutations.test c0ce0f3b741dd92a6d4c2671dbacba4b92dd81eb -F test/pragma.test fdfc09067ea104a0c247a1a79d8093b56656f850 +F test/pragma.test 88048136eed6baa2097dd7ab5145d3288128ca70 F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47 F test/printf.test 05970cde31b1a9f54bd75af60597be75a5c54fea F test/progress.test 5b075c3c790c7b2a61419bc199db87aaf48b8301 @@@ -664,10 -662,10 +667,10 @@@ F test/sync.test ded6b39d8d8ca3c0c55185 F test/table.test 04ba066432430657712d167ebf28080fe878d305 F test/tableapi.test 7262a8cbaa9965d429f1cbd2747edc185fa56516 F test/tclsqlite.test 8c154101e704170c2be10f137a5499ac2c6da8d3 -F test/tempdb.test 19d0f66e2e3eeffd68661a11c83ba5e6ace9128c +F test/tempdb.test 3263e5c3f0604e54d307481e8587327c54544d18 F test/temptable.test f42121a0d29a62f00f93274464164177ab1cc24a F test/temptrigger.test b0273db072ce5f37cf19140ceb1f0d524bbe9f05 - F test/tester.tcl 33bbb5f93084f1280acec57f6a1879dfe8960718 -F test/tester.tcl dafe0d30279f6d380d5d2a535781dda91b8cfc3f ++F test/tester.tcl 656849799443f3daa8022b646424c526c9e36fb7 F test/thread001.test a3e6a7254d1cb057836cb3145b60c10bf5b7e60f F test/thread002.test afd20095e6e845b405df4f2c920cb93301ca69db F test/thread003.test b824d4f52b870ae39fc5bae4d8070eca73085dca @@@ -834,23 -833,24 +838,24 @@@ F test/vtabE.test 7c4693638d7797ce2eda1 F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5 F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8 F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d -F test/wal.test 70227190e713b3e7eb2a7d5ec3510b66db01f327 -F test/wal2.test 3de797854de175323e7351b5f2514a30d1ee1410 -F test/wal3.test ac51126c36814bce334f66a0a4dbbfa56d429733 -F test/wal4.test 3404b048fa5e10605facaf70384e6d2943412e30 +F test/wal.test d83c3d227e9e9bb5c7a0c1447ea4a3c6cd5fced4 - F test/wal2.test ca023e6440625f897f5ebcf4ae2d8bb652b181f3 - F test/wal3.test 375c08e62b54233ad557473d1e63114f085be7a1 ++F test/wal2.test 65587c92ca35a4112ac3e78eac6a3df395346ef8 ++F test/wal3.test d3db776b107729d18c3e69b09690099f06083ff9 +F test/wal4.test 6a68c45bc1ca24a3592ec449ddcb92b29d0e0e87 + F test/wal6.test 07aa31ca8892d0527f2c5c5a9a2a87aa421dfaa8 F test/wal_common.tcl 895d76138043b86bdccf36494054bdabcf65837b -F test/walbak.test 4df1c7369da0301caeb9a48fa45997fd592380e4 -F test/walbig.test e882bc1d014afffbfa2b6ba36e0f07d30a633ad0 -F test/walcksum.test a37b36375c595e61bdb7e1ec49b5f0979b6fc7ce -F test/walcrash.test e763841551d6b23677ccb419797c1589dcbdbaf5 -F test/walcrash2.test 019d60b89d96c1937adb2b30b850ac7e86e5a142 -F test/walfault.test 81ed760def1c1573151d416b0d09178cf006f9fd -F test/walhook.test ed00a40ba7255da22d6b66433ab61fab16a63483 -F test/walmode.test 22ddccd073c817ac9ead62b88ac446e8dedc7d2c +F test/walbak.test 767e1c9e0ea0cfb907873b332883e66e187fa4bc +F test/walbig.test 78ac493db2abdb65b9c6cace5b851cc32df1d449 +F test/walcksum.test cf6787f2ee1a6a3da6f0c2b20b9ede5153e4e03f +F test/walcrash.test 80c1cc3173a0ef09d8303fa556cb0187a36d82ea +F test/walcrash2.test 929c99d14ee2e3e3ef82585058968a8b12f72706 +F test/walfault.test 395354b447eb3b249b725651fdbb6a83c461b5b4 +F test/walhook.test c934ac5219fee2b4e7653d291db9107b8dc73bba +F test/walmode.test feb39956ec6f415fbb9dcb12d91243391c2c4715 F test/walnoshm.test a074428046408f4eb5c6a00e09df8cc97ff93317 -F test/walshared.test 6dda2293880c300baf5d791c307f653094585761 -F test/walslow.test d21625e2e99e11c032ce949e8a94661576548933 -F test/walthread.test a25a393c068a2b42b44333fa3fdaae9072f1617c +F test/walshared.test 0befc811dcf0b287efae21612304d15576e35417 +F test/walslow.test 989854bc5c214700a9f2d545bb158643813b8881 +F test/walthread.test e6e32e93ccebfa401dfc0dd930c79daa3472b0ae F test/where.test de337a3fe0a459ec7c93db16a519657a90552330 F test/where2.test 43d4becaf5a5df854e6c21d624a1cb84c6904554 F test/where3.test 8ebedae552e13fc7f2b4e8df6cbe72a095347400 @@@ -897,14 -897,14 +902,14 @@@ F tool/speedtest2.tcl ee2149167303ba8e9 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f - P fd4d38fa66de85676189ff4922fb1bf5f8cac9c4 765aa1b862fa38cede89bafe0e10c094e0544b7e - R edc048689b86400e131d2f6440a0714d -P b0634d2f909fb192d20315e59fa31fcd8f316541 -R c899dedfcbfad993e519fd17027aa5c1 ++P c8bc057c7def6bbbebd89ee52b582bad75fb0509 11c74c0dae0e302f248ec4af6dc8a9376203b034 ++R f56fc98cc45db5c78ece2f3f120ef0e8 U drh - Z e6c803c3f15462e630f40d2ef9def8b5 -Z e558719848264f114302cf252022d7ad ++Z 2f1441de3189b083ad6152c4d3e98a30 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) - iD8DBQFM5w1boxKgR168RlERAkoAAJ9hX7bgyTYQryBDS6tUIBir1HRHMACeJ1nu - KNrsAbBP663ZyA6UuIYCzmY= - =H0Oq -iD8DBQFM/kvQoxKgR168RlERAihjAJ483qru/mKHGZtSh1P4zl69jepBKwCfe11S -MaOtcUGzrbyHLk/lC2rzkPk= -=bBvs ++iD8DBQFM/ldyoxKgR168RlERAlUOAJoCRDoVTFpbr6OE7/Ud5TIa2NWEOACeIlqf ++qmpiDDfSfUooUtaCFjP2Gzg= ++=y70I -----END PGP SIGNATURE----- diff --cc manifest.uuid index c8576f9d7c,281813f1d5..ece9d94229 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - c8bc057c7def6bbbebd89ee52b582bad75fb0509 -11c74c0dae0e302f248ec4af6dc8a9376203b034 ++d2ccf7fc0673e875ff7b84cd37b89c65df4bec7f diff --cc src/pragma.c index 200694af42,31985438af..f4703492ab --- a/src/pragma.c +++ b/src/pragma.c @@@ -701,10 -692,9 +693,10 @@@ void sqlite3Pragma if( sqlite3StrICmp(zLeft,"cache_size")==0 ){ if( sqlite3ReadSchema(pParse) ) goto pragma_out; if( !zRight ){ - returnSingleInt(pParse, "cache_size", pDb->pSchema->cache_size); + i64 cacheSize = pDb->pSchema->cache_size; + returnSingleInt(pParse, "cache_size", &cacheSize); }else{ - int size = atoi(zRight); + int size = sqlite3Atoi(zRight); if( size<0 ) size = -size; pDb->pSchema->cache_size = size; sqlite3BtreeSetCacheSize(pDb->pBt, pDb->pSchema->cache_size); @@@ -1416,15 -1404,12 +1408,14 @@@ ** of N. */ if( sqlite3StrICmp(zLeft, "wal_autocheckpoint")==0 ){ + i64 walArg = 0; if( zRight ){ - int nAuto = atoi(zRight); - sqlite3_wal_autocheckpoint(db, nAuto); + sqlite3_wal_autocheckpoint(db, sqlite3Atoi(zRight)); } - returnSingleInt(pParse, "wal_autocheckpoint", - db->xWalCallback==sqlite3WalDefaultHook ? - SQLITE_PTR_TO_INT(db->pWalArg) : 0); + if( db->xWalCallback==sqlite3WalDefaultHook ){ + walArg = SQLITE_PTR_TO_INT(db->pWalArg); + } + returnSingleInt(pParse, "wal_autocheckpoint", &walArg); }else #endif diff --cc test/wal2.test index 26ea1ddfd7,e31fe79493..bd56a18811 --- a/test/wal2.test +++ b/test/wal2.test @@@ -19,11 -19,9 +19,13 @@@ source $testdir/lock_common.tc source $testdir/malloc_common.tcl source $testdir/wal_common.tcl + set testprefix wal2 + ifcapable !wal {finish_test ; return } +if { ![wal_is_ok] || [path_is_dos "."]} { + finish_test + return +} proc set_tvfs_hdr {file args} {