Skip to content

Commit

Permalink
file_cmds-287.11.1
Browse files Browse the repository at this point in the history
  • Loading branch information
saagarjha committed Mar 12, 2020
1 parent a4972ea commit 1968f71
Show file tree
Hide file tree
Showing 20 changed files with 334 additions and 57 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

*~
# /
/build

Expand Down
2 changes: 2 additions & 0 deletions .upstream_base_commits
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#freebsd = https://github.com/freebsd/freebsd.git
chmod/chmod.1 freebsd bin/chmod/chmod.1 14889ebf5bdeaead21c00f70044d9acbb923f6b0
83 changes: 52 additions & 31 deletions chmod/chmod.1
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
.\"-
.\" Copyright (c) 1989, 1990, 1993, 1994
.\" The Regents of the University of California. All rights reserved.
.\"
Expand All @@ -12,11 +13,7 @@
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\" 3. Neither the name of the University nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
Expand All @@ -33,9 +30,9 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)chmod.1 8.4 (Berkeley) 3/31/94
.\" $FreeBSD: src/bin/chmod/chmod.1,v 1.33 2002/10/01 20:32:59 trhodes Exp $
.\" $FreeBSD$
.\"
.Dd July 08, 2004
.Dd January 7, 2017
.Dt CHMOD 1
.Os
.Sh NAME
Expand All @@ -49,23 +46,23 @@
.Ar
.Nm chmod
.Op Fl fv
.Op Fl R Op Fl H | L | P
.Op Fl R Op Fl H | L | P
.Op -a | +a | =a
.Ar ACE
.Ar
.Nm chmod
.Op Fl fhv
.Op Fl R Op Fl H | L | P
.Op Fl R Op Fl H | L | P
.Op Fl E
.Ar
.Nm chmod
.Op Fl fhv
.Op Fl R Op Fl H | L | P
.Op Fl R Op Fl H | L | P
.Op Fl C
.Ar
.Nm chmod
.Op Fl fhv
.Op Fl R Op Fl H | L | P
.Op Fl R Op Fl H | L | P
.Op Fl N
.Ar
.Sh DESCRIPTION
Expand All @@ -78,18 +75,19 @@ operand. It may also be used to modify the Access Control
Lists (ACLs) associated with the listed files.
.Pp
The generic options are as follows:
.Bl -tag -width Ds
.Bl -tag -width indent
.It Fl f
Do not display a diagnostic message if
.Nm chmod
could not modify the mode for
.Va file .
.Va file ,
nor modify the exit status to reflect such failures.
.It Fl H
If the
.Fl R
option is specified, symbolic links on the command line are followed.
(Symbolic links encountered in the tree traversal are not followed by
default.)
option is specified, symbolic links on the command line are followed
and hence unaffected by the command.
(Symbolic links encountered during tree traversal are not followed.)
.It Fl h
If the file is a symbolic link, change the mode of the link itself
rather than the file that the link points to.
Expand All @@ -103,8 +101,12 @@ If the
option is specified, no symbolic links are followed.
This is the default.
.It Fl R
Change the modes of the file hierarchies rooted in the files
Change the modes of the file hierarchies rooted in the files,
instead of just the files themselves.
Beware of unintentionally matching the
.Dq Pa ".."
hard link to the parent directory when using wildcards like
.Dq Li ".*" .
.It Fl v
Cause
.Nm chmod
Expand All @@ -126,9 +128,19 @@ option is specified.
In addition, these options override each other and the
command's actions are determined by the last one specified.
.Pp
If
.Nm chmod
receives a
.Dv SIGINFO
signal (see the
.Cm status
argument for
.Xr stty 1 ) ,
then the current filename as well as the old and new modes are displayed.
.Pp
Only the owner of a file or the super-user is permitted to change
the mode of a file.
.Sh DIAGNOSTICS
.Sh EXIT STATUS
.Ex -std
.Sh MODES
Modes may be absolute or symbolic.
Expand All @@ -137,26 +149,28 @@ one or more of the following values:
.Pp
.Bl -tag -width 6n -compact -offset indent
.It Li 4000
(the set-user-ID-on-execution bit) Executable files with this bit set
(the setuid bit).
Executable files with this bit set
will run with effective uid set to the uid of the file owner.
Directories with the set-user-id bit set will force all files and
Directories with this bit set will force all files and
sub-directories created in them to be owned by the directory owner
and not by the uid of the creating process, if the underlying file
system supports this feature: see
.Xr chmod 2
and the
.Ar suiddir
.Cm suiddir
option to
.Xr mount 8 .
.It Li 2000
(the set-group-ID-on-execution bit) Executable files with this bit set
(the setgid bit).
Executable files with this bit set
will run with effective gid set to the gid of the file owner.
.It Li 1000
(the sticky bit)
(the sticky bit).
See
.Xr chmod 2
and
.Xr sticky 8 .
.Xr sticky 7 .
.It Li 0400
Allow read by owner.
.It Li 0200
Expand Down Expand Up @@ -250,6 +264,8 @@ If no value is supplied for
each permission bit specified in
.Ar perm ,
for which the corresponding bit in the file mode creation mask
(see
.Xr umask 2 )
is clear, is set.
Otherwise, the mode bits represented by the specified
.Ar who
Expand All @@ -265,7 +281,7 @@ If no value is supplied for
each permission bit specified in
.Ar perm ,
for which the corresponding bit in the file mode creation mask
is clear, is cleared.
is set, is cleared.
Otherwise, the mode bits represented by the specified
.Ar who
and
Expand All @@ -274,7 +290,9 @@ values are cleared.
.It =
The mode bits specified by the
.Ar who
value are cleared, or, if no who value is specified, the owner, group
value are cleared, or, if no
.Ar who
value is specified, the owner, group
and other mode bits are cleared.
Then, if no value is supplied for
.Ar who ,
Expand All @@ -299,6 +317,10 @@ Operations upon the other permissions only (specified by the symbol
``o'' by itself), in combination with the
.Ar perm
symbols ``s'' or ``t'', are ignored.
.Pp
The ``w'' permission on directories will permit file creation, relocation,
and copy into that directory.
Files created within the directory itself will inherit its group ID.
.Sh EXAMPLES OF VALID MODES
.Bl -tag -width "u=rwx,go=u-w" -compact
.It Li 644
Expand Down Expand Up @@ -344,7 +366,7 @@ The following permissions are applicable to all filesystem objects:
Delete the item. Deletion may be granted by either this permission
on an object or the delete_child right on the containing directory.
.It readattr
Read an objects basic attributes. This is implicitly granted if
Read an object's basic attributes. This is implicitly granted if
the object can be looked up and not explicitly denied.
.It writeattr
Write an object's basic attributes.
Expand Down Expand Up @@ -536,7 +558,7 @@ Individual entries are rewritten using the =a# mode.
1: admin allow write,chown
.Pp
This mode may not be used to add new entries.
.It Fl E
.It Fl E
Reads the ACL information from stdin, as a sequential list
of ACEs, separated by newlines. If the information parses correctly,
the existing information is replaced.
Expand All @@ -555,17 +577,16 @@ The
option is non-standard and its use in scripts is not recommended.
.Sh SEE ALSO
.Xr chflags 1 ,
.Xr fsaclctl 1 ,
.Xr install 1 ,
.Xr chmod 2 ,
.Xr stat 2 ,
.Xr umask 2 ,
.Xr fts 3 ,
.Xr setmode 3 ,
.Xr sticky 7 ,
.Xr symlink 7 ,
.Xr chown 8 ,
.Xr mount 8 ,
.Xr sticky 8
.Xr mount 8
.Sh STANDARDS
The
.Nm chmod
Expand Down
4 changes: 3 additions & 1 deletion chown/chgrp.1
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
.Nd change group
.Sh SYNOPSIS
.Nm chgrp
.Op Fl fhv
.Op Fl fhnv
.Oo
.Fl R
.Op Fl H | Fl L | Fl P
Expand Down Expand Up @@ -86,6 +86,8 @@ to change the group ID of a symbolic link.
.It Fl R
Change the group ID for the file hierarchies rooted
in the files instead of just the files themselves.
.It Fl n
Interpret the group ID as numeric, avoiding the name lookup.
.It Fl v
Cause
.Nm chgrp
Expand Down
6 changes: 4 additions & 2 deletions chown/chown.8
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@
.Nd change file owner and group
.Sh SYNOPSIS
.Nm chown
.Op Fl fhv
.Op Fl fhnv
.Oo
.Fl R
.Op Fl H | Fl L | Fl P
.Oc
.Ar owner Ns Op : Ns Ar group
.Ar
.Nm chown
.Op Fl fhv
.Op Fl fhnv
.Oo
.Fl R
.Op Fl H | Fl L | Fl P
Expand Down Expand Up @@ -91,6 +91,8 @@ to change the user ID and/or the group of symbolic links.
.It Fl R
Change the user ID and/or the group ID for the file hierarchies rooted
in the files instead of just the files themselves.
.It Fl n
Interpret user ID and group ID as numeric, avoiding name lookups.
.It Fl v
Cause
.Nm chown
Expand Down
30 changes: 30 additions & 0 deletions chown/chown.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ void usage(void);
uid_t uid;
gid_t gid;
int ischown;
#ifdef __APPLE__
int isnumeric = 0;
#endif
const char *gname;

