1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
;;; groupings.alist -*-scheme-*-
;; Copyright (C) 2002, 2006 Free Software Foundation, Inc.
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU Lesser General Public License
;; as published by the Free Software Foundation; either version 3, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
;; Lesser General Public License for more details.
;;
;; You should have received a copy of the GNU Lesser General Public
;; License along with this software; see the file COPYING.LESSER. If
;; not, write to the Free Software Foundation, Inc., 51 Franklin
;; Street, Fifth Floor, Boston, MA 02110-1301 USA
;;; Commentary:
;; This file describes interface element groupings.
;; See (scripts scan-api) commentary for more info.
;; NOTE: Order matters; put simple ones first, composites after.
;;
;; TODO: Add goops, add math, etc etc.
;; Group `guile-C-API' needs much more serious thought.
;;; Code:
(
;; Integrity checks
(C+scheme
(description "in both groups `scheme' and `C' -- should be empty!")
(grok () (lambda (x)
(and (in-group? x 'Scheme)
(in-group? x 'C)))))
;; Embedded foreign libraries
(embedded-libltdl
(description "begins with lt_ -- should become empty over time")
(grok () (lambda (x)
(name-prefix? x "lt_"))))
;; By name
(libguile-internal
(description "begins with scm_i_")
(grok () (lambda (x)
(name-prefix? x "scm_i_"))))
(gdb
(description "begins with gdb_")
(grok () (lambda (x)
(name-prefix? x "gdb_"))))
(coop
(description "begins with coop_")
(grok () (lambda (x)
(name-prefix? x "coop_"))))
(gh
(description "begins with gh_")
(grok () (lambda (x)
(name-prefix? x "gh_"))))
(g-fdes
(description "begins with g and ends with fds")
(grok () (lambda (x)
(name-prefix? x "g.+fds$"))))
(r-fdes
(description "begins with r and ends with fds")
(grok () (lambda (x)
(name-prefix? x "r.+fds$"))))
(scm
(description "begins with scm_")
(grok () (lambda (x)
(name-prefix? x "scm_"))))
(k
(description "constants")
(grok () (lambda (x)
(name-prefix? x "[_A-Z0-9]+$"))))
(POSIX
(description "POSIX support")
(members ; from docs
;; ports and file descriptors
port-revealed set-port-revealed! fileno port->fdes fdopen fdes->ports
fdes->inport fdes->outport primitive-move->fdes move->fdes
release-port-handle fsync open open-fdes close close-fdes unread-char
unread-string pipe dup->fdes dup->inport dup->outport dup dup->port
duplicate-port redirect-port dup2 port-mode close-all-ports-except
port-for-each setvbuf fcntl flock select
O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT _IONBF _IOLBF _IOFBF
F_DUPFD F_GETFD F_SETFD F_GETFL F_SETFL F_GETOWN F_SETOWN FD_CLOEXEC
LOCK_SH LOCK_EX LOCK_UN LOCK_NB
;; file system
access? stat lstat readlink chown chmod utime delete-file copy-file
rename-file link symlink mkdir rmdir opendir directory-stream? readdir
rewinddir closedir sync mknod tmpnam mkstemp! dirname basename
R_OK W_OK X_OK F_OK
stat:perms stat:type stat:blocks stat:blksize stat:ctime stat:mtime
stat:atime stat:size stat:rdev stat:gid stat:uid stat:nlink stat:mode
stat:ino stat:dev
;; user information
passwd:name passwd:passwd passwd:uid passwd:gid passwd:gecos passwd:dir
passwd:shell group:name group:passwd group:gid group:mem
getpwuid getpwnam name setpwent getpwent endpwent setpw getpw getgrgid
getgrnam setgrent getgrent endgrent setgr getgr cuserid getlogin
;; time
tm:sec set-tm:sec tm:min set-tm:min tm:hour set-tm:hour tm:mday set-tm:mday
tm:mon set-tm:mon tm:year set-tm:year tm:wday set-tm:wday tm:yday
set-tm:yday tm:isdst set-tm:isdst tm:gmtoff set-tm:gmtoff tm:zone
set-tm:zone tms:clock tms:utime tms:stime tms:cutime tms:cstime
current-time gettimeofday localtime gmtime mktime tzset strftime strptime
times get-internal-real-time get-internal-run-time
;; runtime environment
program-arguments command-line getenv setenv environ putenv
;; proceses
chdir getcwd umask chroot getpid getgroups getppid getuid getgid geteuid
getegid setuid setgid seteuid setegid getpgrp setpgid setsid waitpid
status:exit-val status:term-sig status:stop-sig system primitive-exit execl
execlp execle primitive-fork nice setpriority getpriority
WNOHANG WUNTRACED
;; signals
kill raise sigaction restore-signals alarm pause sleep usleep setitimer
getitimer SIGHUP SIGINT
;; terminals and ptys
isatty? ttyname ctermid tcgetpgrp tcsetpgrp
;; pipes -- not included because they are in (ice-9 popen)
;; system identification
utsname:sysname utsname:nodename utsname:release utsname:version
utsname:machine uname gethostname sethostname software-type
;; locales
setlocale
LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME
;; encryption
crypt getpass))
(math
(description "math functions")
(members $abs $acos $acosh $asin $asinh $atan $atan2 $atanh $cos $cosh
$exp $expt $log $sin $sinh $sqrt $tan $tanh))
;; By composition (these must be AFTER their constituent groupings)
(guile-C-API
(description "the official guile API available to C programs")
(grok () (lambda (x)
(and (in-group? x 'C)
(or (in-group? x 'gh)
(in-group? x 'coop)
(in-group? x 'gdb))))))
;; Add new grouping descriptions here.
)
;;; groupings.alist ends here
|