1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

support new configure options: --disable-posix, --disable-net

and --disable-regex.
This commit is contained in:
Gary Houston 1999-09-26 16:00:36 +00:00
parent e59373d65f
commit 52cfc69be6
19 changed files with 676 additions and 638 deletions

View file

@ -1,3 +1,16 @@
1999-09-23 Gary Houston <ghouston@freewire.co.uk>
* acconfig.h: add HAVE_POSIX, HAVE_NETWORKING. remove FD_SETTER,
FILE_CNT_FIELD, FILE_CNT_GPTR, FILE_CNT_READPTR.
* configure.in: new options --disable-posix, --disable-net
and --disable-regex
export HAVE_POSIX and HAVE_NETWORKING definitions.
don't add regex-posix.o to LIBOBJS if regex disabled.
LIBOBJS: add filesys.c, posix.c, net_db.c, socket.c,
conditionally.
1999-09-25 Jim Blandy <jimb@savonarola.red-bean.com>
* Guile 1.3.4 released.

8
NEWS
View file

@ -6,6 +6,14 @@ Please send Guile bug reports to bug-guile@gnu.org.
Changes since Guile 1.3.4:
configure has new options to remove support for certain features:
--disable-posix omit posix interfaces
--disable-net omit networking interfaces
--disable-regex omit regular expression interfaces
These are likely to become separate modules some day.
Changes since Guile 1.3.2:

View file

@ -52,24 +52,6 @@
#undef DEBUG_EXTENSIONS
#undef READER_EXTENSIONS
/* Define this if your system has a way to set a stdio stream's file
descriptor. */
#undef FD_SETTER
/* Set this to the name of a field in FILE which contains the number
of buffered characters waiting to be read. */
#undef FILE_CNT_FIELD
/* Define this if your stdio has _gptr and _egptr fields which can
be compared to give the number of buffered characters waiting to
be read. */
#undef FILE_CNT_GPTR
/* Define this if your stdio has _IO_read_ptr and _IO_read_end fields
which can be compared to give the number of buffered characters
waiting to be read. */
#undef FILE_CNT_READPTR
/* Define this if your system defines S_ISLNK in sys/stat.h */
#undef HAVE_S_ISLNK
@ -134,6 +116,10 @@
/* This is included as part of a workaround for a autoheader bug. */
#undef HAVE_REGCOMP
#undef HAVE_POSIX
#undef HAVE_NETWORKING
/* Define if the operating system supplies bzero without declaring it. */
#undef MISSING_BZERO_DECL

176
aclocal.m4 vendored
View file

@ -443,6 +443,94 @@ done<<>>dnl>>)
changequote([,]))])
# serial 1
# @defmac AC_PROG_CC_STDC
# @maindex PROG_CC_STDC
# @ovindex CC
# If the C compiler in not in ANSI C mode by default, try to add an option
# to output variable @code{CC} to make it so. This macro tries various
# options that select ANSI C on some system or another. It considers the
# compiler to be in ANSI C mode if it handles function prototypes correctly.
#
# If you use this macro, you should check after calling it whether the C
# compiler has been set to accept ANSI C; if not, the shell variable
# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
# code in ANSI C, you can make an un-ANSIfied copy of it by using the
# program @code{ansi2knr}, which comes with Ghostscript.
# @end defmac
AC_DEFUN(AM_PROG_CC_STDC,
[AC_REQUIRE([AC_PROG_CC])
AC_BEFORE([$0], [AC_C_INLINE])
AC_BEFORE([$0], [AC_C_CONST])
dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
dnl a magic option to avoid problems with ANSI preprocessor commands
dnl like #elif.
dnl FIXME: can't do this because then AC_AIX won't work due to a
dnl circular dependency.
dnl AC_BEFORE([$0], [AC_PROG_CPP])
AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
AC_CACHE_VAL(am_cv_prog_cc_stdc,
[am_cv_prog_cc_stdc=no
ac_save_CC="$CC"
# Don't try gcc -ansi; that turns off useful extensions and
# breaks some systems' header files.
# AIX -qlanglvl=ansi
# Ultrix and OSF/1 -std1
# HP-UX -Aa -D_HPUX_SOURCE
# SVR4 -Xc -D__EXTENSIONS__
for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
AC_TRY_COMPILE(
[#include <stdarg.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
static char *e (p, i)
char **p;
int i;
{
return p[i];
}
static char *f (char * (*g) (char **, int), char **p, ...)
{
char *s;
va_list v;
va_start (v,p);
s = g (p, va_arg (v,int));
va_end (v);
return s;
}
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
int argc;
char **argv;
], [
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
],
[am_cv_prog_cc_stdc="$ac_arg"; break])
done
CC="$ac_save_CC"
])
if test -z "$am_cv_prog_cc_stdc"; then
AC_MSG_RESULT([none needed])
else
AC_MSG_RESULT($am_cv_prog_cc_stdc)
fi
case "x$am_cv_prog_cc_stdc" in
x|xno) ;;
*) CC="$CC $am_cv_prog_cc_stdc" ;;
esac
])
# serial 40 AC_PROG_LIBTOOL
AC_DEFUN(AC_PROG_LIBTOOL,
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
@ -848,91 +936,3 @@ AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
dnl This is just to silence aclocal about the macro not being used
ifelse([AC_DISABLE_FAST_INSTALL])dnl
# serial 1
# @defmac AC_PROG_CC_STDC
# @maindex PROG_CC_STDC
# @ovindex CC
# If the C compiler in not in ANSI C mode by default, try to add an option
# to output variable @code{CC} to make it so. This macro tries various
# options that select ANSI C on some system or another. It considers the
# compiler to be in ANSI C mode if it handles function prototypes correctly.
#
# If you use this macro, you should check after calling it whether the C
# compiler has been set to accept ANSI C; if not, the shell variable
# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
# code in ANSI C, you can make an un-ANSIfied copy of it by using the
# program @code{ansi2knr}, which comes with Ghostscript.
# @end defmac
AC_DEFUN(AM_PROG_CC_STDC,
[AC_REQUIRE([AC_PROG_CC])
AC_BEFORE([$0], [AC_C_INLINE])
AC_BEFORE([$0], [AC_C_CONST])
dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
dnl a magic option to avoid problems with ANSI preprocessor commands
dnl like #elif.
dnl FIXME: can't do this because then AC_AIX won't work due to a
dnl circular dependency.
dnl AC_BEFORE([$0], [AC_PROG_CPP])
AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C)
AC_CACHE_VAL(am_cv_prog_cc_stdc,
[am_cv_prog_cc_stdc=no
ac_save_CC="$CC"
# Don't try gcc -ansi; that turns off useful extensions and
# breaks some systems' header files.
# AIX -qlanglvl=ansi
# Ultrix and OSF/1 -std1
# HP-UX -Aa -D_HPUX_SOURCE
# SVR4 -Xc -D__EXTENSIONS__
for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
AC_TRY_COMPILE(
[#include <stdarg.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
static char *e (p, i)
char **p;
int i;
{
return p[i];
}
static char *f (char * (*g) (char **, int), char **p, ...)
{
char *s;
va_list v;
va_start (v,p);
s = g (p, va_arg (v,int));
va_end (v);
return s;
}
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
int argc;
char **argv;
], [
return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
],
[am_cv_prog_cc_stdc="$ac_arg"; break])
done
CC="$ac_save_CC"
])
if test -z "$am_cv_prog_cc_stdc"; then
AC_MSG_RESULT([none needed])
else
AC_MSG_RESULT($am_cv_prog_cc_stdc)
fi
case "x$am_cv_prog_cc_stdc" in
x|xno) ;;
*) CC="$CC $am_cv_prog_cc_stdc" ;;
esac
])

