Merge branch 'jc/maint-1.6.0-pack-directory'
authorJunio C Hamano <gitster@pobox.com>
Sun, 1 Mar 2009 00:31:02 +0000 (16:31 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 1 Mar 2009 00:31:02 +0000 (16:31 -0800)
* jc/maint-1.6.0-pack-directory:
Fix odb_mkstemp() on AIX

1  2 
wrapper.c
diff --combined wrapper.c
index b07cdf299af66d4c503d5a788858b9cc56683143,5e9de294d51c158cbbe60a9a04c1b13765c353e8..d8efb1365a01104db568633fa8f6aef0c67b4cd1
+++ b/wrapper.c
@@@ -197,66 -197,6 +197,66 @@@ int xmkstemp(char *template
        return fd;
  }
  
 +/*
 + * zlib wrappers to make sure we don't silently miss errors
 + * at init time.
 + */
 +void git_inflate_init(z_streamp strm)
 +{
 +      const char *err;
 +
 +      switch (inflateInit(strm)) {
 +      case Z_OK:
 +              return;
 +
 +      case Z_MEM_ERROR:
 +              err = "out of memory";
 +              break;
 +      case Z_VERSION_ERROR:
 +              err = "wrong version";
 +              break;
 +      default:
 +              err = "error";
 +      }
 +      die("inflateInit: %s (%s)", err, strm->msg ? strm->msg : "no message");
 +}
 +
 +void git_inflate_end(z_streamp strm)
 +{
 +      if (inflateEnd(strm) != Z_OK)
 +              error("inflateEnd: %s", strm->msg ? strm->msg : "failed");
 +}
 +
 +int git_inflate(z_streamp strm, int flush)
 +{
 +      int ret = inflate(strm, flush);
 +      const char *err;
 +
 +      switch (ret) {
 +      /* Out of memory is fatal. */
 +      case Z_MEM_ERROR:
 +              die("inflate: out of memory");
 +
 +      /* Data corruption errors: we may want to recover from them (fsck) */
 +      case Z_NEED_DICT:
 +              err = "needs dictionary"; break;
 +      case Z_DATA_ERROR:
 +              err = "data stream error"; break;
 +      case Z_STREAM_ERROR:
 +              err = "stream consistency error"; break;
 +      default:
 +              err = "unknown error"; break;
 +
 +      /* Z_BUF_ERROR: normal, needs more space in the output buffer */
 +      case Z_BUF_ERROR:
 +      case Z_OK:
 +      case Z_STREAM_END:
 +              return ret;
 +      }
 +      error("inflate: %s (%s)", err, strm->msg ? strm->msg : "no message");
 +      return ret;
 +}
 +
  int odb_mkstemp(char *template, size_t limit, const char *pattern)
  {
        int fd;
                return fd;
  
        /* slow path */
-       safe_create_leading_directories(template);
+       /* some mkstemp implementations erase template on failure */
        snprintf(template, limit, "%s/%s",
                 get_object_directory(), pattern);
+       safe_create_leading_directories(template);
        return xmkstemp(template);
  }