From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Angus Hammond <angusgh@gmail.com>, git@vger.kernel.org
Subject: [PATCH 01/13] ident: split setup_ident into separate functions
Date: Fri, 18 May 2012 19:07:11 -0400 [thread overview]
Message-ID: <20120518230710.GA30031@sigill.intra.peff.net> (raw)
In-Reply-To: <20120518230528.GA30510@sigill.intra.peff.net>
This function sets up the default name, email, and date, and
is not publicly available. Let's split it into three public
functions so that callers can get just the parts they need.
While we're at it, let's change the interface to simple
accessors. The original function was called only by fmt_ident,
and contained logic for "if we already have some other
value, don't load the default" which properly belongs in
fmt_ident.
Signed-off-by: Jeff King <peff@peff.net>
---
The patch is a pain to read because it's splitting an existing function
in 3; just reading the result is much easier.
cache.h | 3 +++
ident.c | 35 +++++++++++++++++++----------------
2 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/cache.h b/cache.h
index e14ffcd..0c095d4 100644
--- a/cache.h
+++ b/cache.h
@@ -894,6 +894,9 @@ extern const char *git_author_info(int);
extern const char *git_committer_info(int);
extern const char *fmt_ident(const char *name, const char *email, const char *date_str, int);
extern const char *fmt_name(const char *name, const char *email);
+extern const char *ident_default_name(void);
+extern const char *ident_default_email(void);
+extern const char *ident_default_date(void);
extern const char *git_editor(void);
extern const char *git_pager(int stdout_is_tty);
diff --git a/ident.c b/ident.c
index 87c697c..0f7dcae 100644
--- a/ident.c
+++ b/ident.c
@@ -117,21 +117,20 @@ static void copy_email(const struct passwd *pw)
sizeof(git_default_email) - len);
}
-static void setup_ident(const char **name, const char **emailp)
+const char *ident_default_name(void)
{
- struct passwd *pw = NULL;
-
- /* Get the name ("gecos") */
- if (!*name && !git_default_name[0]) {
- pw = getpwuid(getuid());
+ if (!git_default_name[0]) {
+ struct passwd *pw = getpwuid(getuid());
if (!pw)
die("You don't exist. Go away!");
copy_gecos(pw, git_default_name, sizeof(git_default_name));
}
- if (!*name)
- *name = git_default_name;
+ return git_default_name;
+}
- if (!*emailp && !git_default_email[0]) {
+const char *ident_default_email(void)
+{
+ if (!git_default_email[0]) {
const char *email = getenv("EMAIL");
if (email && email[0]) {
@@ -139,19 +138,20 @@ static void setup_ident(const char **name, const char **emailp)
sizeof(git_default_email));
user_ident_explicitly_given |= IDENT_MAIL_GIVEN;
} else {
- if (!pw)
- pw = getpwuid(getuid());
+ struct passwd *pw = getpwuid(getuid());
if (!pw)
die("You don't exist. Go away!");
copy_email(pw);
}
}
- if (!*emailp)
- *emailp = git_default_email;
+ return git_default_email;
+}
- /* And set the default date */
+const char *ident_default_date(void)
+{
if (!git_default_date[0])
datestamp(git_default_date, sizeof(git_default_date));
+ return git_default_date;
}
static int add_raw(char *buf, size_t size, int offset, const char *str)
@@ -311,7 +311,10 @@ const char *fmt_ident(const char *name, const char *email,
int warn_on_no_name = (flag & IDENT_WARN_ON_NO_NAME);
int name_addr_only = (flag & IDENT_NO_DATE);
- setup_ident(&name, &email);
+ if (!name)
+ name = ident_default_name();
+ if (!email)
+ email = ident_default_email();
if (!*name) {
struct passwd *pw;
@@ -331,7 +334,7 @@ const char *fmt_ident(const char *name, const char *email,
name = git_default_name;
}
- strcpy(date, git_default_date);
+ strcpy(date, ident_default_date());
if (!name_addr_only && date_str && date_str[0]) {
if (parse_date(date_str, date, sizeof(date)) < 0)
die("invalid date format: %s", date_str);
--
1.7.10.1.16.g53a707b
next prev parent reply other threads:[~2012-05-18 23:07 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-10 19:06 [PATCH 1/2] Change error messages in ident.c Make error messages caused by failed reads of the /etc/passwd file easier to understand. Signed-off-by: Angus Hammond <angusgh@gmail.com> Angus Hammond
2012-05-10 19:06 ` [PATCH 2/2] Remove diagnostics section from commit-tree and var man pages New error messages shouldn't need explaining like the old ones did so just delete the diagnostics section of the man pages. " Angus Hammond
2012-05-10 19:21 ` Angus Hammond
2012-05-10 19:23 ` [PATCH 1/2] Change error messages in ident.c Jeff King
2012-05-10 19:56 ` Jeff King
2012-05-11 22:53 ` Junio C Hamano
2012-05-11 23:13 ` Jeff King
2012-05-14 16:28 ` [PATCH 1/2] drop length limitations on gecos-derived names and emails Jeff King
2012-05-14 17:05 ` Jeff King
2012-05-14 21:02 ` Jeff King
2012-05-14 21:13 ` Jeff King
2012-05-15 1:54 ` Jeff King
2012-05-15 2:32 ` Jeff King
2012-05-15 15:03 ` Junio C Hamano
2012-05-15 17:47 ` Jeff King
2012-05-15 18:10 ` Junio C Hamano
2012-05-18 23:05 ` [PATCH 0/13] ident cleanups and bugfixes Jeff King
2012-05-18 23:07 ` Jeff King [this message]
2012-05-18 23:09 ` [PATCH 02/13] http-push: do not access git_default_email directly Jeff King
2012-05-18 23:10 ` [PATCH 03/13] fmt-merge-msg: don't use static buffer in record_person Jeff King
2012-05-18 23:11 ` [PATCH 04/13] move identity config parsing to ident.c Jeff King
2012-05-18 23:11 ` [PATCH 05/13] move git_default_* variables " Jeff King
2012-05-21 4:07 ` Junio C Hamano
2012-05-21 5:41 ` Jeff King
2012-05-21 6:41 ` Jeff King
2012-05-18 23:13 ` [PATCH 06/13] format-patch: use default email for generating message ids Jeff King
2012-05-21 2:58 ` Junio C Hamano
2012-05-21 6:36 ` Jeff King
2012-05-18 23:14 ` [PATCH 07/13] fmt_ident: drop IDENT_WARN_ON_NO_NAME code Jeff King
2012-05-18 23:19 ` [PATCH 08/13] ident: don't write fallback username into git_default_name Jeff King
2012-05-21 2:54 ` Junio C Hamano
2012-05-21 6:31 ` Jeff King
2012-05-21 9:11 ` Junio C Hamano
2012-05-21 23:09 ` [PATCHv2 0/15] ident cleanups git_default_name Jeff King
2012-05-21 23:09 ` [PATCHv2 01/15] ident: split setup_ident into separate functions Jeff King
2012-05-21 23:09 ` [PATCHv2 02/15] http-push: do not access git_default_email directly Jeff King
2012-05-21 23:09 ` [PATCHv2 03/15] fmt-merge-msg: don't use static buffer in record_person Jeff King
2012-05-21 23:09 ` [PATCHv2 04/15] move identity config parsing to ident.c Jeff King
2012-05-21 23:09 ` [PATCHv2 05/15] move git_default_* variables " Jeff King
2012-05-21 23:10 ` [PATCHv2 06/15] ident: trim trailing newline from /etc/mailname Jeff King
2012-05-21 23:10 ` [PATCHv2 07/15] format-patch: use default email for generating message ids Jeff King
2012-05-21 23:10 ` [PATCHv2 08/15] fmt_ident: drop IDENT_WARN_ON_NO_NAME code Jeff King
2012-05-21 23:10 ` [PATCHv2 09/15] ident: don't write fallback username into git_default_name Jeff King
2012-05-21 23:10 ` [PATCHv2 10/15] drop length limitations on gecos-derived names and emails Jeff King
2013-01-24 23:21 ` [regression] " Jonathan Nieder
2013-01-25 1:05 ` Jeff King
2013-01-25 18:46 ` Junio C Hamano
2013-01-25 22:10 ` Jeff King
2012-05-21 23:10 ` [PATCHv2 11/15] ident: report passwd errors with a more friendly message Jeff King
2012-05-21 23:10 ` [PATCHv2 12/15] ident: use full dns names to generate email addresses Jeff King
2012-05-21 23:10 ` [PATCHv2 13/15] ident: use a dynamic strbuf in fmt_ident Jeff King
2012-05-21 23:10 ` [PATCHv2 14/15] ident: trim whitespace from default name/email Jeff King
2012-05-22 16:55 ` Junio C Hamano
2012-05-22 17:12 ` Jeff King
2012-05-22 17:21 ` Junio C Hamano
2012-05-21 23:10 ` [PATCHv2 15/15] format-patch: refactor get_patch_filename Jeff King
2012-05-18 23:20 ` [PATCH 09/13] drop length limitations on gecos-derived names and emails Jeff King
2012-05-18 23:21 ` [PATCH 10/13] ident: report passwd errors with a more friendly message Jeff King
2012-05-18 23:22 ` [PATCH 11/13] ident: use full dns names to generate email addresses Jeff King
2012-05-18 23:23 ` [PATCH 12/13] ident: use a dynamic strbuf in fmt_ident Jeff King
2012-05-18 23:24 ` [PATCH 13/13] format-patch: refactor get_patch_filename Jeff King
2012-05-14 16:36 ` [PATCH 2/2] ident: report passwd errors with a more friendly message Jeff King
2012-05-10 20:04 ` [PATCH 1/2] Change error messages in ident.c Junio C Hamano
2012-05-10 20:22 ` Jeff King
2012-05-10 20:28 ` Junio C Hamano
2012-05-10 19:43 ` [PATCH 1/2] Change error messages in ident.c Make error messages caused by failed reads of the /etc/passwd file easier to understand. Signed-off-by: Angus Hammond <angusgh@gmail.com> Junio C Hamano
2012-05-10 19:57 ` Angus Hammond
2012-05-11 11:35 ` Nguyen Thai Ngoc Duy
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=20120518230710.GA30031@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=angusgh@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).