550
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -41,20 +41,44 @@ AC_CONFIG_SUBDIRS(guile-readline)
#--------------------------------------------------------------------
AC_ARG_ENABLE(dynamic-linking,
[ --enable-dynamic-linking Include support for dynamic linking],,
[ --enable-dynamic-linking include support for dynamic linking],,
enable_dynamic_linking=yes)
AC_ARG_ENABLE(guile-debug,
[ --enable-guile-debug Include internal debugging functions],
[ --enable-guile-debug include internal debugging functions],
if test "$enable_guile_debug" = y || test "$enable_guile_debug" = yes; then
AC_DEFINE(GUILE_DEBUG)
fi)
AC_ARG_ENABLE(posix,
[ --disable-posix omit posix interfaces],,
enable_posix=yes)
AC_ARG_ENABLE(networking,
[ --disable-net omit networking interfaces],,
enable_networking=yes)
AC_ARG_ENABLE(regex,
[ --disable-regex omit regular expression interfaces],,
enable_regex=yes)
dnl The --disable-debug used to control these two. But now they are
dnl a required part of the distribution.
AC_DEFINE(DEBUG_EXTENSIONS)
AC_DEFINE(READER_EXTENSIONS)
dnl files which are destined for separate modules.
if test "$enable_posix" = yes; then
LIBOBJS="$LIBOBJS filesys.o posix.o"
AC_DEFINE(HAVE_POSIX)
fi
if test "$enable_networking" = yes; then
LIBOBJS="$LIBOBJS net_db.o socket.o"
AC_DEFINE(HAVE_NETWORKING)
fi
#--------------------------------------------------------------------
AC_PROG_CC
@ -220,19 +244,21 @@ dnl to behave differently.)
AC_SYS_RESTARTABLE_SYSCALLS
if test "$ac_cv_header_regex_h" = yes ||
test "$ac_cv_header_rxposix_h" = yes ||
test "$ac_cv_header_rx_rxposix_h" = yes; then
GUILE_NAMED_CHECK_FUNC(regcomp, norx, [LIBOBJS="regex-posix.o $LIBOBJS"],
[AC_CHECK_LIB(rx, main)
GUILE_NAMED_CHECK_FUNC(regcomp, rx, [LIBOBJS="regex-posix.o $LIBOBJS"])]
)
dnl The following should not be necessary, but for some reason
dnl autoheader misses it if we don't include it!
if test "$ac_cv_func_regcomp_norx" = yes ||
test "$ac_cv_func_regcomp_rx" = yes; then
AC_DEFINE(HAVE_REGCOMP)
fi
if test "$enable_regex" = yes; then
if test "$ac_cv_header_regex_h" = yes ||
test "$ac_cv_header_rxposix_h" = yes ||
test "$ac_cv_header_rx_rxposix_h" = yes; then
GUILE_NAMED_CHECK_FUNC(regcomp, norx, [LIBOBJS="regex-posix.o $LIBOBJS"],
[AC_CHECK_LIB(rx, main)
GUILE_NAMED_CHECK_FUNC(regcomp, rx, [LIBOBJS="regex-posix.o $LIBOBJS"])]
)
dnl The following should not be necessary, but for some reason
dnl autoheader misses it if we don't include it!
if test "$ac_cv_func_regcomp_norx" = yes ||
test "$ac_cv_func_regcomp_rx" = yes; then
AC_DEFINE(HAVE_REGCOMP)
fi
fi
fi
AC_REPLACE_FUNCS(inet_aton putenv strerror memmove)
@ -310,85 +336,6 @@ AC_MSG_RESULT($scm_cv_struct_linger)
if test $scm_cv_struct_linger = yes; then
AC_DEFINE(HAVE_STRUCT_LINGER)
fi
#--------------------------------------------------------------------
#
# How can you violate a stdio abstraction by setting a stream's fd?
#
#--------------------------------------------------------------------
dnl AC_MSG_CHECKING(how to set a stream file descriptor)
dnl AC_CACHE_VAL(scm_cv_fd_setter,
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [stdout->_file = 1],
dnl scm_cv_fd_setter="_file",
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [stdout->__file = 1],
dnl scm_cv_fd_setter="__file",
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [stdout->_fileno = 1],
dnl scm_cv_fd_setter="_fileno",
dnl scm_cv_fd_setter=""))))
dnl if test "$scm_cv_fd_setter"; then
dnl AC_MSG_RESULT($scm_cv_fd_setter)
dnl AC_DEFINE_UNQUOTED(FD_SETTER, $scm_cv_fd_setter)
dnl else
dnl AC_MSG_RESULT(we couldn't do it!)
dnl fi
#--------------------------------------------------------------------
# How to find out whether a FILE structure contains buffered data.
# From Tk we have the following list:
# _cnt: Most UNIX systems
# __cnt: HPUX and SCO
# _r: BSD
# readCount: Sprite
# Or, in GNU libc there are two fields, _gptr and _egptr, which
# have to be compared.
# These can also be known as _IO_read_ptr and _IO_read_end.
#--------------------------------------------------------------------
dnl AC_MSG_CHECKING(how to get buffer char count from FILE structure)
dnl AC_CACHE_VAL(scm_cv_struct_file_count,
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [FILE *f = stdin; f->_cnt = 0],
dnl scm_cv_struct_file_count="_cnt",
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [FILE *f = stdin; f->__cnt = 0],
dnl scm_cv_struct_file_count="__cnt",
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [FILE *f = stdin; f->_r = 0],
dnl scm_cv_struct_file_count="_r",
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [FILE *f = stdin; f->readCount = 0],
dnl scm_cv_struct_file_count="readCount",
dnl scm_cv_struct_file_count="")))))
dnl if test "$scm_cv_struct_file_count"; then
dnl AC_MSG_RESULT($scm_cv_struct_file_count)
dnl AC_DEFINE_UNQUOTED(FILE_CNT_FIELD, $scm_cv_struct_file_count)
dnl else
dnl AC_CACHE_VAL(scm_cv_struct_file_gptr,
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [FILE *f = stdin; f->_gptr = f->egptr;],
dnl scm_cv_struct_file_gptr=1,
dnl scm_cv_struct_file_gptr=""))
dnl if test "$scm_cv_struct_gptr"; then
dnl AC_MSG_RESULT(gptr)
dnl AC_DEFINE_UNQUOTED(FILE_CNT_GPTR, $scm_cv_struct_file_gptr)
dnl else
dnl AC_CACHE_VAL(scm_cv_struct_file_readptr,
dnl AC_TRY_COMPILE([#include <stdio.h>],
dnl [FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;],
dnl scm_cv_struct_file_readptr=1))
dnl if test "$scm_cv_struct_file_readptr"; then
dnl AC_MSG_RESULT(read_ptr)
dnl AC_DEFINE_UNQUOTED(FILE_CNT_READPTR, $scm_cv_struct_file_readptr)
dnl else
dnl AC_MSG_RESULT(we couldn't do it!)
dnl fi
dnl fi
dnl fi
#--------------------------------------------------------------------
#
@ -452,7 +399,6 @@ if test "${THREAD_PACKAGE}" != "" ; then
fi
fi
## If we're using GCC, ask for aggressive warnings.
case "$GCC" in
yes )

View file

@ -1,3 +1,23 @@
1999-09-23 Gary Houston <ghouston@freewire.co.uk>
* boot-9.scm (load-user-init): check that the posix feature is
available before using getpw and getuid.
(top-repl): don't install handlers for SIGINT etc., without posix.
(file-is-directory?): use 'posix instead of i/o-extensions to
check for stat.
(load-user-init): use file-exists? and file-is-directory? to
check for .guile, instead of stat.
(file-is-directory?): don't display the file name if posix not
available.
(feature?): I guess this is deprecated. redefined using "provided?"
and changed users in boot-9.scm to "provided?".
Conditionally load posix.scm and networking.scm.
posix.scm, networking.scm: new files. Move definitions from
boot-9.scm if they are only useful with posix/networking available.
* Makefile.am (ice9_sources): add posix.scm, networking.scm.
1999-09-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
* debugger.scm (read-and-dispatch-commands): Handle other throws

View file

@ -26,8 +26,9 @@ ice9_sources = \
and-let*.scm boot-9.scm calling.scm common-list.scm debug.scm \
debugger.scm emacs.scm expect.scm format.scm \
getopt-gnu-style.scm getopt-long.scm hcons.scm lineio.scm \
ls.scm mapping.scm \
optargs.scm poe.scm popen.scm psyntax.pp psyntax.ss q.scm \
ls.scm mapping.scm networking.scm \
optargs.scm poe.scm popen.scm posix.scm \
psyntax.pp psyntax.ss q.scm \
r4rs.scm regex.scm runq.scm session.scm slib.scm \
streams.scm string-fun.scm syncase.scm tags.scm threads.scm

View file

@ -93,7 +93,7 @@ qtmds_s = @qtmds_s@
AUTOMAKE_OPTIONS = foreign
# These should be installed and distributed.
ice9_sources = and-let*.scm boot-9.scm calling.scm common-list.scm debug.scm debugger.scm emacs.scm expect.scm format.scm getopt-gnu-style.scm getopt-long.scm hcons.scm lineio.scm ls.scm mapping.scm optargs.scm poe.scm popen.scm psyntax.pp psyntax.ss q.scm r4rs.scm regex.scm runq.scm session.scm slib.scm streams.scm string-fun.scm syncase.scm tags.scm threads.scm
ice9_sources = and-let*.scm boot-9.scm calling.scm common-list.scm debug.scm debugger.scm emacs.scm expect.scm format.scm getopt-gnu-style.scm getopt-long.scm hcons.scm lineio.scm ls.scm mapping.scm networking.scm optargs.scm poe.scm popen.scm posix.scm psyntax.pp psyntax.ss q.scm r4rs.scm regex.scm runq.scm session.scm slib.scm streams.scm string-fun.scm syncase.scm tags.scm threads.scm
subpkgdatadir = $(pkgdatadir)/$(VERSION)/ice-9

View file

@ -40,6 +40,9 @@
(define (provided? feature)
(and (memq feature *features*) #t))
;;; presumably deprecated.
(define feature? provided?)
;;; {R4RS compliance}
@ -564,37 +567,15 @@
(loop (f (car l)) (cdr l))))))
;;; {Files}
;;;
;;; If no one can explain this comment to me by 31 Jan 1998, I will
;;; assume it is meaningless and remove it. -twp
;;; !!!! these should be implemented using Tcl commands, not fports.
(define (feature? feature)
(and (memq feature *features*) #t))
(if (provided? 'posix)
(primitive-load-path "ice-9/posix.scm"))
;; Using the vector returned by stat directly is probably not a good
;; idea (it could just as well be a record). Hence some accessors.
(define (stat:dev f) (vector-ref f 0))
(define (stat:ino f) (vector-ref f 1))
(define (stat:mode f) (vector-ref f 2))
(define (stat:nlink f) (vector-ref f 3))
(define (stat:uid f) (vector-ref f 4))
(define (stat:gid f) (vector-ref f 5))
(define (stat:rdev f) (vector-ref f 6))
(define (stat:size f) (vector-ref f 7))
(define (stat:atime f) (vector-ref f 8))
(define (stat:mtime f) (vector-ref f 9))
(define (stat:ctime f) (vector-ref f 10))
(define (stat:blksize f) (vector-ref f 11))
(define (stat:blocks f) (vector-ref f 12))
;; derived from stat mode.
(define (stat:type f) (vector-ref f 13))
(define (stat:perms f) (vector-ref f 14))
(if (provided? 'socket)
(primitive-load-path "ice-9/networking.scm"))
(define file-exists?
(if (feature? 'posix)
(if (provided? 'posix)
(lambda (str)
(access? str F_OK))
(lambda (str)
@ -604,12 +585,10 @@
#f)))))
(define file-is-directory?
(if (feature? 'i/o-extensions)
(if (provided? 'posix)
(lambda (str)
(eq? (stat:type (stat str)) 'directory))
(lambda (str)
(display str)
(newline)
(let ((port (catch 'system-error
(lambda () (open-file (string-append str "/.")
OPEN_READ))
@ -650,82 +629,6 @@
(apply error "unhandled-exception:" key args))))
;;; {Non-polymorphic versions of POSIX functions}
(define (getgrnam name) (getgr name))
(define (getgrgid id) (getgr id))
(define (gethostbyaddr addr) (gethost addr))
(define (gethostbyname name) (gethost name))
(define (getnetbyaddr addr) (getnet addr))
(define (getnetbyname name) (getnet name))
(define (getprotobyname name) (getproto name))
(define (getprotobynumber addr) (getproto addr))
(define (getpwnam name) (getpw name))
(define (getpwuid uid) (getpw uid))
(define (getservbyname name proto) (getserv name proto))
(define (getservbyport port proto) (getserv port proto))
(define (endgrent) (setgr))
(define (endhostent) (sethost))
(define (endnetent) (setnet))
(define (endprotoent) (setproto))
(define (endpwent) (setpw))
(define (endservent) (setserv))
(define (getgrent) (getgr))
(define (gethostent) (gethost))
(define (getnetent) (getnet))
(define (getprotoent) (getproto))
(define (getpwent) (getpw))
(define (getservent) (getserv))
(define (setgrent) (setgr #f))
(define (sethostent) (sethost #t))
(define (setnetent) (setnet #t))
(define (setprotoent) (setproto #t))
(define (setpwent) (setpw #t))
(define (setservent) (setserv #t))
(define (passwd:name obj) (vector-ref obj 0))
(define (passwd:passwd obj) (vector-ref obj 1))
(define (passwd:uid obj) (vector-ref obj 2))
(define (passwd:gid obj) (vector-ref obj 3))
(define (passwd:gecos obj) (vector-ref obj 4))
(define (passwd:dir obj) (vector-ref obj 5))
(define (passwd:shell obj) (vector-ref obj 6))
(define (group:name obj) (vector-ref obj 0))
(define (group:passwd obj) (vector-ref obj 1))
(define (group:gid obj) (vector-ref obj 2))
(define (group:mem obj) (vector-ref obj 3))
(define (hostent:name obj) (vector-ref obj 0))
(define (hostent:aliases obj) (vector-ref obj 1))
(define (hostent:addrtype obj) (vector-ref obj 2))
(define (hostent:length obj) (vector-ref obj 3))
(define (hostent:addr-list obj) (vector-ref obj 4))
(define (netent:name obj) (vector-ref obj 0))
(define (netent:aliases obj) (vector-ref obj 1))
(define (netent:addrtype obj) (vector-ref obj 2))
(define (netent:net obj) (vector-ref obj 3))
(define (protoent:name obj) (vector-ref obj 0))
(define (protoent:aliases obj) (vector-ref obj 1))
(define (protoent:proto obj) (vector-ref obj 2))
(define (servent:name obj) (vector-ref obj 0))
(define (servent:aliases obj) (vector-ref obj 1))
(define (servent:port obj) (vector-ref obj 2))
(define (servent:proto obj) (vector-ref obj 3))
(define (sockaddr:fam obj) (vector-ref obj 0))
(define (sockaddr:path obj) (vector-ref obj 1))
(define (sockaddr:addr obj) (vector-ref obj 1))
(define (sockaddr:port obj) (vector-ref obj 2))
(define (utsname:sysname obj) (vector-ref obj 0))
(define (utsname:nodename obj) (vector-ref obj 1))
(define (utsname:release obj) (vector-ref obj 2))
(define (utsname:version obj) (vector-ref obj 3))
(define (utsname:machine obj) (vector-ref obj 4))
(define (tm:sec obj) (vector-ref obj 0))
(define (tm:min obj) (vector-ref obj 1))
@ -862,16 +765,15 @@
;; This is mostly for the internal use of the code generated by
;; scm_compile_shell_switches.
(define (load-user-init)
(define (has-init? dir)
(define (existing-file dir)
(let ((path (in-vicinity dir ".guile")))
(catch 'system-error
(lambda ()
(let ((stats (stat path)))
(if (not (eq? (stat:type stats) 'directory))
path)))
(lambda dummy #f))))
(let ((path (or (has-init? (or (getenv "HOME") "/"))
(has-init? (passwd:dir (getpw (getuid)))))))
(if (and (file-exists? path)
(not (file-is-directory? path)))
path
#f)))
(let ((path (or (existing-file (or (getenv "HOME") "/"))
(and (provided? 'posix)
(existing-file (passwd:dir (getpw (getuid))))))))
(if path (primitive-load path))))
@ -1000,7 +902,7 @@
(read-hash-extend #\. (lambda (c port)
(eval (read port))))
(if (feature? 'array)
(if (provided? 'array)
(begin
(let ((make-array-proc (lambda (template)
(lambda (c port)
@ -2937,40 +2839,6 @@
(define-module (guile-user) :use-module (ice-9 emacs)))
;;; {I/O functions for Tcl channels (disabled)}
;; (define in-ch (get-standard-channel TCL_STDIN))
;; (define out-ch (get-standard-channel TCL_STDOUT))
;; (define err-ch (get-standard-channel TCL_STDERR))
;;
;; (define inp (%make-channel-port in-ch "r"))
;; (define outp (%make-channel-port out-ch "w"))
;; (define errp (%make-channel-port err-ch "w"))
;;
;; (define %system-char-ready? char-ready?)
;;
;; (define (char-ready? p)
;; (if (not (channel-port? p))
;; (%system-char-ready? p)
;; (let* ((channel (%channel-port-channel p))
;; (old-blocking (channel-option-ref channel :blocking)))
;; (dynamic-wind
;; (lambda () (set-channel-option the-root-tcl-interpreter channel :blocking "0"))
;; (lambda () (not (eof-object? (peek-char p))))
;; (lambda () (set-channel-option the-root-tcl-interpreter channel :blocking old-blocking))))))
;;
;; (define (top-repl)
;; (with-input-from-port inp
;; (lambda ()
;; (with-output-to-port outp
;; (lambda ()
;; (with-error-to-port errp
;; (lambda ()
;; (scm-style-repl))))))))
;;
;; (set-current-input-port inp)
;; (set-current-output-port outp)
;; (set-current-error-port errp)
(define using-readline?
(let ((using-readline? (make-fluid)))
@ -2999,10 +2867,13 @@
(define-module (guile-user) :use-module (ice-9 regex)))
(let ((old-handlers #f)
(signals `((,SIGINT . "User interrupt")
(,SIGFPE . "Arithmetic error")
(,SIGBUS . "Bad memory access (bus error)")
(,SIGSEGV . "Bad memory access (Segmentation violation)"))))
(signals (if (provided? 'posix)
`((,SIGINT . "User interrupt")
(,SIGFPE . "Arithmetic error")
(,SIGBUS . "Bad memory access (bus error)")
(,SIGSEGV .
"Bad memory access (Segmentation violation)"))
'())))
(dynamic-wind

71
ice-9/networking.scm Normal file
View file

@ -0,0 +1,71 @@
;;; installed-scm-file
;;;; Copyright (C) 1999 Free Software Foundation, Inc.
;;;;
;;;; This program is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2, 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 General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this software; see the file COPYING. If not, write to
;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
;;;; Boston, MA 02111-1307 USA
;;;;
(define (gethostbyaddr addr) (gethost addr))
(define (gethostbyname name) (gethost name))
(define (getnetbyaddr addr) (getnet addr))
(define (getnetbyname name) (getnet name))
(define (getprotobyname name) (getproto name))
(define (getprotobynumber addr) (getproto addr))
(define (getservbyname name proto) (getserv name proto))
(define (getservbyport port proto) (getserv port proto))
(define (sethostent) (sethost #t))
(define (setnetent) (setnet #t))
(define (setprotoent) (setproto #t))
(define (setservent) (setserv #t))
(define (gethostent) (gethost))
(define (getnetent) (getnet))
(define (getprotoent) (getproto))
(define (getservent) (getserv))
(define (endhostent) (sethost))
(define (endnetent) (setnet))
(define (endprotoent) (setproto))
(define (endservent) (setserv))
(define (hostent:name obj) (vector-ref obj 0))
(define (hostent:aliases obj) (vector-ref obj 1))
(define (hostent:addrtype obj) (vector-ref obj 2))
(define (hostent:length obj) (vector-ref obj 3))
(define (hostent:addr-list obj) (vector-ref obj 4))
(define (netent:name obj) (vector-ref obj 0))
(define (netent:aliases obj) (vector-ref obj 1))
(define (netent:addrtype obj) (vector-ref obj 2))
(define (netent:net obj) (vector-ref obj 3))
(define (protoent:name obj) (vector-ref obj 0))
(define (protoent:aliases obj) (vector-ref obj 1))
(define (protoent:proto obj) (vector-ref obj 2))
(define (servent:name obj) (vector-ref obj 0))
(define (servent:aliases obj) (vector-ref obj 1))
(define (servent:port obj) (vector-ref obj 2))
(define (servent:proto obj) (vector-ref obj 3))
(define (sockaddr:fam obj) (vector-ref obj 0))
(define (sockaddr:path obj) (vector-ref obj 1))
(define (sockaddr:addr obj) (vector-ref obj 1))
(define (sockaddr:port obj) (vector-ref obj 2))

70
ice-9/posix.scm Normal file
View file

@ -0,0 +1,70 @@
;;; installed-scm-file
;;;; Copyright (C) 1999 Free Software Foundation, Inc.
;;;;
;;;; This program is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2, 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 General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this software; see the file COPYING. If not, write to
;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
;;;; Boston, MA 02111-1307 USA
;;;;
(define (stat:dev f) (vector-ref f 0))
(define (stat:ino f) (vector-ref f 1))
(define (stat:mode f) (vector-ref f 2))
(define (stat:nlink f) (vector-ref f 3))
(define (stat:uid f) (vector-ref f 4))
(define (stat:gid f) (vector-ref f 5))
(define (stat:rdev f) (vector-ref f 6))
(define (stat:size f) (vector-ref f 7))
(define (stat:atime f) (vector-ref f 8))
(define (stat:mtime f) (vector-ref f 9))
(define (stat:ctime f) (vector-ref f 10))
(define (stat:blksize f) (vector-ref f 11))
(define (stat:blocks f) (vector-ref f 12))
;; derived from stat mode.
(define (stat:type f) (vector-ref f 13))
(define (stat:perms f) (vector-ref f 14))
(define (passwd:name obj) (vector-ref obj 0))
(define (passwd:passwd obj) (vector-ref obj 1))
(define (passwd:uid obj) (vector-ref obj 2))
(define (passwd:gid obj) (vector-ref obj 3))
(define (passwd:gecos obj) (vector-ref obj 4))
(define (passwd:dir obj) (vector-ref obj 5))
(define (passwd:shell obj) (vector-ref obj 6))
(define (group:name obj) (vector-ref obj 0))
(define (group:passwd obj) (vector-ref obj 1))
(define (group:gid obj) (vector-ref obj 2))
(define (group:mem obj) (vector-ref obj 3))
(define (utsname:sysname obj) (vector-ref obj 0))
(define (utsname:nodename obj) (vector-ref obj 1))
(define (utsname:release obj) (vector-ref obj 2))
(define (utsname:version obj) (vector-ref obj 3))
(define (utsname:machine obj) (vector-ref obj 4))
(define (getpwent) (getpw))
(define (setpwent) (setpw #t))
(define (endpwent) (setpw))
(define (getpwnam name) (getpw name))
(define (getpwuid uid) (getpw uid))
(define (getgrent) (getgr))
(define (setgrent) (setgr #f))
(define (endgrent) (setgr))
(define (getgrnam name) (getgr name))
(define (getgrgid id) (getgr id))

View file

@ -1,3 +1,16 @@
1999-09-23 Gary Houston <ghouston@freewire.co.uk>
* ioext.c (scm_init_ioext): enable "i/o-extensions" feature here
instead of in scm_init_filesys.
* init.c (scm_boot_guile_1): don't call scm_init_posix or
scm_init_filesys unless HAVE_POSIX is defined.
don't call scm_init_netdb or scm_init_socket unless
HAVE_NETWORKING is defined.
* Makefile.am (EXTRA_libguile_la_SOURCES): filesys.c, posix.c,
net_db.c, socket.c: moved here from libguile_la_SOURCES.
1999-09-25 Jim Blandy <jimb@savonarola.red-bean.com>
* root.c (scm_make_root): Initialize all the fields of the new

View file

@ -37,13 +37,13 @@ guile_LDADD = libguile.la ${THREAD_LIBS_LOCAL}
libguile_la_SOURCES = \
alist.c arbiters.c async.c backtrace.c boolean.c chars.c \
continuations.c debug.c dynl.c dynwind.c eq.c error.c eval.c \
evalext.c feature.c filesys.c fluids.c fports.c gc.c gdbint.c \
evalext.c feature.c fluids.c fports.c gc.c gdbint.c \
gh_data.c gh_eval.c gh_funcs.c gh_init.c gh_io.c gh_list.c \
gh_predicates.c gsubr.c guardians.c hash.c hashtab.c init.c \
ioext.c keywords.c lang.c list.c load.c macros.c mallocs.c \
modules.c net_db.c numbers.c objects.c objprop.c options.c pairs.c \
ports.c posix.c print.c procprop.c procs.c ramap.c random.c read.c \
root.c scmsigs.c script.c simpos.c smob.c socket.c sort.c \
modules.c numbers.c objects.c objprop.c options.c pairs.c \
ports.c print.c procprop.c procs.c ramap.c random.c read.c \
root.c scmsigs.c script.c simpos.c smob.c sort.c \
srcprop.c stackchk.c stacks.c stime.c strings.c strop.c strorder.c \
strports.c struct.c symbols.c tag.c throw.c unif.c variable.c \
vectors.c version.c vports.c weaks.c
@ -64,7 +64,8 @@ BUILT_SOURCES = \
EXTRA_libguile_la_SOURCES = _scm.h \
alloca.c inet_aton.c memmove.c putenv.c strerror.c \
threads.c regex-posix.c iselect.c
threads.c regex-posix.c iselect.c \
filesys.c posix.c netdb.c socket.c
## This is kind of nasty... there are ".c" files that we don't want to
## compile, since they are #included in threads.c. So instead we list

View file

@ -102,13 +102,13 @@ bin_PROGRAMS = guile
guile_SOURCES = guile.c
guile_LDADD = libguile.la ${THREAD_LIBS_LOCAL}
libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c chars.c continuations.c debug.c dynl.c dynwind.c eq.c error.c eval.c evalext.c feature.c filesys.c fluids.c fports.c gc.c gdbint.c gh_data.c gh_eval.c gh_funcs.c gh_init.c gh_io.c gh_list.c gh_predicates.c gsubr.c guardians.c hash.c hashtab.c init.c ioext.c keywords.c lang.c list.c load.c macros.c mallocs.c modules.c net_db.c numbers.c objects.c objprop.c options.c pairs.c ports.c posix.c print.c procprop.c procs.c ramap.c random.c read.c root.c scmsigs.c script.c simpos.c smob.c socket.c sort.c srcprop.c stackchk.c stacks.c stime.c strings.c strop.c strorder.c strports.c struct.c symbols.c tag.c throw.c unif.c variable.c vectors.c version.c vports.c weaks.c
libguile_la_SOURCES = alist.c arbiters.c async.c backtrace.c boolean.c chars.c continuations.c debug.c dynl.c dynwind.c eq.c error.c eval.c evalext.c feature.c fluids.c fports.c gc.c gdbint.c gh_data.c gh_eval.c gh_funcs.c gh_init.c gh_io.c gh_list.c gh_predicates.c gsubr.c guardians.c hash.c hashtab.c init.c ioext.c keywords.c lang.c list.c load.c macros.c mallocs.c modules.c numbers.c objects.c objprop.c options.c pairs.c ports.c print.c procprop.c procs.c ramap.c random.c read.c root.c scmsigs.c script.c simpos.c smob.c sort.c srcprop.c stackchk.c stacks.c stime.c strings.c strop.c strorder.c strports.c struct.c symbols.c tag.c throw.c unif.c variable.c vectors.c version.c vports.c weaks.c
BUILT_SOURCES = cpp_err_symbols.c cpp_sig_symbols.c libpath.h alist.x arbiters.x async.x backtrace.x boolean.x chars.x continuations.x debug.x dynl.x dynwind.x eq.x error.x eval.x evalext.x feature.x filesys.x fluids.x fports.x gc.x gsubr.x guardians.x hash.x hashtab.x init.x ioext.x iselect.x keywords.x lang.x list.x load.x macros.x mallocs.x modules.x net_db.x numbers.x objects.x objprop.x options.x pairs.x ports.x posix.x print.x procprop.x procs.x random.x ramap.x read.x regex-posix.x root.x scmsigs.x script.x simpos.x smob.x socket.x sort.x srcprop.x stackchk.x stacks.x stime.x strings.x strop.x strorder.x strports.x struct.x symbols.x tag.x threads.x throw.x unif.x variable.x vectors.x version.x vports.x weaks.x
EXTRA_libguile_la_SOURCES = _scm.h alloca.c inet_aton.c memmove.c putenv.c strerror.c threads.c regex-posix.c iselect.c
EXTRA_libguile_la_SOURCES = _scm.h alloca.c inet_aton.c memmove.c putenv.c strerror.c threads.c regex-posix.c iselect.c filesys.c posix.c netdb.c socket.c
noinst_HEADERS = coop-threads.c coop-threads.h coop.c
@ -163,16 +163,16 @@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
libguile_la_OBJECTS = alist.lo arbiters.lo async.lo backtrace.lo \
boolean.lo chars.lo continuations.lo debug.lo dynl.lo dynwind.lo eq.lo \
error.lo eval.lo evalext.lo feature.lo filesys.lo fluids.lo fports.lo \
gc.lo gdbint.lo gh_data.lo gh_eval.lo gh_funcs.lo gh_init.lo gh_io.lo \
error.lo eval.lo evalext.lo feature.lo fluids.lo fports.lo gc.lo \
gdbint.lo gh_data.lo gh_eval.lo gh_funcs.lo gh_init.lo gh_io.lo \
gh_list.lo gh_predicates.lo gsubr.lo guardians.lo hash.lo hashtab.lo \
init.lo ioext.lo keywords.lo lang.lo list.lo load.lo macros.lo \
mallocs.lo modules.lo net_db.lo numbers.lo objects.lo objprop.lo \
options.lo pairs.lo ports.lo posix.lo print.lo procprop.lo procs.lo \
ramap.lo random.lo read.lo root.lo scmsigs.lo script.lo simpos.lo \
smob.lo socket.lo sort.lo srcprop.lo stackchk.lo stacks.lo stime.lo \
strings.lo strop.lo strorder.lo strports.lo struct.lo symbols.lo tag.lo \
throw.lo unif.lo variable.lo vectors.lo version.lo vports.lo weaks.lo
mallocs.lo modules.lo numbers.lo objects.lo objprop.lo options.lo \
pairs.lo ports.lo print.lo procprop.lo procs.lo ramap.lo random.lo \
read.lo root.lo scmsigs.lo script.lo simpos.lo smob.lo sort.lo \
srcprop.lo stackchk.lo stacks.lo stime.lo strings.lo strop.lo \
strorder.lo strports.lo struct.lo symbols.lo tag.lo throw.lo unif.lo \
variable.lo vectors.lo version.lo vports.lo weaks.lo
PROGRAMS = $(bin_PROGRAMS)
guile_OBJECTS = guile.o
@ -216,7 +216,7 @@ DEP_FILES = .deps/alist.P .deps/alloca.P .deps/arbiters.P .deps/async.P \
.deps/hash.P .deps/hashtab.P .deps/inet_aton.P .deps/init.P \
.deps/ioext.P .deps/iselect.P .deps/keywords.P .deps/lang.P \
.deps/list.P .deps/load.P .deps/macros.P .deps/mallocs.P \
.deps/memmove.P .deps/modules.P .deps/net_db.P .deps/numbers.P \
.deps/memmove.P .deps/modules.P .deps/netdb.P .deps/numbers.P \
.deps/objects.P .deps/objprop.P .deps/options.P .deps/pairs.P \
.deps/ports.P .deps/posix.P .deps/print.P .deps/procprop.P \
.deps/procs.P .deps/putenv.P .deps/ramap.P .deps/random.P .deps/read.P \

View file

@ -1203,8 +1203,6 @@ scm_basename (SCM filename, SCM suffix)
void
scm_init_filesys ()
{
scm_add_feature ("i/o-extensions");
scm_tc16_dir = scm_make_smob_type_mfpe ("directory", 0,
NULL, scm_dir_free,scm_dir_print, NULL);

View file

@ -461,7 +461,6 @@ scm_boot_guile_1 (base, closure)
scm_init_fluids ();
scm_init_backtrace (); /* Requires fluids */
scm_init_fports ();
scm_init_filesys ();
scm_init_gc ();
scm_init_gdbint ();
scm_init_hash ();
@ -475,20 +474,25 @@ scm_boot_guile_1 (base, closure)
scm_init_macros ();
scm_init_mallocs ();
scm_init_modules ();
scm_init_net_db ();
scm_init_numbers ();
scm_init_objprop ();
scm_init_options ();
scm_init_pairs ();
scm_init_ports ();
#ifdef HAVE_POSIX
scm_init_filesys ();
scm_init_posix ();
#endif
#ifdef HAVE_REGCOMP
scm_init_regex_posix ();
#endif
scm_init_procs ();
scm_init_procprop ();
scm_init_scmsigs ();
#ifdef HAVE_NETWORKING
scm_init_net_db ();
scm_init_socket ();
#endif
scm_init_sort ();
#ifdef DEBUG_EXTENSIONS
scm_init_srcprop ();

View file

@ -505,6 +505,8 @@ scm_fdes_to_ports (fd)
void
scm_init_ioext ()
{
scm_add_feature ("i/o-extensions");
#include "ioext.x"
}

View file

@ -150,6 +150,10 @@
/* This is included as part of a workaround for a autoheader bug. */
#undef HAVE_REGCOMP
#undef HAVE_POSIX
#undef HAVE_NETWORKING
/* Define if the operating system supplies bzero without declaring it. */
#undef MISSING_BZERO_DECL