Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1298599
  • 博文数量: 287
  • 博客积分: 11000
  • 博客等级: 上将
  • 技术积分: 3833
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-16 08:43
文章分类
文章存档

2013年(15)

2012年(17)

2011年(17)

2010年(135)

2009年(85)

2008年(18)

分类: 系统运维

2010-06-04 17:01:10

 *---------------------------------------------------------------------
      * This code courtesy Scott Klement via MIDRANGE-L                   
      *---------------------------------------------------------------------                   
                         
      * This header file contains the constants, structures and prototypes
      * for using the Integrated File System API
      *
      * These APIs were designed originally for use in C programming.
      * Therefore bear in mind:
      * 1) All strings must be null-terminated, and variable-length.
      * 2) Errors are returned in the errno variable, and strings for
      *    them are available by calling strerror()
      * 3) To use strerror(), errno, you must bind to the ILE C binding
      *    directory QC2LE
      *
      * SCK 03/24/1999
      *
      * To use these in your source code, you need a D-spec like this:
      * D/COPY LIBSOR/QRPGLESRC,IFSIO_H
      * For detailed info seee the UNIX-type APIs manual

      * This header file includes (in order)
      * 1) Constants
      * 2) Structures
      * 3) Prototypes


     D* ascii code-page
     D CP_ASCII C 819
     D*********************************************************************
     D* Flags for use in open()
     D*
     D* More than one can be used -- add them together.
     D*********************************************************************
     D* Reading Only
     D O_RDONLY C 1
     D* Writing Only
     D O_WRONLY C 2
     D* Reading & Writing
     D O_RDWR C 4
     D* Create File if not exist
     D O_CREAT C 8
     D* Exclusively create
     D O_EXCL C 16
     D* Truncate File to 0 bytes
     D O_TRUNC C 64
     D* Append to File
     D O_APPEND C 256
     D* Convert text by code-pag
     D O_CODEPAGE C 8388608
     D* Open in text-mode
     D O_TEXTDATA C 16777216
     D*********************************************************************
     D* Access mode flags for access()
     D*********************************************************************
     D F_OK C 0
     D R_OK C 4
     D W_OK C 2
     D X_OK C 1
     D*********************************************************************
     D* Mode Flags.
     D* basically, the mode parm of open(), creat(), chmod(),etc
     D* uses 9 least significant bits to determine the
     D* file's mode. (peoples access rights to the file)
     D*
     D* user: owner group other
     D* access: R W X R W X R W X
     D* bit: 8 7 6 5 4 3 2 1 0
     D*
     D* (This is accomplished by adding the flags below to get the mode)
     D*********************************************************************
     D* owner authority
     D S_IRUSR C 256
     D S_IWUSR C 128
     D S_IXUSR C 64
     D S_IRWXU C 448
     D* group authority
     D S_IRGRP C 32
     D S_IWGRP C 16
     D S_IXGRP C 8
     D S_IRWXG C 56
     D* other people
     D S_IROTH C 4
     D S_IWOTH C 2
     D S_IXOTH C 1
     D S_IRWXO C 7

     D*********************************************************************
     D* File Information Structure (stat)
     D*
     D* struct stat {
     D* mode_t st_mode; /* File mode *
     D* ino_t st_ino; /* File serial number *
     D* nlink_t st_nlink; /* Number of links *
     D* uid_t st_uid; /* User ID of the owner of file *
     D* gid_t st_gid; /* Group ID of the group of file *
     D* off_t st_size; /* For regular files, the file
     D* * size in bytes *
     D* time_t st_atime; /* Time of last access *
     D* time_t st_mtime; /* Time of last data modification *
     D* time_t st_ctime; /* Time of last file status change *
     D* dev_t st_dev; /* ID of device containing file *
     D* size_t st_blksize; /* Size of a block of the file *
     D* unsigned long st_allocsize; /* Allocation size of the file *
     D* qp0l_objtype_t st_objtype; /* AS/400 object type *
     D* unsigned short st_codepage; /* Object data codepage *
     D* char st_reserved1[66]; /* Reserved *
     D* };
     D*
     D p_statds S *
     D statds DS BASED(p_statds)
     D st_mode 10U 0
     D st_ino 10U 0
     D st_nlink 5U 0
     D st_uid 10U 0
     D st_gid 10U 0
     D st_size 10I 0
     D st_atime 10I 0
     D st_mtime 10I 0
     D st_ctime 10I 0
     D st_dev 10U 0
     D st_blksize 10U 0
     D st_alcsize 10U 0
     D st_objtype 11A
     D st_codepag 5U 0
     D st_resv11 66A

     D*********************************************************************
     D* Group Information Structure (group)
     D*
     D* struct group {
     D* char *gr_name; /* Group name.
     D* gid_t gr_gid; /* Group id.
     D* char **gr_mem; /* A null-terminated list of pointe
     D* to the individual member names.
     D* };
     D*
     D p_group S *
     D group DS Based(p_group)
     D gr_name *
     D gr_gid 10U 0
     D gr_mem * DIM(256)

     D*********************************************************************
     D*
     D* User Information Structure (passwd)
     D*
     D* (Don't let the name fool you, this structure does not contain
     D* any password information. Its named after the UNIX file that
     D* contains all of the user info. That file is "passwd")
     D*
     D* struct passwd {
     D* char *pw_name; /* User name.
     D* uid_t pw_uid; /* User ID number.
     D* gid_t pw_gid; /* Group ID number.
     D* char *pw_dir; /* Initial working directory.
     D* char *pw_shell; /* Initial user program.
     D* };
     D*
     D p_passwd S *
     D passwd DS BASED(p_passwd)
     D pw_name *
     D pw_uid 10U 0
     D pw_gid 10U 0
     D pw_dir *
     D pw_shell *

     D*********************************************************************
     D* File Time Structure (utimbuf)
     D*
     D* struct utimbuf {
     D* time_t actime; /* access time */
     D* time_t modtime; /* modification time */
     D* };
     D*
     D p_utimbuf S *
     D utimbuf DS based(p_utimbuf)
     D actime 10I 0
     D modtime 10I 0

     D*********************************************************************
     D*
     D* Directory Entry Structure (dirent)
     D*
     D* struct dirent {
     D* char d_reserved1[16]; /* Reserved
     D* unsigned int d_reserved2; /* Reserved
     D* ino_t d_fileno; /* The file number of the file
     D* unsigned int d_reclen; /* Length of this directory entr
     D* * in bytes
     D* int d_reserved3; /* Reserved
     D* char d_reserved4[8]; /* Reserved
     D* qlg_nls_t d_nlsinfo; /* National Language Information
     D* * about d_name
     D* unsigned int d_namelen; /* Length of the name, in bytes
     D* * excluding NULL terminator
     D* char d_name[_QP0L_DIR_NAME]; /* Name...null terminated
     D*
     D* };
     D*
     D p_dirent s *
     D dirent ds based(p_dirent)
     D d_reserv1 16A
     D d_reserv2 10U 0
     D d_fileno 10U 0
     D d_reclen 10U 0
     D d_reserv3 10I 0
     D d_reserv4 8A
     D d_nlsinfo 12A
     D nls_ccsid 10I 0 OVERLAY(d_nlsinfo:1)
     D nls_cntry 2A OVERLAY(d_nlsinfo:5)
     D nls_lang 3A OVERLAY(d_nlsinfo:7)
     D nls_reserv 3A OVERLAY(d_nlsinfo:10)
     D d_namelen 10U 0
     D d_name 640A


     D*--------------------------------------------------------------------
     D* Determine file accessibility
     D*
     D* int access(const char *path, int amode)
     D*
     D*--------------------------------------------------------------------
     D access PR 10I 0 ExtProc('access')
     D Path * Value
     D amode 10I 0 Value
     D*--------------------------------------------------------------------
     D* Change Directory
     D*
     D* int chdir(const char *path)
     D*--------------------------------------------------------------------
     D chdir PR 10I 0 ExtProc('chdir')
     D path * Value
     D*--------------------------------------------------------------------
     D* Change file authorizations
     D*
     D* int chmod(const char *path, mode_t mode)
     D*--------------------------------------------------------------------
     D chmod PR 10I 0 ExtProc('chmod')
     D path * Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Change Owner/Group of File
     D*
     D* int chown(const char *path, uid_t owner, gid_t group)
     D*--------------------------------------------------------------------
     D chown PR 10I 0 ExtProc('chown')
     D path * Value
     D owner 10U 0 Value
     D group 10U 0 Value
     D*--------------------------------------------------------------------
     D* Close a file
     D*
     D* int close(int fildes)
     D*--------------------------------------------------------------------
     D close PR 10I 0 ExtProc('close')
     D handle 10I 0 value
     D*--------------------------------------------------------------------
     D* Close a directory
     D*
     D* int closedir(DIR *dirp)
     D*--------------------------------------------------------------------
     D closedir PR 10I 0 EXTPROC('closedir')
     D dirhandle * VALUE
     D*--------------------------------------------------------------------
     D* Create or Rewrite File
     D*
     D* int creat(const char *path, mode_t mode)
     D*--------------------------------------------------------------------
     D creat PR 10I 0 ExtProc('creat')
     D path * Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Duplicate open file descriptor
     D*
     D* int dup(int fildes)
     D*--------------------------------------------------------------------
     D dup PR 10I 0 ExtProc('dup')
     D fildes 10I 0 Value
     D*--------------------------------------------------------------------
     D* Duplicate open file descriptor to another descriptor
     D*
     D* int dup2(int fildes, int fildes2)
     D*--------------------------------------------------------------------
     D dup2 PR 10I 0 ExtProc('dup2')
     D fildes 10I 0 Value
     D fildes2 10I 0 Value
     D*--------------------------------------------------------------------
     D* Change file authorizations by descriptor
     D*
     D* int fchmod(int fildes, mode_t mode)
     D*--------------------------------------------------------------------
     D fchmod PR 10I 0 ExtProc('fchmod')
     D fildes 10I 0 Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Change Owner and Group of File by Descriptor
     D*
     D* int fchown(int fildes, uid_t owner, gid_t group)
     D*--------------------------------------------------------------------
     D fchown PR 10I 0 ExtProc('fchown')
     D fildes 10I 0 Value
     D owner 10U 0 Value
     D group 10U 0 Value
     D*--------------------------------------------------------------------
     D* Perform File Control
     D*
     D* int fcntl(int fildes, int cmd, . . .)
     D*--------------------------------------------------------------------
     D fcntl PR 10I 0 ExtProc('fcntl')
     D fildes 10I 0 Value
     D cmd 10I 0 Value
     D arg 10I 0 Value options(*nopass)
     D*--------------------------------------------------------------------
     D* Get configurable path name variables by descriptor
     D*
     D* long fpathconf(int fildes, int name)
     D*--------------------------------------------------------------------
     D fpathconf PR 10I 0 ExtProc('fpathconf')
     D fildes 10I 0 Value
     D name 10I 0 Value
     D*--------------------------------------------------------------------
     D* Get File Information by Descriptor
     D*
     D* int fstat(int fildes, struct stat *buf)
     D*--------------------------------------------------------------------
     D fstat PR 10I 0 ExtProc('fstat')
     D fildes 10I 0 Value
     D buf * Value
     D*--------------------------------------------------------------------
     D* Synchronize Changes to fIle
     D*
     D* int fsync(int fildes)
     D*--------------------------------------------------------------------
     D fsync PR 10I 0 ExtProc('fsync')
     D fildes 10I 0 Value
     D*--------------------------------------------------------------------
     D* Truncate file
     D*
     D* int ftruncate(int fildes, off_t length)
     D*--------------------------------------------------------------------
     D ftruncate PR 10I 0 ExtProc('ftruncate')
     D fildes 10I 0 Value
     D length 10I 0 Value
     D*--------------------------------------------------------------------
     D* Get current working directory
     D*
     D* char *getcwd(char *buf, size_t size)
     D*--------------------------------------------------------------------
     D getcwd PR * ExtProc('getcwd')
     D buf * Value
     D size 10U 0 Value
     D*--------------------------------------------------------------------
     D* Get effective group ID
     D*
     D* gid_t getegid(void)
     D*--------------------------------------------------------------------
     D getegid PR 10U 0 ExtProc('getegid')
     D*--------------------------------------------------------------------
     D* Get effective user ID
     D*
     D* uid_t geteuid(void)
     D*--------------------------------------------------------------------
     D geteuid PR 10U 0 ExtProc('geteuid')
     D*--------------------------------------------------------------------
     D* Get Real Group ID
     D*
     D* gid_t getgid(void)
     D*--------------------------------------------------------------------
     D getgid PR 10U 0 ExtProc('getgid')
     D*--------------------------------------------------------------------
     D* Get group information from group ID
     D*
     D* struct group *getgrgid(gid_t gid)
     D*--------------------------------------------------------------------
     D getgrid PR * ExtProc('getgrgid')
     D gid 10U 0 VALUE
     D*--------------------------------------------------------------------
     D* Get group info using group name
     D*
     D* struct group *getgrnam(const char *name)
     D*--------------------------------------------------------------------
     D getgrnam PR * ExtProc('getgrnam')
     D name * VALUE
     D*--------------------------------------------------------------------
     D* Get group IDs
     D*
     D* int getgroups(int gidsetsize, gid_t grouplist[])
     D*--------------------------------------------------------------------
     D getgroups PR * ExtProc('getgroups')
     D gidsetsize 10I 0 VALUE
     D grouplist *
     D*--------------------------------------------------------------------
     D* Get user information by user-name
     D*
     D* (Don't let the name mislead you, this does not return the password,
     D* the user info database on unix systems is called "passwd",
     D* therefore, getting the user info is called "getpw")
     D*
     D* struct passwd *getpwnam(const char *name)
     D*--------------------------------------------------------------------
     D getpwnam PR * ExtProc('getpwnam')
     D name * Value
     D*--------------------------------------------------------------------
     D* Get user information by user-id
     D*
     D* (Don't let the name mislead you, this does not return the password,
     D* the user info database on unix systems is called "passwd",
     D* therefore, getting the user info is called "getpw")
     D*
     D* struct passwd *getpwuid(uid_t uid)
     D*--------------------------------------------------------------------
     D getpwuid PR * extproc('getpwuid')
     D uid 10U 0 Value
     D*--------------------------------------------------------------------
     D* Get Real User-ID
     D*
     D* uid_t getuid(void)
     D*--------------------------------------------------------------------
     D getuid PR 10U 0 ExtProc('getuid')
     D*--------------------------------------------------------------------
     D* Perform I/O Control Request
     D*
     D* int ioctl(int fildes, unsigned long req, ...)
     D*--------------------------------------------------------------------
     D ioctl PR 10I 0 ExtProc('ioctl')
     D fildes 10I 0 Value
     D req 10U 0 Value
     D arg * Value
     D*--------------------------------------------------------------------
     D* Create Link to File
     D*
     D* int link(const char *existing, const char *new)
     D*--------------------------------------------------------------------
     D link PR 10I 0 ExtProc('link')
     D existing * Value
     D new * Value
     D*--------------------------------------------------------------------
     D* Set File Read/Write Offset
     D*
     D* off_t lseek(int fildes, off_t offset, int whence)
     D*--------------------------------------------------------------------
     D lseek PR 10I 0 ExtProc('lseek')
     D offset 10I 0
     D whence 10I 0
     D*--------------------------------------------------------------------
     D* Get File or Link Information
     D*
     D* int lstat(const char *path, struct stat *buf)
     D*--------------------------------------------------------------------
     D lstat PR 10I 0 ExtProc('lstat')
     D path * Value
     D buf * Value
     D*--------------------------------------------------------------------
     D* Make Directory
     D*
     D* int mkdir(const char *path, mode_t mode)
     D*--------------------------------------------------------------------
     D mkdir PR 10I 0 ExtProc('mkdir')
     D path * Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Open a File
     D*
     D* int open(const char *path, int oflag, . . .);
     D*--------------------------------------------------------------------
     D open PR 10I 0 ExtProc('open')
     D filename * value
     D openflags 10I 0 value
     D mode 10U 0 value options(*nopass)
     D codepage 10U 0 value options(*nopass)
     D*--------------------------------------------------------------------
     D* Open a Directory
     D*
     D* DIR *opendir(const char *dirname)
     D*--------------------------------------------------------------------
     D opendir PR * EXTPROC('opendir')
     D dirname * VALUE
     D*--------------------------------------------------------------------
     D* Get configurable path name variables
     D*
     D* long pathconf(const char *path, int name)
     D*--------------------------------------------------------------------
     D pathconf PR 10I 0 ExtProc('pathconf')
     D path * Value
     D name 10I 0 Value
     D*--------------------------------------------------------------------
     D* Get path name of object from its file id
     D*
     D* char *Qp0lGetPathFromFileID(char *buf, size_t size,Qp0lFID_t fileid
     D*--------------------------------------------------------------------
     D GetPathFID PR * ExtProc('Qp0lGetPathFromFileID')
     D buf * Value
     D size 10U 0 Value
     D fileid 16A
     D*--------------------------------------------------------------------
     D* Rename File or Directory, return error if a file/dir under the
     D* "new" name already exists.
     D*
     D* int Qp0lRenameKeep(const char *old, const char *new)
     D*--------------------------------------------------------------------
     D Rename PR 10I 0 ExtProc('Qp0lRenameKeep')
     D old * Value
     D new * Value
     D*--------------------------------------------------------------------
     D* Rename File or Directory. If another file/dir exists under the
     D* "new" name, delete it first.
     D*
     D* int Qp0lRenameUnlink(const char *old, const char *new)
     D*--------------------------------------------------------------------
     D Replace PR 10I 0 ExtProc('Qp0lRenameUnlink')
     D old * Value
     D new * Value
     D*--------------------------------------------------------------------
     D* Read From a File
     D*
     D* ssize_t read(int handle, void *buffer, size_t bytes);
     D*--------------------------------------------------------------------
     D read PR 10I 0 ExtProc('read')
     D handle 10i 0 value
     D buffer * value
     D bytes 10U 0 value
     D*--------------------------------------------------------------------
     D* Read Directory Entry
     D*
     D* struct dirent *readdir(DIR *dirp)
     D*--------------------------------------------------------------------
     D readdir PR * EXTPROC('readdir')
     D dirp * VALUE
     D*--------------------------------------------------------------------
     D* Read Value of Symbolic Link
     D*
     D* int readlink(const char *path, char *buf, size_t bufsiz)
     D*--------------------------------------------------------------------
     D readlink PR 10I 0 ExtProc('readlink')
     D path * value
     D buf * value
     D bufsiz 10U 0 value
     D*--------------------------------------------------------------------
     D* Reset Directory Stream to Beginning
     D*
     D* void rewinddir(DIR *dirp)
     D*--------------------------------------------------------------------
     D rewinddir PR ExtProc('rewinddir')
     D dirp * value

     D*--------------------------------------------------------------------
     D* Remove Directory
     D*
     D* int rmdir(const char *path)
     D*--------------------------------------------------------------------
     D rmdir PR 10I 0 ExtProc('rmdir')
     D path * value
     D*--------------------------------------------------------------------
     D* Get File Information
     D*
     D* int stat(const char *path, struct stat *buf)
     D*--------------------------------------------------------------------
     D stat PR 10I 0 ExtProc('stat')
     D path * value
     D buf * value
     D*--------------------------------------------------------------------
     D* Make Symbolic Link
     D*
     D* int symlink(const char *pname, const char *slink)
     D*--------------------------------------------------------------------
     D symlink PR 10I 0 ExtProc('symlink')
     D pname * value
     D slink * value
     D*--------------------------------------------------------------------
     D* Get system configuration variables
     D*
     D* long sysconf(int name)
     D*--------------------------------------------------------------------
     D sysconf PR 10I 0 ExtProc('sysconf')
     D name 10I 0 Value
     D*--------------------------------------------------------------------
     D* Set Authorization Mask for Job
     D*
     D* mode_t umask(mode_t cmask)
     D*--------------------------------------------------------------------
     D umask PR 10U 0 ExtProc('umask')
     D cmask 10U 0 Value
     D*--------------------------------------------------------------------
     D* Remove Link to File. (Deletes Directory Entry for File, and if
     D* this was the last link to the file data, the file itself is
     D* also deleted)
     D*
     D* int unlink(const char *path)
     D*--------------------------------------------------------------------
     D unlink PR 10I 0 ExtProc('unlink')
     D pa|h * Value
     D*--------------------------------------------------------------------
     D* Set File Access & Modification Times
     D*
     D* int utime(const char *path, const struct utimbuf *times)
     D*--------------------------------------------------------------------
     D utime PR 10I 0 ExtProc('utime')
     D path * value
     D times * value
     D*--------------------------------------------------------------------
     D* Write to a file
     D*
     D* ssize_t write(int fildes, const void *buf, size_t bytes)
     D*--------------------------------------------------------------------
     D write PR 10I 0 ExtProc('write')
     D handle 10I 0 value
     D buffer * value
     D bytes 10U 0 value
     ----------------------------------------------------------------------
     * This header file contains the constants, structures and prototypes
     * for using the Integrated File System API
     *
     * These APIs were designed originally for use in C programming.
     * Therefore bear in mind:
     * 1) All strings must be null-terminated, and variable-length.
     * 2) Errors are returned in the errno variable, and strings for
     * them are available by calling strerror()
     * 3) To use strerror(), errno, you must bind to the ILE C binding
     * directory QC2LE
     *
     * SCK 03/24/1999
     *
     * To use these in your source code, you need a D-spec like this:
     * D/COPY LIBSOR/QRPGLESRC,IFSIO_H
     * For detailed info seee the UNIX-type APIs manual

     * This header file includes (in order)
     * 1) Constants
     * 2) Structures
     * 3) Prototypes

     D* ascii code-page
     D CP_ASCII C 819
     D*********************************************************************
     D* Flags for use in open()
     D*
     D* More than one can be used -- add them together.
     D*********************************************************************
     D* Reading Only
     D O_RDONLY C 1
     D* Writing Only
     D O_WRONLY C 2
     D* Reading & Writing
     D O_RDWR C 4
     D* Create File if not exist
     D O_CREAT C 8
     D* Exclusively create
     D O_EXCL C 16
     D* Truncate File to 0 bytes
     D O_TRUNC C 64
     D* Append to File
     D O_APPEND C 256
     D* Convert text by code-pag
     D O_CODEPAGE C 8388608
     D* Open in text-mode
     D O_TEXTDATA C 16777216
     D*********************************************************************
     D* Access mode flags for access()
     D*********************************************************************
     D F_OK C 0
     D R_OK C 4
     D W_OK C 2
     D X_OK C 1
     D*********************************************************************
     D* Mode Flags.
     D* basically, the mode parm of open(), creat(), chmod(),etc
     D* uses 9 least significant bits to determine the
     D* file's mode. (peoples access rights to the file)
     D*
     D* user: owner group other
     D* access: R W X R W X R W X
     D* bit: 8 7 6 5 4 3 2 1 0
     D*
     D* (This is accomplished by adding the flags below to get the mode)
     D*********************************************************************
     D* owner authority
     D S_IRUSR C 256
     D S_IWUSR C 128
     D S_IXUSR C 64
     D S_IRWXU C 448
     D* group authority
     D S_IRGRP C 32
     D S_IWGRP C 16
     D S_IXGRP C 8
     D S_IRWXG C 56
     D* other people
     D S_IROTH C 4
     D S_IWOTH C 2
     D S_IXOTH C 1
     D S_IRWXO C 7

     D*********************************************************************
     D* File Information Structure (stat)
     D*
     D* struct stat {
     D* mode_t st_mode; /* File mode *
     D* ino_t st_ino; /* File serial number *
     D* nlink_t st_nlink; /* Number of links *
     D* uid_t st_uid; /* User ID of the owner of file *
     D* gid_t st_gid; /* Group ID of the group of file *
     D* off_t st_size; /* For regular files, the file
     D* * size in bytes *
     D* time_t st_atime; /* Time of last access *
     D* time_t st_mtime; /* Time of last data modification *
     D* time_t st_ctime; /* Time of last file status change *
     D* dev_t st_dev; /* ID of device containing file *
     D* size_t st_blksize; /* Size of a block of the file *
     D* unsigned long st_allocsize; /* Allocation size of the file *
     D* qp0l_objtype_t st_objtype; /* AS/400 object type *
     D* unsigned short st_codepage; /* Object data codepage *
     D* char st_reserved1[66]; /* Reserved *
     D* };
     D*
     D p_statds S *
     D statds DS BASED(p_statds)
     D st_mode 10U 0
     D st_ino 10U 0
     D st_nlink 5U 0
     D st_uid 10U 0
     D st_gid 10U 0
     D st_size 10I 0
     D st_atime 10I 0
     D st_mtime 10I 0
     D st_ctime 10I 0
     D st_dev 10U 0
     D st_blksize 10U 0
     D st_alcsize 10U 0
     D st_objtype 11A
     D st_codepag 5U 0
     D st_resv11 66A

     D*********************************************************************
     D* Group Information Structure (group)
     D*
     D* struct group {
     D* char *gr_name; /* Group name.
     D* gid_t gr_gid; /* Group id.
     D* char **gr_mem; /* A null-terminated list of pointe
     D* to the individual member names.
     D* };
     D*
     D p_group S *
     D group DS Based(p_group)
     D gr_name *
     D gr_gid 10U 0
     D gr_mem * DIM(256)

     D*********************************************************************
     D*
     D* User Information Structure (passwd)
     D*
     D* (Don't let the name fool you, this structure does not contain
     D* any password information. Its named after the UNIX file that
     D* contains all of the user info. That file is "passwd")
     D*
     D* struct passwd {
     D* char *pw_name; /* User name.
     D* uid_t pw_uid; /* User ID number.
     D* gid_t pw_gid; /* Group ID number.
     D* char *pw_dir; /* Initial working directory.
     D* char *pw_shell; /* Initial user program.
     D* };
     D*
     D p_passwd S *
     D passwd DS BASED(p_passwd)
     D pw_name *
     D pw_uid 10U 0
     D pw_gid 10U 0
     D pw_dir *
     D pw_shell *

     D*********************************************************************
     D* File Time Structure (utimbuf)
     D*
     D* struct utimbuf {
     D* time_t actime; /* access time */
     D* time_t modtime; /* modification time */
     D* };
     D*
     D p_utimbuf S *
     D utimbuf DS based(p_utimbuf)
     D actime 10I 0
     D modtime 10I 0

     D*********************************************************************
     D*
     D* Directory Entry Structure (dirent)
     D*
     D* struct dirent {
     D* char d_reserved1[16]; /* Reserved
     D* unsigned int d_reserved2; /* Reserved
     D* ino_t d_fileno; /* The file number of the file
     D* unsigned int d_reclen; /* Length of this directory entr
     D* * in bytes
     D* int d_reserved3; /* Reserved
     D* char d_reserved4[8]; /* Reserved
     D* qlg_nls_t d_nlsinfo; /* National Language Information
     D* * about d_name
     D* unsigned int d_namelen; /* Length of the name, in bytes
     D* * excluding NULL terminator
     D* char d_name[_QP0L_DIR_NAME]; /* Name...null terminated
     D*
     D* };
     D*
     D p_dirent s *
     D dirent ds based(p_dirent)
     D d_reserv1 16A
     D d_reserv2 10U 0
     D d_fileno 10U 0
     D d_reclen 10U 0
     D d_reserv3 10I 0
     D d_reserv4 8A
     D d_nlsinfo 12A
     D nls_ccsid 10I 0 OVERLAY(d_nlsinfo:1)
     D nls_cntry 2A OVERLAY(d_nlsinfo:5)
     D nls_lang 3A OVERLAY(d_nlsinfo:7)
     D nls_reserv 3A OVERLAY(d_nlsinfo:10)
     D d_namelen 10U 0
     D d_name 640A

     D*--------------------------------------------------------------------
     D* Determine file accessibility
     D*
     D* int access(const char *path, int amode)
     D*
     D*--------------------------------------------------------------------
     D access PR 10I 0 ExtProc('access')
     D Path * Value
     D amode 10I 0 Value
     D*--------------------------------------------------------------------
     D* Change Directory
     D*
     D* int chdir(const char *path)
     D*--------------------------------------------------------------------
     D chdir PR 10I 0 ExtProc('chdir')
     D path * Value
     D*--------------------------------------------------------------------
     D* Change file authorizations
     D*
     D* int chmod(const char *path, mode_t mode)
     D*--------------------------------------------------------------------
     D chmod PR 10I 0 ExtProc('chmod')
     D path * Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Change Owner/Group of File
     D*
     D* int chown(const char *path, uid_t owner, gid_t group)
     D*--------------------------------------------------------------------
     D chown PR 10I 0 ExtProc('chown')
     D path * Value
     D owner 10U 0 Value
     D group 10U 0 Value
     D*--------------------------------------------------------------------
     D* Close a file
     D*
     D* int close(int fildes)
     D*--------------------------------------------------------------------
     D close PR 10I 0 ExtProc('close')
     D handle 10I 0 value
     D*--------------------------------------------------------------------
     D* Close a directory
     D*
     D* int closedir(DIR *dirp)
     D*--------------------------------------------------------------------
     D closedir PR 10I 0 EXTPROC('closedir')
     D dirhandle * VALUE
     D*--------------------------------------------------------------------
     D* Create or Rewrite File
     D*
     D* int creat(const char *path, mode_t mode)
     D*--------------------------------------------------------------------
     D creat PR 10I 0 ExtProc('creat')
     D path * Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Duplicate open file descriptor
     D*
     D* int dup(int fildes)
     D*--------------------------------------------------------------------
     D dup PR 10I 0 ExtProc('dup')
     D fildes 10I 0 Value
     D*--------------------------------------------------------------------
     D* Duplicate open file descriptor to another descriptor
     D*
     D* int dup2(int fildes, int fildes2)
     D*--------------------------------------------------------------------
     D dup2 PR 10I 0 ExtProc('dup2')
     D fildes 10I 0 Value
     D fildes2 10I 0 Value
     D*--------------------------------------------------------------------
     D* Change file authorizations by descriptor
     D*
     D* int fchmod(int fildes, mode_t mode)
     D*--------------------------------------------------------------------
     D fchmod PR 10I 0 ExtProc('fchmod')
     D fildes 10I 0 Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Change Owner and Group of File by Descriptor
     D*
     D* int fchown(int fildes, uid_t owner, gid_t group)
     D*--------------------------------------------------------------------
     D fchown PR 10I 0 ExtProc('fchown')
     D fildes 10I 0 Value
     D owner 10U 0 Value
     D group 10U 0 Value
     D*--------------------------------------------------------------------
     D* Perform File Control
     D*
     D* int fcntl(int fildes, int cmd, . . .)
     D*--------------------------------------------------------------------
     D fcntl PR 10I 0 ExtProc('fcntl')
     D fildes 10I 0 Value
     D cmd 10I 0 Value
     D arg 10I 0 Value options(*nopass)
     D*--------------------------------------------------------------------
     D* Get configurable path name variables by descriptor
     D*
     D* long fpathconf(int fildes, int name)
     D*--------------------------------------------------------------------
     D fpathconf PR 10I 0 ExtProc('fpathconf')
     D fildes 10I 0 Value
     D name 10I 0 Value
     D*--------------------------------------------------------------------
     D* Get File Information by Descriptor
     D*
     D* int fstat(int fildes, struct stat *buf)
     D*--------------------------------------------------------------------
     D fstat PR 10I 0 ExtProc('fstat')
     D fildes 10I 0 Value
     D buf * Value
     D*--------------------------------------------------------------------
     D* Synchronize Changes to fIle
     D*
     D* int fsync(int fildes)
     D*--------------------------------------------------------------------
     D fsync PR 10I 0 ExtProc('fsync')
     D fildes 10I 0 Value
     D*--------------------------------------------------------------------
     D* Truncate file
     D*
     D* int ftruncate(int fildes, off_t length)
     D*--------------------------------------------------------------------
     D ftruncate PR 10I 0 ExtProc('ftruncate')
     D fildes 10I 0 Value
     D length 10I 0 Value
     D*--------------------------------------------------------------------
     D* Get current working directory
     D*
     D* char *getcwd(char *buf, size_t size)
     D*--------------------------------------------------------------------
     D getcwd PR * ExtProc('getcwd')
     D buf * Value
     D size 10U 0 Value
     D*--------------------------------------------------------------------
     D* Get effective group ID
     D*
     D* gid_t getegid(void)
     D*--------------------------------------------------------------------
     D getegid PR 10U 0 ExtProc('getegid')
     D*--------------------------------------------------------------------
     D* Get effective user ID
     D*
     D* uid_t geteuid(void)
     D*--------------------------------------------------------------------
     D geteuid PR 10U 0 ExtProc('geteuid')
     D*--------------------------------------------------------------------
     D* Get Real Group ID
     D*
     D* gid_t getgid(void)
     D*--------------------------------------------------------------------
     D getgid PR 10U 0 ExtProc('getgid')
     D*--------------------------------------------------------------------
     D* Get group information from group ID
     D*
     D* struct group *getgrgid(gid_t gid)
     D*--------------------------------------------------------------------
     D getgrid PR * ExtProc('getgrgid')
     D gid 10U 0 VALUE
     D*--------------------------------------------------------------------
     D* Get group info using group name
     D*
     D* struct group *getgrnam(const char *name)
     D*--------------------------------------------------------------------
     D getgrnam PR * ExtProc('getgrnam')
     D name * VALUE
     D*--------------------------------------------------------------------
     D* Get group IDs
     D*
     D* int getgroups(int gidsetsize, gid_t grouplist[])
     D*--------------------------------------------------------------------
     D getgroups PR * ExtProc('getgroups')
     D gidsetsize 10I 0 VALUE
     D grouplist *
     D*--------------------------------------------------------------------
     D* Get user information by user-name
     D*
     D* (Don't let the name mislead you, this does not return the password,
     D* the user info database on unix systems is called "passwd",
     D* therefore, getting the user info is called "getpw")
     D*
     D* struct passwd *getpwnam(const char *name)
     D*--------------------------------------------------------------------
     D getpwnam PR * ExtProc('getpwnam')
     D name * Value
     D*--------------------------------------------------------------------
     D* Get user information by user-id
     D*
     D* (Don't let the name mislead you, this does not return the password,
     D* the user info database on unix systems is called "passwd",
     D* therefore, getting the user info is called "getpw")
     D*
     D* struct passwd *getpwuid(uid_t uid)
     D*--------------------------------------------------------------------
     D getpwuid PR * extproc('getpwuid')
     D uid 10U 0 Value
     D*--------------------------------------------------------------------
     D* Get Real User-ID
     D*
     D* uid_t getuid(void)
     D*--------------------------------------------------------------------
     D getuid PR 10U 0 ExtProc('getuid')
     D*--------------------------------------------------------------------
     D* Perform I/O Control Request
     D*
     D* int ioctl(int fildes, unsigned long req, ...)
     D*--------------------------------------------------------------------
     D ioctl PR 10I 0 ExtProc('ioctl')
     D fildes 10I 0 Value
     D req 10U 0 Value
     D arg * Value
     D*--------------------------------------------------------------------
     D* Create Link to File
     D*
     D* int link(const char *existing, const char *new)
     D*--------------------------------------------------------------------
     D link PR 10I 0 ExtProc('link')
     D existing * Value
     D new * Value
     D*--------------------------------------------------------------------
     D* Set File Read/Write Offset
     D*
     D* off_t lseek(int fildes, off_t offset, int whence)
     D*--------------------------------------------------------------------
     D lseek PR 10I 0 ExtProc('lseek')
     D offset 10I 0
     D whence 10I 0
     D*--------------------------------------------------------------------
     D* Get File or Link Information
     D*
     D* int lstat(const char *path, struct stat *buf)
     D*--------------------------------------------------------------------
     D lstat PR 10I 0 ExtProc('lstat')
     D path * Value
     D buf * Value
     D*--------------------------------------------------------------------
     D* Make Directory
     D*
     D* int mkdir(const char *path, mode_t mode)
     D*--------------------------------------------------------------------
     D mkdir PR 10I 0 ExtProc('mkdir')
     D path * Value
     D mode 10U 0 Value
     D*--------------------------------------------------------------------
     D* Open a File
     D*
     D* int open(const char *path, int oflag, . . .);
     D*--------------------------------------------------------------------
     D open PR 10I 0 ExtProc('open')
     D filename * value
     D openflags 10I 0 value
     D mode 10U 0 value options(*nopass)
     D codepage 10U 0 value options(*nopass)
     D*--------------------------------------------------------------------
     D* Open a Directory
     D*
     D* DIR *opendir(const char *dirname)
     D*--------------------------------------------------------------------
     D opendir PR * EXTPROC('opendir')
     D dirname * VALUE
     D*--------------------------------------------------------------------
     D* Get configurable path name variables
     D*
     D* long pathconf(const char *path, int name)
     D*--------------------------------------------------------------------
     D pathconf PR 10I 0 ExtProc('pathconf')
     D path * Value
     D name 10I 0 Value
     D*--------------------------------------------------------------------
     D* Get path name of object from its file id
     D*
     D* char *Qp0lGetPathFromFileID(char *buf, size_t size,Qp0lFID_t fileid
     D*--------------------------------------------------------------------
     D GetPathFID PR * ExtProc('Qp0lGetPathFromFileID')
     D buf * Value
     D size 10U 0 Value
     D fileid 16A
     D*--------------------------------------------------------------------
     D* Rename File or Directory, return error if a file/dir under the
     D* "new" name already exists.
     D*
     D* int Qp0lRenameKeep(const char *old, const char *new)
     D*--------------------------------------------------------------------
     D Rename PR 10I 0 ExtProc('Qp0lRenameKeep')
     D old * Value
     D new * Value
     D*--------------------------------------------------------------------
     D* Rename File or Directory. If another file/dir exists under the
     D* "new" name, delete it first.
     D*
     D* int Qp0lRenameUnlink(const char *old, const char *new)
     D*--------------------------------------------------------------------
     D Replace PR 10I 0 ExtProc('Qp0lRenameUnlink')
     D old * Value
     D new * Value
     D*--------------------------------------------------------------------
     D* Read From a File
     D*
     D* ssize_t read(int handle, void *buffer, size_t bytes);
     D*--------------------------------------------------------------------
     D read PR 10I 0 ExtProc('read')
     D handle 10i 0 value
     D buffer * value
     D bytes 10U 0 value
     D*--------------------------------------------------------------------
     D* Read Directory Entry
     D*
     D* struct dirent *readdir(DIR *dirp)
     D*--------------------------------------------------------------------
     D readdir PR * EXTPROC('readdir')
     D dirp * VALUE
     D*--------------------------------------------------------------------
     D* Read Value of Symbolic Link
     D*
     D* int readlink(const char *path, char *buf, size_t bufsiz)
     D*--------------------------------------------------------------------
     D readlink PR 10I 0 ExtProc('readlink')
     D path * value
     D buf * value
     D bufsiz 10U 0 value
     D*--------------------------------------------------------------------
     D* Reset Directory Stream to Beginning
     D*
     D* void rewinddir(DIR *dirp)
     D*--------------------------------------------------------------------
     D rewinddir PR ExtProc('rewinddir')
     D dirp * value

     D*--------------------------------------------------------------------
     D* Remove Directory
     D*
     D* int rmdir(const char *path)
     D*--------------------------------------------------------------------
     D rmdir PR 10I 0 ExtProc('rmdir')
     D path * value
     D*--------------------------------------------------------------------
     D* Get File Information
     D*
     D* int stat(const char *path, struct stat *buf)
     D*--------------------------------------------------------------------
     D stat PR 10I 0 ExtProc('stat')
     D path * value
     D buf * value
     D*--------------------------------------------------------------------
     D* Make Symbolic Link
     D*
     D* int symlink(const char *pname, const char *slink)
     D*--------------------------------------------------------------------
     D symlink PR 10I 0 ExtProc('symlink')
     D pname * value
     D slink * value
     D*--------------------------------------------------------------------
     D* Get system configuration variables
     D*
     D* long sysconf(int name)
     D*--------------------------------------------------------------------
     D sysconf PR 10I 0 ExtProc('sysconf')
     D name 10I 0 Value
     D*--------------------------------------------------------------------
     D* Set Authorization Mask for Job
     D*
     D* mode_t umask(mode_t cmask)
     D*--------------------------------------------------------------------
     D umask PR 10U 0 ExtProc('umask')
     D cmask 10U 0 Value
     D*--------------------------------------------------------------------
     D* Remove Link to File. (Deletes Directory Entry for File, and if
     D* this was the last link to the file data, the file itself is
     D* also deleted)
     D*
     D* int unlink(const char *path)
     D*--------------------------------------------------------------------
     D unlink PR 10I 0 ExtProc('unlink')
     D pa|h * Value
     D*--------------------------------------------------------------------
     D* Set File Access & Modification Times
     D*
     D* int utime(const char *path, const struct utimbuf *times)
     D*--------------------------------------------------------------------
     D utime PR 10I 0 ExtProc('utime')
     D path * value
     D times * value
     D*--------------------------------------------------------------------
     D* Write to a file
     D*
     D* ssize_t write(int fildes, const void *buf, size_t bytes)
     D*--------------------------------------------------------------------
     D write PR 10I 0 ExtProc('write')
     D handle 10I 0 value
     D buffer * value
     D bytes 10U 0 value

Thanks to Scott Klement
阅读(867) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~