91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4.91MB
    文件類型: .gz
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2023-11-11
  • 語言: 其他
  • 標簽: git-2.2.1??

資源簡介

git-2.2.1.tar.gz

資源截圖

代碼片段和文件信息

#include?“cache.h“

/*
?*?Do?not?use?this?for?inspecting?*tracked*?content.??When?path?is?a
?*?symlink?to?a?directory?we?do?not?want?to?say?it?is?a?directory?when
?*?dealing?with?tracked?content?in?the?working?tree.
?*/
int?is_directory(const?char?*path)
{
struct?stat?st;
return?(!stat(path?&st)?&&?S_ISDIR(st.st_mode));
}

/*?We?allow?“recursive“?symbolic?links.?Only?within?reason?though.?*/
#define?MAXDEPTH?5

/*
?*?Return?the?real?path?(i.e.?absolute?path?with?symlinks?resolved
?*?and?extra?slashes?removed)?equivalent?to?the?specified?path.??(If
?*?you?want?an?absolute?path?but?don‘t?mind?links?use
?*?absolute_path().)??The?return?value?is?a?pointer?to?a?static
?*?buffer.
?*
?*?The?input?and?all?intermediate?paths?must?be?shorter?than?MAX_PATH.
?*?The?directory?part?of?path?(i.e.?everything?up?to?the?last
?*?dir_sep)?must?denote?a?valid?existing?directory?but?the?last
?*?component?need?not?exist.??If?die_on_error?is?set?then?die?with?an
?*?informative?error?message?if?there?is?a?problem.??Otherwise?return
?*?NULL?on?errors?(without?generating?any?output).
?*
?*?If?path?is?our?buffer?then?return?path?as?it‘s?already?what?the
?*?user?wants.
?*/
static?const?char?*real_path_internal(const?char?*path?int?die_on_error)
{
static?struct?strbuf?sb?=?STRBUF_INIT;
char?*retval?=?NULL;

/*
?*?If?we?have?to?temporarily?chdir()?store?the?original?CWD
?*?here?so?that?we?can?chdir()?back?to?it?at?the?end?of?the
?*?function:
?*/
struct?strbuf?cwd?=?STRBUF_INIT;

int?depth?=?MAXDEPTH;
char?*last_elem?=?NULL;
struct?stat?st;

/*?We‘ve?already?done?it?*/
if?(path?==?sb.buf)
return?path;

if?(!*path)?{
if?(die_on_error)
die(“The?empty?string?is?not?a?valid?path“);
else
goto?error_out;
}

strbuf_reset(&sb);
strbuf_addstr(&sb?path);

while?(depth--)?{
if?(!is_directory(sb.buf))?{
char?*last_slash?=?find_last_dir_sep(sb.buf);
if?(last_slash)?{
last_elem?=?xstrdup(last_slash?+?1);
strbuf_setlen(&sb?last_slash?-?sb.buf?+?1);
}?else?{
last_elem?=?xmemdupz(sb.buf?sb.len);
strbuf_reset(&sb);
}
}

if?(sb.len)?{
if?(!cwd.len?&&?strbuf_getcwd(&cwd))?{
if?(die_on_error)
die_errno(“Could?not?get?current?working?directory“);
else
goto?error_out;
}

if?(chdir(sb.buf))?{
if?(die_on_error)
die_errno(“Could?not?switch?to?‘%s‘“
??sb.buf);
else
goto?error_out;
}
}
if?(strbuf_getcwd(&sb))?{
if?(die_on_error)
die_errno(“Could?not?get?current?working?directory“);
else
goto?error_out;
}

if?(last_elem)?{
if?(sb.len?&&?!is_dir_sep(sb.buf[sb.len?-?1]))
strbuf_addch(&sb?‘/‘);
strbuf_addstr(&sb?last_elem);
free(last_elem);
last_elem?=?NULL;
}

if?(!lstat(sb.buf?&st)?&&?S_ISLNK(st.st_mode))?{
struct?strbuf?next_sb?=?STRBUF_INIT;
ssize_t?len?=?strbuf_readlink(&next_sb?sb.buf?0);
if?(len? if?(die_on_error)
die_errno(“Invalid?symlink?‘%s‘“
??sb.buf);
else
goto?error_out;

評論

共有 條評論

相關(guān)資源