{"thread":{"id":"10117","subject":"Re: git: avoiding merges, rebasing","startedAt":"2007-10-02T12:16:25Z","lastAt":"2007-10-23T08:55:02Z","messageCount":15,"participants":["Eric Blake","Bruno Haible","Junio C Hamano","Joachim B Haga","David Kastrup","Benoit SIGOURE","Johannes Schindelin","Miles Bader"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"54558","messageId":"47023699.3080606@byu.net","threadId":"10117","inReplyTo":"200710021350.54625.bruno@clisp.org","subject":"Re: git: avoiding merges, rebasing","fromName":"Eric Blake","fromEmail":"ebb9@byu.net","sentAt":"2007-10-02T12:16:25Z","receivedAt":"2007-10-02T12:16:25Z","isPatch":false,"sender":{"key":"eblake@redhat.com","avatar":"https://avatars.githubusercontent.com/u/32933908?v=4"},"body":"-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\n[adding the git list]\n\nAccording to Bruno Haible on 10/2/2007 5:50 AM:\n> Hello Benoit,\n> \n>>>     $ git stash\n>>>     $ git pull\n>>>     $ git stash apply\n>>>     $ git stash clean              ; typo!\n>>>     $ git stash clear              ; fatal correction to typo!\n>>>\n>>> and lost 20 modified files. Well, not really lost. Just took me a  \n>>> while to\n>> I don't really see how and why you \"lost 20 modified files\".\n> \n> I lost modifications to 20 files. \"git stash clean\" moved these modifications\n> into a stash named \"clean\", and \"git stash clear\" killed it.\n\nWhile we're at it, I wish 'git stash clear' would take an optional\nargument that says which stash(es) to clear, rather than blindly clearing\nthe entire stash.\n\nShort of that, there's always manually editing .git/logs/refs/stash, to\ndelete the lines to the stashes you no longer need, without killing the\nones you want kept.\n\n- --\nDon't work too hard, make some time for fun as well!\n\nEric Blake             ebb9@byu.net\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.5 (Cygwin)\nComment: Public key at home.comcast.net/~ericblake/eblake.gpg\nComment: Using GnuPG with Mozilla - http://enigmail.mozdev.org\n\niD8DBQFHAjaY84KuGfSFAYARAjqCAJ9qRzVxWpujzTGU9zdDi1UkQiSLggCeMien\nLJhXdjlNHQYv0BUMCyZQo20=\n=xPKQ\n-----END PGP SIGNATURE-----\n"},{"id":"54757","messageId":"200710032331.41385.bruno@clisp.org","threadId":"10117","inReplyTo":"47023699.3080606@byu.net","subject":"making \"git stash\" safer to use","fromName":"Bruno Haible","fromEmail":"bruno@clisp.org","sentAt":"2007-10-03T21:31:41Z","receivedAt":"2007-10-03T21:31:41Z","isPatch":false,"sender":{"key":"bruno@clisp.org","avatar":null},"body":"Hi,\n\nThrough a simple typo I lost modifications to 20 files:\n\n> >>>     $ git stash\n> >>>     $ git pull\n> >>>     $ git stash apply\n> >>>     $ git stash clean              # typo!\n> >>>     $ git stash clear              # fatal correction to typo!\n\nIt is just too easy to lose your modifications by using \"git stash\".\n\nEric Blake further says:\n\n> While we're at it, I wish 'git stash clear' would take an optional\n> argument that says which stash(es) to clear, rather than blindly clearing\n> the entire stash.\n\nIt would help if git would store which of the stashes were applied since\nthey were created and which were not. A stash that was not yet applied must\nbe considered \"precious\", whereas a stash that was applied is redundant,\nright?\n\nAccording these lines, how about\n  1) changing \"git stash clear\" to remove only the redundant stashes,\n     (or alternatively: let it fail if there is at least one precious stash),\n  2) adding an option -f, so that \"git stash -f clear\" clears all stashes,\n     including the precious ones.\n\nThe rationale is that humans are bad at remembering the state of something.\nTherefore instead of having a command that is commonly used in one state\nand dangerous in the other state, better have two different commands - one\nfor the common case, and one for the dangerous one. Like \"rm\" and \"rm -f\".\n\nBruno\n"},{"id":"54761","messageId":"7vwsu3dgnu.fsf@gitster.siamese.dyndns.org","threadId":"10117","inReplyTo":"200710032331.41385.bruno@clisp.org","subject":"Re: making \"git stash\" safer to use","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2007-10-03T21:36:37Z","receivedAt":"2007-10-03T21:36:37Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Bruno Haible <bruno@clisp.org> writes:\n\n>> While we're at it, I wish 'git stash clear' would take an optional\n>> argument that says which stash(es) to clear, rather than blindly clearing\n>> the entire stash.\n>\n> It would help if git would store which of the stashes were applied since\n> they were created and which were not. A stash that was not yet applied must\n> be considered \"precious\", whereas a stash that was applied is redundant,\n> right?\n\nWrong.  I would say all stash entries are precious unless you\nexplicitly say \"I'm done with it\".  The problem is that we do\nnot have a way to say it explicitly.\n"},{"id":"54775","messageId":"200710040101.52137.bruno@clisp.org","threadId":"10117","inReplyTo":"6C9F1445-8826-4E6F-A10C-290A57A4C826@lrde.epita.fr","subject":"Re: git: avoiding merges, rebasing","fromName":"Bruno Haible","fromEmail":"bruno@clisp.org","sentAt":"2007-10-03T23:01:52Z","receivedAt":"2007-10-03T23:01:52Z","isPatch":false,"sender":{"key":"bruno@clisp.org","avatar":null},"body":"Benoit SIGOURE wrote:\n> >>> Is there some shorthand for this process, such as a \"git-recover\"\n> >>> command?\n> >>\n> >> you can run git fsck and look for\n> >> a dangling commit (which can be inspected with git show <sha1>) where\n> >> you are most likely to find your stash (unless you run git-gc or this\n> >> sort of thing).\n> >\n> > Cool! This information would be worth mentioning in the git-stash  \n> > manual page or in an FAQ. It can be a real life-saver.\n> \n> True.  Propose a patch :-)\n\nHere's a proposed patch.\n\n--- git-1.5.3.4/Documentation/git-stash.txt.bak\t2007-10-03 21:44:53.000000000 +0200\n+++ git-1.5.3.4/Documentation/git-stash.txt\t2007-10-04 01:00:48.000000000 +0200\n@@ -154,6 +154,28 @@\n ... continue hacking ...\n ----------------------------------------------------------------\n \n+Recovering a lost stash::\n+\n+`git stash clear` clears all stashes without asking for confirmation.\n+If you did not intend this, you can recover the lost changes by running\n+`git fsck`, looking for dangling commits, and using `git show <commit>`.\n++\n+----------------------------------------------------------------\n+... hack hack hack ...\n+$ git stash\n+... hack no coffee hack ...\n+$ git stash clear\n+... panic panic ...\n+$ git fsck\n+dangling commit f62c4fa05422fd4fb8610bdb02a7160121657893\n+dangling commit 773024d2ffc33ac80baddcf2b673535b627af0da\n+dangling commit 9e509390a2b26b562f3b008eacc65b6765d48339\n+$ git show 773024d2ffc33ac80baddcf2b673535b627af0da\n+$ git diff 773024d2ffc33ac80baddcf2b673535b627af0da > recovered.diff\n+$ patch -p0 -R < recovered.diff\n+... continue hacking ...\n+----------------------------------------------------------------\n+\n SEE ALSO\n --------\n gitlink:git-checkout[1],\n"},{"id":"54802","messageId":"858x6jff2v.fsf@lupus.ig3.net","threadId":"10117","inReplyTo":"200710032331.41385.bruno@clisp.org","subject":"Re: making \"git stash\" safer to use","fromName":"Joachim B Haga","fromEmail":"cjhaga@fys.uio.no","sentAt":"2007-10-04T08:40:08Z","receivedAt":"2007-10-04T08:40:08Z","isPatch":false,"sender":{"key":"cjhaga@fys.uio.no","avatar":null},"body":"> Through a simple typo I lost modifications to 20 files:\n>\n>> >>>     $ git stash\n>> >>>     $ git pull\n>> >>>     $ git stash apply\n>> >>>     $ git stash clean              # typo!\n>> >>>     $ git stash clear              # fatal correction to typo!\n>\n> It is just too easy to lose your modifications by using \"git stash\".\n\nWhat makes it most dangerous is that there is no differentiation\nbetween a name and a command in the same position. I'd argue that \neither the command should be mandatory:\n\ngit stash save mywork\ngit stash apply mywork\ngit stash clear mywork\ngit stash mywork       # error\n\n(we can still keep today's shortcuts \"git stash\" and \"git stash apply\", \nbut only for the un-named case),\n\nor that the command should be of the option type:\n\ngit stash mywork\ngit stash --apply mywork\ngit stash --clear mywork\n\n\n-j.\n"},{"id":"54872","messageId":"85przuoato.fsf@lola.goethe.zz","threadId":"10117","inReplyTo":"858x6jff2v.fsf@lupus.ig3.net","subject":"Re: making \"git stash\" safer to use","fromName":"David Kastrup","fromEmail":"dak@gnu.org","sentAt":"2007-10-04T20:59:31Z","receivedAt":"2007-10-04T20:59:31Z","isPatch":false,"sender":{"key":"dak@gnu.org","avatar":"https://avatars.githubusercontent.com/u/52141349?v=4"},"body":"Joachim B Haga <cjhaga@fys.uio.no> writes:\n\n> What makes it most dangerous is that there is no differentiation\n> between a name and a command in the same position. I'd argue that\n> either the command should be mandatory:\n>\n> git stash save mywork\n> git stash apply mywork\n> git stash clear mywork\n> git stash mywork       # error\n>\n> (we can still keep today's shortcuts \"git stash\" and \"git stash apply\", \n> but only for the un-named case),\n>\n> or that the command should be of the option type:\n>\n> git stash mywork\n> git stash --apply mywork\n> git stash --clear mywork\n\nHear, hear!  I vote for the latter.  The former is still better than\nthe current state, though.\n\n-- \nDavid Kastrup, Kriemhildstr. 15, 44793 Bochum\n"},{"id":"55189","messageId":"1F840D5F-7CE7-45F5-94D2-8A366149CBFB@lrde.epita.fr","threadId":"10117","inReplyTo":"C64152A3-A5A6-4320-864C-E78E3A60C8E6@lrde.epita.fr","subject":"Re: git: avoiding merges, rebasing","fromName":"Benoit SIGOURE","fromEmail":"tsuna@lrde.epita.fr","sentAt":"2007-10-08T13:16:45Z","receivedAt":"2007-10-08T13:16:45Z","isPatch":false,"sender":{"key":"tsunanet@gmail.com","avatar":"https://avatars.githubusercontent.com/u/128281?v=4"},"body":"On Sep 30, 2007, at 10:27 PM, Benoit SIGOURE wrote:\n\n> On Sep 30, 2007, at 9:41 PM, Bruno Haible wrote:\n>\n>>> it should be\n>>> possible to create a custom [merge \"cl-merge\"] in your git config  \n>>> file,\n>>> which points to a script designed specifically for resolving  \n>>> changelog\n>>> conflicts\n>>\n>> I would love such a script, instead of constantly having to do  \n>> conflict\n>> resolution at the top of ChangeLog.\n>>\n>\n> So would I.  I've had this in my TODO list for a long time so if no  \n> one else is willing to give it a try, I can try, but it won't be  \n> before next week because my schedule is quite busy until then.\n>\n\nI finally found some time to hack something and here is my git-merge- \nchangelog Perl script.  I tested it quickly and it seems to work  \nfine.  It will mess up the ChangeLog entries when a commit actually  \nmodifies an existing ChangeLog entry.  It needs more testing but I'm  \njust throwing this out in the wild for people that have interest in  \nthis to review.  I will eventually come up with a solution for the  \ncommits modifying existing entries and a testsuite.\n\nI'm CC-ing the Git ML just in case it interests some more people over  \nthere.\n\nIn order to use it, add the following to your ~/.gitconfig:\n[merge \"cl-merge\"]\n         name = GNU-style ChangeLog merge driver\n         driver = /path/to/git-merge-changelog %O %A %B\n(you can also add it to a specific working copy by adding it in .git/ \nconfig instead)\n\nThen, in the directory where the ChangeLog is, add a .gitattributes  \nfile with the following content:\nChangeLog       merge=cl-merge\n\nFor more information, see man gitattributes.\n\nLet me know if something goes wrong.\n\nCheers,\n\n-- \nBenoit Sigoure aka Tsuna\nEPITA Research and Development Laboratory\n\n\n"},{"id":"55190","messageId":"07BCEF3E-90DE-4BB7-8A8C-F03D12293B5F@lrde.epita.fr","threadId":"10117","inReplyTo":"C64152A3-A5A6-4320-864C-E78E3A60C8E6@lrde.epita.fr","subject":"Re: git: avoiding merges, rebasing","fromName":"Benoit SIGOURE","fromEmail":"tsuna@lrde.epita.fr","sentAt":"2007-10-08T13:17:59Z","receivedAt":"2007-10-08T13:17:59Z","isPatch":false,"sender":{"key":"tsunanet@gmail.com","avatar":"https://avatars.githubusercontent.com/u/128281?v=4"},"body":"[as usual, I forgot the attachment...]\n\nOn Sep 30, 2007, at 10:27 PM, Benoit SIGOURE wrote:\n\n> On Sep 30, 2007, at 9:41 PM, Bruno Haible wrote:\n>\n>>> it should be\n>>> possible to create a custom [merge \"cl-merge\"] in your git config  \n>>> file,\n>>> which points to a script designed specifically for resolving  \n>>> changelog\n>>> conflicts\n>>\n>> I would love such a script, instead of constantly having to do  \n>> conflict\n>> resolution at the top of ChangeLog.\n>>\n>\n> So would I.  I've had this in my TODO list for a long time so if no  \n> one else is willing to give it a try, I can try, but it won't be  \n> before next week because my schedule is quite busy until then.\n>\n\nI finally found some time to hack something and here is my git-merge- \nchangelog Perl script.  I tested it quickly and it seems to work  \nfine.  It will mess up the ChangeLog entries when a commit actually  \nmodifies an existing ChangeLog entry.  It needs more testing but I'm  \njust throwing this out in the wild for people that have interest in  \nthis to review.  I will eventually come up with a solution for the  \ncommits modifying existing entries and a testsuite.\n\nI'm CC-ing the Git ML just in case it interests some more people over  \nthere.\n\nIn order to use it, add the following to your ~/.gitconfig:\n[merge \"cl-merge\"]\n         name = GNU-style ChangeLog merge driver\n         driver = /path/to/git-merge-changelog %O %A %B\n(you can also add it to a specific working copy by adding it in .git/ \nconfig instead)\n\nThen, in the directory where the ChangeLog is, add a .gitattributes  \nfile with the following content:\nChangeLog       merge=cl-merge\n\nFor more information, see man gitattributes.\n\nLet me know if something goes wrong.\n\nCheers,\n\n-- \nBenoit Sigoure aka Tsuna\nEPITA Research and Development Laboratory\n\n\n\n\n"},{"id":"55251","messageId":"Pine.LNX.4.64.0710091141440.4174@racer.site","threadId":"10117","inReplyTo":"07BCEF3E-90DE-4BB7-8A8C-F03D12293B5F@lrde.epita.fr","subject":"Re: git: avoiding merges, rebasing","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-10-09T10:43:29Z","receivedAt":"2007-10-09T10:43:29Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 8 Oct 2007, Benoit SIGOURE wrote:\n\n> [as usual, I forgot the attachment...]\n\nTwo comments:\n\n- by not inlining you made it hard to review your script.  Therefore I \n  will not do it.\n\n- Try to avoid naming the script git-merge-*; these scripts/programs are \n  merge _strategies_, not merge _drivers_ (and yes, we already have two \n  programs violating this rule -- merge-base and merge-file -- but that \n  does not mean that you are free to add to the pile).\n\nCiao,\nDscho\n"},{"id":"55258","messageId":"200710091403.26047.bruno@clisp.org","threadId":"10117","inReplyTo":"07BCEF3E-90DE-4BB7-8A8C-F03D12293B5F@lrde.epita.fr","subject":"Re: git: avoiding merges, rebasing","fromName":"Bruno Haible","fromEmail":"bruno@clisp.org","sentAt":"2007-10-09T12:03:26Z","receivedAt":"2007-10-09T12:03:26Z","isPatch":false,"sender":{"key":"bruno@clisp.org","avatar":null},"body":"Hello Benoit,\n\nThanks for working on this. But this merge driver has a few major nits.\n\n\n1) While my ChangeLog file was locally unmodified but some pulled in commits\n   should modify it, \"git pull\" stopped and said:\n\nChangeLog: needs update\nfatal: Entry 'ChangeLog' not uptodate. Cannot merge.\n\n[I cannot swear on this, because I did not do a \"git status\" before the\n\"git pull\", but this is in a directory where I usually have no pending diffs.]\n\nThe ChangeLog in question is the one from gnulib\n(git clone git://git.sv.gnu.org/gnulib).\n\n\n2) This \"merge driver\" did much more than sorting in a merge: it sorted the\nentire file! In doing so,\n  - It changed the order of ChangeLog entries in a way that does not represent\n    the historical commit order.\n  - For ChangeLog entries with multiple contributors, it shuffled around these\n    extra contributors to other ChangeLog entries.\n  - Near the end of the file, it made a change that I cannot explain.\n\nFind attached a context diff of all the bad changes that it did.\n\n\nIn my opinion, a merge driver should not do changes to the file except\nin the range of lines where the conflict occurred. For a ChangeLog driver,\nall uncommitted entries should be collected at the top of the file, because\n1. ChangeLogs are kept in the order of historical commit in the central\n   repository,\n2. other developers always look at the top of the ChangeLog; if a ChangeLog\n   entries is inserted second or third after some already present entries,\n   the danger is too high that the change gets unnoticed.\n\nSo \"git-merge-changelog OLD CURRENT OTHERS\" should IMO do the following:\n1) Collect the changes between OLD and HEAD (I don't know if that is CURRENT\n   or OTHERS?), in two categories:\n     - added entries,\n     - changed and removed entries.\n2) Back out the added entries, keeping only the changed and removed entries\n   as modifications.\n3) Do a normal merge between this and the pulled in remote branch (I don't\n   know if that is OTHERS or CURRENT?). If that merge gives a conflict,\n   bail out.\n4) Insert the added entries at the top, in the same order as they were\n   originally (no sorting).\n\nBruno\n\n\n*** ChangeLog.orig\t2007-10-09 13:16:56.000000000 +0200\n--- ChangeLog\t2007-10-09 13:12:29.000000000 +0200\n***************\n*** 3560,3569 ****\n  \t* doc/functions/lseek.texi: Update.\n  \tReported by Gary V. Vaughan <gary@gnu.org>.\n  \n- 2007-05-28  Bruno Haible  <bruno@clisp.org>\n- \n- \t* m4/intl.m4 (AM_INTL_SUBDIR): Substitute variables WOE32, WINDRES.\n- \n  2007-05-31  Eric Blake  <ebb9@byu.net>\n  \n  \t* m4/frexpl.m4 (gl_FUNC_FREXPL_WORKS): Guess no on mingw when\n--- 3560,3565 ----\n***************\n*** 3631,3636 ****\n--- 3627,3636 ----\n  \t* m4/isnanf.m4 (gl_FUNC_ISNANF_NO_LIBM): Avoid syntax error on\n  \tcross compiles.\n  \n+ 2007-05-28  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* m4/intl.m4 (AM_INTL_SUBDIR): Substitute variables WOE32, WINDRES.\n+ \n  2007-05-28  Eric Blake  <ebb9@byu.net>\n  \n  \t* modules/closein-tests (test_closein_LDADD): Support test on\n***************\n*** 4310,4319 ****\n  \t* doc/functions/vsnprintf.texi: Update.\n  \t* doc/functions/vsprintf.texi: Update.\n  \n- 2007-05-01  Bruno Haible  <bruno@clisp.org>\n- \n- \t* tests/test-argp-2.sh (func_compare): Drop .exe suffix.\n- \n  2007-05-03  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* m4/d-ino.m4 (gl_CHECK_TYPE_STRUCT_DIRENT_D_INO): Use better\n--- 4310,4315 ----\n***************\n*** 4333,4338 ****\n--- 4329,4338 ----\n  \n  2007-05-01  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* tests/test-argp-2.sh (func_compare): Drop .exe suffix.\n+ \n+ 2007-05-01  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* doc/functions/_Exit_C99.texi: Renamed from doc/functions/_Exit.texi.\n  \tReported by Eric Blake.\n  \t* doc/gnulib.texi (Function Substitutes): Update.\n***************\n*** 5358,5371 ****\n  \t* modules/crypto/rijndael-tests: Moved from ../.\n  \t* modules/crypto/sha1: Moved from ../.\n  \n- 2007-03-30  James Youngman  <jay@gnu.org>\n- \n- \t* tests/test-stat-time.c (prepare_test): use chmod() rather than\n- \trename() to change the ctime of a file (because ctime is unaffected\n- \tby rename on jfs2 on AIX 5.1).\n- \t(main): Start by doing cleanup, in case a previous run failed leaving\n- \ttest files behind.\n- \n  2007-03-31  Bruno Haible  <bruno@clisp.org>\n  \n  \tSupport old proprietary implementations of iconv.\n--- 5358,5363 ----\n***************\n*** 5442,5447 ****\n--- 5434,5447 ----\n  \tgnulib is available through git.\n  \t* doc/gnulib-tool.texi (CVS Issues): Mention git and svn as well.\n  \n+ 2007-03-30  James Youngman  <jay@gnu.org>\n+ \n+ \t* tests/test-stat-time.c (prepare_test): use chmod() rather than\n+ \trename() to change the ctime of a file (because ctime is unaffected\n+ \tby rename on jfs2 on AIX 5.1).\n+ \t(main): Start by doing cleanup, in case a previous run failed leaving\n+ \ttest files behind.\n+ \n  2007-03-30  Bruno Haible  <bruno@clisp.org>\n  \n  \t* lib/alloca_.h: Change prefix of double-inclusion guard macro to _GL_.\n***************\n*** 6010,6019 ****\n  \t* lib/argp-help.c (fill_in_uparams, canon_doc_option): Cast the\n  \targuments of isspace, isalpha, isalnum, isdigit to 'unsigned char'.\n  \n- 2007-03-22  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/strptime.c (__strptime_internal): Use ANSI C syntax.\n- \n  2007-03-23  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* MODULES.html.sh (File system functions): New module write-any-file.\n--- 6010,6015 ----\n***************\n*** 6032,6037 ****\n--- 6028,6037 ----\n  \n  2007-03-22  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* lib/strptime.c (__strptime_internal): Use ANSI C syntax.\n+ \n+ 2007-03-22  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* lib/poll.c (MSG_PEEK): New fallback definition.\n  \n  2007-03-22  Bruno Haible  <bruno@clisp.org>\n***************\n*** 6284,6293 ****\n  \t* build-aux/bootstrap (gnulib_name): New variable.\n  \t(gnulib_tool_options): Use it.\n  \n- 2007-03-13  Simon Josefsson  <simon@josefsson.org>\n- \n- \t* tests/test-des.c: Use new namespace.\n- \n  2007-03-15  Bruno Haible  <bruno@clisp.org>\n  \n  \t* lib/dummy.c (gl_dummy_symbol): Renamed from 'dummy'.\n--- 6284,6289 ----\n***************\n*** 6364,6369 ****\n--- 6360,6369 ----\n  \t* tests/test-rbtree_oset.c (main): Update.\n  \t* lib/gl_anytreehash_list1.h (add_to_bucket): Update.\n  \n+ 2007-03-13  Simon Josefsson  <simon@josefsson.org>\n+ \n+ \t* tests/test-des.c: Use new namespace.\n+ \n  2007-03-13  Bruno Haible  <bruno@clisp.org>\n  \n  \t* tests/test-stdbool.c (i): Update after last patch.\n***************\n*** 6386,6395 ****\n  \t* build-aux/bootstrap: New file.\n  \t* build-aux/bootstrap.conf: New file, from coreutils.\n  \n- 2007-03-11  Bruno Haible  <bruno@clisp.org>\n- \n- \t* m4/cycle-check.m4 (gl_CYCLE_CHECK): Require AC_C_INLINE.\n- \n  2007-03-12  Simon Josefsson  <simon@josefsson.org>\n  \n  \t* lib/des.h, lib/des.c, lib/gc-gnulib.c: Use gl_ namespace, to\n--- 6386,6391 ----\n***************\n*** 6398,6403 ****\n--- 6394,6403 ----\n  \n  2007-03-11  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* m4/cycle-check.m4 (gl_CYCLE_CHECK): Require AC_C_INLINE.\n+ \n+ 2007-03-11  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* m4/locale-tr.m4 (gt_LOCALE_TR_UTF8): If the test program fails to\n  \tcompile, set LOCALE_TR_UTF8 to 'none' instead of empty.\n  \n***************\n*** 6519,6524 ****\n--- 6519,6531 ----\n  \t* modules/dirname-tests (test_dirname_SOURCES): Remove redundant\n  \tvariable.\n  \n+ 2007-03-10  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* lib/stdio_.h (__attribute__): New macro.\n+ \t(fprintf, vfprintf, printf, vprintf, snprintf, vsnprintf, sprintf,\n+ \tvsprintf): Specify __attribute__ __format__ for GCC.\n+ \tSuggested by Eric Blake.\n+ \n  2007-03-09  Eric Blake  <ebb9@byu.net>\n  \tand Matthew Woehlke  <mw_triad@users.sourceforge.net>  (tiny change)\n  \n***************\n*** 6527,6539 ****\n  \t(GL_INT64_T, GL_UINT64_T): New witnesses of whether gnulib 64-bit\n  \ttypes are supported.\n  \n- 2007-03-10  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/stdio_.h (__attribute__): New macro.\n- \t(fprintf, vfprintf, printf, vprintf, snprintf, vsnprintf, sprintf,\n- \tvsprintf): Specify __attribute__ __format__ for GCC.\n- \tSuggested by Eric Blake.\n- \n  2007-03-09  Bruno Haible  <bruno@clisp.org>\n  \n  \t* modules/printf-posix-tests: New file.\n--- 6534,6539 ----\n***************\n*** 6661,6703 ****\n  \n  \t* m4/printf.m4: Make the shell script snippets copy&pastable.\n  \n- 2007-03-02  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/netinet_in_.h: New file.\n- \t* m4/netinet_in_h.m4 (gl_HEADER_NETINET_IN): Test whether netinet/in.h\n- \tis self-contained. Set ABSOLUTE_NETINET_IN_H, HAVE_NETINET_IN_H.\n- \t* modules/netinet_in (Files): Add lib/netinet_in_.h.\n- \t(Depends-on): Add absolute-header.\n- \t(Makefile.am): Substitute ABSOLUTE_NETINET_IN_H, HAVE_NETINET_IN_H\n- \tinto netinet/in.h.\n- \n- 2007-03-03  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/sys_select_.h: New file.\n- \t* m4/sys_socket_h.m4 (gl_HEADER_SYS_SELECT): Test whether sys/select.h\n- \tis self-contained. Set ABSOLUTE_SYS_SELECT_H, HAVE_SYS_SELECT_H.\n- \t* modules/sys_select (Files): Add lib/sys_select_.h.\n- \t(Depends-on): Add absolute-header.\n- \t(Makefile.am): Substitute ABSOLUTE_SYS_SELECT_H, HAVE_SYS_SELECT_H\n- \tinto sys/select.h.\n- \n- 2007-03-02  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/socket_.h: If sys/socket.h exists, include that and <sys/types.h>\n- \tbefore it. Turn HAVE_WINSOCK2_H and HAVE_WS2TCPIP_H into configute-time\n- \tvalues.\n- \t* m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Test also whether\n- \t<sys/socket.h> is self-contained. Set ABSOLUTE_SYS_SOCKET_H,\n- \tHAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H, HAVE_WS2TCPIP_H.\n- \t* modules/sys_socket (Depends-on): Add absolute-header.\n- \t(Makefile.am): Substitute ABSOLUTE_SYS_SOCKET_H, HAVE_SYS_SOCKET_H,\n- \tHAVE_WINSOCK2_H, HAVE_WS2TCPIP_H into sys/socket.h.\n- \t(Include): Remove requirement of inclusion of <sys/types.h>.\n- \n- 2007-03-02  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/byteswap_.h (bswap_32): Fix formula.\n- \n  2007-03-06  Bruno Haible  <bruno@clisp.org>\n  \n  \t* modules/sprintf-posix-tests: New file.\n--- 6661,6666 ----\n***************\n*** 6934,6939 ****\n--- 6897,6912 ----\n  \n  2007-03-03  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* lib/sys_select_.h: New file.\n+ \t* m4/sys_socket_h.m4 (gl_HEADER_SYS_SELECT): Test whether sys/select.h\n+ \tis self-contained. Set ABSOLUTE_SYS_SELECT_H, HAVE_SYS_SELECT_H.\n+ \t* modules/sys_select (Files): Add lib/sys_select_.h.\n+ \t(Depends-on): Add absolute-header.\n+ \t(Makefile.am): Substitute ABSOLUTE_SYS_SELECT_H, HAVE_SYS_SELECT_H\n+ \tinto sys/select.h.\n+ \n+ 2007-03-03  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* modules/relocatable-prog (Depends-on): Add back progreloc's\n  \tdependencies: canonicalize-lgpl, xalloc, xreadlink, stdbool, unistd.\n  \n***************\n*** 7019,7024 ****\n--- 6992,7024 ----\n  \n  2007-03-02  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* lib/netinet_in_.h: New file.\n+ \t* m4/netinet_in_h.m4 (gl_HEADER_NETINET_IN): Test whether netinet/in.h\n+ \tis self-contained. Set ABSOLUTE_NETINET_IN_H, HAVE_NETINET_IN_H.\n+ \t* modules/netinet_in (Files): Add lib/netinet_in_.h.\n+ \t(Depends-on): Add absolute-header.\n+ \t(Makefile.am): Substitute ABSOLUTE_NETINET_IN_H, HAVE_NETINET_IN_H\n+ \tinto netinet/in.h.\n+ \n+ 2007-03-02  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* lib/socket_.h: If sys/socket.h exists, include that and <sys/types.h>\n+ \tbefore it. Turn HAVE_WINSOCK2_H and HAVE_WS2TCPIP_H into configute-time\n+ \tvalues.\n+ \t* m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Test also whether\n+ \t<sys/socket.h> is self-contained. Set ABSOLUTE_SYS_SOCKET_H,\n+ \tHAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H, HAVE_WS2TCPIP_H.\n+ \t* modules/sys_socket (Depends-on): Add absolute-header.\n+ \t(Makefile.am): Substitute ABSOLUTE_SYS_SOCKET_H, HAVE_SYS_SOCKET_H,\n+ \tHAVE_WINSOCK2_H, HAVE_WS2TCPIP_H into sys/socket.h.\n+ \t(Include): Remove requirement of inclusion of <sys/types.h>.\n+ \n+ 2007-03-02  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* lib/byteswap_.h (bswap_32): Fix formula.\n+ \n+ 2007-03-02  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* modules/gettext (configure.ac): Require gettext infrastructure\n  \tfrom version 0.16.1.\n  \n***************\n*** 7116,7147 ****\n  \t* modules/xreadlink (Maintainer): Add my name.\n  \t* modules/xreadlink-with-size (Depends-on): Alphabetize.\n  \n- 2007-02-26  Ben Pfaff  <blp@cs.stanford.edu>\n- \t    Bruno Haible  <bruno@clisp.org>\n- \n- \t* build-aux/install-reloc: Compile also c-ctype.c.\n- \t* build-aux/relocatable.sh.in: New file.\n- \t* doc/relocatable.texi: New file.\n- \t* doc/relocatable-maint.texi: New file.\n- \t* doc/gnulib.texi: Include relocatable-maint.texi.\n- \t* lib/progreloc.c: Include unistd.h unconditionally.\n- \t* lib/relocwrapper.c: Include unistd.h unconditionally.\n- \tInclude c-ctype.h.\n- \t(add_dotbin): Use c_tolower.\n- \t* m4/relocatable-lib.m4: New file, extracted from m4/relocatable.m4.\n- \t(gl_RELOCATABLE_LIBRARY): Renamed from AC_RELOCATABLE_LIBRARY.\n- \t(gl_RELOCATABLE_NOP): Renamed from AC_RELOCATABLE_NOP.\n- \t* m4/relocatable.m4 (AC_RELOCATABLE_LIBRARY, AC_RELOCATABLE_NOP): Move\n- \tto m4/relocatable-lib.m4.\n- \t(gl_RELOCATABLE): Renamed from AC_RELOCATABLE. Set also\n- \tRELOCATABLE_CONFIG_H_DIR, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR.\n- \t(gl_RELOCATABLE_BODY): Renamed from AC_RELOCATABLE_BODY. Don't\n- \trequire obsolete macro AC_EXEEXT. Don't check for unistd.h. Don't set\n- \tSET_RELOCATABLE. Instead set RELOCATABLE_LDFLAGS, INSTALL_PROGRAM_ENV.\n- \t* modules/relocatable: New file.\n- \t* modules/relocatable-lib: New file.\n- \t* modules/relocatable-script: New file.\n- \n  2007-02-28  Bruno Haible  <bruno@clisp.org>\n  \n  \tImport --enable-relocatable infrastructure.\n--- 7116,7121 ----\n***************\n*** 7175,7180 ****\n--- 7149,7180 ----\n  \txreadlink-with-size.\n  \t* lib/canonicalize.c (canonicalize_filename_mode): Update.\n  \n+ 2007-02-26  Ben Pfaff  <blp@cs.stanford.edu>\n+ \t    Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* build-aux/install-reloc: Compile also c-ctype.c.\n+ \t* build-aux/relocatable.sh.in: New file.\n+ \t* doc/relocatable.texi: New file.\n+ \t* doc/relocatable-maint.texi: New file.\n+ \t* doc/gnulib.texi: Include relocatable-maint.texi.\n+ \t* lib/progreloc.c: Include unistd.h unconditionally.\n+ \t* lib/relocwrapper.c: Include unistd.h unconditionally.\n+ \tInclude c-ctype.h.\n+ \t(add_dotbin): Use c_tolower.\n+ \t* m4/relocatable-lib.m4: New file, extracted from m4/relocatable.m4.\n+ \t(gl_RELOCATABLE_LIBRARY): Renamed from AC_RELOCATABLE_LIBRARY.\n+ \t(gl_RELOCATABLE_NOP): Renamed from AC_RELOCATABLE_NOP.\n+ \t* m4/relocatable.m4 (AC_RELOCATABLE_LIBRARY, AC_RELOCATABLE_NOP): Move\n+ \tto m4/relocatable-lib.m4.\n+ \t(gl_RELOCATABLE): Renamed from AC_RELOCATABLE. Set also\n+ \tRELOCATABLE_CONFIG_H_DIR, RELOCATABLE_SRC_DIR, RELOCATABLE_BUILD_DIR.\n+ \t(gl_RELOCATABLE_BODY): Renamed from AC_RELOCATABLE_BODY. Don't\n+ \trequire obsolete macro AC_EXEEXT. Don't check for unistd.h. Don't set\n+ \tSET_RELOCATABLE. Instead set RELOCATABLE_LDFLAGS, INSTALL_PROGRAM_ENV.\n+ \t* modules/relocatable: New file.\n+ \t* modules/relocatable-lib: New file.\n+ \t* modules/relocatable-script: New file.\n+ \n  2007-02-25  Jim Meyering  <jim@meyering.net>\n  \n  \t* build-aux/announce-gen: When complaining about excess arguments,\n***************\n*** 7277,7282 ****\n--- 7277,7289 ----\n  \t* modules/stdint-tests: Likewise.\n  \t* modules/tls-tests: Likewise.\n  \n+ 2007-02-25  Jim Meyering  <jim@meyering.net>\n+ \n+ \tAvoid conflicting types for 'unsetenv' on FreeBSD.\n+ \t* lib/putenv.c (_unsetenv): Rename from \"unsetenv\", to avoid\n+ \tconflicting with FreeBSD's (5.0 and 6.1) function declaration\n+ \tin stdlib.h.\n+ \n  2007-02-24  Bruno Haible  <bruno@clisp.org>\n  \n  \t* lib/isnanl.h (isnanl): Define through isnan if isnan is a macro.\n***************\n*** 7294,7306 ****\n  \t* lib/isnanl.c: Remove all code. Just include isnan.c.\n  \t* modules/isnanl-nolibm (Files): Add lib/isnan.c.\n  \n- 2007-02-25  Jim Meyering  <jim@meyering.net>\n- \n- \tAvoid conflicting types for 'unsetenv' on FreeBSD.\n- \t* lib/putenv.c (_unsetenv): Rename from \"unsetenv\", to avoid\n- \tconflicting with FreeBSD's (5.0 and 6.1) function declaration\n- \tin stdlib.h.\n- \n  2007-02-24  Bruno Haible  <bruno@clisp.org>\n  \n  \t* modules/isnanl-nolibm-tests: New file.\n--- 7301,7306 ----\n***************\n*** 8439,8469 ****\n  \t* modules/nanosleep (Link): New section.\n  \t* modules/readline (Link): New section.\n  \n- 2007-01-27  Bruno Haible  <bruno@clisp.org>\n- \n- \tEnforce the use of gnulib modules for unportable <string.h> functions.\n- \t* m4/string_h.m4 (gl_STRING_MODULE_INDICATOR): New macro.\n- \t(gl_STRING_MODULE_INDICATOR_DEFAULTS): New macro.\n- \t(gl_HEADER_STRING_H_BODY): Require it.\n- \t* lib/string_.h: If the gnulib module XYZ is not present, redefine\n- \tthe symbol XYZ to one that gives a link error.\n- \t* modules/string (Makefile.am): Also substitute the GNULIB_* variables.\n- \t* modules/memmem (configure.ac): Invoke gl_STRING_MODULE_INDICATOR.\n- \t* modules/mempcpy (configure.ac): Likewise.\n- \t* modules/memrchr (configure.ac): Likewise.\n- \t* modules/stpcpy (configure.ac): Likewise.\n- \t* modules/stpncpy (configure.ac): Likewise.\n- \t* modules/strcase (configure.ac): Likewise.\n- \t* modules/strcasestr (configure.ac): Likewise.\n- \t* modules/strchrnul (configure.ac): Likewise.\n- \t* modules/strdup (configure.ac): Likewise.\n- \t* modules/strndup (configure.ac): Likewise.\n- \t* modules/strnlen (configure.ac): Likewise.\n- \t* modules/strpbrk (configure.ac): Likewise.\n- \t* modules/strsep (configure.ac): Likewise.\n- \t* modules/strstr (configure.ac): Likewise.\n- \t* modules/strtok_r (configure.ac): Likewise.\n- \n  2007-01-31  Jean-Louis Martineau  <martineau@zmanda.com>  (tiny change)\n  \n  \t* lib/gai_strerror.c (values): Add EAI_OVERFLOW.\n--- 8439,8444 ----\n***************\n*** 8582,8587 ****\n--- 8557,8587 ----\n  \n  2007-01-27  Bruno Haible  <bruno@clisp.org>\n  \n+ \tEnforce the use of gnulib modules for unportable <string.h> functions.\n+ \t* m4/string_h.m4 (gl_STRING_MODULE_INDICATOR): New macro.\n+ \t(gl_STRING_MODULE_INDICATOR_DEFAULTS): New macro.\n+ \t(gl_HEADER_STRING_H_BODY): Require it.\n+ \t* lib/string_.h: If the gnulib module XYZ is not present, redefine\n+ \tthe symbol XYZ to one that gives a link error.\n+ \t* modules/string (Makefile.am): Also substitute the GNULIB_* variables.\n+ \t* modules/memmem (configure.ac): Invoke gl_STRING_MODULE_INDICATOR.\n+ \t* modules/mempcpy (configure.ac): Likewise.\n+ \t* modules/memrchr (configure.ac): Likewise.\n+ \t* modules/stpcpy (configure.ac): Likewise.\n+ \t* modules/stpncpy (configure.ac): Likewise.\n+ \t* modules/strcase (configure.ac): Likewise.\n+ \t* modules/strcasestr (configure.ac): Likewise.\n+ \t* modules/strchrnul (configure.ac): Likewise.\n+ \t* modules/strdup (configure.ac): Likewise.\n+ \t* modules/strndup (configure.ac): Likewise.\n+ \t* modules/strnlen (configure.ac): Likewise.\n+ \t* modules/strpbrk (configure.ac): Likewise.\n+ \t* modules/strsep (configure.ac): Likewise.\n+ \t* modules/strstr (configure.ac): Likewise.\n+ \t* modules/strtok_r (configure.ac): Likewise.\n+ \n+ 2007-01-27  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* modules/unistr/base: Update.\n  \n  2007-01-27  Bruno Haible  <bruno@clisp.org>\n***************\n*** 9257,9264 ****\n  \tHAVE_GETTIMEOFDAY && !GETTIMEOFDAY_CLOBBERS_LOCALTIME. Use the\n  \tmaximum possible value for tv->tv_usec, rather than the minimum one.\n  \n- 2005-10-08  Martin Lambers  <marlam@marlam.de>\n- 2005-10-08  Paul Eggert  <eggert@cs.ucla.edu>\n  2007-01-16  Bruno Haible  <bruno@clisp.org>\n  \n  \t* modules/gettimeofday (Files): Add lib/gettimeofday.h.\n--- 9257,9262 ----\n***************\n*** 9407,9449 ****\n  \t* modules/fchdir (Depends-on): Add absolute-header.\n  \t* modules/unistd (Depends-on): Likewise.\n  \n- 2006-12-30  Bruno Haible  <bruno@clisp.org>\n- \n- \t* modules/fchdir: New file.\n- \t* modules/unistd (Files): Add lib/unistd_.h.\n- \t(Makefile.am): Generate unistd.h from unistd_.h.\n- \t* lib/fchdir.c: New file.\n- \t* lib/dirent_.h: New file.\n- \t* lib/unistd_.h: New file.\n- \t* lib/fcntl_.h (open) [FCHDIR_REPLACEMENT]: New replacement.\n- \t* m4/fchdir.m4: New file.\n- \t* m4/unistd_h.m4 (gl_PREREQ_UNISTD): New macro.\n- \t(gl_HEADER_UNISTD): Invoke it.\n- \t* lib/dup-safer.c (dup_safer) [FCHDIR_REPLACEMENT]: Use the dup\n- \tfunction.\n- \t* lib/backupfile.c (opendir, closedir): Undefine.\n- \t* lib/chown.c (open, close): Undefine.\n- \t* lib/clean-temp.c (open, close): Undefine.\n- \t* lib/copy-file.c (open, close): Undefine.\n- \t* lib/execute.c (open, close): Undefine.\n- \t* lib/fsusage.c (open, close): Undefine.\n- \t* lib/gc-gnulib.c (open, close): Undefine.\n- \t* lib/getcwd.c (opendir, closedir): Undefine.\n- \t* lib/glob.c (opendir, closedir): Undefine.\n- \t* lib/javacomp.c (open, close): Undefine.\n- \t* lib/mountlist.c (open, close, opendir, closedir): Undefine.\n- \t* lib/openat-proc.c (open, close): Undefine.\n- \t* lib/pagealign_alloc.c (open, close): Undefine.\n- \t* lib/pipe.c (open, close): Undefine.\n- \t* lib/progreloc.c (open, close): Undefine.\n- \t* lib/savedir.c (opendir, closedir): Undefine.\n- \t* lib/utime.c (open, close): Undefine.\n- \t* MODULES.html.sh (Support for systems lacking POSIX:2001): Add fchdir.\n- \n- 2007-01-10  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/striconv.c (mem_cd_iconv): Align the temporary buffer.\n- \n  2007-01-12  Eric Blake  <ebb9@byu.net>\n  \n  \tProvide a robust <wchar.h>.  Further simplifications are now\n--- 9405,9410 ----\n***************\n*** 9474,9479 ****\n--- 9435,9444 ----\n  \t* gnulib-tool (func_all_modules): Exclude all files inside the CVS\n  \tdirectory.\n  \n+ 2007-01-10  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* lib/striconv.c (mem_cd_iconv): Align the temporary buffer.\n+ \n  2007-01-10  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \tUse @...@ consistently in lib/wctype_.h.\n***************\n*** 9842,9859 ****\n  \t* lib/fts.c: Likewise.\n  \t* modules/fts (configure.ac): Use gl_MODULE_INDICATOR.\n  \n- 2006-12-25  Bruno Haible  <bruno@clisp.org>\n- \n- \t* modules/utf8-ucs4-safe: New file.\n- \t* lib/utf8-ucs4-safe.h: New file.\n- \t* lib/unistr/utf8-ucs4-safe.c: New file.\n- \n- \t* modules/utf16-ucs4-safe: New file.\n- \t* lib/utf16-ucs4-safe.h: New file.\n- \t* lib/unistr/utf16-ucs4-safe.c: New file.\n- \n- \t* MODULES.html.sh (Unicode string functions): Add the new modules.\n- \n  2007-01-08  Bruno Haible  <bruno@clisp.org>\n  \n  \t* modules/utf8-ucs4 (Files, lib_SOURCES): Add unistr/utf8-ucs4.c.\n--- 9807,9812 ----\n***************\n*** 9884,9897 ****\n  \t(u16_uctomb): Use ucs4_t, uint16_t types.\n  \t* lib/unistr/ucs4-utf16.c: New file.\n  \n- 2006-12-25  Bruno Haible  <bruno@clisp.org>\n- \n- \t* modules/unitypes: New file.\n- \t* lib/unitypes.h: New file.\n- \t* MODULES.html.sh (func_all_modules): New section \"Unicode string\n- \tfunctions\". Move ucs4-utf8, ucs4-utf16, utf8-ucs4, utf16-ucs4 to\n- \tthis section. Add unitypes.\n- \n  2007-01-08  Bruno Haible  <bruno@clisp.org>\n  \n  \tAvoid variable names that conflict with those from libtool.\n--- 9837,9842 ----\n***************\n*** 10018,10027 ****\n  \tto follow.  Don't set event bits that were not requested (except\n  \tPOLLERR and POLLHUP).\n  \n- 2007-01-01  Bruno Haible  <bruno@clisp.org>\n- \n- \t* modules/lchmod (Include): Require lchmod.h, not lchown.h.\n- \n  2007-01-03  Jim Meyering  <jim@meyering.net>\n  \n  \t* modules/fts-lgpl (Depends-on): Add i-ring.  Reported by Bruno Haible.\n--- 9963,9968 ----\n***************\n*** 10033,10038 ****\n--- 9974,9983 ----\n  \n  2007-01-01  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* modules/lchmod (Include): Require lchmod.h, not lchown.h.\n+ \n+ 2007-01-01  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* gnulib-tool (func_emit_copyright_notice): Bump year.\n  \t(func_get_autoconf_snippet): Emit a GNULIB_<modulename> macro.\n  \n***************\n*** 10049,10054 ****\n--- 9994,10032 ----\n  \n  \t* lib/version-etc.c (COPYRIGHT_YEAR): Bump for new year.\n  \n+ 2006-12-30  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* modules/fchdir: New file.\n+ \t* modules/unistd (Files): Add lib/unistd_.h.\n+ \t(Makefile.am): Generate unistd.h from unistd_.h.\n+ \t* lib/fchdir.c: New file.\n+ \t* lib/dirent_.h: New file.\n+ \t* lib/unistd_.h: New file.\n+ \t* lib/fcntl_.h (open) [FCHDIR_REPLACEMENT]: New replacement.\n+ \t* m4/fchdir.m4: New file.\n+ \t* m4/unistd_h.m4 (gl_PREREQ_UNISTD): New macro.\n+ \t(gl_HEADER_UNISTD): Invoke it.\n+ \t* lib/dup-safer.c (dup_safer) [FCHDIR_REPLACEMENT]: Use the dup\n+ \tfunction.\n+ \t* lib/backupfile.c (opendir, closedir): Undefine.\n+ \t* lib/chown.c (open, close): Undefine.\n+ \t* lib/clean-temp.c (open, close): Undefine.\n+ \t* lib/copy-file.c (open, close): Undefine.\n+ \t* lib/execute.c (open, close): Undefine.\n+ \t* lib/fsusage.c (open, close): Undefine.\n+ \t* lib/gc-gnulib.c (open, close): Undefine.\n+ \t* lib/getcwd.c (opendir, closedir): Undefine.\n+ \t* lib/glob.c (opendir, closedir): Undefine.\n+ \t* lib/javacomp.c (open, close): Undefine.\n+ \t* lib/mountlist.c (open, close, opendir, closedir): Undefine.\n+ \t* lib/openat-proc.c (open, close): Undefine.\n+ \t* lib/pagealign_alloc.c (open, close): Undefine.\n+ \t* lib/pipe.c (open, close): Undefine.\n+ \t* lib/progreloc.c (open, close): Undefine.\n+ \t* lib/savedir.c (opendir, closedir): Undefine.\n+ \t* lib/utime.c (open, close): Undefine.\n+ \t* MODULES.html.sh (Support for systems lacking POSIX:2001): Add fchdir.\n+ \n  2006-12-30  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* gnulib-tool (SORT): Remove, since we no longer assume GNU sort.\n***************\n*** 10121,10126 ****\n--- 10099,10124 ----\n  \t* MODULES.html.sh (Support for building libraries and\n  \texecutables): Document it.\n  \n+ 2006-12-25  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* modules/utf8-ucs4-safe: New file.\n+ \t* lib/utf8-ucs4-safe.h: New file.\n+ \t* lib/unistr/utf8-ucs4-safe.c: New file.\n+ \n+ \t* modules/utf16-ucs4-safe: New file.\n+ \t* lib/utf16-ucs4-safe.h: New file.\n+ \t* lib/unistr/utf16-ucs4-safe.c: New file.\n+ \n+ \t* MODULES.html.sh (Unicode string functions): Add the new modules.\n+ \n+ 2006-12-25  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* modules/unitypes: New file.\n+ \t* lib/unitypes.h: New file.\n+ \t* MODULES.html.sh (func_all_modules): New section \"Unicode string\n+ \tfunctions\". Move ucs4-utf8, ucs4-utf16, utf8-ucs4, utf16-ucs4 to\n+ \tthis section. Add unitypes.\n+ \n  2006-12-25  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* gnulib-tool (SED): Remove, undoing previous change.\n***************\n*** 10363,10380 ****\n  \n  \t* m4/ptrdiff_max.m4: Remove file.\n  \n- 2006-11-21  Bruno Haible  <bruno@clisp.org>\n- \n- \t* m4/eoverflow.m4 (gl_EOVERFLOW): Use AC_COMPUTE_INT instead of\n- \t_AC_COMPUTE_INT.\n- \t(AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61.\n- \t* m4/ptrdiff_max.m4 (gl_PTRDIFF_MAX): Use AC_COMPUTE_INT instead of\n- \t_AC_COMPUTE_INT.\n- \t(AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61.\n- \t* m4/size_max.m4 (gl_SIZE_MAX): Use AC_COMPUTE_INT instead of\n- \t_AC_COMPUTE_INT.\n- \t(AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61.\n- \n  2006-11-28  Jim Meyering  <jim@meyering.net>\n  \n  \t* lib/regcomp.c (parse_branch): Rename local, exp->expr, to avoid\n--- 10361,10366 ----\n***************\n*** 10389,10400 ****\n  2006-11-27  Bruno Haible  <bruno@clisp.org>\n  \t    Paul Eggert  <eggert@cs.ucla.edu>\n  \n! \t* lib/regex.h (__restrict_arr): Redo logic of #if, for clarity.\n! \n! 2006-11-26  Bruno Haible  <bruno@clisp.org>\n! \n! \t* gnulib-tool (func_emit_lib_Makefile_am): Initialize also\n! \tnoinst_LTLIBRARIES.\n  \n  2006-11-27  Paul Eggert  <eggert@cs.ucla.edu>\n  \t    Bruno Haible  <bruno@clisp.org>\n--- 10375,10381 ----\n  2006-11-27  Bruno Haible  <bruno@clisp.org>\n  \t    Paul Eggert  <eggert@cs.ucla.edu>\n  \n! \t* lib/regex.h (__restrict_arr): Redo logic of #if, for clarity.\n  \n  2006-11-27  Paul Eggert  <eggert@cs.ucla.edu>\n  \t    Bruno Haible  <bruno@clisp.org>\n***************\n*** 10402,10407 ****\n--- 10383,10393 ----\n  \t* lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS): Define to 0\n  \tif compiling with \"gcc -ansi\".\n  \n+ 2006-11-26  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* gnulib-tool (func_emit_lib_Makefile_am): Initialize also\n+ \tnoinst_LTLIBRARIES.\n+ \n  2006-11-26  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \tFix some incompatibilities with gcc -ansi -pedantic.\n***************\n*** 10420,10433 ****\n  \tDon't close an fd more than once. Identical atimes indicate\n  \tsuccess, not failure.\n  \n- 2006-11-22  Robinson Mittmann <bob@hoplon.com>  (tiny change)\n- \n- \t* lib/sincosl.c (kernel_sinl): Fix typo in threshold.\n- \n  2006-11-23  Jim Meyering  <jim@meyering.net>\n  \n  \t* build-aux/announce-gen: New file.  From coreutils.\n  \n  2006-11-22  Jim Meyering  <jim@meyering.net>\n  \n  \tWork around a compile-time error from the HP-UX 11.00 /bin/cc.\n--- 10406,10419 ----\n  \tDon't close an fd more than once. Identical atimes indicate\n  \tsuccess, not failure.\n  \n  2006-11-23  Jim Meyering  <jim@meyering.net>\n  \n  \t* build-aux/announce-gen: New file.  From coreutils.\n  \n+ 2006-11-22  Robinson Mittmann <bob@hoplon.com>  (tiny change)\n+ \n+ \t* lib/sincosl.c (kernel_sinl): Fix typo in threshold.\n+ \n  2006-11-22  Jim Meyering  <jim@meyering.net>\n  \n  \tWork around a compile-time error from the HP-UX 11.00 /bin/cc.\n***************\n*** 10438,10448 ****\n  \t* m4/clock_time.m4 (gl_CLOCK_TIME): Quote AC_SUBST argument.\n  \t* m4/euidaccess.m4 (gl_PREREQ_EUIDACCESS): Likewise.\n  \n! 2006-11-20  Bruno Haible  <bruno@clisp.org>\n  \n! \t* gettext.m4 (AM_GNU_GETTEXT): Revert 2005-07-28 patch: Use\n! \tchangequote instead of pairs of brackets.\n! \tReported by Andreas Schwab <schwab@suse.de>.\n  \n  2006-11-21  Jim Meyering  <jim@meyering.net>\n  \n--- 10424,10440 ----\n  \t* m4/clock_time.m4 (gl_CLOCK_TIME): Quote AC_SUBST argument.\n  \t* m4/euidaccess.m4 (gl_PREREQ_EUIDACCESS): Likewise.\n  \n! 2006-11-21  Bruno Haible  <bruno@clisp.org>\n  \n! \t* m4/eoverflow.m4 (gl_EOVERFLOW): Use AC_COMPUTE_INT instead of\n! \t_AC_COMPUTE_INT.\n! \t(AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61.\n! \t* m4/ptrdiff_max.m4 (gl_PTRDIFF_MAX): Use AC_COMPUTE_INT instead of\n! \t_AC_COMPUTE_INT.\n! \t(AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61.\n! \t* m4/size_max.m4 (gl_SIZE_MAX): Use AC_COMPUTE_INT instead of\n! \t_AC_COMPUTE_INT.\n! \t(AC_COMPUTE_INT): Add fallback definition for autoconf < 2.61.\n  \n  2006-11-21  Jim Meyering  <jim@meyering.net>\n  \n***************\n*** 10450,10455 ****\n--- 10442,10453 ----\n  \tso as to remain compatible with older compilers.\n  \tPatch from Michael Deutschmann.\n  \n+ 2006-11-20  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* gettext.m4 (AM_GNU_GETTEXT): Revert 2005-07-28 patch: Use\n+ \tchangequote instead of pairs of brackets.\n+ \tReported by Andreas Schwab <schwab@suse.de>.\n+ \n  2006-11-20  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* MODULES.html.sh (File system functions): Add openat.\n***************\n*** 10507,10519 ****\n  \t* modules/i-ring (Depends-on): Add verify.\n  \t(License): Change to LGPL.\n  \n- 2006-11-16  Paul Eggert  <eggert@cs.ucla.edu>\n- \n- \t* modules/getaddinfo (Depends-on): Remove inttostr; add snprintf.\n- \t* lib/getaddrinfo.c: Include snprintf.h rather than intprops.h\n- \tand inttostr.h.  Use snprintf rather than uinttostr, so that\n- \tLGPLed code doesn't depend on GPLed.\n- \n  2006-11-17  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* modules/inline (License): Change from GPL to LGPL.\n--- 10505,10510 ----\n***************\n*** 10522,10527 ****\n--- 10513,10525 ----\n  \n  \t* modules/d-type (License): Switch to LGPL.\n  \n+ 2006-11-16  Paul Eggert  <eggert@cs.ucla.edu>\n+ \n+ \t* modules/getaddinfo (Depends-on): Remove inttostr; add snprintf.\n+ \t* lib/getaddrinfo.c: Include snprintf.h rather than intprops.h\n+ \tand inttostr.h.  Use snprintf rather than uinttostr, so that\n+ \tLGPLed code doesn't depend on GPLed.\n+ \n  2006-11-15  Bruno Haible  <bruno@clisp.org>\n  \n  \t* m4/alloca.m4 (gl_FUNC_ALLOCA): Fix the AC_CACHE_CHECK message.\n***************\n*** 10573,10591 ****\n  \n  \t* modules/c-ctype (License): Change to LGPL.\n  \n- 2006-11-12  Bruno Haible  <bruno@clisp.org>\n- \n- \t* m4/lib-link.m4 (AC_LIB_LINKFLAGS, AC_LIB_HAVE_LINKFLAGS,\n- \tAC_LIB_LINKFLAGS_BODY): Also set a LIB${NAME}_PREFIX variable. Needed\n- \tfor GNOME libraries, for which the include files are installed in\n- \tsubdirectories of $prefix/include.\n- \n- 2006-11-12  Bruno Haible  <bruno@clisp.org>\n- \n- \t* m4/lib-link.m4: Require at least autoconf-2.54.\n- \t(AC_LIB_LINKFLAGS_BODY) [autoconf < 2.61]: Turn dots into the library\n- \tname to underscores for the --with option.\n- \n  2006-11-13  Bruno Haible  <bruno@clisp.org>\n  \n  \t* gnulib-tool (func_create_testdir): Set gl_source_base correctly in\n--- 10571,10576 ----\n***************\n*** 10606,10611 ****\n--- 10591,10609 ----\n  \n  2006-11-12  Bruno Haible  <bruno@clisp.org>\n  \n+ \t* m4/lib-link.m4 (AC_LIB_LINKFLAGS, AC_LIB_HAVE_LINKFLAGS,\n+ \tAC_LIB_LINKFLAGS_BODY): Also set a LIB${NAME}_PREFIX variable. Needed\n+ \tfor GNOME libraries, for which the include files are installed in\n+ \tsubdirectories of $prefix/include.\n+ \n+ 2006-11-12  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* m4/lib-link.m4: Require at least autoconf-2.54.\n+ \t(AC_LIB_LINKFLAGS_BODY) [autoconf < 2.61]: Turn dots into the library\n+ \tname to underscores for the --with option.\n+ \n+ 2006-11-12  Bruno Haible  <bruno@clisp.org>\n+ \n  \t* gnulib-tool (func_emit_lib_Makefile_am): Replace occurrences of\n  \t'$(top_srcdir)/build-aux/', taking into account the real auxdir.\n  \n***************\n*** 10681,10696 ****\n  \n  \t* lib/fts.c [FTS_DEBUG]: Don't try to print a pointer via %s.\n  \n- 2006-11-09  Paul Eggert  <eggert@cs.ucla.edu>\n- \n- \t* lib/gettext.h (dgettext, dcgettext, ngettext) [! ENABLE_NLS]:\n- \t(dngettext, dcngettext, bindtextdomain) [! ENABLE_NLS]:\n- \t(bind_textdomain_codeset) [! ENABLE_NLS]:\n- \tEvaluate all the arguments.  That way, callers get compatible behavior\n- \tif the arguments have side effects.  Also, it avoids some GCC\n- \tdiagnostics in some cases; Joel E. Denny reported problems when Bison\n- \twas configured with --enable-gcc-warnigs.\n- \n  2006-11-10  Jim Meyering  <jim@meyering.net>\n  \n  \t* m4/inline.m4 (gl_INLINE): Check with the compiler, not cpp, so that\n--- 10679,10684 ----\n***************\n*** 10707,10712 ****\n--- 10695,10710 ----\n  \n  2006-11-09  Paul Eggert  <eggert@cs.ucla.edu>\n  \n+ \t* lib/gettext.h (dgettext, dcgettext, ngettext) [! ENABLE_NLS]:\n+ \t(dngettext, dcngettext, bindtextdomain) [! ENABLE_NLS]:\n+ \t(bind_textdomain_codeset) [! ENABLE_NLS]:\n+ \tEvaluate all the arguments.  That way, callers get compatible behavior\n+ \tif the arguments have side effects.  Also, it avoids some GCC\n+ \tdiagnostics in some cases; Joel E. Denny reported problems when Bison\n+ \twas configured with --enable-gcc-warnigs.\n+ \n+ 2006-11-09  Paul Eggert  <eggert@cs.ucla.edu>\n+ \n  \t* lib/stdint_.h (uintmax_t): Fix typo: int64_t -> uint64_t.\n  \tProblem reported by Matthew Woehlke.\n  \n***************\n*** 10949,10959 ****\n  \n  \t* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Allow C++ configuration.\n  \n- 2006-10-29  Bruno Haible  <bruno@clisp.org>\n- \n- \tMake it compile in C++ mode.\n- \t* lib/full-write.c (full_rw): Add a cast.\n- \n  2006-11-01  Bruno Haible  <bruno@clisp.org>\n  \n  \t* gnulib-tool (func_get_automake_snippet): Change sed_combine_lines to\n--- 10947,10952 ----\n***************\n*** 10989,10994 ****\n--- 10982,10992 ----\n  2006-10-29  Bruno Haible  <bruno@clisp.org>\n  \n  \tMake it compile in C++ mode.\n+ \t* lib/full-write.c (full_rw): Add a cast.\n+ \n+ 2006-10-29  Bruno Haible  <bruno@clisp.org>\n+ \n+ \tMake it compile in C++ mode.\n  \t* lib/striconv.c (mem_cd_iconv): Cast malloc/realloc result.\n  \t* lib/strnlen1.c (strnlen1): Cast memchr result.\n  \t* lib/mbchar.h (mb_copy): Rename arguments to 'new_mbc', 'old_mbc'.\n***************\n*** 11000,11013 ****\n  \t* lib/linebreak.c (mbs_width_linebreaks): Cast malloc result.\n  \t* lib/wait-process.c (register_slave_subprocess): Likewise.\n  \n- 2006-10-22  Bruno Haible  <bruno@clisp.org>\n- \n- \t* modules/tsearch: New file.\n- \t* lib/tsearch.h: New file.\n- \t* lib/tsearch.c: New file, from glibc-2.5 with small modifications.\n- \t* m4/tsearch.m4: New file.\n- \t* MODULES.html.sh (Support for systems lacking POSIX:2001): Add tsearch.\n- \n  2006-10-29  Eric Blake  <ebb9@byu.net>\n  \n  \t* lib/arcfour.c: Assume config.h.\n--- 10998,11003 ----\n***************\n*** 11190,11203 ****\n  \t* MODULES.html.sh: Remove uinttostr.  It's not a module.\n  \tReported by Karl Berry.\n  \n- 2006-10-23  Bruno Haible  <bruno@clisp.org>\n- \n- \t* lib/fts.c (fts_build): Move variable declaration, for C89 compliance.\n- \n  2006-10-24  Bruno Haible  <bruno@clisp.org>\n  \n  \t* lib/gl_list.h: Use C comment style, not C++ comment style.\n  \n  2006-10-23  Eric Blake  <ebb9@byu.net>\n  \n  \t* lib/getaddrinfo.c (includes): Add missing include.\n--- 11180,11193 ----\n  \t* MODULES.html.sh: Remove uinttostr.  It's not a module.\n  \tReported by Karl Berry.\n  \n  2006-10-24  Bruno Haible  <bruno@clisp.org>\n  \n  \t* lib/gl_list.h: Use C comment style, not C++ comment style.\n  \n+ 2006-10-23  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* lib/fts.c (fts_build): Move variable declaration, for C89 compliance.\n+ \n  2006-10-23  Eric Blake  <ebb9@byu.net>\n  \n  \t* lib/getaddrinfo.c (includes): Add missing include.\n***************\n*** 11218,11223 ****\n--- 11208,11234 ----\n  \t__argc, __argv from the declaration. (They are defined as macros on\n  \tmingw.)\n  \n+ 2006-10-23  Jim Meyering  <jim@meyering.net>\n+ \n+ \t* lib/getaddrinfo.c (getnameinfo): Use new lightweight uinttostr,\n+ \tin place of snprintf.\n+ \n+ \t* modules/inttostr (Files): Add lib/uinttostr.c.\n+ \t* lib/uinttostr.c (inttostr): New file/function.\n+ \t* lib/inttostr.h (uinttostr): Declare.\n+ \t* m4/inttostr.m4: Add AC_LIBOBJ([uinttostr]).\n+ \t* MODULES.html.sh (Numeric conversion functions <stdlib.h>):\n+ \tAdd uinttostr.\n+ \t* modules/getaddrinfo (Depends-on): Remove snprintf.  Add inttostr.\n+ \n+ 2006-10-22  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* modules/tsearch: New file.\n+ \t* lib/tsearch.h: New file.\n+ \t* lib/tsearch.c: New file, from glibc-2.5 with small modifications.\n+ \t* m4/tsearch.m4: New file.\n+ \t* MODULES.html.sh (Support for systems lacking POSIX:2001): Add tsearch.\n+ \n  2006-10-22  Bruno Haible  <bruno@clisp.org>\n  \n  \t* doc/gnulib-intro.texi: New file.\n***************\n*** 11234,11252 ****\n  \tChange mostlyclean-local rule to avoid sh syntax error from bash\n  \tversions 2.00..2.05 when $(MOSTLYCLEANDIRS) is empty.\n  \n- 2006-10-23  Jim Meyering  <jim@meyering.net>\n- \n- \t* lib/getaddrinfo.c (getnameinfo): Use new lightweight uinttostr,\n- \tin place of snprintf.\n- \n- \t* modules/inttostr (Files): Add lib/uinttostr.c.\n- \t* lib/uinttostr.c (inttostr): New file/function.\n- \t* lib/inttostr.h (uinttostr): Declare.\n- \t* m4/inttostr.m4: Add AC_LIBOBJ([uinttostr]).\n- \t* MODULES.html.sh (Numeric conversion functions <stdlib.h>):\n- \tAdd uinttostr.\n- \t* modules/getaddrinfo (Depends-on): Remove snprintf.  Add inttostr.\n- \n  2006-10-21  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* lib/canonicalize.c (ELOOP): Define if not already defined.\n--- 11245,11250 ----\n***************\n*** 11290,11298 ****\n  \t* gnulib-tool (func_create_testdir): Don't include ftruncate and\n  \tmountlist by default.\n  \n! 2006-10-16  Bruno Haible  <bruno@clisp.org>\n  \n! \t* lib/c-strstr.c: Include c-strstr.h.\n  \n  2006-10-18  Charles Wilson  <cygwin@cwilson.fastmail.fm>\n  \n--- 11288,11306 ----\n  \t* gnulib-tool (func_create_testdir): Don't include ftruncate and\n  \tmountlist by default.\n  \n! 2006-10-19  Paul Eggert  <eggert@cs.ucla.edu>\n  \n! \t* lib/xstrtol.h: Include gettext.h.\n! \t(_STRTOL_ERROR): Wrap English-language formats inside gettext.\n! \tProblem reported by Eric Blake.\n! \t* modules/xstrtol (Depends-on): Add gettext-h.\n! \n! 2006-10-19  Paul Eggert  <eggert@cs.ucla.edu>  (tiny change)\n! \n! \t* lib/strftime.c (advance): New macro.\n! \t(add): Use it to avoid adding 0 to a FILE *.  FILE can be an\n! \tincomplete type, so you can't add 0 to it.  Problem and patch\n! \treported by Eelco Dolstra for dietlibc.\n  \n  2006-10-18  Charles Wilson  <cygwin@cwilson.fastmail.fm>\n  \n***************\n*** 11312,11331 ****\n  \n  \t* lib/findprog.c (find_in_path): Avoid \"gcc -Wwrite-strings\" warning.\n  \n- 2006-10-19  Paul Eggert  <eggert@cs.ucla.edu>\n- \n- \t* lib/xstrtol.h: Include gettext.h.\n- \t(_STRTOL_ERROR): Wrap English-language formats inside gettext.\n- \tProblem reported by Eric Blake.\n- \t* modules/xstrtol (Depends-on): Add gettext-h.\n- \n- 2006-10-19  Paul Eggert  <eggert@cs.ucla.edu>  (tiny change)\n- \n- \t* lib/strftime.c (advance): New macro.\n- \t(add): Use it to avoid adding 0 to a FILE *.  FILE can be an\n- \tincomplete type, so you can't add 0 to it.  Problem and patch\n- \treported by Eelco Dolstra for dietlibc.\n- \n  2006-10-18  Jim Meyering  <jim@meyering.net>\n  \n  \t* lib/readutmp.c (desirable_utmp_entry): Use \"bool\" as the\n--- 11320,11325 ----\n***************\n*** 11357,11362 ****\n--- 11351,11365 ----\n  \t* lib/gettext.h (gettext, ngettext, pgettext, npgettext): Define\n  \tdifferently if DEFAULT_TEXT_DOMAIN is set.\n  \n+ 2006-10-17  Eric Blake  <ebb9@byu.net>\n+ \n+ \t* lib/xvasprintf.c (includes): Assume config.h.\n+ \t* lib/xasprintf.c (includes): Likewise.\n+ \n+ 2006-10-16  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* lib/c-strstr.c: Include c-strstr.h.\n+ \n  2006-10-16  Bruno Haible  <bruno@clisp.org>\n  \n  \t* lib/clean-temp.c: Include fwriteerror.h.\n***************\n*** 11371,11381 ****\n  \t* lib/sigprocmask.h: Include <sys/types.h>.\n  \t(sigset_t): Use the system's definition if present.\n  \n- 2006-10-17  Eric Blake  <ebb9@byu.net>\n- \n- \t* lib/xvasprintf.c (includes): Assume config.h.\n- \t* lib/xasprintf.c (includes): Likewise.\n- \n  2006-10-16  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* lib/fsusage.c (PROPAGATE_ALL_ONES): Don't assume uintmax_t is\n--- 11374,11379 ----\n***************\n*** 11870,11902 ****\n  \t(_PRI64_PREFIX, _PRIu64_PREFIX, _SCN64_PREFIX, _SCNu64_PREFIX): Handle\n  \tMSVC and mingw explicitly.\n  \n- 2006-10-11  Simon Josefsson  <jas@extundo.com>\n- \t    Bruno Haible  <bruno@clisp.org>\n- \n- \tAdd support for multiple gnulib-tool invocations in the scope of a\n- \tsingle configure.ac file.\n- \t* gnulib-tool (func_emit_lib_Makefile_am): In the _LIBADD variable,\n- \tuse a private [LT]LIBOBJS variant. Define a _DEPENDENCIES variable\n- \twith the same contents as the _LIBADD variable.\n- \t(func_emit_initmacro_start, func_emit_initmacro_end,\n- \tfunc_emit_initmacro_done): New functions.\n- \t(func_import, func_create_testdir): Invoke them. Allow the identifiers\n- \tgl_LIBOBJS and gl_LTLIBOBJS.\n- \n- 2006-10-11  Bruno Haible  <bruno@clisp.org>\n- \n- \t* gnulib-tool (GETTEXTPATH, AUTOHEADER, AUTOPOINT): New variables.\n- \t(func_create_testdir): Don't create po/Makefile.am, don't invoke\n- \tautoreconf. Instead, invoke autopoint explicitly but move back the\n- \t*.m4 files from gnulib.\n- \n- 2006-10-11  Bruno Haible  <bruno@clisp.org>\n- \n- \t* gnulib-tool (func_usage): Make module names after --create-testdir\n- \toptional.\n- \t(func_create_testdir): If no module was specified, use nearly all\n- \tmodules.\n- \n  2006-10-12  Jim Meyering  <jim@meyering.net>\n  \n  \tBig performance improvement for fts-based tools that use FTS_NOSTAT.\n--- 11868,11873 ----\n***************\n*** 11935,11940 ****\n--- 11906,11938 ----\n  \t* m4/rename-dest-slash.m4 (gl_FUNC_RENAME_TRAILING_DEST_SLASH):\n  \tFix misspelling in diagnostic.\n  \n+ 2006-10-11  Simon Josefsson  <jas@extundo.com>\n+ \t    Bruno Haible  <bruno@clisp.org>\n+ \n+ \tAdd support for multiple gnulib-tool invocations in the scope of a\n+ \tsingle configure.ac file.\n+ \t* gnulib-tool (func_emit_lib_Makefile_am): In the _LIBADD variable,\n+ \tuse a private [LT]LIBOBJS variant. Define a _DEPENDENCIES variable\n+ \twith the same contents as the _LIBADD variable.\n+ \t(func_emit_initmacro_start, func_emit_initmacro_end,\n+ \tfunc_emit_initmacro_done): New functions.\n+ \t(func_import, func_create_testdir): Invoke them. Allow the identifiers\n+ \tgl_LIBOBJS and gl_LTLIBOBJS.\n+ \n+ 2006-10-11  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* gnulib-tool (GETTEXTPATH, AUTOHEADER, AUTOPOINT): New variables.\n+ \t(func_create_testdir): Don't create po/Makefile.am, don't invoke\n+ \tautoreconf. Instead, invoke autopoint explicitly but move back the\n+ \t*.m4 files from gnulib.\n+ \n+ 2006-10-11  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* gnulib-tool (func_usage): Make module names after --create-testdir\n+ \toptional.\n+ \t(func_create_testdir): If no module was specified, use nearly all\n+ \tmodules.\n+ \n  2006-10-11  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* lib/mkdir-p.c (HAVE_FCHMOD): Define to false if not already\n***************\n*** 13593,13598 ****\n--- 13591,13601 ----\n  \t* MODULES.html.sh (Compatibility checks for POSIX:2001 functions: Fix\n  \tHTML structure.\n  \n+ 2006-08-24  Bruno Haible  <bruno@clisp.org>\n+ \n+ \t* MODULES.html.sh (Compatibility checks for POSIX:2001 functions): Fix\n+ \tHTML structure.\n+ \n  2006-08-23  Paul Eggert  <eggert@cs.ucla.edu>\n  \n  \t* modules/openat (Depends-on): Add lchown.\n***************\n*** 18765,18770 ****\n--- 18768,18775 ----\n  \t* modules/strchrnul (License): Likewise.\n  \t* modules/sysexits (License): Likewise.\n  \n+ 2005-10-08  Martin Lambers  <marlam@marlam.de>\n+ 2005-10-08  Paul Eggert  <eggert@cs.ucla.edu>\n  2005-10-08  Simon Josefsson  <jas@extundo.com>\n  \n  \t* config/srclist.txt: Bug 1423 is closed, but 1439 remains.\n***************\n*** 34640,34646 ****\n  \t* m4/uintmax_t.m4: New file.\n  \t* m4/Makefile.am (EXTRA_DIST): Add inttypes_h.m4 and uintmax_t.m4.\n  \n! Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007\n    Free Software Foundation, Inc.\n  Copying and distribution of this file, with or without modification,\n  are permitted provided the copyright notice and this notice are preserved.\n--- 34645,34651 ----\n  \t* m4/uintmax_t.m4: New file.\n  \t* m4/Makefile.am (EXTRA_DIST): Add inttypes_h.m4 and uintmax_t.m4.\n  \n! Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007\n    Free Software Foundation, Inc.\n  Copying and distribution of this file, with or without modification,\n  are permitted provided the copyright notice and this notice are preserved.\n"},{"id":"55293","messageId":"AAC50815-7438-4934-81EC-02EE08B38854@lrde.epita.fr","threadId":"10117","inReplyTo":"Pine.LNX.4.64.0710091141440.4174@racer.site","subject":"Re: git: avoiding merges, rebasing","fromName":"Benoit SIGOURE","fromEmail":"tsuna@lrde.epita.fr","sentAt":"2007-10-09T18:06:59Z","receivedAt":"2007-10-09T18:06:59Z","isPatch":false,"sender":{"key":"tsunanet@gmail.com","avatar":"https://avatars.githubusercontent.com/u/128281?v=4"},"body":"On Oct 9, 2007, at 12:43 PM, Johannes Schindelin wrote:\n\n> Hi,\n>\n> On Mon, 8 Oct 2007, Benoit SIGOURE wrote:\n>\n>> [as usual, I forgot the attachment...]\n>\n> Two comments:\n>\n> - by not inlining you made it hard to review your script.  Therefore I\n>   will not do it.\n\n:|\n\n>\n> - Try to avoid naming the script git-merge-*; these scripts/ \n> programs are\n>   merge _strategies_, not merge _drivers_ (and yes, we already have  \n> two\n>   programs violating this rule -- merge-base and merge-file -- but  \n> that\n>   does not mean that you are free to add to the pile).\n\nI'm open to better suggestions.\n\nCheers,\n\n-- \nBenoit Sigoure aka Tsuna\nEPITA Research and Development Laboratory\n\n\n"},{"id":"55295","messageId":"BC06CC09-FD81-4153-AA54-A1A74250946B@lrde.epita.fr","threadId":"10117","inReplyTo":"200710091403.26047.bruno@clisp.org","subject":"GNU-style ChangeLog merge driver for Git (was: Re: git: avoiding merges, rebasing)","fromName":"Benoit SIGOURE","fromEmail":"tsuna@lrde.epita.fr","sentAt":"2007-10-09T18:19:51Z","receivedAt":"2007-10-09T18:19:51Z","isPatch":false,"sender":{"key":"tsunanet@gmail.com","avatar":"https://avatars.githubusercontent.com/u/128281?v=4"},"body":"On Oct 9, 2007, at 2:03 PM, Bruno Haible wrote:\n\n> Hello Benoit,\n>\n> Thanks for working on this. But this merge driver has a few major  \n> nits.\n>\n>\n> 1) While my ChangeLog file was locally unmodified but some pulled  \n> in commits\n>    should modify it, \"git pull\" stopped and said:\n>\n> ChangeLog: needs update\n> fatal: Entry 'ChangeLog' not uptodate. Cannot merge.\n>\n> [I cannot swear on this, because I did not do a \"git status\" before  \n> the\n> \"git pull\", but this is in a directory where I usually have no  \n> pending diffs.]\n\nI'll check but I'm afraid that Git bails out before actually trying  \nthe merge driver.\n\n>\n> The ChangeLog in question is the one from gnulib\n> (git clone git://git.sv.gnu.org/gnulib).\n>\n>\n> 2) This \"merge driver\" did much more than sorting in a merge: it  \n> sorted the\n> entire file! In doing so,\n>   - It changed the order of ChangeLog entries in a way that does  \n> not represent\n>     the historical commit order.\n>   - For ChangeLog entries with multiple contributors, it shuffled  \n> around these\n>     extra contributors to other ChangeLog entries.\n>   - Near the end of the file, it made a change that I cannot explain.\n>\n> Find attached a context diff of all the bad changes that it did.\n>\n\nYes, it's pretty stupid, I hacked this in a hurry.  I'll try to  \nimprove it so that it doesn't have these undesired side-effects.\n\n>\n> In my opinion, a merge driver should not do changes to the file except\n> in the range of lines where the conflict occurred. For a ChangeLog  \n> driver,\n> all uncommitted entries should be collected at the top of the file,  \n> because\n> 1. ChangeLogs are kept in the order of historical commit in the  \n> central\n>    repository,\n> 2. other developers always look at the top of the ChangeLog; if a  \n> ChangeLog\n>    entries is inserted second or third after some already present  \n> entries,\n>    the danger is too high that the change gets unnoticed.\n>\n> So \"git-merge-changelog OLD CURRENT OTHERS\" should IMO do the  \n> following:\n> 1) Collect the changes between OLD and HEAD (I don't know if that  \n> is CURRENT\n>    or OTHERS?), in two categories:\n>      - added entries,\n>      - changed and removed entries.\n> 2) Back out the added entries, keeping only the changed and removed  \n> entries\n>    as modifications.\n> 3) Do a normal merge between this and the pulled in remote branch  \n> (I don't\n>    know if that is OTHERS or CURRENT?). If that merge gives a  \n> conflict,\n>    bail out.\n> 4) Insert the added entries at the top, in the same order as they were\n>    originally (no sorting).\n>\n> Bruno\n> <git-merge-changelog-blunder>\n\nOK I'll try to rework the driver so that it implements this.  It will  \ntake some time though, I'm quite busy these days.\nAkim Demaille would also like it to squash the commits added by the  \nmerge (the new commits in OTHERS):\n\nYYYY-MM-DD  Author  <who@where.com>\n\n\tMerge whatever:\n\n\tYYYY-MM-DD  Someone Else  <foo@bar.com>\n\tSome change.\n\t* FileChanged.c: Whatever.\n\n\tYYYY-MM-DD  Who Cares  <who@cares.com>\n\tSome other change.\n\t* OtherFile.c: Do it.\n\nI thought this was mandated by the GNU Coding Standards but I  \nchecked, it doesn't say anything about merges.  Would this sort of  \nstrategy be useful to you?  Should it be default (or enabled by some  \n--squash option)?\n\nCheers,\n\n-- \nBenoit Sigoure aka Tsuna\nEPITA Research and Development Laboratory\n\n\n"},{"id":"55300","messageId":"200710092138.47147.bruno@clisp.org","threadId":"10117","inReplyTo":"BC06CC09-FD81-4153-AA54-A1A74250946B@lrde.epita.fr","subject":"Re: GNU-style ChangeLog merge driver for Git","fromName":"Bruno Haible","fromEmail":"bruno@clisp.org","sentAt":"2007-10-09T19:38:46Z","receivedAt":"2007-10-09T19:38:46Z","isPatch":false,"sender":{"key":"bruno@clisp.org","avatar":null},"body":"Hello Benoit,\n\n> Akim Demaille would also like it to squash the commits added by the  \n> merge (the new commits in OTHERS):\n> \n> YYYY-MM-DD  Author  <who@where.com>\n> \n> \tMerge whatever:\n> \n> \tYYYY-MM-DD  Someone Else  <foo@bar.com>\n> \tSome change.\n> \t* FileChanged.c: Whatever.\n> \n> \tYYYY-MM-DD  Who Cares  <who@cares.com>\n> \tSome other change.\n> \t* OtherFile.c: Do it.\n> \n> I thought this was mandated by the GNU Coding Standards but I  \n> checked, it doesn't say anything about merges.  Would this sort of  \n> strategy be useful to you?  Should it be default (or enabled by some  \n> --squash option)?\n\nThis merge is occurring in a different situation:\n\nThe situation where we need ChangeLog merging most often is when a developer\nhas made changes on his own and pulls in the changes from the remote repository\n(via \"git stash; git pull; git stash apply\").\n\nThe situation that Akim is describing is that he pulls changes from the\nrepository of Someone Else and Who Cares, and then pushes them into the\ncentral repository, under his responsibility.\n\nFor the first situation, the non-remote ChangeLog entries should be moved\nto the top, without modification or indentation.\n\nFor the second situation, three different styles are in use at GNU\n(because they don't use \"Signed-off\" lines):\n\n1) unmodified copying of the ChangeLog entries:\n\nYYYY-MM-DD  Someone Else  <foo@bar.com>\n\tSome change.\n\t* FileChanged.c: Whatever.\n\nYYYY-MM-DD  Who Cares  <who@cares.com>\n\tSome other change.\n\t* OtherFile.c: Do it.\n\n2) copying with lieutenant's email address, like Akim described it:\n\nYYYY-MM-DD  Lieu Tenant  <who@where.com>\n\n\tYYYY-MM-DD  Someone Else  <foo@bar.com>\n\tSome change.\n\t* FileChanged.c: Whatever.\n\n\tYYYY-MM-DD  Who Cares  <who@cares.com>\n\tSome other change.\n\t* OtherFile.c: Do it.\n\n3) similar, but with indentation of the entire copied-in ChangeLog entries:\n\nYYYY-MM-DD  Lieu Tenant  <who@where.com>\n\n\tYYYY-MM-DD  Someone Else  <foo@bar.com>\n\t\tSome change.\n\t\t* FileChanged.c: Whatever.\n\n\tYYYY-MM-DD  Who Cares  <who@cares.com>\n\t\tSome other change.\n\t\t* OtherFile.c: Do it.\n\nFirst of all, your merge driver could try to guess whether we're in the\nfirst or second situation (maybe by testing whether the names in the\nChangeLog entry match the [user]name from the git config).\n\nThen, for the second situation, there can be some flag in the driver or in\nthe git config that describes which of the 3 styles to apply.\n\nBruno\n"},{"id":"56575","messageId":"Pine.LNX.4.64.0710191533490.16728@wbgn129.biozentrum.uni-wuerzburg.de","threadId":"10117","inReplyTo":"47023699.3080606@byu.net","subject":"stash clear, was Re: git: avoiding merges, rebasing","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2007-10-19T13:37:37Z","receivedAt":"2007-10-19T13:37:37Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 2 Oct 2007, Eric Blake wrote:\n\n> -----BEGIN PGP SIGNED MESSAGE-----\n> Hash: SHA1\n> \n> [adding the git list]\n> \n> According to Bruno Haible on 10/2/2007 5:50 AM:\n> > Hello Benoit,\n> > \n> >>>     $ git stash\n> >>>     $ git pull\n> >>>     $ git stash apply\n> >>>     $ git stash clean              ; typo!\n> >>>     $ git stash clear              ; fatal correction to typo!\n> >>>\n> >>> and lost 20 modified files. Well, not really lost. Just took me a  \n> >>> while to\n> >> I don't really see how and why you \"lost 20 modified files\".\n> > \n> > I lost modifications to 20 files. \"git stash clean\" moved these modifications\n> > into a stash named \"clean\", and \"git stash clear\" killed it.\n> \n> While we're at it, I wish 'git stash clear' would take an optional \n> argument that says which stash(es) to clear, rather than blindly \n> clearing the entire stash.\n\nI'd rather avoid \"enhancing\" stash clear.  IMHO it is a little \nmisdesigned, making it way too easy to hang yourself.\n\nInstead, how about writing a stash pop?  \"git stash pop [<stash>]\".  It \nwould literally just call git stash apply && git reflog delete.  Should \nnot be too difficult, now that I provided \"git reflog delete\" ;-)\n\nMaybe even deprecating \"git stash clear\", or doing away with it \naltogether.\n\nCiao,\nDscho\n"},{"id":"56992","messageId":"buohcki6wih.fsf@dhapc248.dev.necel.com","threadId":"10117","inReplyTo":"Pine.LNX.4.64.0710191533490.16728@wbgn129.biozentrum.uni-wuerzburg.de","subject":"Re: stash clear, was Re: git: avoiding merges, rebasing","fromName":"Miles Bader","fromEmail":"miles.bader@necel.com","sentAt":"2007-10-23T08:55:02Z","receivedAt":"2007-10-23T08:55:02Z","isPatch":false,"sender":{"key":"miles.bader@necel.com","avatar":"https://gravatar.com/avatar/be062d4050eb88e04229cbdb60f803e1bd647923a015996c2439e76f23e336a7?d=mp&s=160"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n> Instead, how about writing a stash pop?  \"git stash pop [<stash>]\".  It \n> would literally just call git stash apply && git reflog delete.  Should \n> not be too difficult, now that I provided \"git reflog delete\" ;-)\n>\n> Maybe even deprecating \"git stash clear\", or doing away with it \n> altogether.\n\nThat would match my usual usage well.\n\nActually, I really like the way the tla (arch) \"undo\" and \"redo\"\ncommands work:  \"tla undo\" is roughly equivalent to \"git stash\", but by\ndefault chooses a name with an appended integer which is one greater\nthan the greatest existing \"stash\" (to use git terminology).  \"tla redo\"\nby default applies the last saved value and deletes it.  So basically\npush and pop.  Usually, of course, you only use one level, but on the\noccasions when you want more, it feels very natural.\n\nI dunno how this would work with stash, but push/pop functionality would\nbe good...\n\n-Miles\n\n-- \nSaa, shall we dance?  (from a dance-class advertisement)\n"}]}