Code

wrapper: move odb_* to environment.c
authorJonathan Nieder <jrnieder@gmail.com>
Sat, 6 Nov 2010 11:45:38 +0000 (06:45 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Nov 2010 19:03:38 +0000 (11:03 -0800)
The odb_mkstemp and odb_pack_keep functions open files under the
$GIT_OBJECT_DIRECTORY directory.  This requires access to the git
configuration which very simple programs do not need.

Move these functions to environment.o, closer to their dependencies.
This should make it easier for programs to link to wrapper.o without
linking to environment.o.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
environment.c
git-compat-util.h
wrapper.c

index de5581fe51d532231b0121bd2ef2e46669015bda..95777f4c7f2ca653254ad857f6f6833d2040e0b5 100644 (file)
@@ -171,6 +171,43 @@ char *get_object_directory(void)
        return git_object_dir;
 }
 
+int odb_mkstemp(char *template, size_t limit, const char *pattern)
+{
+       int fd;
+       /*
+        * we let the umask do its job, don't try to be more
+        * restrictive except to remove write permission.
+        */
+       int mode = 0444;
+       snprintf(template, limit, "%s/%s",
+                get_object_directory(), pattern);
+       fd = git_mkstemp_mode(template, mode);
+       if (0 <= fd)
+               return fd;
+
+       /* slow path */
+       /* some mkstemp implementations erase template on failure */
+       snprintf(template, limit, "%s/%s",
+                get_object_directory(), pattern);
+       safe_create_leading_directories(template);
+       return xmkstemp_mode(template, mode);
+}
+
+int odb_pack_keep(char *name, size_t namesz, unsigned char *sha1)
+{
+       int fd;
+
+       snprintf(name, namesz, "%s/pack/pack-%s.keep",
+                get_object_directory(), sha1_to_hex(sha1));
+       fd = open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
+       if (0 <= fd)
+               return fd;
+
+       /* slow path */
+       safe_create_leading_directories(name);
+       return open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
+}
+
 char *get_index_file(void)
 {
        if (!git_index_file)
index 2af8d3edbe35dce35e940c5cccb91f9e06ebeff8..029162eccce14e743cf08cf428a024bc341e11b3 100644 (file)
@@ -404,6 +404,7 @@ extern ssize_t xwrite(int fd, const void *buf, size_t len);
 extern int xdup(int fd);
 extern FILE *xfdopen(int fd, const char *mode);
 extern int xmkstemp(char *template);
+extern int xmkstemp_mode(char *template, int mode);
 extern int odb_mkstemp(char *template, size_t limit, const char *pattern);
 extern int odb_pack_keep(char *name, size_t namesz, unsigned char *sha1);
 
index 3195ef32b766a57f655e761aa89d01155eb34e29..e67b70a108d5ca540755cc14b37afe4b40748316 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
@@ -274,43 +274,6 @@ int git_inflate(z_streamp strm, int flush)
        return ret;
 }
 
-int odb_mkstemp(char *template, size_t limit, const char *pattern)
-{
-       int fd;
-       /*
-        * we let the umask do its job, don't try to be more
-        * restrictive except to remove write permission.
-        */
-       int mode = 0444;
-       snprintf(template, limit, "%s/%s",
-                get_object_directory(), pattern);
-       fd = git_mkstemp_mode(template, mode);
-       if (0 <= fd)
-               return fd;
-
-       /* slow path */
-       /* some mkstemp implementations erase template on failure */
-       snprintf(template, limit, "%s/%s",
-                get_object_directory(), pattern);
-       safe_create_leading_directories(template);
-       return xmkstemp_mode(template, mode);
-}
-
-int odb_pack_keep(char *name, size_t namesz, unsigned char *sha1)
-{
-       int fd;
-
-       snprintf(name, namesz, "%s/pack/pack-%s.keep",
-                get_object_directory(), sha1_to_hex(sha1));
-       fd = open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
-       if (0 <= fd)
-               return fd;
-
-       /* slow path */
-       safe_create_leading_directories(name);
-       return open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
-}
-
 static int warn_if_unremovable(const char *op, const char *file, int rc)
 {
        if (rc < 0) {