зеркало из https://github.com/microsoft/git.git
76 строки
1.8 KiB
C
76 строки
1.8 KiB
C
/*
|
|
* 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;
|
|
}
|