Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/Directory/SetPermissions.gc

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


module Directory (setPermissions) where

import NHC.GreenCard
import PatchIOError
import DPermissions

%-#include <sys/types.h>
%-#include <sys/stat.h>

%fun setperms :: Permissions -> FilePath -> IO Int
%call (perms r w x s) (filePath fp)
%code
%  struct stat st;
%  mode_t m;
%  err = stat(fp,&st);
%  if (err==0) {
%    m = st.st_mode & ~(S_IREAD|S_IWRITE|S_IEXEC); /* blank out modes */
%    if (r)    m |= S_IREAD;
%    if (w)    m |= S_IWRITE;
%    if (x||s) m |= S_IEXEC;
%    err = chmod(fp,m);
%  }
%result (int err)

setPermissions :: FilePath -> Permissions -> IO ()
setPermissions fp ps = patchIOErrorF "setPermissions" fp (setperms ps)


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].