git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Eric Sunshine <sunshine@sunshineco.com>
To: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Cc: Git List <git@vger.kernel.org>
Subject: Re: [PATCH 05/10] copy.c: convert copy_file() to copy_dir_recursively()
Date: Tue, 1 Aug 2017 14:23:22 -0400	[thread overview]
Message-ID: <CAPig+cTR0CODi_mgjYQtQJ7c_BMvMxKq0qqjFeo8D+k77=qXyA@mail.gmail.com> (raw)
In-Reply-To: <20160625075433.4608-6-pclouds@gmail.com>

Sorry for the (more than a year) late review. I realize that a
subsequent version of this patch series renders a few of the review
comments meaningless, but I'm including them in case the code is
revived later.

On Sat, Jun 25, 2016 at 3:54 AM, Nguyễn Thái Ngọc Duy <pclouds@gmail.com> wrote:
> This finally enables busybox's copy_file() code under a new name
> (because "copy_file" is already taken in Git code base). Because this
> comes from busybox, POSIXy (or even Linuxy) behavior is expected. More
> changes may be needed for Windows support.
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> diff --git a/copy.c b/copy.c
> +/*
> + * Find out if the last character of a string matches the one given.
> + * Don't underrun the buffer if the string length is 0.
>   */
> +static inline char *last_char_is(const char *s, int c)

Is this function ever used in anything other than a boolean capacity?
If not, then perhaps a simpler signature would work?

    static inline int ends_with(const char *s, char c)

(and you could drop the ugly casting in the function body)

> +{
> +       if (s && *s) {
> +               size_t sz = strlen(s) - 1;
> +               s += sz;
> +               if ( (unsigned char)*s == c)

Style: if ((...

> +                       return (char*)s;
> +       }
> +       return NULL;
> +}
> +
> +static int do_unlink(const char *dest)
> +{
> +       int e = errno;
> +
> +       if (unlink(dest) < 0) {
> +               errno = e; /* do not use errno from unlink */

This comment is repeating the code itself but does not explain _why_.
More helpful might be a function-level comment explaining that
do_unlink() does not clobber errno.

> +               return error_errno(_("can't create '%s'"), dest);

However, it's not really clear what the intention is here. This is
emitting an error message only if unlink() failed, but the actual
error message is from some entirely unrelated operation. Confusing.

Also, is the idea that 'errno' should be restored no matter what happens?

> +       }
> +       return 0;
> +}

  reply	other threads:[~2017-08-01 18:23 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-25  7:54 [PATCH 00/10] git worktree (re)move Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 01/10] copy.c: import copy_file() from busybox Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 02/10] copy.c: delete unused code in copy_file() Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 03/10] copy.c: convert bb_(p)error_msg to error(_errno) Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 04/10] copy.c: style fix Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 05/10] copy.c: convert copy_file() to copy_dir_recursively() Nguyễn Thái Ngọc Duy
2017-08-01 18:23   ` Eric Sunshine [this message]
2016-06-25  7:54 ` [PATCH 06/10] worktree.c: add validate_worktree() Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 07/10] worktree.c: add update_worktree_location() Nguyễn Thái Ngọc Duy
2017-08-01 18:23   ` Eric Sunshine
2016-06-25  7:54 ` [PATCH 08/10] worktree: add "move" commmand Nguyễn Thái Ngọc Duy
2017-08-01 18:23   ` Eric Sunshine
2016-06-25  7:54 ` [PATCH 09/10] worktree move: accept destination as directory Nguyễn Thái Ngọc Duy
2016-06-25  7:54 ` [PATCH 10/10] worktree: add "remove" command Nguyễn Thái Ngọc Duy
2017-08-01 18:24   ` Eric Sunshine
2016-07-23 11:09 ` [PATCH 00/10] git worktree (re)move Duy Nguyen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPig+cTR0CODi_mgjYQtQJ7c_BMvMxKq0qqjFeo8D+k77=qXyA@mail.gmail.com' \
    --to=sunshine@sunshineco.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).