From: Brian Downing <bdowning@lavos.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Nicolas Pitre <nico@cam.org>,
Brian Downing <bdowning@lavos.net>
Subject: [PATCH 3/6] Add functions for parsing integers with size suffixes
Date: Thu, 12 Jul 2007 07:55:49 -0500 [thread overview]
Message-ID: <1184244952173-git-send-email-bdowning@lavos.net> (raw)
In-Reply-To: <1184244952554-git-send-email-bdowning@lavos.net>
Split out the nnn{k,m,g} parsing code from git_config_int into
git_parse_long, so command-line parameters can enjoy the same
functionality. Also add get_parse_ulong for unsigned values.
Make git_config_int use git_parse_long, and add get_config_ulong
as well.
Signed-off-by: Brian Downing <bdowning@lavos.net>
---
cache.h | 3 +++
config.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++-----------
2 files changed, 53 insertions(+), 11 deletions(-)
diff --git a/cache.h b/cache.h
index e64071e..917a7e3 100644
--- a/cache.h
+++ b/cache.h
@@ -521,7 +521,10 @@ typedef int (*config_fn_t)(const char *, const char *);
extern int git_default_config(const char *, const char *);
extern int git_config_from_file(config_fn_t fn, const char *);
extern int git_config(config_fn_t fn);
+extern int git_parse_long(const char *, long *);
+extern int git_parse_ulong(const char *, unsigned long *);
extern int git_config_int(const char *, const char *);
+extern unsigned long git_config_ulong(const char *, const char *);
extern int git_config_bool(const char *, const char *);
extern int git_config_set(const char *, const char *);
extern int git_config_set_multivar(const char *, const char *, const char *, int);
diff --git a/config.c b/config.c
index 561ee3b..ee338d1 100644
--- a/config.c
+++ b/config.c
@@ -233,21 +233,60 @@ static int git_parse_file(config_fn_t fn)
die("bad config file line %d in %s", config_linenr, config_file_name);
}
-int git_config_int(const char *name, const char *value)
+int git_parse_long(const char *value, long *ret)
+{
+ if (value && *value) {
+ char *end;
+ long val = strtol(value, &end, 0);
+ if (!*end)
+ *ret = val;
+ else if (!strcasecmp(end, "k"))
+ *ret = val * 1024;
+ else if (!strcasecmp(end, "m"))
+ *ret = val * 1024 * 1024;
+ else if (!strcasecmp(end, "g"))
+ *ret = val * 1024 * 1024 * 1024;
+ else
+ return 0;
+ return 1;
+ }
+ return 0;
+}
+
+int git_parse_ulong(const char *value, unsigned long *ret)
{
if (value && *value) {
char *end;
- int val = strtol(value, &end, 0);
+ unsigned long val = strtoul(value, &end, 0);
if (!*end)
- return val;
- if (!strcasecmp(end, "k"))
- return val * 1024;
- if (!strcasecmp(end, "m"))
- return val * 1024 * 1024;
- if (!strcasecmp(end, "g"))
- return val * 1024 * 1024 * 1024;
- }
- die("bad config value for '%s' in %s", name, config_file_name);
+ *ret = val;
+ else if (!strcasecmp(end, "k"))
+ *ret = val * 1024;
+ else if (!strcasecmp(end, "m"))
+ *ret = val * 1024 * 1024;
+ else if (!strcasecmp(end, "g"))
+ *ret = val * 1024 * 1024 * 1024;
+ else
+ return 0;
+ return 1;
+ }
+ return 0;
+}
+
+int git_config_int(const char *name, const char *value)
+{
+ long ret;
+ if (!git_parse_long(value, &ret))
+ die("bad config value for '%s' in %s", name, config_file_name);
+ return ret;
+}
+
+unsigned long git_config_ulong(const char *name, const char *value)
+{
+ unsigned long ret;
+ if (!git_parse_ulong(value, &ret))
+ die("bad config value for '%s' in %s", name, config_file_name);
+ return ret;
}
int git_config_bool(const char *name, const char *value)
--
1.5.2.GIT
next prev parent reply other threads:[~2007-07-12 12:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-12 12:55 [PATCH 0/6] Pack window memory limit, take 2 Brian Downing
2007-07-12 12:55 ` [PATCH 1/6] Don't try to delta if target is much smaller than source Brian Downing
2007-07-12 12:55 ` [PATCH 2/6] Support fetching the memory usage of a delta index Brian Downing
2007-07-12 12:55 ` Brian Downing [this message]
2007-07-12 13:07 ` [PATCH 3/6] Add functions for parsing integers with size suffixes Johannes Schindelin
2007-07-12 13:32 ` [PATCH] " Brian Downing
2007-07-12 12:55 ` [PATCH 4/6] Add pack-objects window memory usage limit Brian Downing
2007-07-12 13:04 ` Brian Downing
2007-07-12 13:07 ` [PATCH] " Brian Downing
2007-07-12 12:55 ` [PATCH 5/6] Add --window-memory option to git-repack Brian Downing
2007-07-12 12:55 ` [PATCH 6/6] Add documentation for --window-memory, pack.windowMemory Brian Downing
2007-07-12 15:46 ` [PATCH 0/6] Pack window memory limit, take 2 Nicolas Pitre
2007-07-13 18:23 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1184244952173-git-send-email-bdowning@lavos.net \
--to=bdowning@lavos.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nico@cam.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.