packages.scm 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. ; Part of Scheme 48 1.9. See file COPYING for notices and license.
  2. ; Authors: Richard Kelsey, Jonathan Rees, Mike Sperber, Roderic Morris,
  3. ; Eric Knauel, Martin Gasbichler, Will Noble
  4. (define-interface posix-files-interface
  5. (export directory-stream?
  6. open-directory-stream ; name -> directory
  7. read-directory-stream ; directory -> name or #f
  8. close-directory-stream ; directory -> ()
  9. list-directory ; name -> list of names
  10. working-directory
  11. set-working-directory!
  12. open-file
  13. (file-options :syntax)
  14. file-options-on?
  15. file-options-union
  16. make-directory
  17. make-fifo
  18. link
  19. unlink
  20. remove-directory
  21. rename
  22. get-file-info get-file/link-info get-port-info
  23. file-info?
  24. file-info-name
  25. file-info-type
  26. file-info-device
  27. file-info-inode
  28. file-info-mode
  29. file-info-link-count
  30. file-info-owner
  31. file-info-group
  32. file-info-size
  33. file-info-last-access
  34. file-info-last-modification
  35. file-info-last-status-change
  36. file-type? file-type-name
  37. (file-type :syntax)
  38. set-file-creation-mask!
  39. file-mode?
  40. (file-mode :syntax)
  41. file-mode+ file-mode-
  42. file-mode=? file-mode<=? file-mode>=?
  43. file-mode->integer integer->file-mode
  44. accessible?
  45. (access-mode :syntax)
  46. create-symbolic-link
  47. read-symbolic-link
  48. ))
  49. (define-interface posix-time-interface
  50. (export make-time time? time-seconds
  51. time=? time<? time<=? time>? time>=?
  52. time->string
  53. current-time
  54. make-date date?
  55. date-second date-minute date-hour
  56. date-month-day date-month
  57. date-year
  58. date-week-day
  59. date-year-day
  60. date-dst
  61. date->string
  62. time->utc-date
  63. time->local-date
  64. date->time
  65. format-date
  66. ))
  67. (define-interface posix-users-interface
  68. (export user-id?
  69. user-id->integer integer->user-id
  70. user-id=?
  71. user-info?
  72. user-info-name user-info-id user-info-group
  73. user-info-home-directory user-info-shell
  74. user-id->user-info
  75. name->user-info
  76. group-id?
  77. group-id->integer integer->group-id
  78. group-id=?
  79. group-info?
  80. group-info-name group-info-id group-info-members
  81. group-id->group-info
  82. name->group-info
  83. ))
  84. (define-interface posix-errnos-interface
  85. (export (errno :syntax)
  86. errno-name
  87. errno-os-number
  88. integer->errno
  89. name->errno
  90. errno=?
  91. errno?))
  92. (define-interface posix-syslog-interface
  93. (export (syslog-option :syntax)
  94. syslog-option?
  95. make-syslog-options
  96. syslog-options?
  97. (syslog-options :syntax)
  98. (syslog-facility :syntax)
  99. syslog-facility?
  100. (syslog-level :syntax)
  101. syslog-level?
  102. make-syslog-mask
  103. syslog-mask?
  104. (syslog-mask :syntax)
  105. syslog-mask-all
  106. syslog-mask-upto
  107. with-syslog-destination
  108. syslog
  109. open-syslog-channel
  110. close-syslog-channel
  111. with-syslog-channel))
  112. (define-structures ((posix-files posix-files-interface)
  113. (posix-users posix-users-interface))
  114. (open scheme define-record-types finite-types
  115. external-calls load-dynamic-externals
  116. bitwise ;for manipulating protection masks
  117. exceptions
  118. posix-file-options
  119. posix-time ; external binding for `posix-time-type'
  120. channels
  121. channel-i/o
  122. channel-ports
  123. os-strings)
  124. (for-syntax (open scheme bitwise))
  125. (files dir))
  126. (define-structure posix-time posix-time-interface
  127. (open scheme
  128. define-record-types
  129. external-calls load-dynamic-externals
  130. os-strings)
  131. (files time))
  132. (define-structure posix-file-options (export ((file-option file-options)
  133. :syntax)
  134. file-options?
  135. file-options-on?
  136. file-options-union)
  137. (open scheme define-record-types finite-types enum-sets
  138. external-calls load-dynamic-externals
  139. bitwise)
  140. (files file-options))
  141. (define-interface posix-process-data-interface
  142. (export get-process-id get-parent-process-id
  143. ; I am not happy with these names. They don't mention the process.
  144. get-user-id get-effective-user-id
  145. set-user-id! set-effective-user-id!
  146. get-group-id get-effective-group-id
  147. set-group-id! set-effective-group-id!
  148. get-groups
  149. get-login-name
  150. lookup-environment-variable
  151. lookup-environment-variable->string
  152. set-environment-variable!
  153. environment-alist
  154. environment-alist-as-strings
  155. ))
  156. (define-interface posix-platform-names-interface
  157. (export os-name os-node-name os-release-name os-version-name
  158. machine-name))
  159. (define-structures ((posix-process-data posix-process-data-interface)
  160. (posix-platform-names posix-platform-names-interface))
  161. (open scheme define-record-types
  162. external-calls load-dynamic-externals
  163. os-strings
  164. interrupts
  165. posix-processes posix-users posix-time) ; we need these to be loaded
  166. (files proc-env))
  167. (define-interface posix-processes-interface
  168. (export process-id?
  169. process-id=?
  170. process-id->integer
  171. integer->process-id
  172. process-id-exit-status
  173. process-id-terminating-signal
  174. fork
  175. fork-and-forget
  176. exec
  177. exec-with-environment
  178. exec-file
  179. exec-file-with-environment
  180. exec-with-alias
  181. exit
  182. wait-for-child-process
  183. signal-process
  184. (signal :syntax)
  185. signal-name
  186. signal-os-number
  187. integer->signal
  188. name->signal
  189. signal=?
  190. signal?
  191. make-signal-queue
  192. signal-queue?
  193. signal-queue-monitored-signals
  194. dequeue-signal!
  195. maybe-dequeue-signal!
  196. signal-queue-signals
  197. add-signal-queue-signal!
  198. remove-signal-queue-signal!
  199. ))
  200. (define-structure posix-processes posix-processes-interface
  201. (open scheme
  202. define-record-types finite-types
  203. reinitializers
  204. external-calls load-dynamic-externals
  205. interrupts
  206. placeholders
  207. weak
  208. value-pipes
  209. debug-messages
  210. session-data
  211. exceptions
  212. root-scheduler ;scheme-exit-now
  213. channel-ports ;force-channel-output-ports!
  214. interrupts ;set-interrupt-handler!
  215. architecture ;interrupts enum
  216. os-strings)
  217. (files proc
  218. signal))
  219. (define-interface posix-i/o-interface
  220. (export open-pipe
  221. dup
  222. dup-switching-mode
  223. dup2
  224. remap-file-descriptors!
  225. close-all-but
  226. close-on-exec?
  227. set-close-on-exec?!
  228. i/o-flags
  229. set-i/o-flags!
  230. fd-port?
  231. port->fd
  232. port-is-a-terminal?
  233. port-terminal-name
  234. ))
  235. (define-structure posix-i/o posix-i/o-interface
  236. (open scheme
  237. external-calls load-dynamic-externals
  238. i/o ;read-block
  239. channels
  240. channel-i/o
  241. channel-ports
  242. exceptions
  243. util
  244. posix-file-options
  245. ports ;port?
  246. os-strings
  247. architecture
  248. enum-case)
  249. (files io))
  250. (define-interface posix-regexps-interface
  251. (export make-regexp
  252. (regexp-option :syntax)
  253. regexp?
  254. regexp-match
  255. match?
  256. match-start
  257. match-end
  258. match-submatches
  259. ))
  260. (define-structures ((posix-regexps posix-regexps-interface)
  261. (posix-regexps-internal (export make-match)))
  262. (open scheme define-record-types finite-types
  263. external-calls load-dynamic-externals
  264. (subset big-util (string->immutable-string))
  265. exceptions
  266. os-strings text-codecs)
  267. (files regexp))
  268. (define-interface regexps-interface
  269. (export set
  270. range ranges
  271. ascii-range ascii-ranges
  272. negate intersection union subtract
  273. regexp?
  274. lower-case upper-case alphabetic
  275. numeric hexdigit
  276. alphanumeric
  277. punctuation whitespace blank
  278. graphic printing
  279. control
  280. sequence one-of text repeat
  281. string-start string-end
  282. ignore-case use-case
  283. submatch no-submatches
  284. any-match? exact-match?
  285. match
  286. match?
  287. match-start match-end match-submatches))
  288. (define-interface regexps-internal-interface
  289. (export set? char-in-set? set-string
  290. the-empty-set empty-set?
  291. string-start? string-end?
  292. submatch? submatch-exp submatch-id
  293. sequence? sequence-exps
  294. epsilon epsilon?
  295. one-of? one-of-exps
  296. repeat? repeat-low repeat-high repeat-exp))
  297. (define-structures ((regexps regexps-interface)
  298. (regexps-internal regexps-internal-interface))
  299. (open scheme define-record-types mvlet ascii unicode exceptions
  300. bitwise bigbit
  301. reduce
  302. (modify posix-regexps (hide regexp?) (rename (make-regexp make-posix-regexp)))
  303. posix-regexps-internal
  304. (subset util (every)))
  305. (optimize auto-integrate)
  306. (files func-regexp))
  307. (define-structure posix-errnos posix-errnos-interface
  308. (open scheme
  309. exceptions
  310. define-record-types
  311. finite-types
  312. external-calls load-dynamic-externals
  313. (subset unicode-char-maps (string-upcase string-foldcase))
  314. session-data
  315. interrupts
  316. reinitializers
  317. weak)
  318. (files errno))
  319. (define-structure posix-syslog posix-syslog-interface
  320. (open scheme
  321. exceptions
  322. fluids
  323. locks
  324. define-record-types
  325. finite-types enum-sets enum-sets-internal
  326. external-calls
  327. load-dynamic-externals
  328. reinitializers
  329. os-strings)
  330. (files syslog))
  331. ; All in one chunk.
  332. (define-structure posix (compound-interface
  333. (interface-of posix-processes)
  334. (interface-of posix-process-data)
  335. (interface-of posix-platform-names)
  336. (interface-of posix-files)
  337. (interface-of posix-i/o)
  338. (interface-of posix-time)
  339. (interface-of posix-users)
  340. (interface-of posix-regexps)
  341. (interface-of posix-errnos)
  342. (interface-of posix-syslog))
  343. (open posix-processes
  344. posix-process-data
  345. posix-platform-names
  346. posix-files
  347. posix-i/o
  348. posix-time
  349. posix-users
  350. posix-regexps
  351. posix-errnos
  352. posix-syslog))