mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
Make compilation under Windows easier.
This commit is contained in:
parent
dd0e04edd6
commit
82893676f4
22 changed files with 315 additions and 22 deletions
1
ANON-CVS
1
ANON-CVS
|
@ -46,7 +46,6 @@ To check out a CVS working directory:
|
||||||
The modules available for checkout are:
|
The modules available for checkout are:
|
||||||
|
|
||||||
guile-core --- The scheme interpreter itself.
|
guile-core --- The scheme interpreter itself.
|
||||||
guile-doc --- Guile documentation-in-progress.
|
|
||||||
guile-tcltk --- An interface between Guile and Tcl/Tk.
|
guile-tcltk --- An interface between Guile and Tcl/Tk.
|
||||||
guile-scsh --- An incomplete port of SCSH 0.4.4 to Guile.
|
guile-scsh --- An incomplete port of SCSH 0.4.4 to Guile.
|
||||||
guile-rgx-ctax --- This has been discontinued; use Andrew Archibald's
|
guile-rgx-ctax --- This has been discontinued; use Andrew Archibald's
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
|
||||||
|
|
||||||
|
* HACKING, ANON-CVS: Removed mentioning of guile-doc CVS module.
|
||||||
|
|
||||||
|
* configure.in: Added some header and function checks.
|
||||||
|
|
||||||
2001-06-25 Neil Jerram <neil@ossau.uklinux.net>
|
2001-06-25 Neil Jerram <neil@ossau.uklinux.net>
|
||||||
|
|
||||||
* autogen.sh: Quoting fix for `--enable-maintainer-mode'.
|
* autogen.sh: Quoting fix for `--enable-maintainer-mode'.
|
||||||
|
|
2
HACKING
2
HACKING
|
@ -103,8 +103,6 @@ For more information on SSH, see http://www.cs.hut.fi/ssh.
|
||||||
The Guile sources live in several modules:
|
The Guile sources live in several modules:
|
||||||
|
|
||||||
- guile-core --- the interpreter, QuickThreads, and ice-9
|
- guile-core --- the interpreter, QuickThreads, and ice-9
|
||||||
- guile-doc --- documentation in progress. When complete, this will
|
|
||||||
be incorporated into guile-core.
|
|
||||||
- guile-tcltk --- the Guile/Tk interface
|
- guile-tcltk --- the Guile/Tk interface
|
||||||
- guile-tk --- the new Guile/Tk interface, based on STk's modified Tk
|
- guile-tk --- the new Guile/Tk interface, based on STk's modified Tk
|
||||||
- guile-rgx-ctax --- the Guile/Rx interface, and the ctax implementation
|
- guile-rgx-ctax --- the Guile/Rx interface, and the ctax implementation
|
||||||
|
|
1
THANKS
1
THANKS
|
@ -33,6 +33,7 @@ For fixes or providing information which led to a fix:
|
||||||
Utz-Uwe Haus
|
Utz-Uwe Haus
|
||||||
Karl M. Hegbloom
|
Karl M. Hegbloom
|
||||||
Anders Holst
|
Anders Holst
|
||||||
|
Stefan Jahn
|
||||||
Steven G. Johnson
|
Steven G. Johnson
|
||||||
Richard Kim
|
Richard Kim
|
||||||
Alexander Klimov
|
Alexander Klimov
|
||||||
|
|
|
@ -192,7 +192,7 @@ AC_HEADER_STDC
|
||||||
AC_HEADER_DIRENT
|
AC_HEADER_DIRENT
|
||||||
AC_HEADER_TIME
|
AC_HEADER_TIME
|
||||||
AC_HEADER_SYS_WAIT
|
AC_HEADER_SYS_WAIT
|
||||||
AC_CHECK_HEADERS(io.h libc.h limits.h malloc.h memory.h string.h regex.h rxposix.h rx/rxposix.h sys/ioctl.h sys/select.h sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h sys/utime.h time.h unistd.h utime.h)
|
AC_CHECK_HEADERS(io.h libc.h limits.h malloc.h memory.h string.h regex.h rxposix.h rx/rxposix.h sys/ioctl.h sys/select.h sys/time.h sys/timeb.h sys/times.h sys/stdtypes.h sys/types.h sys/utime.h time.h unistd.h utime.h pwd.h winsock2.h grp.h sys/utsname.h)
|
||||||
GUILE_HEADER_LIBC_WITH_UNISTD
|
GUILE_HEADER_LIBC_WITH_UNISTD
|
||||||
|
|
||||||
AC_TYPE_GETGROUPS
|
AC_TYPE_GETGROUPS
|
||||||
|
@ -232,7 +232,7 @@ AC_SUBST(INCLTDL)
|
||||||
AC_SUBST(LIBLTDL)
|
AC_SUBST(LIBLTDL)
|
||||||
AC_SUBST(DLPREOPEN)
|
AC_SUBST(DLPREOPEN)
|
||||||
|
|
||||||
AC_CHECK_FUNCS(ctermid ftime fchown getcwd geteuid gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit)
|
AC_CHECK_FUNCS(ctermid ftime fchown getcwd geteuid gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork)
|
||||||
|
|
||||||
AC_CHECK_HEADERS(crypt.h sys/resource.h sys/file.h)
|
AC_CHECK_HEADERS(crypt.h sys/resource.h sys/file.h)
|
||||||
AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
|
AC_CHECK_FUNCS(chroot flock getlogin cuserid getpriority setpriority getpass sethostname gethostname)
|
||||||
|
|
|
@ -1,3 +1,59 @@
|
||||||
|
2001-06-26 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
|
||||||
|
|
||||||
|
* ports.c (scm_output_port_p): Use result of SCM_COERCE_OUTPORT.
|
||||||
|
|
||||||
|
The following set of changes makes compiling Guile under various
|
||||||
|
Windows compilers easier. Compilation under GNU systems should
|
||||||
|
not be affected at all.
|
||||||
|
|
||||||
|
Thanks to Stefan Jahn for all necessary information, patches and
|
||||||
|
testing.
|
||||||
|
|
||||||
|
* posix.c: Conditialize getpwent, getgrent, kill, getppid, getuid,
|
||||||
|
getpgrp, ttyname, primitive-fork and some header inclusion for
|
||||||
|
Windows.
|
||||||
|
|
||||||
|
* random.c: Define M_PI, if not predefined and use __int64 for
|
||||||
|
LONG64 under Windows.
|
||||||
|
|
||||||
|
* scmsigs.c: Emulate some functions (alarm, sleep, kill) under
|
||||||
|
Windows and conditionalize some signal names.
|
||||||
|
|
||||||
|
* socket.c (scm_getsockopt): Added missing comma.
|
||||||
|
Include socket library header under Windows.
|
||||||
|
|
||||||
|
* stime.c (CLKTCK): Add cast to int, to make it compile under
|
||||||
|
Windows.
|
||||||
|
|
||||||
|
* ports.c (truncate): New function, compiled only under Windows.
|
||||||
|
|
||||||
|
* net_db.c: Do not declare errno under Windows.
|
||||||
|
|
||||||
|
* iselect.h, inet_aton.c: Include socket library headers under
|
||||||
|
Windows.
|
||||||
|
|
||||||
|
* guile.c (inner_main): Under Windows, initialize socket library
|
||||||
|
and initialize gdb_interface data structures.
|
||||||
|
|
||||||
|
* gdb_interface.h: Under Windows, gdb_interface cannot be
|
||||||
|
initialized statically. Initialize at runtime instead.
|
||||||
|
|
||||||
|
* fports.c (write_all): ssize_t -> size_t.
|
||||||
|
(fport_print): Conditionalize call to ttyname().
|
||||||
|
(getflags): New function, compiled only under Windows.
|
||||||
|
|
||||||
|
* filesys.c: Conditionalize inclusion of <pwd.h>. Conditionalize
|
||||||
|
primitives chown, link, fcntl.
|
||||||
|
(scm_basename, scm_dirname): Under Windows, handle \ as well as /
|
||||||
|
as path seperator.
|
||||||
|
|
||||||
|
* backtrace.c: Include <io.h> under Windows.
|
||||||
|
|
||||||
|
* async.h (ASYNCH, SCM_ASYNC_H): Rename <foo>H to SCM_<foo>_H.
|
||||||
|
|
||||||
|
* _scm.h: Added preprocessor conditional for __MINGW32__ for errno
|
||||||
|
declaration.
|
||||||
|
|
||||||
2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
|
2001-06-27 Keisuke Nishida <kxn30@po.cwru.edu>
|
||||||
|
|
||||||
* eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
|
* eval.c (scm_call_0, scm_call_1, scm_call_2, scm_call_3,
|
||||||
|
|
|
@ -111,13 +111,13 @@
|
||||||
# define SCM_SYSCALL(line) line;
|
# define SCM_SYSCALL(line) line;
|
||||||
#endif /* ndef SCM_SYSCALL */
|
#endif /* ndef SCM_SYSCALL */
|
||||||
|
|
||||||
#ifndef MSDOS
|
#if !defined (MSDOS) && !defined (__MINGW32__)
|
||||||
# ifdef ARM_ULIB
|
# ifdef ARM_ULIB
|
||||||
extern volatile int errno;
|
extern volatile int errno;
|
||||||
# else
|
# else
|
||||||
extern int errno;
|
extern int errno;
|
||||||
# endif /* def ARM_ULIB */
|
# endif /* def ARM_ULIB */
|
||||||
#endif /* ndef MSDOS */
|
#endif /* ndef MSDOS && ndef __MINGW32__*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* classes: h_files */
|
/* classes: h_files */
|
||||||
|
|
||||||
#ifndef ASYNCH
|
#ifndef SCM_ASYNC_H
|
||||||
#define ASYNCH
|
#define SCM_ASYNC_H
|
||||||
/* Copyright (C) 1995, 96, 97, 98, 2000 Free Software Foundation, Inc.
|
/* Copyright (C) 1995, 96, 97, 98, 2000 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -70,7 +70,7 @@ extern SCM scm_unmask_signals (void);
|
||||||
extern SCM scm_mask_signals (void);
|
extern SCM scm_mask_signals (void);
|
||||||
extern void scm_init_async (void);
|
extern void scm_init_async (void);
|
||||||
|
|
||||||
#endif /* ASYNCH */
|
#endif /* SCM_ASYNC_H */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Local Variables:
|
Local Variables:
|
||||||
|
|
|
@ -54,6 +54,9 @@
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_IO_H
|
||||||
|
#include <io.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "libguile/stacks.h"
|
#include "libguile/stacks.h"
|
||||||
#include "libguile/srcprop.h"
|
#include "libguile/srcprop.h"
|
||||||
|
|
|
@ -93,7 +93,9 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_PWD_H
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if HAVE_DIRENT_H
|
#if HAVE_DIRENT_H
|
||||||
|
@ -117,6 +119,26 @@
|
||||||
#if defined (S_IFSOCK) && ! defined (S_ISSOCK)
|
#if defined (S_IFSOCK) && ! defined (S_ISSOCK)
|
||||||
#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
|
#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* The MinGW gcc does not define the S_ISSOCK macro. Any other native Windows
|
||||||
|
compiler like BorlandC or MSVC has none of these macros defined. */
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
# define S_ISSOCK(mode) (0)
|
||||||
|
#endif
|
||||||
|
#if defined (__BORLANDC__) || defined (_MSC_VER)
|
||||||
|
# define S_ISBLK(mode) (0)
|
||||||
|
# define S_ISFIFO(mode) (((mode) & _S_IFMT) == _S_IFIFO)
|
||||||
|
# define S_ISCHR(mode) (((mode) & _S_IFMT) == _S_IFCHR)
|
||||||
|
# define S_ISDIR(mode) (((mode) & _S_IFMT) == _S_IFDIR)
|
||||||
|
# define S_ISREG(mode) (((mode) & _S_IFMT) == _S_IFREG)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Some more definitions for the native Windows port. */
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
# define mkdir(path, mode) mkdir (path)
|
||||||
|
# define fsync(fd) _commit (fd)
|
||||||
|
# define fchmod(fd, mode) (-1)
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,6 +147,7 @@
|
||||||
/* {Permissions}
|
/* {Permissions}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CHOWN
|
||||||
SCM_DEFINE (scm_chown, "chown", 3, 0, 0,
|
SCM_DEFINE (scm_chown, "chown", 3, 0, 0,
|
||||||
(SCM object, SCM owner, SCM group),
|
(SCM object, SCM owner, SCM group),
|
||||||
"Change the ownership and group of the file referred to by @var{object} to\n"
|
"Change the ownership and group of the file referred to by @var{object} to\n"
|
||||||
|
@ -167,6 +190,7 @@ SCM_DEFINE (scm_chown, "chown", 3, 0, 0,
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_CHOWN */
|
||||||
|
|
||||||
|
|
||||||
SCM_DEFINE (scm_chmod, "chmod", 2, 0, 0,
|
SCM_DEFINE (scm_chmod, "chmod", 2, 0, 0,
|
||||||
|
@ -561,6 +585,7 @@ SCM_DEFINE (scm_stat, "stat", 1, 0, 0,
|
||||||
/* {Modifying Directories}
|
/* {Modifying Directories}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_LINK
|
||||||
SCM_DEFINE (scm_link, "link", 2, 0, 0,
|
SCM_DEFINE (scm_link, "link", 2, 0, 0,
|
||||||
(SCM oldpath, SCM newpath),
|
(SCM oldpath, SCM newpath),
|
||||||
"Creates a new name @var{newpath} in the file system for the\n"
|
"Creates a new name @var{newpath} in the file system for the\n"
|
||||||
|
@ -582,6 +607,7 @@ SCM_DEFINE (scm_link, "link", 2, 0, 0,
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_LINK */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1145,6 +1171,7 @@ SCM_DEFINE (scm_select, "select", 3, 2, 0,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_FCNTL
|
||||||
SCM_DEFINE (scm_fcntl, "fcntl", 2, 1, 0,
|
SCM_DEFINE (scm_fcntl, "fcntl", 2, 1, 0,
|
||||||
(SCM object, SCM cmd, SCM value),
|
(SCM object, SCM cmd, SCM value),
|
||||||
"Apply @var{command} to the specified file descriptor or the underlying\n"
|
"Apply @var{command} to the specified file descriptor or the underlying\n"
|
||||||
|
@ -1199,6 +1226,7 @@ SCM_DEFINE (scm_fcntl, "fcntl", 2, 1, 0,
|
||||||
return SCM_MAKINUM (rv);
|
return SCM_MAKINUM (rv);
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_FCNTL */
|
||||||
|
|
||||||
SCM_DEFINE (scm_fsync, "fsync", 1, 0, 0,
|
SCM_DEFINE (scm_fsync, "fsync", 1, 0, 0,
|
||||||
(SCM object),
|
(SCM object),
|
||||||
|
@ -1368,12 +1396,22 @@ SCM_DEFINE (scm_dirname, "dirname", 1, 0, 0,
|
||||||
len = SCM_STRING_LENGTH (filename);
|
len = SCM_STRING_LENGTH (filename);
|
||||||
|
|
||||||
i = len - 1;
|
i = len - 1;
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
while (i >= 0 && (s[i] == '/' || s[i] == '\\')) --i;
|
||||||
|
while (i >= 0 && (s[i] != '/' || s[i] != '\\')) --i;
|
||||||
|
while (i >= 0 && (s[i] == '/' || s[i] == '\\')) --i;
|
||||||
|
#else
|
||||||
while (i >= 0 && s[i] == '/') --i;
|
while (i >= 0 && s[i] == '/') --i;
|
||||||
while (i >= 0 && s[i] != '/') --i;
|
while (i >= 0 && s[i] != '/') --i;
|
||||||
while (i >= 0 && s[i] == '/') --i;
|
while (i >= 0 && s[i] == '/') --i;
|
||||||
|
#endif /* ndef __MINGW32__ */
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
{
|
{
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
if (len > 0 && (s[0] == '/' || s[0] == '\\'))
|
||||||
|
#else
|
||||||
if (len > 0 && s[0] == '/')
|
if (len > 0 && s[0] == '/')
|
||||||
|
#endif /* ndef __MINGW32__ */
|
||||||
return scm_substring (filename, SCM_INUM0, SCM_MAKINUM (1));
|
return scm_substring (filename, SCM_INUM0, SCM_MAKINUM (1));
|
||||||
else
|
else
|
||||||
return scm_dot_string;
|
return scm_dot_string;
|
||||||
|
@ -1407,15 +1445,27 @@ SCM_DEFINE (scm_basename, "basename", 1, 1, 0,
|
||||||
j = SCM_STRING_LENGTH (suffix) - 1;
|
j = SCM_STRING_LENGTH (suffix) - 1;
|
||||||
}
|
}
|
||||||
i = len - 1;
|
i = len - 1;
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
while (i >= 0 && (f[i] == '/' || f[i] == '\\')) --i;
|
||||||
|
#else
|
||||||
while (i >= 0 && f[i] == '/') --i;
|
while (i >= 0 && f[i] == '/') --i;
|
||||||
|
#endif /* ndef __MINGW32__ */
|
||||||
end = i;
|
end = i;
|
||||||
while (i >= 0 && j >= 0 && f[i] == s[j]) --i, --j;
|
while (i >= 0 && j >= 0 && f[i] == s[j]) --i, --j;
|
||||||
if (j == -1)
|
if (j == -1)
|
||||||
end = i;
|
end = i;
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
while (i >= 0 && (f[i] != '/' || f[i] != '\\')) --i;
|
||||||
|
#else
|
||||||
while (i >= 0 && f[i] != '/') --i;
|
while (i >= 0 && f[i] != '/') --i;
|
||||||
|
#endif /* ndef __MINGW32__ */
|
||||||
if (i == end)
|
if (i == end)
|
||||||
{
|
{
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
if (len > 0 && (f[0] == '/' || f[i] == '\\'))
|
||||||
|
#else
|
||||||
if (len > 0 && f[0] == '/')
|
if (len > 0 && f[0] == '/')
|
||||||
|
#endif /* ndef __MINGW32__ */
|
||||||
return scm_substring (filename, SCM_INUM0, SCM_MAKINUM (1));
|
return scm_substring (filename, SCM_INUM0, SCM_MAKINUM (1));
|
||||||
else
|
else
|
||||||
return scm_dot_string;
|
return scm_dot_string;
|
||||||
|
|
|
@ -68,6 +68,12 @@ size_t fwrite ();
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "libguile/iselect.h"
|
#include "libguile/iselect.h"
|
||||||
|
/* Some defines for Windows. */
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
# include <sys/stat.h>
|
||||||
|
# include <winsock2.h>
|
||||||
|
# define ftruncate(fd, size) chsize (fd, size)
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
|
|
||||||
scm_t_bits scm_tc16_fport;
|
scm_t_bits scm_tc16_fport;
|
||||||
|
@ -349,6 +355,46 @@ SCM_DEFINE (scm_open_file, "open-file", 2, 0, 0,
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
/*
|
||||||
|
* Try getting the appropiate file flags for a given file descriptor
|
||||||
|
* under Windows. This incorporates some fancy operations because Windows
|
||||||
|
* differentiates between file, pipe and socket descriptors.
|
||||||
|
*/
|
||||||
|
#ifndef O_ACCMODE
|
||||||
|
# define O_ACCMODE 0x0003
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int getflags (int fdes)
|
||||||
|
{
|
||||||
|
int flags = 0;
|
||||||
|
struct stat buf;
|
||||||
|
int error, optlen = sizeof (int);
|
||||||
|
|
||||||
|
/* Is this a socket ? */
|
||||||
|
if (getsockopt (fdes, SOL_SOCKET, SO_ERROR, (void *) &error, &optlen) >= 0)
|
||||||
|
flags = O_RDWR;
|
||||||
|
/* Maybe a regular file ? */
|
||||||
|
else if (fstat (fdes, &buf) < 0)
|
||||||
|
flags = -1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Or an anonymous pipe handle ? */
|
||||||
|
if (buf.st_mode & 0x1000 /* _O_SHORT_LIVED */)
|
||||||
|
flags = O_RDWR;
|
||||||
|
/* stdin ? */
|
||||||
|
else if (fdes == 0 && isatty (fdes))
|
||||||
|
flags = O_RDONLY;
|
||||||
|
/* stdout / stderr ? */
|
||||||
|
else if ((fdes == 1 || fdes == 2) && isatty (fdes))
|
||||||
|
flags = O_WRONLY;
|
||||||
|
else
|
||||||
|
flags = buf.st_mode;
|
||||||
|
}
|
||||||
|
return flags;
|
||||||
|
}
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
/* Building Guile ports from a file descriptor. */
|
/* Building Guile ports from a file descriptor. */
|
||||||
|
|
||||||
/* Build a Scheme port from an open file descriptor `fdes'.
|
/* Build a Scheme port from an open file descriptor `fdes'.
|
||||||
|
@ -366,7 +412,11 @@ scm_fdes_to_port (int fdes, char *mode, SCM name)
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
/* test that fdes is valid. */
|
/* test that fdes is valid. */
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
flags = getflags (fdes);
|
||||||
|
#else
|
||||||
flags = fcntl (fdes, F_GETFL, 0);
|
flags = fcntl (fdes, F_GETFL, 0);
|
||||||
|
#endif
|
||||||
if (flags == -1)
|
if (flags == -1)
|
||||||
SCM_SYSERROR;
|
SCM_SYSERROR;
|
||||||
flags &= O_ACCMODE;
|
flags &= O_ACCMODE;
|
||||||
|
@ -456,9 +506,11 @@ fport_print (SCM exp, SCM port, scm_print_state *pstate SCM_UNUSED)
|
||||||
scm_putc (' ', port);
|
scm_putc (' ', port);
|
||||||
fdes = (SCM_FSTREAM (exp))->fdes;
|
fdes = (SCM_FSTREAM (exp))->fdes;
|
||||||
|
|
||||||
|
#ifdef HAVE_TTYNAME
|
||||||
if (isatty (fdes))
|
if (isatty (fdes))
|
||||||
scm_puts (ttyname (fdes), port);
|
scm_puts (ttyname (fdes), port);
|
||||||
else
|
else
|
||||||
|
#endif /* HAVE_TTYNAME */
|
||||||
scm_intprint (fdes, 10, port);
|
scm_intprint (fdes, 10, port);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -595,7 +647,7 @@ static void write_all (SCM port, const void *data, size_t remaining)
|
||||||
|
|
||||||
while (remaining > 0)
|
while (remaining > 0)
|
||||||
{
|
{
|
||||||
ssize_t done;
|
size_t done;
|
||||||
|
|
||||||
SCM_SYSCALL (done = write (fdes, data, remaining));
|
SCM_SYSCALL (done = write (fdes, data, remaining));
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ Mikael Djurfeldt, SANS/NADA KTH, 10044 STOCKHOLM, SWEDEN */
|
||||||
interface in your main program. This is necessary if the interface
|
interface in your main program. This is necessary if the interface
|
||||||
is defined in a library, such as Guile. */
|
is defined in a library, such as Guile. */
|
||||||
|
|
||||||
|
#ifndef __MINGW32__
|
||||||
#define GDB_INTERFACE \
|
#define GDB_INTERFACE \
|
||||||
void *gdb_interface[] = { \
|
void *gdb_interface[] = { \
|
||||||
&gdb_options, \
|
&gdb_options, \
|
||||||
|
@ -71,6 +72,27 @@ void *gdb_interface[] = { \
|
||||||
(void *) gdb_print, \
|
(void *) gdb_print, \
|
||||||
(void *) gdb_binding \
|
(void *) gdb_binding \
|
||||||
}
|
}
|
||||||
|
#else /* __MINGW32__ */
|
||||||
|
/* Because the following functions are imported from a DLL (some kind of
|
||||||
|
shared library) these are NO static initializers. That is why you need to
|
||||||
|
define them and assign the functions and data items at run time. */
|
||||||
|
#define GDB_INTERFACE \
|
||||||
|
void *gdb_interface[] = \
|
||||||
|
{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
|
||||||
|
#define GDB_INTERFACE_INIT \
|
||||||
|
do { \
|
||||||
|
gdb_interface[0] = &gdb_options; \
|
||||||
|
gdb_interface[1] = &gdb_language; \
|
||||||
|
gdb_interface[2] = &gdb_result; \
|
||||||
|
gdb_interface[3] = &gdb_output; \
|
||||||
|
gdb_interface[4] = &gdb_output_length; \
|
||||||
|
gdb_interface[5] = (void *) gdb_maybe_valid_type_p; \
|
||||||
|
gdb_interface[6] = (void *) gdb_read; \
|
||||||
|
gdb_interface[7] = (void *) gdb_eval; \
|
||||||
|
gdb_interface[8] = (void *) gdb_print; \
|
||||||
|
gdb_interface[9] = (void *) gdb_binding; \
|
||||||
|
} while (0);
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
/* GDB_OPTIONS is a set of flags informing gdb what features are present
|
/* GDB_OPTIONS is a set of flags informing gdb what features are present
|
||||||
in the interface. Currently only one option is supported: */
|
in the interface. Currently only one option is supported: */
|
||||||
|
|
|
@ -55,6 +55,10 @@
|
||||||
#include <libltdl/ltdl.h>
|
#include <libltdl/ltdl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Debugger interface (don't change the order of the following lines) */
|
/* Debugger interface (don't change the order of the following lines) */
|
||||||
#define GDB_TYPE SCM
|
#define GDB_TYPE SCM
|
||||||
#include <libguile/gdb_interface.h>
|
#include <libguile/gdb_interface.h>
|
||||||
|
@ -63,8 +67,19 @@ GDB_INTERFACE;
|
||||||
static void
|
static void
|
||||||
inner_main (void *closure SCM_UNUSED, int argc, char **argv)
|
inner_main (void *closure SCM_UNUSED, int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
/* This is necessary to startup the Winsock API under Win32. */
|
||||||
|
WSADATA WSAData;
|
||||||
|
WSAStartup (0x0202, &WSAData);
|
||||||
|
GDB_INTERFACE_INIT;
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
/* module initializations would go here */
|
/* module initializations would go here */
|
||||||
scm_shell (argc, argv);
|
scm_shell (argc, argv);
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
WSACleanup ();
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -40,9 +40,13 @@ static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6/17/93";
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,10 @@
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FD_SET
|
#ifdef FD_SET
|
||||||
|
|
||||||
#define SELECT_TYPE fd_set
|
#define SELECT_TYPE fd_set
|
||||||
|
|
|
@ -66,12 +66,17 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_H_ERRNO
|
#if !defined (HAVE_H_ERRNO) && !defined (__MINGW32__)
|
||||||
/* h_errno not found in netdb.h, maybe this will help. */
|
/* h_errno not found in netdb.h, maybe this will help. */
|
||||||
extern int h_errno;
|
extern int h_errno;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -77,6 +77,11 @@
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
#include <fcntl.h>
|
||||||
|
#define ftruncate(fd, size) chsize (fd, size)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* The port kind table --- a dynamically resized array of port types. */
|
/* The port kind table --- a dynamically resized array of port types. */
|
||||||
|
|
||||||
|
@ -802,7 +807,7 @@ SCM_DEFINE (scm_output_port_p, "output-port?", 1, 0, 0,
|
||||||
"@code{port?}.")
|
"@code{port?}.")
|
||||||
#define FUNC_NAME s_scm_output_port_p
|
#define FUNC_NAME s_scm_output_port_p
|
||||||
{
|
{
|
||||||
SCM_COERCE_OUTPORT (x);
|
x = SCM_COERCE_OUTPORT (x);
|
||||||
return SCM_BOOL (SCM_OUTPUT_PORT_P (x));
|
return SCM_BOOL (SCM_OUTPUT_PORT_P (x));
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
@ -1325,6 +1330,20 @@ SCM_DEFINE (scm_seek, "seek", 3, 0, 0,
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
/* Define this function since it is not supported under Windows. */
|
||||||
|
static int truncate (char *file, int length)
|
||||||
|
{
|
||||||
|
int ret = -1, fdes;
|
||||||
|
if ((fdes = open (file, O_BINARY | O_WRONLY)) != -1)
|
||||||
|
{
|
||||||
|
ret = chsize (fdes, length);
|
||||||
|
close (fdes);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
SCM_DEFINE (scm_truncate_file, "truncate-file", 1, 1, 0,
|
SCM_DEFINE (scm_truncate_file, "truncate-file", 1, 1, 0,
|
||||||
(SCM object, SCM length),
|
(SCM object, SCM length),
|
||||||
"Truncates the object referred to by @var{object} to at most\n"
|
"Truncates the object referred to by @var{object} to at most\n"
|
||||||
|
|
|
@ -91,7 +91,20 @@ extern char *ttyname();
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_PWD_H
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IO_H
|
||||||
|
#include <io.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
/* Some defines for Windows here. */
|
||||||
|
# define pipe(fd) _pipe (fd, 256, O_BINARY)
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
#if HAVE_SYS_WAIT_H
|
#if HAVE_SYS_WAIT_H
|
||||||
# include <sys/wait.h>
|
# include <sys/wait.h>
|
||||||
|
@ -107,8 +120,12 @@ extern char *ttyname();
|
||||||
|
|
||||||
extern char ** environ;
|
extern char ** environ;
|
||||||
|
|
||||||
|
#ifdef HAVE_GRP_H
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HAVE_DIRENT_H
|
#if HAVE_DIRENT_H
|
||||||
# include <dirent.h>
|
# include <dirent.h>
|
||||||
|
@ -247,7 +264,7 @@ SCM_DEFINE (scm_getgroups, "getgroups", 0, 0, 0,
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_GETPWENT
|
||||||
SCM_DEFINE (scm_getpwuid, "getpw", 0, 1, 0,
|
SCM_DEFINE (scm_getpwuid, "getpw", 0, 1, 0,
|
||||||
(SCM user),
|
(SCM user),
|
||||||
"Look up an entry in the user database. @var{obj} can be an integer,\n"
|
"Look up an entry in the user database. @var{obj} can be an integer,\n"
|
||||||
|
@ -298,6 +315,7 @@ SCM_DEFINE (scm_getpwuid, "getpw", 0, 1, 0,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_GETPWENT */
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_SETPWENT
|
#ifdef HAVE_SETPWENT
|
||||||
|
@ -318,7 +336,7 @@ SCM_DEFINE (scm_setpwent, "setpw", 0, 1, 0,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_GETGRENT
|
||||||
/* Combines getgrgid and getgrnam. */
|
/* Combines getgrgid and getgrnam. */
|
||||||
SCM_DEFINE (scm_getgrgid, "getgr", 0, 1, 0,
|
SCM_DEFINE (scm_getgrgid, "getgr", 0, 1, 0,
|
||||||
(SCM name),
|
(SCM name),
|
||||||
|
@ -375,7 +393,7 @@ SCM_DEFINE (scm_setgrent, "setgr", 0, 1, 0,
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_GETGRENT */
|
||||||
|
|
||||||
|
|
||||||
SCM_DEFINE (scm_kill, "kill", 2, 0, 0,
|
SCM_DEFINE (scm_kill, "kill", 2, 0, 0,
|
||||||
|
@ -407,7 +425,12 @@ SCM_DEFINE (scm_kill, "kill", 2, 0, 0,
|
||||||
SCM_VALIDATE_INUM (1,pid);
|
SCM_VALIDATE_INUM (1,pid);
|
||||||
SCM_VALIDATE_INUM (2,sig);
|
SCM_VALIDATE_INUM (2,sig);
|
||||||
/* Signal values are interned in scm_init_posix(). */
|
/* Signal values are interned in scm_init_posix(). */
|
||||||
|
#ifdef HAVE_KILL
|
||||||
if (kill ((int) SCM_INUM (pid), (int) SCM_INUM (sig)) != 0)
|
if (kill ((int) SCM_INUM (pid), (int) SCM_INUM (sig)) != 0)
|
||||||
|
#else
|
||||||
|
if ((int) SCM_INUM (pid) == getpid ())
|
||||||
|
if (raise ((int) SCM_INUM (sig)) != 0)
|
||||||
|
#endif
|
||||||
SCM_SYSERROR;
|
SCM_SYSERROR;
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
|
@ -472,6 +495,7 @@ SCM_DEFINE (scm_waitpid, "waitpid", 1, 1, 0,
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
#endif /* HAVE_WAITPID */
|
#endif /* HAVE_WAITPID */
|
||||||
|
|
||||||
|
#ifndef __MINGW32__
|
||||||
SCM_DEFINE (scm_status_exit_val, "status:exit-val", 1, 0, 0,
|
SCM_DEFINE (scm_status_exit_val, "status:exit-val", 1, 0, 0,
|
||||||
(SCM status),
|
(SCM status),
|
||||||
"Return the exit status value, as would be set if a process\n"
|
"Return the exit status value, as would be set if a process\n"
|
||||||
|
@ -528,7 +552,9 @@ SCM_DEFINE (scm_status_stop_sig, "status:stop-sig", 1, 0, 0,
|
||||||
return SCM_BOOL_F;
|
return SCM_BOOL_F;
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
|
#ifdef HAVE_GETPPID
|
||||||
SCM_DEFINE (scm_getppid, "getppid", 0, 0, 0,
|
SCM_DEFINE (scm_getppid, "getppid", 0, 0, 0,
|
||||||
(),
|
(),
|
||||||
"Return an integer representing the process ID of the parent\n"
|
"Return an integer representing the process ID of the parent\n"
|
||||||
|
@ -538,9 +564,10 @@ SCM_DEFINE (scm_getppid, "getppid", 0, 0, 0,
|
||||||
return SCM_MAKINUM (0L + getppid ());
|
return SCM_MAKINUM (0L + getppid ());
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_GETPPID */
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __MINGW32__
|
||||||
SCM_DEFINE (scm_getuid, "getuid", 0, 0, 0,
|
SCM_DEFINE (scm_getuid, "getuid", 0, 0, 0,
|
||||||
(),
|
(),
|
||||||
"Return an integer representing the current real user ID.")
|
"Return an integer representing the current real user ID.")
|
||||||
|
@ -549,6 +576,7 @@ SCM_DEFINE (scm_getuid, "getuid", 0, 0, 0,
|
||||||
return SCM_MAKINUM (0L + getuid ());
|
return SCM_MAKINUM (0L + getuid ());
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* __MINGW32__ */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -580,7 +608,6 @@ SCM_DEFINE (scm_geteuid, "geteuid", 0, 0, 0,
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SCM_DEFINE (scm_getegid, "getegid", 0, 0, 0,
|
SCM_DEFINE (scm_getegid, "getegid", 0, 0, 0,
|
||||||
(),
|
(),
|
||||||
"Return an integer representing the current effective group ID.\n"
|
"Return an integer representing the current effective group ID.\n"
|
||||||
|
@ -675,6 +702,8 @@ SCM_DEFINE (scm_setegid, "setegid", 1, 0, 0,
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_GETPGRP
|
||||||
SCM_DEFINE (scm_getpgrp, "getpgrp", 0, 0, 0,
|
SCM_DEFINE (scm_getpgrp, "getpgrp", 0, 0, 0,
|
||||||
(),
|
(),
|
||||||
"Return an integer representing the current process group ID.\n"
|
"Return an integer representing the current process group ID.\n"
|
||||||
|
@ -686,6 +715,8 @@ SCM_DEFINE (scm_getpgrp, "getpgrp", 0, 0, 0,
|
||||||
return SCM_MAKINUM (fn (0));
|
return SCM_MAKINUM (fn (0));
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_GETPGRP */
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_SETPGID
|
#ifdef HAVE_SETPGID
|
||||||
SCM_DEFINE (scm_setpgid, "setpgid", 2, 0, 0,
|
SCM_DEFINE (scm_setpgid, "setpgid", 2, 0, 0,
|
||||||
|
@ -724,6 +755,7 @@ SCM_DEFINE (scm_setsid, "setsid", 0, 0, 0,
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
#endif /* HAVE_SETSID */
|
#endif /* HAVE_SETSID */
|
||||||
|
|
||||||
|
#ifdef HAVE_TTYNAME
|
||||||
SCM_DEFINE (scm_ttyname, "ttyname", 1, 0, 0,
|
SCM_DEFINE (scm_ttyname, "ttyname", 1, 0, 0,
|
||||||
(SCM port),
|
(SCM port),
|
||||||
"Return a string with the name of the serial terminal device\n"
|
"Return a string with the name of the serial terminal device\n"
|
||||||
|
@ -745,6 +777,7 @@ SCM_DEFINE (scm_ttyname, "ttyname", 1, 0, 0,
|
||||||
return (scm_makfrom0str (ans));
|
return (scm_makfrom0str (ans));
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_TTYNAME */
|
||||||
|
|
||||||
#ifdef HAVE_CTERMID
|
#ifdef HAVE_CTERMID
|
||||||
SCM_DEFINE (scm_ctermid, "ctermid", 0, 0, 0,
|
SCM_DEFINE (scm_ctermid, "ctermid", 0, 0, 0,
|
||||||
|
@ -947,6 +980,7 @@ SCM_DEFINE (scm_execle, "execle", 2, 0, 1,
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
#ifdef HAVE_FORK
|
||||||
SCM_DEFINE (scm_fork, "primitive-fork", 0, 0, 0,
|
SCM_DEFINE (scm_fork, "primitive-fork", 0, 0, 0,
|
||||||
(),
|
(),
|
||||||
"Creates a new \"child\" process by duplicating the current \"parent\" process.\n"
|
"Creates a new \"child\" process by duplicating the current \"parent\" process.\n"
|
||||||
|
@ -963,6 +997,7 @@ SCM_DEFINE (scm_fork, "primitive-fork", 0, 0, 0,
|
||||||
return SCM_MAKINUM (0L+pid);
|
return SCM_MAKINUM (0L+pid);
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
#endif /* HAVE_FORK */
|
||||||
|
|
||||||
#ifdef HAVE_UNAME
|
#ifdef HAVE_UNAME
|
||||||
SCM_DEFINE (scm_uname, "uname", 0, 0, 0,
|
SCM_DEFINE (scm_uname, "uname", 0, 0, 0,
|
||||||
|
|
|
@ -91,6 +91,10 @@ scm_t_rng scm_the_rng;
|
||||||
|
|
||||||
#define A 2131995753UL
|
#define A 2131995753UL
|
||||||
|
|
||||||
|
#ifndef M_PI
|
||||||
|
#define M_PI 3.14159265359
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SIZEOF_LONG > 4
|
#if SIZEOF_LONG > 4
|
||||||
#if SIZEOF_INT > 4
|
#if SIZEOF_INT > 4
|
||||||
#define LONG32 unsigned short
|
#define LONG32 unsigned short
|
||||||
|
@ -100,8 +104,12 @@ scm_t_rng scm_the_rng;
|
||||||
#define LONG64 unsigned long
|
#define LONG64 unsigned long
|
||||||
#else
|
#else
|
||||||
#define LONG32 unsigned long
|
#define LONG32 unsigned long
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
#define LONG64 unsigned __int64
|
||||||
|
#else
|
||||||
#define LONG64 unsigned long long
|
#define LONG64 unsigned long long
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SIZEOF_LONG > 4 || defined (HAVE_LONG_LONGS)
|
#if SIZEOF_LONG > 4 || defined (HAVE_LONG_LONGS)
|
||||||
|
|
||||||
|
|
|
@ -74,6 +74,14 @@ int usleep ();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
#include <windows.h>
|
||||||
|
#define alarm(sec) (0)
|
||||||
|
/* This weird comma expression is because Sleep is void under Windows. */
|
||||||
|
#define sleep(sec) (Sleep ((sec) * 1000), 0)
|
||||||
|
#define kill(pid, sig) raise (sig)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* SIGRETTYPE is the type that signal handlers return. See <signal.h> */
|
/* SIGRETTYPE is the type that signal handlers return. See <signal.h> */
|
||||||
|
@ -298,12 +306,16 @@ SCM_DEFINE (scm_sigaction, "sigaction", 1, 2, 0,
|
||||||
case SIGFPE:
|
case SIGFPE:
|
||||||
case SIGILL:
|
case SIGILL:
|
||||||
case SIGSEGV:
|
case SIGSEGV:
|
||||||
|
#ifdef SIGBUS
|
||||||
case SIGBUS:
|
case SIGBUS:
|
||||||
|
#endif
|
||||||
case SIGABRT:
|
case SIGABRT:
|
||||||
#if defined(SIGIOT) && (SIGIOT != SIGABRT)
|
#if defined(SIGIOT) && (SIGIOT != SIGABRT)
|
||||||
case SIGIOT:
|
case SIGIOT:
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef SIGTRAP
|
||||||
case SIGTRAP:
|
case SIGTRAP:
|
||||||
|
#endif
|
||||||
#ifdef SIGEMT
|
#ifdef SIGEMT
|
||||||
case SIGEMT:
|
case SIGEMT:
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -63,6 +63,9 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#ifdef HAVE_UNIX_DOMAIN_SOCKETS
|
#ifdef HAVE_UNIX_DOMAIN_SOCKETS
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
|
@ -70,6 +73,7 @@
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined (HAVE_UNIX_DOMAIN_SOCKETS) && !defined (SUN_LEN)
|
#if defined (HAVE_UNIX_DOMAIN_SOCKETS) && !defined (SUN_LEN)
|
||||||
#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \
|
#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path) \
|
||||||
|
@ -523,7 +527,7 @@ SCM_DEFINE (scm_getsockopt, "getsockopt", 3, 0, 0,
|
||||||
return scm_cons (scm_long2num (ling->l_onoff),
|
return scm_cons (scm_long2num (ling->l_onoff),
|
||||||
scm_long2num (ling->l_linger));
|
scm_long2num (ling->l_linger));
|
||||||
#else
|
#else
|
||||||
return scm_cons (scm_long2num (*(int *) optval)
|
return scm_cons (scm_long2num (*(int *) optval),
|
||||||
SCM_MAKINUM (0));
|
SCM_MAKINUM (0));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,10 +99,10 @@ extern char *strptime ();
|
||||||
|
|
||||||
/* This should be figured out by autoconf. */
|
/* This should be figured out by autoconf. */
|
||||||
#if ! defined(CLKTCK) && defined(CLK_TCK)
|
#if ! defined(CLKTCK) && defined(CLK_TCK)
|
||||||
# define CLKTCK CLK_TCK
|
# define CLKTCK ((int) CLK_TCK)
|
||||||
#endif
|
#endif
|
||||||
#if ! defined(CLKTCK) && defined(CLOCKS_PER_SEC)
|
#if ! defined(CLKTCK) && defined(CLOCKS_PER_SEC)
|
||||||
# define CLKTCK CLOCKS_PER_SEC
|
# define CLKTCK ((int) CLOCKS_PER_SEC)
|
||||||
#endif
|
#endif
|
||||||
#if ! defined(CLKTCK)
|
#if ! defined(CLKTCK)
|
||||||
# define CLKTCK 60
|
# define CLKTCK 60
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue