diff options
author | Kaz Kyheku <kaz@kylheku.com> | 2020-02-07 21:45:48 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-02-07 21:45:48 -0800 |
commit | a5fd4b908bf6ad193c5d68dfa3c0eda81aa7802a (patch) | |
tree | 00faf6357dcef9adb6b70af0fa75ea0461518160 /tests/018/chmod.tl | |
parent | 92d77f69a4224c50ced57b32844c0f464b137e92 (diff) | |
download | txr-a5fd4b908bf6ad193c5d68dfa3c0eda81aa7802a.tar.gz txr-a5fd4b908bf6ad193c5d68dfa3c0eda81aa7802a.tar.bz2 txr-a5fd4b908bf6ad193c5d68dfa3c0eda81aa7802a.zip |
chmod: bugfix and new tests.
* sysif.c (chmod_wrap): When processing set (=), only punch a
hole in the target permission area once per clause, so as not
to clobber previously set modes. We do this by checking for
the chm_perm state. Whenever '=' is processed, the state machine
enters into that state; when any permission letter is then
processed, it transitions out of that state. This gets the
"u=rwsx" test to pass.
* tests/018/chmod.tl: New tests.
Diffstat (limited to 'tests/018/chmod.tl')
-rw-r--r-- | tests/018/chmod.tl | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tests/018/chmod.tl b/tests/018/chmod.tl index 7ae0f9b2..16b96ad0 100644 --- a/tests/018/chmod.tl +++ b/tests/018/chmod.tl @@ -32,3 +32,10 @@ (cht "------------" "g+s" "-g----------") (cht "------------" "+t" "--t---------") (cht "sgtrwxrwxrwx" "=" "------------") +(cht "sgtrwxrwxrwx" "u=" "--t---rwxrwx") +(cht "sgtrwxrwxrwx" "g=" "--trwx---rwx") +(cht "sgtrwxrwxrwx" "o=" "---rwxrwx---") +(cht "------------" "u+s,g+s" "sg----------") +(cht "------------" "u+r,g+r,o+r,+t,+s" "sgtr--r--r--") +(cht "------------" "+rwx,g-r+w,o-r+w" "---rwx-wx-wx") +(cht "---------rwx" "u=rwsx" "s--rwx---rwx") |