<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/git-compat-util.h, branch v2.6.0</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.6.0</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.6.0'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2015-08-25T21:57:06Z</updated>
<entry>
<title>Merge branch 'jk/long-error-messages'</title>
<updated>2015-08-25T21:57:06Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-08-25T21:57:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1302c9f514686e32065130ec9a80eb0db224e819'/>
<id>urn:sha1:1302c9f514686e32065130ec9a80eb0db224e819</id>
<content type='text'>
The codepath to produce error messages had a hard-coded limit to
the size of the message, primarily to avoid memory allocation while
calling die().

* jk/long-error-messages:
  vreportf: avoid intermediate buffer
  vreportf: report to arbitrary filehandles
</content>
</entry>
<entry>
<title>vreportf: report to arbitrary filehandles</title>
<updated>2015-08-11T21:24:50Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2015-08-11T18:06:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3b331e92671469614662830402103848a8004b97'/>
<id>urn:sha1:3b331e92671469614662830402103848a8004b97</id>
<content type='text'>
The vreportf function always goes to stderr, but run-command
wants child errors to go to the parent's original stderr. To
solve this, commit a5487dd duplicates the stderr fd and
installs die and error handlers to direct the output
appropriately (which later turned into the vwritef
function). This has two downsides, though:

  - we make multiple calls to write(), which contradicts the
    "write at once" logic from d048a96 (print
    warning/error/fatal messages in one shot, 2007-11-09).

  - the custom handlers basically duplicate the normal
    handlers.  They're only a few lines of code, but we
    should not have to repeat the magic "exit(128)", for
    example.

We can solve the first by using fdopen() on the duplicated
descriptor. We can't pass this to vreportf, but we could
introduce a new vreportf_to to handle it.

However, to fix the second problem, we instead introduce a
new "set_error_handle" function, which lets the normal
vreportf calls output to a handle besides stderr. Thus we
can get rid of our custom handlers entirely, and just ask
the regular handlers to output to our new descriptor.

And as vwritef has no more callers, it can just go away.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>wrapper: implement xfopen()</title>
<updated>2015-08-05T05:02:11Z</updated>
<author>
<name>Paul Tan</name>
<email>pyokagan@gmail.com</email>
</author>
<published>2015-08-04T13:51:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=260eec292736388831958637eccdcf1a8f00e14d'/>
<id>urn:sha1:260eec292736388831958637eccdcf1a8f00e14d</id>
<content type='text'>
A common usage pattern of fopen() is to check if it succeeded, and die()
if it failed:

	FILE *fp = fopen(path, "w");
	if (!fp)
		die_errno(_("could not open '%s' for writing"), path);

Implement a wrapper function xfopen() for the above, so that we can save
a few lines of code and make the die() messages consistent.

Helped-by: Jeff King &lt;peff@peff.net&gt;
Helped-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: Paul Tan &lt;pyokagan@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>wrapper: implement xopen()</title>
<updated>2015-08-05T05:02:11Z</updated>
<author>
<name>Paul Tan</name>
<email>pyokagan@gmail.com</email>
</author>
<published>2015-08-04T13:51:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3ff53df7b4cbc331d302181d2d6644f4cb860a52'/>
<id>urn:sha1:3ff53df7b4cbc331d302181d2d6644f4cb860a52</id>
<content type='text'>
A common usage pattern of open() is to check if it was successful, and
die() if it was not:

	int fd = open(path, O_WRONLY | O_CREAT, 0777);
	if (fd &lt; 0)
		die_errno(_("Could not open '%s' for writing."), path);

Implement a wrapper function xopen() that does the above so that we can
save a few lines of code, and make the die() messages consistent.

Helped-by: Torsten Bögershausen &lt;tboegi@web.de&gt;
Helped-by: Jeff King &lt;peff@peff.net&gt;
Helped-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: Paul Tan &lt;pyokagan@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'cb/array-size'</title>
<updated>2015-06-25T18:07:42Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-06-25T18:07:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=5416f8af0f632d05371868bc4340327e1672c83c'/>
<id>urn:sha1:5416f8af0f632d05371868bc4340327e1672c83c</id>
<content type='text'>
* cb/array-size:
  Fix definition of ARRAY_SIZE for non-gcc builds
</content>
</entry>
<entry>
<title>Fix definition of ARRAY_SIZE for non-gcc builds</title>
<updated>2015-06-25T00:14:00Z</updated>
<author>
<name>Charles Bailey</name>
<email>cbailey32@bloomberg.net</email>
</author>
<published>2015-06-24T22:12:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e2c6f7cd5a66ed0009662d2651e0cf3c655e83a9'/>
<id>urn:sha1:e2c6f7cd5a66ed0009662d2651e0cf3c655e83a9</id>
<content type='text'>
The improved ARRAY_SIZE macro uses BARF_UNLESS_AN_ARRAY which expands
to a valid check for recent gcc versions and to 0 for older gcc
versions but is not defined on non-gcc builds.

