{"thread":{"id":"1246","subject":"[PATCH 3/6] Add git-var a tool for reading interesting git variables.","startedAt":"2005-07-15T00:55:09Z","lastAt":"2005-07-15T02:13:10Z","messageCount":2,"participants":["Eric W. Biederman","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":6},"messages":[{"id":"6158","messageId":"m1k6jsyjki.fsf@ebiederm.dsl.xmission.com","threadId":"1246","inReplyTo":null,"subject":"[PATCH 3/6] Add git-var a tool for reading interesting git variables.","fromName":"Eric W. Biederman","fromEmail":"ebiederm@xmission.com","sentAt":"2005-07-15T00:55:09Z","receivedAt":"2005-07-15T00:55:09Z","isPatch":true,"sender":{"key":"ebiederm@xmission.com","avatar":"https://avatars.githubusercontent.com/u/7477136?v=4"},"body":"\nSharing code between shell scripts and C is a challenge.\nThe program git-var allows us to have a set of named values\nthat a shell script can interrogate and a normal C program\ncan simply call the functions that compute them.    Allowing\nsharing when computing plain test values.\n\n---\n\n Documentation/git-var.txt |   60 ++++++++++++++++++++++++++++++++++++++++++\n Documentation/git.txt     |    3 ++\n Makefile                  |    3 +-\n var.c                     |   65 +++++++++++++++++++++++++++++++++++++++++++++\n 4 files changed, 130 insertions(+), 1 deletions(-)\n create mode 100644 Documentation/git-var.txt\n create mode 100644 var.c\n\n2c929de1b5444fadda13becb6df3d852277e6e27\ndiff --git a/Documentation/git-var.txt b/Documentation/git-var.txt\nnew file mode 100644\n--- /dev/null\n+++ b/Documentation/git-var.txt\n@@ -0,0 +1,60 @@\n+git-var(1)\n+==================\n+v0.1, July 2005\n+\n+NAME\n+----\n+git-var - Print the git users identity\n+\n+\n+SYNOPSIS\n+--------\n+git-var [ -l | <variable> ]\n+\n+DESCRIPTION\n+-----------\n+Prints a git logical variable.\n+\n+-l causes the logical variables to be listed.\n+\n+EXAMPLE\n+--------\n+$git-var GIT_AUTHOR_IDENT\n+\n+Eric W. Biederman <ebiederm@lnxi.com> 1121223278 -0600\n+\n+\n+VARIABLES\n+----------\n+GIT_AUTHOR_IDENT\n+    The author of a piece of code.\n+\n+GIT_COMMITTER_IDENT\n+    The person who put a piece of code into git.\n+\n+Diagnostics\n+-----------\n+You don't exist. Go away!::\n+    The passwd(5) gecos field couldn't be read\n+Your parents must have hated you!::\n+    The password(5) gecos field is longer than a giant static buffer.\n+Your sysadmin must have hate you!::\n+    The password(5) name field is longer than a giant static buffer.\n+\n+See Also\n+--------\n+link:git-commit-tree.html[git-commit-tree]\n+link:git-tag-script.html[git-tag-script]\n+\n+Author\n+------\n+Written by Eric Biederman <ebiederm@xmission.com>\n+\n+Documentation\n+--------------\n+Documentation by Eric Biederman and the git-list <git@vger.kernel.org>.\n+\n+GIT\n+---\n+Part of the link:git.html[git] suite\n+\ndiff --git a/Documentation/git.txt b/Documentation/git.txt\n--- a/Documentation/git.txt\n+++ b/Documentation/git.txt\n@@ -111,6 +111,9 @@ link:git-tar-tree.html[git-tar-tree]::\n link:git-unpack-file.html[git-unpack-file]::\n \tCreates a temporary file with a blob's contents\n \n+link:git-var.html[git-var]::\n+\tDisplays a git logical variable\n+\n link:git-verify-pack.html[git-verify-pack]::\n \tValidates packed GIT archive files\n \ndiff --git a/Makefile b/Makefile\n--- a/Makefile\n+++ b/Makefile\n@@ -48,7 +48,7 @@ PROG=   git-update-cache git-diff-files \n \tgit-diff-stages git-rev-parse git-patch-id git-pack-objects \\\n \tgit-unpack-objects git-verify-pack git-receive-pack git-send-pack \\\n \tgit-prune-packed git-fetch-pack git-upload-pack git-clone-pack \\\n-\tgit-show-index git-daemon\n+\tgit-show-index git-daemon git-var\n \n all: $(PROG)\n \n@@ -148,6 +148,7 @@ git-receive-pack: receive-pack.c\n git-send-pack: send-pack.c\n git-prune-packed: prune-packed.c\n git-fetch-pack: fetch-pack.c\n+git-var: var.c\n \n git-http-pull: LIBS += -lcurl\n git-rev-list: LIBS += -lssl\ndiff --git a/var.c b/var.c\nnew file mode 100644\n--- /dev/null\n+++ b/var.c\n@@ -0,0 +1,65 @@\n+/*\n+ * GIT - The information manager from hell\n+ *\n+ * Copyright (C) Eric Biederman, 2005\n+ */\n+#include \"cache.h\"\n+#include <stdio.h>\n+#include <errno.h>\n+#include <string.h>\n+\n+static char *var_usage = \"git-var [-l | <variable>]\";\n+\n+struct git_var {\n+\tconst char *name;\n+\tchar *(*read)(void);\n+};\n+static struct git_var git_vars[] = {\n+\t{ \"GIT_COMMITTER_IDENT\", git_committer_info },\n+\t{ \"GIT_AUTHOR_IDENT\",   git_author_info },\n+\t{ \"\", NULL },\n+};\n+\n+static void list_vars(void)\n+{\n+\tstruct git_var *ptr;\n+\tfor(ptr = git_vars; ptr->read; ptr++) {\n+\t\tprintf(\"%s=%s\\n\", ptr->name, ptr->read());\n+\t}\n+}\n+\n+static const char *read_var(const char *var)\n+{\n+\tstruct git_var *ptr;\n+\tconst char *val;\n+\tval = NULL;\n+\tfor(ptr = git_vars; ptr->read; ptr++) {\n+\t\tif (strcmp(var, ptr->name) == 0) {\n+\t\t\tval = ptr->read();\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\treturn val;\n+}\n+\n+int main(int argc, char **argv)\n+{\n+\tconst char *val;\n+\tif (argc != 2) {\n+\t\tusage(var_usage);\n+\t}\n+\tsetup_ident();\n+\tval = NULL;\n+\n+\tif (strcmp(argv[1], \"-l\") == 0) {\n+\t\tlist_vars();\n+\t\treturn 0;\n+\t}\n+\tval = read_var(argv[1]);\n+\tif (!val)\n+\t\tusage(var_usage);\n+\t\n+\tprintf(\"%s\\n\", val);\n+\t\n+\treturn 0;\n+}\n"},{"id":"6169","messageId":"7vbr5424w9.fsf@assigned-by-dhcp.cox.net","threadId":"1246","inReplyTo":"m1k6jsyjki.fsf@ebiederm.dsl.xmission.com","subject":"Re: [PATCH 3/6] Add git-var a tool for reading interesting git variables.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2005-07-15T02:13:10Z","receivedAt":"2005-07-15T02:13:10Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Wonderful.\n"}]}