Home | History | Annotate | Download | only in sys
History log of /src/lib/libc/sys/chmod.2
RevisionDateAuthorComments
 1.49  19-Nov-2021  wiz Mention that fchmod conforms to XPG 4.2. Bump date.
 1.48  01-Sep-2019  sevan Document history of chmod(2)
https://www.bell-labs.com/usr/dmr/www/man21.pdf
 1.47  15-Oct-2013  njoly branches: 1.47.26; 1.47.28;
Adjust needed includes for fchmodat/mkdirat/mkfifoat/mknodat/fstatat
syscalls.
 1.46  29-Jul-2013  njoly Add chmodat(2) specific errors.
 1.45  13-Jan-2013  dholland Revert defective O_SEARCH implementation committed by manu@ along with
the *at system calls on November 18th of last year. Reasons to revert
it include:
- it is incorrect in a whole variety of ways (but fortunately, one
of them is that the missing and improper permission checks have
no net effect);
- it was committed without review or discussion;
- core ruled that all the new O_* flags pertaining to the *at calls
needed to wait until their semantics could be clarified.

manu was asked to revert it on these grounds but has ignored the request.

I have left O_SEARCH defined and visible and made open() explicitly
ignore it. This way, most code that tries to use it will continue to
build and run. I've also arranged lib/libc/c063/t_o_search.c so that
the tests that make use of the O_SEARCH semantics will disappear until
O_SEARCH comes back, and fixed some mistakes and/or incorrect hacks
that were causing some of these to succeed despite the broken O_SEARCH
implementation.
 1.44  01-Dec-2012  wiz Bump date. New sentence, new line. Wording/articles.
Sort errors while here.
 1.43  01-Dec-2012  wiz Bump date. New sentence, new line. Wording/articles.
 1.42  01-Dec-2012  wiz Remove trailing whitespace.
 1.41  18-Nov-2012  manu Add most system calls for POSIX extended API set, part 2, with test cases:
faccessat(2), fchmodat(2), fchownat(2), fstatat(2), mkdirat(2), mkfifoat(2),
mknodat(2), linkat(2), readlinkat(2), symlinkat(2), renameat(2), unlinkat(2),
utimensat(2), openat(2).

Also implement O_SEARCH for openat(2)

Still missing:
- some flags for openat(2)
- fexecve(2) implementation
 1.40  04-Mar-2012  wiz branches: 1.40.2;
Sort error descriptions.
 1.39  04-Mar-2012  dholland Clarify description of sticky bit, based on a 3-year-old suggestion by
Hubert Feyrer.
 1.38  12-Oct-2011  christos branches: 1.38.2;
