PreviousUpNext

15.3.524  src/lib/std/src/psx/posix-etc.api

## posix-etc.api
#
# Api for POSIX 1003.1 system data-base operations

# Compiled by:
#     src/lib/std/src/standard-core.sublib






###              "You can't trust code that you did not totally create yourself."
###
###                                                  -- Ken Thompson


stipulate
    package pe  =  posix_etc;                                                   # posix_etc     is from   src/lib/std/src/psx/posix-etc.pkg
    #
herein

    # This package appears to be implemented in:
    #
    #     src/lib/std/src/psx/posix-etc.pkg
    #
    api Posix_Etc {
        #
        eqtype User_Id;
        eqtype Group_Id;

        package passwd:     api {
                                Passwd;
                                #
                                name:   Passwd -> String;
                                uid:    Passwd -> User_Id;
                                gid:    Passwd -> Group_Id;
                                home:   Passwd -> String;
                                shell:  Passwd -> String;
                            };

        package group:      api {
                                Group;
                                #
                                name:     Group -> String;
                                gid:      Group -> Group_Id;
                                members:  Group -> List( String );
                            };

        getgrgid:  Group_Id -> group::Group;
        getgrnam:  String   -> group::Group;

        getpwuid:  User_Id  -> passwd::Passwd;
        getpwnam:  String   -> passwd::Passwd;



        #######################################################################
        # Below stuff is intended only for one-time use during
        # booting, to switch from direct to indirect syscalls:                  # For background see Note[1]            in   src/lib/std/src/unsafe/mythryl-callable-c-library-interface.pkg

        Unt = pe::Unt;                                                          # Not sure why we need this -- 2012-04-18 CrT

             getgrgid__syscall:  Unt -> (String, Unt, List(String));
        set__getgrgid__ref:  ( { lib_name: String, fun_name: String, io_call:  (Unt -> (String, Unt, List(String))) }
                             -> (Unt -> (String, Unt, List(String)))
                             )
                             -> Void;

             getgrnam__syscall:  String -> (String, Unt, List(String));
        set__getgrnam__ref:  ( { lib_name: String, fun_name: String, io_call:  (String -> (String, Unt, List(String))) }
                             -> (String -> (String, Unt, List(String)))
                             )
                             -> Void;

             getpwuid__syscall:  Unt    -> (String, Unt, Unt, String, String);
        set__getpwuid__ref:  ( { lib_name: String, fun_name: String, io_call:  (Unt    -> (String, Unt, Unt, String, String)) }
                             -> (Unt    -> (String, Unt, Unt, String, String))
                             )
                             -> Void;

             getpwnam__syscall:  String -> (String, Unt, Unt, String, String);
        set__getpwnam__ref:  ( { lib_name: String, fun_name: String, io_call:  (String -> (String, Unt, Unt, String, String)) }
                             -> (String -> (String, Unt, Unt, String, String))
                             )
                             -> Void;
    };                                                  # api Posix_Etc
end;


## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext