You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.8 KiB
75 lines
1.8 KiB
/* |
|
* Copyright (C) 2005 Junio C Hamano |
|
*/ |
|
#include "cache.h" |
|
|
|
/* |
|
* This array must be sorted by its canonical name, because |
|
* we do look-up by binary search. |
|
*/ |
|
static struct backward_compatible_env { |
|
const char *canonical; |
|
const char *old; |
|
} bc_name[] = { |
|
{ "GIT_ALTERNATE_OBJECT_DIRECTORIES", "SHA1_FILE_DIRECTORIES" }, |
|
{ "GIT_AUTHOR_DATE", "AUTHOR_DATE" }, |
|
{ "GIT_AUTHOR_EMAIL", "AUTHOR_EMAIL" }, |
|
{ "GIT_AUTHOR_NAME", "AUTHOR_NAME" }, |
|
{ "GIT_COMMITTER_EMAIL", "COMMIT_AUTHOR_EMAIL" }, |
|
{ "GIT_COMMITTER_NAME", "COMMIT_AUTHOR_NAME" }, |
|
{ "GIT_OBJECT_DIRECTORY", "SHA1_FILE_DIRECTORY" }, |
|
}; |
|
|
|
static void warn_old_environment(int pos) |
|
{ |
|
int i; |
|
static int warned = 0; |
|
if (warned) |
|
return; |
|
|
|
warned = 1; |
|
fprintf(stderr, |
|
"warning: Attempting to use %s\n", |
|
bc_name[pos].old); |
|
fprintf(stderr, |
|
"warning: GIT environment variables have been renamed.\n" |
|
"warning: Please adjust your scripts and environment.\n"); |
|
for (i = 0; i < sizeof(bc_name) / sizeof(bc_name[0]); i++) { |
|
/* warning is needed only when old name is there and |
|
* new name is not. |
|
*/ |
|
if (!getenv(bc_name[i].canonical) && getenv(bc_name[i].old)) |
|
fprintf(stderr, "warning: old %s => new %s\n", |
|
bc_name[i].old, bc_name[i].canonical); |
|
} |
|
} |
|
|
|
char *gitenv_bc(const char *e) |
|
{ |
|
int first, last; |
|
char *val = getenv(e); |
|
if (val) |
|
die("gitenv_bc called on existing %s; fix the caller.", e); |
|
|
|
first = 0; |
|
last = sizeof(bc_name) / sizeof(bc_name[0]); |
|
while (last > first) { |
|
int next = (last + first) >> 1; |
|
int cmp = strcmp(e, bc_name[next].canonical); |
|
if (!cmp) { |
|
val = getenv(bc_name[next].old); |
|
/* If the user has only old name, warn. |
|
* otherwise stay silent. |
|
*/ |
|
if (val) |
|
warn_old_environment(next); |
|
return val; |
|
} |
|
if (cmp < 0) { |
|
last = next; |
|
continue; |
|
} |
|
first = next+1; |
|
} |
|
return NULL; |
|
}
|
|
|