summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Beller <sbeller@google.com>2015-04-16 16:17:38 -0700
committerJunio C Hamano <gitster@pobox.com>2015-04-21 10:20:29 -0700
commit0c5820a2bc6f82f9f751056584572b4b6b06d5a6 (patch)
tree8dc84cf18287656637b89a9c8444cd502768b126
parentc1f0ca9994b9e323e5dec830822c0e30ee2b02cd (diff)
downloadgit-0c5820a2bc6f82f9f751056584572b4b6b06d5a6.tar.gz
sha1_file.c: move get_max_fd_limit(void) to wrapper.c
Declare it in git_compat_util.h so that other callers can use it. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--git-compat-util.h1
-rw-r--r--sha1_file.c41
-rw-r--r--wrapper.c41
3 files changed, 42 insertions, 41 deletions
diff --git a/git-compat-util.h b/git-compat-util.h
index bc8fc8cf85..2c55ca7842 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -675,6 +675,7 @@ 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, const unsigned char *sha1);
extern char *xgetcwd(void);
+extern unsigned int get_max_fd_limit(void);
#define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), (alloc) * sizeof(*(x)))
diff --git a/sha1_file.c b/sha1_file.c
index 88f06bac92..1f2519ca90 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -870,47 +870,6 @@ void free_pack_by_name(const char *pack_name)
}
}
-static unsigned int get_max_fd_limit(void)
-{
-#ifdef RLIMIT_NOFILE
- {
- struct rlimit lim;
-
- if (!getrlimit(RLIMIT_NOFILE, &lim))
- return lim.rlim_cur;
- }
-#endif
-
-#ifdef _SC_OPEN_MAX
- {
- long open_max = sysconf(_SC_OPEN_MAX);
- if (0 < open_max)
- return open_max;
- /*
- * Otherwise, we got -1 for one of the two
- * reasons:
- *
- * (1) sysconf() did not understand _SC_OPEN_MAX
- * and signaled an error with -1; or
- * (2) sysconf() said there is no limit.
- *
- * We _could_ clear errno before calling sysconf() to
- * tell these two cases apart and return a huge number
- * in the latter case to let the caller cap it to a
- * value that is not so selfish, but letting the
- * fallback OPEN_MAX codepath take care of these cases
- * is a lot simpler.
- */
- }
-#endif
-
-#ifdef OPEN_MAX
- return OPEN_MAX;
-#else
- return 1; /* see the caller ;-) */
-#endif
-}
-
/*
* Do not call this directly as this leaks p->pack_fd on error return;
* call open_packed_git() instead.
diff --git a/wrapper.c b/wrapper.c
index d5a6cef2be..493bf6f6c4 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -303,6 +303,47 @@ ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset)
return total;
}
+unsigned int get_max_fd_limit(void)
+{
+#ifdef RLIMIT_NOFILE
+ {
+ struct rlimit lim;
+
+ if (!getrlimit(RLIMIT_NOFILE, &lim))
+ return lim.rlim_cur;
+ }
+#endif
+
+#ifdef _SC_OPEN_MAX
+ {
+ long open_max = sysconf(_SC_OPEN_MAX);
+ if (0 < open_max)
+ return open_max;
+ /*
+ * Otherwise, we got -1 for one of the two
+ * reasons:
+ *
+ * (1) sysconf() did not understand _SC_OPEN_MAX
+ * and signaled an error with -1; or
+ * (2) sysconf() said there is no limit.
+ *
+ * We _could_ clear errno before calling sysconf() to
+ * tell these two cases apart and return a huge number
+ * in the latter case to let the caller cap it to a
+ * value that is not so selfish, but letting the
+ * fallback OPEN_MAX codepath take care of these cases
+ * is a lot simpler.
+ */
+ }
+#endif
+
+#ifdef OPEN_MAX
+ return OPEN_MAX;
+#else
+ return 1; /* see the caller ;-) */
+#endif
+}
+
int xdup(int fd)
{
int ret = dup(fd);