Remove duplicate documentation that is mentioned in stickt(7)
 1.37  31-May-2010  njoly Consistently use `.Brq Dv XXX' across syscalls man pages, for NAME_MAX
and PATH_MAX.
 1.36  22-Mar-2010  joerg Use .In for header files instead of .Ar Pa and variations.
 1.35  11-Jan-2009  christos merge christos-time_t
 1.34  04-Jan-2009  dholland SEE ALSO getmode(3)/setmode(3).
Suggested in passing by Joerg a long time ago on tech-pkg, seems like
a good idea.
Bump date.
 1.33  05-Sep-2008  dholland branches: 1.33.4; 1.33.6;
Clarify that the historic V7 sticky file semantics no longer apply.
 1.32  09-Jan-2007  wiz branches: 1.32.12;
Bump date for previous.
 1.31  09-Jan-2007  rillig chmod fails with EPERM when you try to set the S_ISGID bit on a file
whose group isn't one of your groups.
 1.30  06-Jan-2005  ginsbach Add EPERM to fchmod() failure list.
 1.29  13-May-2004  wiz \- is a minus, not -.
 1.28  30-Jan-2004  wiz Sort SEE ALSO.
 1.27  30-Jan-2004  christos cross reference sticky(7)
 1.26  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22280, verified by myself.
 1.25  16-Apr-2003  wiz Use
.In header.h
instead of
.Fd #include \*[Lt]header.h\*[Gt]
Much easier to read and write, and supported by groff for ages.
Okayed by ross.
 1.24  18-Jan-2003  thorpej Merge the nathanw_sa branch.
 1.23  01-Oct-2002  wiz New sentence, new line. From Robert Elz.
 1.22  29-Apr-2002  simonb Remove <sys/types.h> from synopsis, as per latest SUS/Posix specs.
 1.21  08-Feb-2002  ross Generate <>& symbolically. I'm avoiding .../dist/... directories for now.
 1.20  16-Sep-2001  wiz Boring whitespace fixes.
 1.19  02-Dec-1999  kleink branches: 1.19.6;
Add a LIBRARY section to system call manual pages. While it's clear that the
libraries contain stubs only (with minor exceptions a la pipe(2)), the purpose
of this section is to provide linkage information.
 1.18  26-Sep-1999  jdolecek xref symlink(7)
 1.17  22-Mar-1999  garbled branches: 1.17.4;
Last of the .Os cleanups. .Os is defined in the tmac.doc-common file,
so we shouldn't override it with versions in the manpages. Wheee!
 1.16  06-Jul-1998  fair add .Xr chflags 2 - this is another meta-data-modifying system call
 1.15  11-Oct-1997  enami Sort SEE ALSO list.
 1.14  11-Oct-1997  enami Don't use capital letter for function name and argument.
 1.13  06-Oct-1997  enami Acutally, lchmod, lchown and lutimes may set errno to ELOOP.
 1.12  06-Oct-1997  enami Add C library interface for new system call lchmod, lchown and lutimes.
 1.11  14-Jul-1997  kleink Add missing `STANDARDS' compliance statements. As we #define _POSIX_VERSION
