The “POSIX” module makes some system calls available from lisp. Not all of these system calls are actually POSIX, so this package has a nickname “OS”.
This module is present in the base linking set by default.
When this module is present, *FEATURES*
contains the symbol :SYSCALLS
.
(POSIX:RESOLVE-HOST-IPADDR
&OPTIONAL
host
)
Returns the HOSTENT structure:
When host
is omitted or :DEFAULT
, return the data for the
current host. When host
is NIL
, all the
host database is returned as a list (this would be the contents of the
/etc/hosts
file on a UNIX system or
${windir}/system32/etc/hosts
on a Win32 system).
This is an interface
to gethostent
,
gethostbyname
,
and gethostbyaddr
.
(OS:SERVICE
&OPTIONAL
service-name
protocol
)
service-name
and protocol
,
or all services as a LIST
if service-name
is missing or NIL
.(POSIX:FILE-STAT
pathname
&OPTIONAL
link-p
)
Return the FILE-STAT structure.
pathname
can be a STREAM
, a PATHNAME
, a STRING
or a
NUMBER
(on a UNIX system, meaning file descriptor).
The first slot of the structure returned is the string or the
number on which stat
,
fstat
,
or lstat
was called.
The other slots are numbers, members of the struct stat:
dev
ino
mode
nlink
uid
gid
rdev
size
atime
mtime
ctime
blksize
blocks
All slots are read-only.
If the system does not support a particular field (e.g.,
Win32 prior to 2000 does not have hard links), NIL
(or the
default, like 1 for the number of hard links for old Win32) is
returned.
Normally, one would expect (POSIX:FILE-STAT
"foo")
and (POSIX:FILE-STAT (
to
return “similar” objects (OPEN
"foo"))OPEN
ing a file changes its
access time though). This is not the case on Win32,
where stat
works but fstat
does not.
Specifically, fstat
requires
an int argument of an unknown nature,
and it is not clear how do deduce it from the Win32 file handle.
Therefore, instead of always failing on open FILE-STREAM
arguments,
this function calls
GetFileInformationByHandle
and
fills the FILE-STAT return value based on that.
(POSIX:SET-FILE-STAT
pathname
&KEY
:ATIME :MTIME :MODE :UID :GID)
chmod
,
chown
,
and utime
.
(POSIX:STAT-VFS
pathname
)
Return a STAT-VFS structure.
pathname
can be a STREAM
, a PATHNAME
, a STRING
or a
NUMBER
(on a UNIX system, meaning file descriptor).
The first slot of the structure returned is the string
or the number on which statvfs
or
fstatvfs
was called.
The other slots are members of the struct statvfs:
bsize
frsize
blocks
frsize
.bfree
bavail
files
ffree
favail
fsid
flag
:READ-ONLY
.
namemax
vol-name
fs-type
All slots are read-only.
(OS:FILE-INFO
pathname
&OPTIONAL
all)
Return the FILE-INFO structure.
pathname
should be a pathname designator. The 7 slots are
attributes |
ctime |
atime |
wtime |
size |
name |
name-short |
When pathname
is wild, returns just the first match,
unless the second (optional) argument is non-NIL
, in which case a
LIST
of objects is returned, one for each match.
(POSIX:USER-INFO
&OPTIONAL
user
)
Return the USER-INFO structure (name,
encoded password, UID, GID, full name, home directory, shell).
user
should be a STRING
(getpwnam
is used) or an INTEGER
(getpwuid
is used).
When user
is missing or NIL
, return all
users (using getpwent
).
When user
is :DEFAULT
, return the information about the current user
(using getlogin
or getuid
).
Platform Dependent: UNIX platform only.
(POSIX:GROUP-INFO
&OPTIONAL
group
)
Return the GROUP-INFO structure (name,
GID, member LIST
). group
should be a
STRING
(getgrnam
is used) or an
INTEGER
(getgrgid
is used).
When group
is missing or NIL
, return all
groups (using getgrent
).
Platform Dependent: UNIX platform only.
(POSIX:UNAME
)
uname
.(POSIX:SYSCONF
&OPTIONAL
what
)
(POSIX:CONFSTR
&OPTIONAL
what
)
what
is missing or
NIL
), by calling sysconf
and confstr
respectively.
(POSIX:PATHCONF
pathname
&OPTIONAL
what
)
what
is missing or
NIL
), by calling fpathconf
on
open file streams and pathconf
on
all other pathname designators.(POSIX:RLIMIT
&OPTIONAL
what
)
what
is specified or the association list of all available
limits (as an RLIMIT structure) when what
is
missing or NIL
, by calling getrlimit
.
(SETF
(POSIX:RLIMIT
what
)
(VALUES
cur max))
(SETF
(POSIX:RLIMIT
what
) rlimit)
(SETF
(POSIX:RLIMIT
) rlimit-alist)
Set the limits using
setrlimit
.
cur
and max
are numbers
(or NIL
for RLIM_INFINITY
).rlimit
is an RLIMIT structure.rlimit-alist
is an association list, as returned by
(POSIX:RLIMIT
)
.(POSIX:USAGE
)
getrusage
.
(POSIX:ERF
real
)
(POSIX:ERFC
real
)
(POSIX:J0
real
)
(POSIX:J1
real
)
(POSIX:JN
integer
real
)
(POSIX:Y0
real
)
(POSIX:Y1
real
)
(POSIX:YN
integer
real
)
(POSIX:GAMMA
real
)
(POSIX:LGAMMA
real
)
Compute the error functions, Bessel functions and
Gamma. These functions are required by the POSIX standard and should
be available in libm.so
.
Please note that these functions do not provide
lisp-style error handling and precision, and do all the computations
at the DOUBLE-FLOAT
level.
(POSIX:STREAM-LOCK
stream
lock-p
&KEY
(:BLOCK T
) (:SHARED NIL
) (:START 0) (:END NIL
))
Set or remove a file lock for the (portion of the)
file associated with stream
,
depending on lock-p
.
When block
is NIL
, the call is non-blocking,
and when locking fails, it returns NIL
.
When shared
is non-NIL
,
then lock can be shared between several callers.
Several processes can set a shared
(i.e., read) lock, but only one can set
an exclusive
(i.e., write,
or non-shared
) lock.
Uses fcntl
or LockFileEx
.
(POSIX:WITH-STREAM-LOCK
(stream
&REST
options
) &BODY
body
)
stream
, execute the body
, unlock
the stream
. Pass options
to
POSIX:STREAM-LOCK
.
(POSIX:STREAM-OPTIONS
stream
command
&OPTIONAL
value
)
fcntl
,
command
can be :FD
or :FL
.
(POSIX:MKNOD
pathname
type
mode
)
mknod
.
Use :FIFO
to create pipes
and :SOCK
to create sockets.
(POSIX:CONVERT-MODE
mode
)
0644
)
and symbolic (e.g., (:RUSR :WUSR :RGRP
:ROTH)
) file modes.(UMASK
mode
)
umask
.
(POSIX:COPY-FILE
source
destination
&KEY
:METHOD :PRESERVE :IF-EXISTS :IF-DOES-NOT-EXIST)
This is an interface to
symlink
(when method
is :SYMLINK
),
link
(when it is :HARDLINK
),
and rename
(when it is :RENAME
) system calls, as well as,
you guessed it, a generic file copy utility (when method
is :COPY
).
Both source
and destination
may be wild, in which
case TRANSLATE-PATHNAME
is used.
(POSIX:DUPLICATE-HANDLE
fd1
&OPTIONAL
fd2
)
dup
system calls on
UNIX systems and to DuplicateHandle
system call on Win32.(OS:SHORTCUT-INFO pathname
)
#P".lnk"
) file contents in a
SHORTCUT-INFO structure.(OS:MAKE-SHORTCUT pathname
&KEY
:WORKING-DIRECTORY :ARGUMENTS :SHOW-COMMAND :ICON :DESCRIPTION
:HOT-KEY :PATH)
#P".lnk"
) file.
(OS:SYSTEM-INFO)
(OS:VERSION)
(OS:MEMORY-STATUS)
(OS:FILE-PROPERTIES filename set
&KEY
:INITID &ALLOW-OTHER-KEYS
)
Wrapper for the Win32
IPropertyStorage
functionality.
filename
set
:BUILT-IN
or :USER-DEFINED
:INITID
init-id
init-id
specifier value
specifier
the property specifier: an INTEGER
,
KEYWORD
, STRING
or a LIST
of an INTEGER
or a
KEYWORD
and a STRING
.
INTEGER
KEYWORD
Predefined KEYWORD
IDs are
:APPNAME | :CREATE-DTM | :LASTPRINTED | :SUBJECT |
:AUTHOR | :DOC-SECURITY | :LASTSAVE-DTM | :TEMPLATE |
:CHARCOUNT | :EDITTIME | :LOCALE | :THUMBNAIL |
:CODEPAGE | :KEYWORDS | :PAGECOUNT | :TITLE |
:COMMENTS | :LASTAUTHOR | :REVNUMBER | :WORDCOUNT |
STRING
INTEGER
|KEYWORD
STRING
)
value
the new value of the property, a suitable Lisp
object, NIL
or a LIST
of a KEYWORD
and the value
itself. If value
is NIL
, no assignment is done.
:EMPTY
and :NULL
correspond to the VT_EMPTY
and VT_NULL data types.
KEYWORD
in the LIST
specifies the desired type of
the property being set.
Supported types are
:BOOL | :I1 | :LPWSTR | :UI4 |
:BSTR | :I2 | :R4 | :UI8 |
:DATE | :I4 | :R8 | :UINT |
:ERROR | :I8 | :UI1 | |
:FILETIME | :LPSTR | :UI2 |
FILETIMEs are converted to/from the universal time format, while DATEs are not.
Returns the property contents before assignment as multiple values.
(POSIX:CRYPT key
salt
)
crypt
,
arguments are STRING
s.(POSIX:ENCRYPT block
decrypt-p
)
(POSIX:SETKEY key
)
encrypt
and setkey
, respectively.
block
and key
are of type
(VECTOR
(UNSIGNED-BYTE
8) 8)
.
decrypt-p
is BOOLEAN
.
(OS:PHYSICAL-MEMORY)
Return 2 values: total and available physical memory.
(OS:FILE-OWNER
filename
)
Return the owner of the file.
(OS:PRIORITY pid
&OPTIONAL
what
)
Return the process priority, platform-dependent
INTEGER
or platform-independent SYMBOL
, one of
:REALTIME | :NORMAL | :IDLE |
:HIGH | :BELOW-NORMAL | |
:ABOVE-NORMAL | :LOW |
On UNIX calls getpriority
, on
Win32 calls GetPriorityClass
.
SETF
able using setpriority
and
SetPriorityClass
.
(OS:PROCESS-ID)
getpid
,
on Win32 calls GetCurrentProcessId
)
(POSIX:OPENLOG ident &KEY
:PID :CONS :NDELAY :ODELAY :NOWAIT :FACILITY)
openlog
(POSIX:SETLOGMASK
maskpri)
setlogmask
(POSIX:SYSLOG severity facility
format-string
&REST
arguments
)
calls syslog
on
(
APPLY
FORMAT
NIL
format-string
arguments
)
No %
conversion is performed,
you must do all formatting in Lisp.
(POSIX:CLOSELOG)
closelog
(POSIX:KILL pid
signal
)
kill
(POSIX:GETPGRP pid
)
getpgrp
(POSIX:SETPGRP)
setpgrp
;
on non-POSIX systems where it requires 2 arguments (legacy
BSD-style), it is called as setpgrp(0,0)
(POSIX:GETSID pid
)
getsid
(POSIX:SETSID)
setsid
(POSIX:SETPGID
pid
pgid
)
setpgid
(POSIX:ENDUTXENT)
endutxent
(POSIX:GETUTXENT
&OPTIONAL
utmpx)
getutxent
,
returns a STRUCTURE-OBJECT
of
type POSIX:UTMPX, which can be passed to subsequent calls to
this function and re-used.(POSIX:GETUTXID id)
getutxid
,
the argument is filled and returned(POSIX:GETUTXLINE line)
getutxline
,
the argument is filled and returned(POSIX:PUTUTXLINE
utmpx)
pututxline
,
the argument is filled and returned(POSIX:SETUTXENT)
setutxent
(POSIX:GETUID)
(SETF
(POSIX:GETUID) uid
)
getuid
and
setuid
.(POSIX:GETGID)
(SETF
(POSIX:GETGID) gid
)
getgid
and
setgid
.(POSIX:GETEUID)
(SETF
(POSIX:GETEUID) uid
)
geteuid
and
seteuid
.(POSIX:GETEGID)
(SETF
(POSIX:GETEGID) gid
)
getegid
and
setegid
.(OS:STRING-TIME format-string
&OPTIONAL
object
timezone)
object
is a STRING
, is is parsed
according to format-string
by strptime
.
When it is an INTEGER
, it is formatted according to format-string
by strftime
.
object
defaults to (GET-UNIVERSAL-TIME
)
.
(POSIX:MKSTEMP filename
&KEY
:DIRECTION
:ELEMENT-TYPE
:EXTERNAL-FORMAT
:BUFFERED
)
calls mkstemp
,
returns a FILE-STREAM
.
:DIRECTION
should allow output.
When mkstemp
is missing,
use tempnam
.
On Win32 use GetTempFileName
.
(POSIX:MKDTEMP
filename
)
mkdtemp
(similar to mkstemp
but not in POSIX),
returns the namestring of a new empty temporary directory.
(POSIX:SYNC &OPTIONAL
stream
)
fsync
(FlushFileBuffers
on Win32)
on the file descriptor associated with stream
,
or sync
when stream
is not suppliedPOSIX:MAKE-XTERM-IO-STREAM
&KEY
title)When running under the X Window System, you can create a bidirectional STREAM
,
which uses a new dedicated xterm, using the function POSIX:MAKE-XTERM-IO-STREAM
:
(SETQ
*ERROR-OUTPUT*
(SETQ
*DEBUG-IO*
(POSIX:MAKE-XTERM-IO-STREAM
:title "clisp errors and debug")))
Platform Dependent: UNIX platform only.
POSIX:FFS
n
)ffs
, but implemented in Lisp and
supports BIGNUM
s.These notes document CLISP version 2.41 | Last modified: 2006-10-13 |