git/commit: allow passing absolute paths
we would treat paths as relative, and not step past leading '/'s, leading to an infinte loop.
This commit is contained in:
parent
f9ae020332
commit
74912993de
1 changed files with 16 additions and 7 deletions
|
@ -345,18 +345,25 @@ void
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
Hash th, ch, parents[Maxparents];
|
Hash th, ch, parents[Maxparents];
|
||||||
char *msg, *name, *email, *dstr;
|
char *msg, *name, *email, *dstr, cwd[1024];
|
||||||
int i, r, nparents;
|
int i, r, ncwd, nparents;
|
||||||
vlong date;
|
vlong date;
|
||||||
Object *t;
|
Object *t;
|
||||||
|
|
||||||
|
gitinit();
|
||||||
|
gitinit();
|
||||||
|
if(access(".git", AEXIST) != 0)
|
||||||
|
sysfatal("could not find git repo: %r");
|
||||||
|
if(getwd(cwd, sizeof(cwd)) == nil)
|
||||||
|
sysfatal("getcwd: %r");
|
||||||
msg = nil;
|
msg = nil;
|
||||||
name = nil;
|
name = nil;
|
||||||
email = nil;
|
email = nil;
|
||||||
dstr = nil;
|
dstr = nil;
|
||||||
date = time(nil);
|
date = time(nil);
|
||||||
nparents = 0;
|
nparents = 0;
|
||||||
gitinit();
|
ncwd = strlen(cwd);
|
||||||
|
|
||||||
ARGBEGIN{
|
ARGBEGIN{
|
||||||
case 'm': msg = EARGF(usage()); break;
|
case 'm': msg = EARGF(usage()); break;
|
||||||
case 'n': name = EARGF(usage()); break;
|
case 'n': name = EARGF(usage()); break;
|
||||||
|
@ -385,12 +392,14 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
if(msg == nil || name == nil)
|
if(msg == nil || name == nil)
|
||||||
usage();
|
usage();
|
||||||
for(i = 0; i < argc; i++)
|
for(i = 0; i < argc; i++){
|
||||||
cleanname(argv[i]);
|
cleanname(argv[i]);
|
||||||
|
if(*argv[i] == '/' && strncmp(argv[i], cwd, ncwd) == 0)
|
||||||
|
argv[i] += ncwd;
|
||||||
|
while(*argv[i] == '/')
|
||||||
|
argv[i]++;
|
||||||
|
}
|
||||||
|
|
||||||
gitinit();
|
|
||||||
if(access(".git", AEXIST) != 0)
|
|
||||||
sysfatal("could not find git repo: %r");
|
|
||||||
t = findroot();
|
t = findroot();
|
||||||
r = treeify(t, argv, argv + argc, 0, &th);
|
r = treeify(t, argv, argv + argc, 0, &th);
|
||||||
if(r == -1)
|
if(r == -1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue