Revision 77b258f436874bdd1caecd4b3c9c63e3d49bd147 authored by Junio C Hamano on 11 August 2007, 21:08:20 UTC, committed by Junio C Hamano on 13 August 2007, 19:58:38 UTC
Here-text to create fake-editor did not use <<\EOF but <<EOF, but there was no point doing so, as it quoted all the variables anyway. Simplify it. Also futureproof the special mode to edit COMMIT_EDITMSG file; it is interested in editing the COMMIT_EDITMSG file in any GIT_DIR; GIT_DIR may be given as an absolute path. Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 8fdc397
symlinks.c
#include "cache.h"
int has_symlink_leading_path(const char *name, char *last_symlink)
{
char path[PATH_MAX];
const char *sp, *ep;
char *dp;
sp = name;
dp = path;
if (last_symlink && *last_symlink) {
size_t last_len = strlen(last_symlink);
size_t len = strlen(name);
if (last_len < len &&
!strncmp(name, last_symlink, last_len) &&
name[last_len] == '/')
return 1;
*last_symlink = '\0';
}
while (1) {
size_t len;
struct stat st;
ep = strchr(sp, '/');
if (!ep)
break;
len = ep - sp;
if (PATH_MAX <= dp + len - path + 2)
return 0; /* new name is longer than that??? */
memcpy(dp, sp, len);
dp[len] = 0;
if (lstat(path, &st))
return 0;
if (S_ISLNK(st.st_mode)) {
if (last_symlink)
strcpy(last_symlink, path);
return 1;
}
dp[len++] = '/';
dp = dp + len;
sp = ep + 1;
}
return 0;
}
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...