int
Expand All @@ -96,7 +99,11 @@ main(int argc, char **argv)
ischown = (strcmp(cp, "chown") == 0);

Hflag = Lflag = Pflag = Rflag = fflag = hflag = vflag = 0;
#ifdef __APPLE__
while ((ch = getopt(argc, argv, "HLPRfhnv")) != -1)
#else
while ((ch = getopt(argc, argv, "HLPRfhv")) != -1)
#endif
switch (ch) {
case 'H':
Hflag = 1;
Expand All @@ -119,6 +126,11 @@ main(int argc, char **argv)
case 'h':
hflag = 1;
break;
#ifdef __APPLE__
case 'n':
isnumeric = 1;
break;
#endif
case 'v':
vflag = 1;
break;
Expand Down Expand Up @@ -246,7 +258,11 @@ a_gid(const char *s)
if (*s == '\0') /* Argument was "uid[:.]". */
return;
gname = s;
#ifdef __APPLE__
gid = (!isnumeric && ((gr = getgrnam(s)) != NULL)) ? gr->gr_gid : id(s, "group");
#else
gid = ((gr = getgrnam(s)) != NULL) ? gr->gr_gid : id(s, "group");
#endif
}

void
Expand All @@ -256,7 +272,11 @@ a_uid(const char *s)

