diff options
author | Stefan Beller <sbeller@google.com> | 2015-04-16 16:17:38 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-04-21 10:20:29 -0700 |
commit | 0c5820a2bc6f82f9f751056584572b4b6b06d5a6 (patch) | |
tree | 8dc84cf18287656637b89a9c8444cd502768b126 | |
parent | c1f0ca9994b9e323e5dec830822c0e30ee2b02cd (diff) | |
download | git-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.h | 1 | ||||
-rw-r--r-- | sha1_file.c | 41 | ||||
-rw-r--r-- | wrapper.c | 41 |
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. @@ -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); |