Looks good, thanks!  Some minor comments below.

On Thu, Feb 11, 2016 at 12:06:14PM +0100, Mattias Andrée wrote:
> New command. Includes the flags:
> 
> -s         strip binary
> -d         create directory
> -D         create missing directories
> -t DIR     target directory
> -m MODE    permission bits
> -o USER    set owner
> -g GROUP   set group
> 
> Installed files are copied, and default mode is 755.
> 
> Signed-off-by: Mattias Andrée <maand...@kth.se>
> ---
>  LICENSE   |   1 +
>  Makefile  |   9 ++-
>  README    |   1 +
>  TODO      |   1 -
>  install.c | 259 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 268 insertions(+), 3 deletions(-)
>  create mode 100644 install.c

Missing manpage.

> +     install.out\

What is this .out?

> +static void
> +make_dir(char *dir, int was_missing)
> +{
> +     if (!mkdir(dir, was_missing ? 0755 : mode)) {
> +             if (!was_missing && (lchown(dir, owner, group) < 0))
> +                     eprintf("lchmod %s:", dir);
> +     } else if (errno != EEXIST) {
> +             eprintf("mkdir %s:", dir);
> +     }
> +}
> +
> +static void
> +make_dirs(char *dir, int was_missing)
> +{
> +     char *p;
> +     for (p = strchr(dir + (dir[0] == '/'), '/'); p; p = strchr(p + 1, '/')) 
> {
> +             *p = '\0';
> +             make_dir(dir, was_missing);
> +             *p = '/';
> +     }
> +     make_dir(dir, was_missing);
> +}

Can we use mkdirp() from libutil?

> +static void
> +strip(const char *filename)
> +{
> +     pid_t pid = fork();
> +     switch (pid)
> +     {

Style fix.

> +     case -1:
> +             perror("fork");
> +             exit(EXIT_FAILURE);

Just use eprintf().  We don't use EXIT_* in sbase.

> +     if (mflag) {
> +             mode = parsemode(mflag, mode, 0);
> +             if (mode < 0)
> +                     return EXIT_FAILURE;

Ditto.

Reply via email to