if (*s == '\0') /* Argument was "[:.]gid". */
return;
#ifdef __APPLE__
uid = (!isnumeric && ((pw = getpwnam(s)) != NULL)) ? pw->pw_uid : id(s, "user");
#else
uid = ((pw = getpwnam(s)) != NULL) ? pw->pw_uid : id(s, "user");
#endif
}

static uid_t
Expand Down Expand Up @@ -305,11 +325,21 @@ usage(void)

if (ischown)
(void)fprintf(stderr, "%s\n%s\n",
#ifdef __APPLE__
"usage: chown [-fhnv] [-R [-H | -L | -P]] owner[:group]"
" file ...",
" chown [-fhnv] [-R [-H | -L | -P]] :group file ...");
#else
"usage: chown [-fhv] [-R [-H | -L | -P]] owner[:group]"
" file ...",
" chown [-fhv] [-R [-H | -L | -P]] :group file ...");
#endif
else
(void)fprintf(stderr, "%s\n",
#ifdef __APPLE__
"usage: chgrp [-fhnv] [-R [-H | -L | -P]] group file ...");
#else
"usage: chgrp [-fhv] [-R [-H | -L | -P]] group file ...");
#endif
exit(1);
}
12 changes: 11 additions & 1 deletion compress/compress.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD: src/usr.bin/compress/compress.c,v 1.23 2010/12/11 08:32:16 j
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <locale.h>

#include "zopen.h"

Expand Down Expand Up @@ -412,14 +413,23 @@ int
permission(const char *fname)
{
int ch, first;
char resp[] = {'\0', '\0'};

if (!isatty(fileno(stderr)))
return (0);
(void)fprintf(stderr, "overwrite %s? ", fname);

/* Load user specified locale */
setlocale(LC_MESSAGES, "");

first = ch = getchar();
while (ch != '\n' && ch != EOF)
ch = getchar();
return (first == 'y');

/* only care about first character */
resp[0] = first;

return (rpmatch(resp) == 1);
}

void
Expand Down
Loading

0 comments on commit 1968f71

Please sign in to comment.