Non-gcc builds need this macro to expand to 0 as well. The current outer
test (defined(__GNUC__) &amp;&amp; (__GNUC__ &gt;= 3)) is a strictly weaker
condition than the inner test (GIT_GNUC_PREREQ(3, 1)) so we can omit the
outer test and cause the BARF_UNLESS_AN_ARRAY macro to be defined
correctly on non-gcc builds as well as gcc builds with older versions.

Signed-off-by: Charles Bailey &lt;cbailey32@bloomberg.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/diagnose-config-mmap-failure'</title>
<updated>2015-06-11T16:29:55Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-06-11T16:29:55Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=dee47925c1d001947cf9a099e1cb883835f90c64'/>
<id>urn:sha1:dee47925c1d001947cf9a099e1cb883835f90c64</id>
<content type='text'>
The configuration reader/writer uses mmap(2) interface to access
the files; when we find a directory, it barfed with "Out of memory?".

* jk/diagnose-config-mmap-failure:
  xmmap(): drop "Out of memory?"
  config.c: rewrite ENODEV into EISDIR when mmap fails
  config.c: avoid xmmap error messages
  config.c: fix mmap leak when writing config
  read-cache.c: drop PROT_WRITE from mmap of index
</content>
</entry>
<entry>
<title>config.c: avoid xmmap error messages</title>
<updated>2015-05-28T18:33:18Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2015-05-28T07:56:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1570856b510e3722a3620063e7ba209106b75857'/>
<id>urn:sha1:1570856b510e3722a3620063e7ba209106b75857</id>
<content type='text'>
The config-writing code uses xmmap to map the existing
config file, which will die if the map fails. This has two
downsides:

  1. The error message is not very helpful, as it lacks any
     context about the file we are mapping:

       $ mkdir foo
       $ git config --file=foo some.key value
       fatal: Out of memory? mmap failed: No such device

  2. We normally do not die in this code path; instead, we'd
     rather report the error and return an appropriate exit
     status (which is part of the public interface
     documented in git-config.1).

This patch introduces a "gentle" form of xmmap which lets us
produce our own error message. We do not want to use mmap
directly, because we would like to use the other
compatibility elements of xmmap (e.g., handling 0-length
maps portably).

The end result is:

    $ git.compile config --file=foo some.key value
    error: unable to mmap 'foo': No such device
    $ echo $?
    3

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nd/untracked-cache'</title>
<updated>2015-05-26T20:24:46Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-05-26T20:24:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=38ccaf93bbf5a99dbff908068292ffaa5bafe25e'/>
<id>urn:sha1:38ccaf93bbf5a99dbff908068292ffaa5bafe25e</id>
<content type='text'>
Teach the index to optionally remember already seen untracked files
to speed up "git status" in a working tree with tons of cruft.

* nd/untracked-cache: (24 commits)
  git-status.txt: advertisement for untracked cache
  untracked cache: guard and disable on system changes
  mingw32: add uname()
  t7063: tests for untracked cache
  update-index: test the system before enabling untracked cache
  update-index: manually enable or disable untracked cache
  status: enable untracked cache
  untracked-cache: temporarily disable with $GIT_DISABLE_UNTRACKED_CACHE
  untracked cache: mark index dirty if untracked cache is updated
  untracked cache: print stats with $GIT_TRACE_UNTRACKED_STATS
  untracked cache: avoid racy timestamps
  read-cache.c: split racy stat test to a separate function
  untracked cache: invalidate at index addition or removal
  untracked cache: load from UNTR index extension
  untracked cache: save to an index extension
  ewah: add convenient wrapper ewah_serialize_strbuf()
  untracked cache: don't open non-existent .gitignore
  untracked cache: mark what dirs should be recursed/saved
  untracked cache: record/validate dir mtime and reuse cached output
  untracked cache: make a wrapper around {open,read,close}dir()
  ...
</content>
</entry>
<entry>
<title>Merge branch 'ep/do-not-feed-a-pointer-to-array-size'</title>
<updated>2015-05-11T21:24:00Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-05-11T21:24:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7cb5073fcaffe8a8c0572fdffb332110b0eaae69'/>
<id>urn:sha1:7cb5073fcaffe8a8c0572fdffb332110b0eaae69</id>
<content type='text'>
Catch a programmer mistake to feed a pointer not an array to
ARRAY_SIZE() macro, by using a couple of GCC extensions.

* ep/do-not-feed-a-pointer-to-array-size:
  git-compat-util.h: implement a different ARRAY_SIZE macro for for safely deriving the size of array
</content>
</entry>
</feed>
