{"thread":{"id":"9331","subject":"[PATCH] Allow fmt_ident to get an arbitrary buffer for the output","startedAt":"2007-07-31T17:16:14Z","lastAt":"2007-07-31T17:16:14Z","messageCount":1,"participants":["Alex Riesen"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"49237","messageId":"81b0412b0707311016p692611b8h28a2c62d776622f3@mail.gmail.com","threadId":"9331","inReplyTo":null,"subject":"[PATCH] Allow fmt_ident to get an arbitrary buffer for the output","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2007-07-31T17:16:14Z","receivedAt":"2007-07-31T17:16:14Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Signed-off-by: Alex Riesen <raa.lkml@gmail.com>\n---\n builtin-blame.c |    5 +++--\n cache.h         |    8 +++++++-\n ident.c         |   47 +++++++++++++++++++++--------------------------\n 3 files changed, 31 insertions(+), 29 deletions(-)\n\nOn 7/31/07, Alex Riesen <raa.lkml@gmail.com> wrote:\n> Ach, that's why... Junio, how about this then? I'd even suggest adding\n> the buffer argument to fmt_ident and use it everywhere (ATM there is\n> only one user outside of ident.c: builtin-blame.c).\n\nSomething like this (on top of the previous re git_author|committer_info)\n\n\nFrom fd728acc96ec35e36b0a8233c9f9c2f0eb78fd1d Mon Sep 17 00:00:00 2001\nFrom: Alex Riesen <raa.lkml@gmail.com>\nDate: Tue, 31 Jul 2007 19:13:06 +0200\nSubject: [PATCH] Allow fmt_ident to get an arbitrary buffer for the output\n\n\nSigned-off-by: Alex Riesen <raa.lkml@gmail.com>\n---\n builtin-blame.c |    5 +++--\n cache.h         |    8 +++++++-\n ident.c         |   47 +++++++++++++++++++++--------------------------\n 3 files changed, 31 insertions(+), 29 deletions(-)\n\ndiff --git a/builtin-blame.c b/builtin-blame.c\nindex 0519339..2d5e35d 100644\n--- a/builtin-blame.c\n+++ b/builtin-blame.c\n@@ -1995,7 +1995,7 @@ static struct commit *fake_working_tree_commit(const char *path, const char *con\n \tstruct origin *origin;\n \tunsigned char head_sha1[20];\n \tchar *buf;\n-\tconst char *ident;\n+\tchar ident[FMT_IDENT_BUFSIZE];\n \tint fd;\n \ttime_t now;\n \tunsigned long fin_size;\n@@ -2108,7 +2108,8 @@ static struct commit *fake_working_tree_commit(const char *path, const char *con\n \tcache_tree_invalidate_path(active_cache_tree, path);\n \n \tcommit->buffer = xmalloc(400);\n-\tident = fmt_ident(\"Not Committed Yet\", \"not.committed.yet\", NULL, 0);\n+\tfmt_ident(ident, sizeof(ident),\n+\t\t  \"Not Committed Yet\", \"not.committed.yet\", NULL, 0);\n \tsnprintf(commit->buffer, 400,\n \t\t\"tree 0000000000000000000000000000000000000000\\n\"\n \t\t\"parent %s\\n\"\ndiff --git a/cache.h b/cache.h\nindex 53801b8..d7b2ef6 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -425,7 +425,13 @@ unsigned long approxidate(const char *);\n \n extern const char *git_author_info(int);\n extern const char *git_committer_info(int);\n-extern const char *fmt_ident(const char *name, const char *email, const char *date_str, int);\n+#define FMT_IDENT_BUFSIZE 1000\n+extern char *fmt_ident(char *buffer,\n+\t\t       int bufsize,\n+\t\t       const char *name,\n+\t\t       const char *email,\n+\t\t       const char *date_str,\n+\t\t       int error_on_no_name);\n \n struct checkout {\n \tconst char *base_dir;\ndiff --git a/ident.c b/ident.c\nindex 0d59090..a29d217 100644\n--- a/ident.c\n+++ b/ident.c\n@@ -192,9 +192,9 @@ static const char *env_hint =\n \"Add --global to set your account\\'s default\\n\"\n \"\\n\";\n \n-#define FMT_IDENT_BUFSIZE 1000\n-static char *fmt_ident_buf(char *buffer, const char *name, const char *email,\n-\t\t\t   const char *date_str, int error_on_no_name)\n+char *fmt_ident(char *buffer, int size,\n+\t\tconst char *name, const char *email,\n+\t\tconst char *date_str, int error_on_no_name)\n {\n \tchar date[50];\n \tint i;\n@@ -227,34 +227,28 @@ static char *fmt_ident_buf(char *buffer, const char *name, const char *email,\n \tif (date_str)\n \t\tparse_date(date_str, date, sizeof(date));\n \n-\ti = copy(buffer, FMT_IDENT_BUFSIZE, 0, name);\n-\ti = add_raw(buffer, FMT_IDENT_BUFSIZE, i, \" <\");\n-\ti = copy(buffer, FMT_IDENT_BUFSIZE, i, email);\n-\ti = add_raw(buffer, FMT_IDENT_BUFSIZE, i, \"> \");\n-\ti = copy(buffer, FMT_IDENT_BUFSIZE, i, date);\n-\tif (i >= FMT_IDENT_BUFSIZE)\n+\ti = copy(buffer, size, 0, name);\n+\ti = add_raw(buffer, size, i, \" <\");\n+\ti = copy(buffer, size, i, email);\n+\ti = add_raw(buffer, size, i, \"> \");\n+\ti = copy(buffer, size, i, date);\n+\tif (i >= size)\n \t\tdie(\"Impossibly long personal identifier\");\n \tbuffer[i] = 0;\n \treturn buffer;\n }\n \n-const char *fmt_ident(const char *name, const char *email,\n-\t\t      const char *date_str, int error_on_no_name)\n-{\n-\tstatic char buffer[FMT_IDENT_BUFSIZE];\n-\treturn fmt_ident_buf(buffer, name, email, date_str, error_on_no_name);\n-}\n-\n const char *git_author_info(int error_on_no_name)\n {\n \tstatic char *buffer;\n \tif (!buffer)\n \t\tbuffer = xmalloc(FMT_IDENT_BUFSIZE);\n-\treturn fmt_ident_buf(buffer,\n-\t\t\t     getenv(\"GIT_AUTHOR_NAME\"),\n-\t\t\t     getenv(\"GIT_AUTHOR_EMAIL\"),\n-\t\t\t     getenv(\"GIT_AUTHOR_DATE\"),\n-\t\t\t     error_on_no_name);\n+\treturn fmt_ident(buffer,\n+\t\t\t FMT_IDENT_BUFSIZE,\n+\t\t\t getenv(\"GIT_AUTHOR_NAME\"),\n+\t\t\t getenv(\"GIT_AUTHOR_EMAIL\"),\n+\t\t\t getenv(\"GIT_AUTHOR_DATE\"),\n+\t\t\t error_on_no_name);\n }\n \n const char *git_committer_info(int error_on_no_name)\n@@ -262,9 +256,10 @@ const char *git_committer_info(int error_on_no_name)\n \tstatic char *buffer;\n \tif (!buffer)\n \t\tbuffer = xmalloc(FMT_IDENT_BUFSIZE);\n-\treturn fmt_ident_buf(buffer,\n-\t\t\t     getenv(\"GIT_COMMITTER_NAME\"),\n-\t\t\t     getenv(\"GIT_COMMITTER_EMAIL\"),\n-\t\t\t     getenv(\"GIT_COMMITTER_DATE\"),\n-\t\t\t     error_on_no_name);\n+\treturn fmt_ident(buffer,\n+\t\t\t FMT_IDENT_BUFSIZE,\n+\t\t\t getenv(\"GIT_COMMITTER_NAME\"),\n+\t\t\t getenv(\"GIT_COMMITTER_EMAIL\"),\n+\t\t\t getenv(\"GIT_COMMITTER_DATE\"),\n+\t\t\t error_on_no_name);\n }\n-- \n1.5.3.rc3.132.g39179\n\n"}]}