to 199009L, bump existing statements to 1003.1-1990.
 1.10  12-Jul-1997  perry document EFTYPE error return (from der Mouse, pr-3476)
 1.9  16-May-1997  kleink Add/update 1003.1 conformance notice.
 1.8  13-May-1997  kleink Update to the new `chown(2) vs. (S_ISUID|S_ISGID)' world order.
 1.7  27-Feb-1995  cgd merge with lite, keeping most local changes. clean up Ids
 1.6  22-Apr-1994  jtc Remove description of EINVAL, "The pathname contains a character with the
high-order bit set", as this error is obsolete.

Eventually we may want to add code to some of the "optional" filesystems
(msdosfs, etc.) that checks for illegal characters. At that time it would
be appropriate to reintroduce this error with appropriate text. Perhaps
"The pathname contains a character that is not valid for filesystem type".
 1.5  19-Apr-1994  jtc Use symbolic names {NAME_MAX} & {PATH_MAX} instead of 255 and 1023 in
description of ENAMETOOLONG error.
 1.4  25-Nov-1993  jtc Clean up manpages:
Use .Fn rather than .Nm macro in HISTORY and STANDARDS sections.
Use .At and .St macros instead of spelling out "Version 6 UNIX",
"IEEE 1003.1-1988 (POSIX)", etc.
 1.3  04-Oct-1993  jtc Add #include <sys/types.h> to SYNOPSIS, as it needs to be included too.
 1.2  01-Aug-1993  mycroft Add RCS indentifiers.
 1.1  21-Mar-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.2  27-Feb-1995  cgd from Lite
 1.1.1.1  21-Mar-1993  cgd initial import of 386bsd-0.1 sources
 1.17.4.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.19.6.5  18-Oct-2002  nathanw Catch up to -current.
 1.19.6.4  21-Jun-2002  nathanw Catch up to -current.
 1.19.6.3  22-Mar-2002  nathanw Catch up to -current.
 1.19.6.2  08-Mar-2002  nathanw Catch up to -current.
 1.19.6.1  08-Oct-2001  nathanw Catch up to -current.
 1.32.12.1  18-Sep-2008  wrstuden Sync with wrstuden-revivesa-base-2.
 1.33.6.2  04-Jan-2009  christos merge with head.
 1.33.6.1  05-Sep-2008  christos file chmod.2 was added on branch christos-time_t on 2009-01-04 17:02:20 +0000
 1.33.4.1  16-Jan-2009  bouyer Pull up following revision(s) (requested by dholland in ticket #272):
lib/libc/gen/setmode.3: revision 1.19, 1.20
lib/libc/sys/chmod.2: revision 1.34
SEE ALSO getmode(3)/setmode(3).
Suggested in passing by Joerg a long time ago on tech-pkg, seems like
a good idea.
Bump date.
Rework the text to make it clearer; it was really pretty confusing before.
Add an example; note some bugs/shortcomings. Bump date.
Fix HTML output.
 1.38.2.4  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.38.2.3  23-Jan-2013  yamt sync with head
 1.38.2.2  16-Jan-2013  yamt sync with (a bit old) head
 1.38.2.1  17-Apr-2012  yamt sync with head
 1.40.2.3  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.40.2.2  25-Feb-2013  tls resync with head
 1.40.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.47.28.1  05-Sep-2019  martin Pull up following revision(s) (requested by sevan in ticket #174):
lib/libc/sys/chmod.2: revision 1.48
lib/libc/sys/stat.2: revision 1.59
lib/libc/sys/unlink.2: revision 1.30
lib/libc/sys/lseek.2: revision 1.25
lib/libc/sys/getuid.2: revision 1.18
lib/libc/sys/chown.2: revision 1.37
lib/libm/man/exp.3: revision 1.32
lib/libm/man/log.3: revision 1.7
lib/libc/sys/open.2: revision 1.60
lib/libc/stdio/fopen.3: revision 1.36
lib/libc/stdio/putc.3: revision 1.14
lib/libc/sys/mount.2: revision 1.51
share/man/man9/copy.9: revision 1.22
share/man/man9/uiomove.9: revision 1.20
lib/libc/sys/setuid.2: revision 1.23
lib/libc/sys/close.2: revision 1.18
sbin/init/init.8: revision 1.61
lib/libc/sys/write.2: revision 1.36
lib/libc/sys/read.2: revision 1.39
sbin/init/init.8: revision 1.62
lib/libc/sys/wait.2: revision 1.40
usr.bin/tty/tty.1: revision 1.10
lib/libc/sys/link.2: revision 1.33
usr.bin/du/du.1: revision 1.24
lib/libc/stdlib/exit.3: revision 1.17
usr.bin/su/su.1: revision 1.53
usr.bin/mail/mail.1: revision 1.66
lib/libc/sys/fork.2: revision 1.25
usr.bin/su/su.1: revision 1.54
usr.bin/mail/mail.1: revision 1.67
lib/libm/man/sin.3: revision 1.15
share/man/man9/intro.9: revision 1.26
share/man/man5/utmp.5: revision 1.17
lib/libc/compat-43/creat.3: revision 1.17
lib/libc/time/ctime.3: revision 1.61
lib/libcompat/4.1/stty.3: revision 1.10
usr.bin/dc/dc.1: revision 1.3
lib/libm/man/cos.3: revision 1.17
lib/libc/sys/chdir.2: revision 1.23
lib/libc/gen/exec.3: revision 1.30
lib/libc/gen/exec.3: revision 1.31
games/bcd/bcd.6: revision 1.18
games/bcd/bcd.6: revision 1.19
usr.bin/write/write.1: revision 1.7
usr.bin/wc/wc.1: revision 1.18
usr.bin/pr/pr.1: revision 1.24
usr.bin/who/who.1: revision 1.25
lib/libc/sys/mkdir.2: revision 1.30
lib/libc/stdio/getc.3: revision 1.13
usr.bin/sort/sort.1: revision 1.40
usr.bin/mesg/mesg.1: revision 1.11
share/man/man5/passwd.5: revision 1.34
sort was there since v1
https://www.bell-labs.com/usr/dmr/www/man61.pdf

dc was in v1
https://www.bell-labs.com/usr/dmr/www/man12.pdf

du was in v1
https://www.bell-labs.com/usr/dmr/www/man12.pdf

mail was in v1
https://www.bell-labs.com/usr/dmr/www/man12.pdf

mesg was in v1
https://www.bell-labs.com/usr/dmr/www/man12.pdf

Document history
https://www.bell-labs.com/usr/dmr/www/man13.pdf

su was in v1
https://www.bell-labs.com/usr/dmr/www/man13.pdf

Document history
https://www.bell-labs.com/usr/dmr/www/man13.pdf

Document history
https://www.bell-labs.com/usr/dmr/www/man14.pdf
Update URL

write was in v1
https://www.bell-labs.com/usr/dmr/www/man14.pdf
grammar

passwd(5) was in v1
https://www.bell-labs.com/usr/dmr/www/man51.pdf

utmp(5) was present in v1
https://www.bell-labs.com/usr/dmr/www/man51.pdf

Earliest version of wtmp I could find was in v3
https://minnie.tuhs.org/cgi-bin/utree.pl?file=V3/man/man5/wtmp.5

Document history of chdir(2)
https://www.bell-labs.com/usr/dmr/www/man21.pdf

Document history of chmod(2)
https://www.bell-labs.com/usr/dmr/www/man21.pdf

Document history of chown(2)
https://www.bell-labs.com/usr/dmr/www/man21.pdf

Document history
https://www.bell-labs.com/usr/dmr/www/man21.pdf

create was present in v1
https://www.bell-labs.com/usr/dmr/www/man21.pdf

Document history of exec()
Move statement on execlpe() & execvpe() to HISTORY section.

Document history
https://www.bell-labs.com/usr/dmr/www/man21.pdf

fork was present in v1
https://www.bell-labs.com/usr/dmr/www/man21.pdf
stat() was present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

document history of fstat()
https://www.bell-labs.com/usr/dmr/www/man21.pdf

getuid was present in v1
https://www.bell-labs.com/usr/dmr/www/man21.pdf

Document history
https://www.bell-labs.com/usr/dmr/www/man21.pdf

Document history
https://www.bell-labs.com/usr/dmr/www/man21.pdf

stty & gtty were around since v1
https://www.bell-labs.com/usr/dmr/www/man21.pdf
https://www.bell-labs.com/usr/dmr/www/man22.pdf

mount & umount were present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

Open was present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

read was present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

seek was present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

setuid was in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

unlink was presen in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

wait was present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

write was present in v1
https://www.bell-labs.com/usr/dmr/www/man22.pdf

start documenting history
exp was present in v1
https://www.bell-labs.com/usr/dmr/www/man31.pdf

Start documenting history
https://www.bell-labs.com/usr/dmr/www/man31.pdf

Start documenting history
https://www.bell-labs.com/usr/dmr/www/man31.pdf

log appeared in v1
https://www.bell-labs.com/usr/dmr/www/man31.pdf

putc & putw were in v1
https://www.bell-labs.com/usr/dmr/www/man31.pdf

putchar was in v4
https://minie.tuhs.org/cgi-bin/utree.pl?file=V4/man/man3/putchr.3

Start documenting history
https://www.bell-labs.com/usr/dmr/www/man31.pdf

Document history.
https://www.bell-labs.com/usr/dmr/www/man11.pdf
Between v1 & v6 UNIX, bcd was rewritten in C, but I don't know if which
version,
hence I've skipped mentioning it.
End sentence with a dot.
Remove superfluous Pp.
Remove superfluous Pp.
Remove superfluous Ns.
Remove superfluous Pp.
fetch(9) -> ufetch(9)
fetch(9) -> ufetch(9). Remove superfluous Pp.
fetch(9) -> ufetch(9). Remove reference to unimplemented ppi(9).
 1.47.26.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed