title: POSIX API for ISLisp author: Darren Bane copyright: 2021 Darren Bane, CC BY_SA # Abstract A mapping from Scheme's SRFI-170, "POSIX API", to ISLisp is defined. # Introduction Although they are similar, Scheme and ISLisp are not the same language. This document adapts the standard Scheme POSIX interface to ISLisp accounting for: * Different naming conventions (e.g. `predicatep` rather than `predicate?`) * Historical practice, in particular compatibility with OpenLisp (the only commercial implementation) is prioritised # Dependencies SRFI-170 depends on at least part of several other SRFIs, in particular: * SRFI-19, "Time Data Types and Procedures" * SRFI-106, "Networking operations" * SRFI-158, "Generators and Accumulators" SRFI-39, "Parameter objects", is superseded by ISLisp's dynamic variables. Only SRFI-106 is implemented fully; the subset of required symbols is taken from the others. # Mapping Any symbols not mentioned in the following are unchanged from SRFI-170. ## S3.3, "File system" ```table ┌──────────────────┬──────────────────┐ │ Scheme │ ISLisp │ ╞══════════════════╪══════════════════╡ │ file-info? │ file-info-p │ ├──────────────────┼──────────────────┤ │ delete-directory │ remove-directory │ └──────────────────┴──────────────────┘ ``` ## S3.5, "Process state" ```table ┌────────────────────────┬──────────────────┐ │ Scheme │ ISLisp │ ╞════════════════════════╪══════════════════╡ │ set-umask! │ set-umask │ ├────────────────────────┼──────────────────┤ │ set-current-directory! │ change-directory │ ├────────────────────────┼──────────────────┤ │ pid │ getpid │ ├────────────────────────┼──────────────────┤ │ user-uid │ getuid │ └────────────────────────┴──────────────────┘ ``` ## S3.11, "Environment variables" ```table ┌──────────────────────────┬────────┐ │ Scheme │ ISLisp │ ╞══════════════════════════╪════════╡ │ get-environment-variable │ getenv │ └──────────────────────────┴────────┘ ``` ## S3.12, "Terminal device control" ```table ┌───────────┬───────────┐ │ Scheme │ ISLisp │ ╞═══════════╪═══════════╡ │ terminal? │ terminalp │ └───────────┴───────────┘ ```