【问题标题】:try code reading cp.c but don't understanding尝试阅读 cp.c 但不理解的代码
【发布时间】:2020-03-19 03:24:26
【问题描述】:

我尝试在 FreeBSD 中读取 cp 命令的代码。

我正在阅读 FreeBSD 的 cp.c。

我看不懂下面的代码。

if (to.p_path == to.p_end) {
        *to.p_end++ = '.';
        *to.p_end = 0;
}

这段代码的目的是什么? 什么会影响任何情况?

原始源代码在那里。 https://svnweb.freebsd.org/base/release/12.0.0/bin/cp/cp.c?revision=341707&view=markup

【问题讨论】:

    标签: c freebsd


    【解决方案1】:

    基本上,这读作

    if o.p_path == "":
       o.p_path = "."
    

    如果我理解正确,它会让cp /somepath/somefilecp /somepath/somefile . 一样工作

    【讨论】:

    • 谢谢您的反应。我有个问题。在此之前,此代码检查 argc 值,如果 argc 值小于 2,则此代码打印使用情况。我认为遵循此代码的情况不会发生。我不明白这段代码的用途。
    • 小修正:代码适用于 cp /foo/bar “”等命令
    • 我会在正确的 FreeBSD 邮件列表中询问 cp 源代码的作者或维护者。拥有一个良好的工作社区。​​span>
    猜你喜欢
    • 2012-09-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    相关资源
    最近更新 更多