Browse Source
Sharing code between shell scripts and C is a challenge. The program git-var allows us to have a set of named values that a shell script can interrogate and a normal C program can simply call the functions that compute them. Allowing sharing when computing plain test values. Signed-off-by: Linus Torvalds <torvalds@osdl.org>maint


4 changed files with 130 additions and 1 deletions
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
git-var(1) |
||||
================== |
||||
v0.1, July 2005 |
||||
|
||||
NAME |
||||
---- |
||||
git-var - Print the git users identity |
||||
|
||||
|
||||
SYNOPSIS |
||||
-------- |
||||
git-var [ -l | <variable> ] |
||||
|
||||
DESCRIPTION |
||||
----------- |
||||
Prints a git logical variable. |
||||
|
||||
-l causes the logical variables to be listed. |
||||
|
||||
EXAMPLE |
||||
-------- |
||||
$git-var GIT_AUTHOR_IDENT |
||||
|
||||
Eric W. Biederman <ebiederm@lnxi.com> 1121223278 -0600 |
||||
|
||||
|
||||
VARIABLES |
||||
---------- |
||||
GIT_AUTHOR_IDENT |
||||
The author of a piece of code. |
||||
|
||||
GIT_COMMITTER_IDENT |
||||
The person who put a piece of code into git. |
||||
|
||||
Diagnostics |
||||
----------- |
||||
You don't exist. Go away!:: |
||||
The passwd(5) gecos field couldn't be read |
||||
Your parents must have hated you!:: |
||||
The password(5) gecos field is longer than a giant static buffer. |
||||
Your sysadmin must hate you!:: |
||||
The password(5) name field is longer than a giant static buffer. |
||||
|
||||
See Also |
||||
-------- |
||||
link:git-commit-tree.html[git-commit-tree] |
||||
link:git-tag-script.html[git-tag-script] |
||||
|
||||
Author |
||||
------ |
||||
Written by Eric Biederman <ebiederm@xmission.com> |
||||
|
||||
Documentation |
||||
-------------- |
||||
Documentation by Eric Biederman and the git-list <git@vger.kernel.org>. |
||||
|
||||
GIT |
||||
--- |
||||
Part of the link:git.html[git] suite |
||||
|
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
/* |
||||
* GIT - The information manager from hell |
||||
* |
||||
* Copyright (C) Eric Biederman, 2005 |
||||
*/ |
||||
#include "cache.h" |
||||
#include <stdio.h> |
||||
#include <errno.h> |
||||
#include <string.h> |
||||
|
||||
static char *var_usage = "git-var [-l | <variable>]"; |
||||
|
||||
struct git_var { |
||||
const char *name; |
||||
char *(*read)(void); |
||||
}; |
||||
static struct git_var git_vars[] = { |
||||
{ "GIT_COMMITTER_IDENT", git_committer_info }, |
||||
{ "GIT_AUTHOR_IDENT", git_author_info }, |
||||
{ "", NULL }, |
||||
}; |
||||
|
||||
static void list_vars(void) |
||||
{ |
||||
struct git_var *ptr; |
||||
for(ptr = git_vars; ptr->read; ptr++) { |
||||
printf("%s=%s\n", ptr->name, ptr->read()); |
||||
} |
||||
} |
||||
|
||||
static const char *read_var(const char *var) |
||||
{ |
||||
struct git_var *ptr; |
||||
const char *val; |
||||
val = NULL; |
||||
for(ptr = git_vars; ptr->read; ptr++) { |
||||
if (strcmp(var, ptr->name) == 0) { |
||||
val = ptr->read(); |
||||
break; |
||||
} |
||||
} |
||||
return val; |
||||
} |
||||
|
||||
int main(int argc, char **argv) |
||||
{ |
||||
const char *val; |
||||
if (argc != 2) { |
||||
usage(var_usage); |
||||
} |
||||
setup_ident(); |
||||
val = NULL; |
||||
|
||||
if (strcmp(argv[1], "-l") == 0) { |
||||
list_vars(); |
||||
return 0; |
||||
} |
||||
val = read_var(argv[1]); |
||||
if (!val) |
||||
usage(var_usage); |
||||
|
||||
printf("%s\n", val); |
||||
|
||||
return 0; |
||||
} |
Loading…
Reference in new issue