install(1): Add a -N option, improving NetBSD and FreeBSD compatibility
authorFrançois Tigeot <ftigeot@wolfpond.org>
Sun, 1 Jul 2018 20:52:31 +0000 (22:52 +0200)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Sun, 1 Jul 2018 20:52:31 +0000 (22:52 +0200)
* -N is the standard NetBSD and FreeBSD install(1) option to use
  alternative user and group databases

* DragonFly previously used -L to do the same thing. Keep this option
  but warn to use -N instead.

usr.bin/xinstall/install.1
usr.bin/xinstall/xinstall.c

index f65274c..85bd355 100644 (file)
@@ -41,8 +41,8 @@
 .Op Fl D Ar destdir
 .Op Fl f Ar flags
 .Op Fl g Ar group
-.Op Fl L Ar etcdir
 .Op Fl m Ar mode
+.Op Fl N Ar dbdir
 .Op Fl o Ar owner
 .Ar file1 file2
 .Nm
@@ -51,8 +51,8 @@
 .Op Fl D Ar destdir
 .Op Fl f Ar flags
 .Op Fl g Ar group
-.Op Fl L Ar etcdir
 .Op Fl m Ar mode
+.Op Fl N Ar dbdir
 .Op Fl o Ar owner
 .Ar file1 ... fileN directory
 .Nm
@@ -60,8 +60,8 @@
 .Op Fl lUv
 .Op Fl D Ar destdir
 .Op Fl g Ar group
-.Op Fl L Ar etcdir
 .Op Fl m Ar mode
+.Op Fl N Ar dbdir
 .Op Fl o Ar owner
 .Ar directory ...
 .Sh DESCRIPTION
@@ -93,11 +93,6 @@ them to
 See
 .Fl B
 for specifying a different backup suffix.
-.It Fl L Ar etcdir
-Specify the location of the /etc directory containing the group and password
-files.  The default is "/etc".  If an alternative directory is specified
-group and username lookups will be made from the alternative group and
-password files rather than the system group and password files.
 .It Fl B Ar suffix
 Use
 .Ar suffix
@@ -135,7 +130,7 @@ Specify a group.
 A numeric GID is allowed.
 .It Fl l
 When the
-.Fl L
+.Fl N
 option is specified and the owner or group cannot be found, fallback to
 system files.
 .It Fl M
@@ -147,6 +142,18 @@ The default mode is set to rwxr-xr-x (0755).
 The specified mode may be either an octal or symbolic value; see
 .Xr chmod 1
 for a description of possible mode values.
+.It Fl N
+Use the user database text file
+.Pa master.passwd
+and group database text file
+.Pa group
+from
+.Ar dbdir ,
+rather than using the results from the system's
+.Xr getpwnam 3
+and
+.Xr getgrnam 3
+(and related) library calls.
 .It Fl o
 Specify an owner.
 A numeric UID is allowed.
@@ -257,6 +264,8 @@ The default was changed to copy in
 .Xr mv 1 ,
 .Xr strip 1 ,
 .Xr mmap 2 ,
+.Xr getgrnam 3 ,
+.Xr getpwnam 3 ,
 .Xr chown 8
 .Sh HISTORY
 The
index 3224980..ecc5172 100644 (file)
@@ -111,7 +111,7 @@ main(int argc, char *argv[])
        owner = NULL;
        etcdir = NULL;
 
-       while ((ch = getopt(argc, argv, "L:B:bCcD:df:g:lMm:o:pSsUv")) != -1)
+       while ((ch = getopt(argc, argv, "L:B:bCcD:df:g:lMm:N:o:pSsUv")) != -1)
                switch((char)ch) {
                case 'B':
                        suffix = optarg;
@@ -137,9 +137,6 @@ main(int argc, char *argv[])
                case 'g':
                        group = optarg;
                        break;
-               case 'L':
-                       etcdir = optarg;
-                       break;
                case 'l':
                        trysys = 1;
                        break;
@@ -153,6 +150,13 @@ main(int argc, char *argv[])
                        mode = getmode(set, 0);
                        free(set);
                        break;
+               case 'L':
+                       /* -L option kept for compatibility with pre-5.4 */
+                       warnx("Option -L is deprecated, use -N instead");
+                       /* FALLTHROUGH */
+               case 'N':
+                       etcdir = optarg;
+                       break;
                case 'o':
                        owner = optarg;
                        break;
@@ -901,10 +905,10 @@ usage(void)
 {
        fprintf(stderr,
 "usage: install [-bCcpSsUv] [-B suffix] [-D dest] [-f flags] [-g group]\n"
-"               [-m mode] [-o owner] file1 file2\n"
+"               [-N dbdir] [-m mode] [-o owner] file1 file2\n"
 "       install [-bCcpSsUv] [-B suffix] [-D dest] [-f flags] [-g group]\n"
-"               [-m mode] [-o owner] file1 ... fileN directory\n"
-"       install -d [-lUv] [-D dest] [-g group] [-m mode] [-o owner]\n"
+"               [-N dbdir] [-m mode] [-o owner] file1 ... fileN directory\n"
+"       install -d [-lUv] [-D dest] [-g group] [-m mode] [-N dbdir] [-o owner]\n"
 "               directory ...\n");
        exit(EX_USAGE);
        /* NOTREACHED */