1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
Commit graph

20647 commits

Author SHA1 Message Date
Mike Gran
0f983e3db0 Handle CRLF and Unicode line endings in read-line
* libguile/rdelim.c (scm_read_line): handle CRLF, LS and PS
* module/ice-9/suspendable-ports.scm (read-line): handle CRLF, LS, and PS
* module/web/http.scm (read-header-line): take advantage of CRLF in read-line
   (read-header): don't need to test for \return
* test-suite/tests/rdelim.test: new tests for read-line CRLF, LS and PS
* doc/ref/api-io.texi: update doc for read-line
2021-03-11 19:42:33 -08:00
Michael Gran
a744f98dcc ice-9 ftw: handle non-working inodes
* module/ice-9/ftw.scm (visited?-proc): accept filename for string hash
  (file-system-fold): use string hash if ino = 0
  (ftw): use new visited?-proc
* test-suite/tests/ftw.test (visited?-proc valid inodes): add filenames to visited?-proc calls
  (visited?-proc broken inodes): new tests
  (%top-srcdir): canonicalize-path
2021-03-11 10:46:35 -08:00
Michael Gran
c150044640 ice-9 ftw: handle missing getuid and getgid
* module/ice-9/ftw.scm (getuid-or-false, getgid-or-false): new macros
  (stat-dir-readable?-proc): don't overwrite arguments
  (ftw, nftw): use new macros
* test-suite/tests/ftw.test (test-EACCES): don't presume getuid exists
2021-03-11 10:46:24 -08:00
Michael Gran
3f4d5d128c For MinGW use Windows filepaths in libpath.h
* configure.ac (MINGW_LIBPATH): new automake conditional and test
* libguile/Makefile.am (libpath.h) [MINGW_LIBPATH]: use Windows-style
    paths
2021-03-11 10:46:06 -08:00
Mike Gran
1b0da42672 on MinGW, prefer winsock2.h over sys/select in iselect
* libguile/iselect.h [__MINGW32__]: add winsock2 include
2021-03-11 09:37:12 -08:00
Mike Gran
db13f6e282 Build standalone test libraries as unversioned
* test-suite/standalone/Makefile.am (libtest_asmobs_la_LDFLAGS): avoid version
    (libtest_ffi_la_LDFLAGS, libtest_extensions_la_LDFLAGS): avoid version
2021-03-11 08:31:07 -08:00
Mike Gran
7d08c72cf9 Add windows stubs for dlopen, dlclose, dlsym, dlerror
* libguile/dynl.c [__MING32__] (dlopen, dlsym, dlclose, dlerror): use windows stubs
* libguile/posix-w32.c (dlopen_w32, dlsym_w32, dlclose_w32, dlerror_w32):
    new procedures
    (dlerror_str): new module-level variable
    (DLERROR_LEN): new define
* libguile/posix-w32.h: declare dlopen_w32, dlsym_w32, dlclose_w32, dlerror_w32.
    Declare RTLD_NOW, RTLD_LAZY, RTLD_GLOBAL, RTLD_LOCAL
2021-03-11 08:30:57 -08:00
Andy Wingo
85433fc2b1 Add mkstemp; undocument mkstemp!
* doc/ref/posix.texi (File System): Update to document mkstemp only.
* libguile/filesys.c: Make a mkstemp that doesn't modify the input
template.  Instead the caller has to get the file name from
port-filename.
(scm_mkstemp): Use the new mkstemp to implement mkstemp!.  Can't
deprecate yet though as the replacement hasn't been there for long
enough.
* libguile/posix.c (scm_tempnam): Update to mention mkstemp instead.
* module/system/base/compile.scm (call-with-output-file/atomic): Use
mkstemp.
* test-suite/tests/posix.test:
* test-suite/tests/r6rs-files.test: Use mkstemp.
* NEWS: Update.
2021-03-10 20:40:10 +01:00
Mike Gran
89a299102f On Win32, prefer winsock2 header for socket declarations
* libguile/posix-w32.h: prefer lowercase windows.h for MinGW cross-builds
* libguile/socket.c [HAVE_WINSOCK2_H]: use only winsock2.h for socket
    declarations
2021-03-10 02:01:03 -08:00
Michael Gran
1b697d339b remove 2nd attempt at invoking ComSpec when spawning child
The start_child procedure is used to spawn a child process. If it fails
to launch the given argv[0] as if it were a command, it has logic to
retry using the ComSpec as a command interpreter, treating argv[0] as
a batch file name. Usually, this fails because batch files would have
been handled in the first pass if they were valid.  Also, this has
the unfortunate side effect of spawning a shell awaiting user input.

It is safer to remove this attempt.

* libguile/posix-w32.c (start_child): remove fallback processing
2021-03-10 02:00:15 -08:00
Michael Gran
653cc0bf95 disable popen 'no duplicates' test for MinGW
This test, which seems quite complicated to fix, causes the MinGW build
to hang. Disable it for now, but, come back to it later.

* test-suite/tests/popen.test (mingw?): new constant
  (no duplicate): disable for mingw, for now
2021-03-10 01:59:59 -08:00
Michael Gran
fedb65b98e Use lower-case windows.h
On some linux cross-builds, Windows.h is windows.h. On MinGW
case is irrelevant.

* libguile/posix-w32.h: modified
2021-03-10 01:53:03 -08:00
Linus
0bd7497b61 Write a proper vector-map and vector-for-each for (rnrs base)
* module/rnrs/base.scm (vector-map vector-for-each): Rewrite to not be
slow.
* NEWS: Update.
2021-03-09 21:10:04 +01:00
Andy Wingo
5046385df8 Document syntax-sourcev
* NEWS: Add doc link.
* doc/ref/api-macros.texi (Syntax Transformer Helpers): Document
syntax-sourcev.
* module/system/syntax.scm: Re-export syntax-sourcev.
2021-03-09 20:50:08 +01:00
Andy Wingo
c97e1fbb53 Document quote-syntax
* NEWS: Update.
* doc/ref/api-macros.texi (Syntax Case): Update.
2021-03-09 20:49:46 +01:00
Andy Wingo
ec72aa7441 Update NEWS
* NEWS: More words about mini-gmp.
2021-03-09 20:41:15 +01:00
Michael Gran
870dfc0227 Fix define error for mini-gmp
* libguile/gen-scmconfig.c [!SCM_I_GSC_ENABLE_MINI_GMP]: define
    SCM_ENABLE_MINI_GMP as zero, not undef
2021-03-08 21:17:22 -08:00
Andy Wingo
5f1778781d Update NEWS for --enable-mini-gmp
* NEWS: Update.
2021-03-08 22:50:16 +01:00
Andy Wingo
ee1ed277ce Only install libgc as GMP allocator with mini-gmp
* libguile/numbers.c (scm_install_gmp_memory_functions): Default to 1
only if mini-gmp is enabled.
2021-03-08 22:28:25 +01:00
Andy Wingo
f46477f6f5 Don't expose mini-gmp to users
* libguile.h: Don't import anything GMP-related.
* libguile/numbers.h: Import GMP here instead.  If we are using
mini-GMP, only import it when building Guile.
(scm_to_mpz, scm_from_mpz): Don't define when mini-gmp is enabled.
2021-03-08 22:16:15 +01:00
Andy Wingo
91547abf54 More informative error message if GMP not found
* configure.ac: Mention --enable-mini-gmp if GMP not found.
2021-03-07 20:43:16 +01:00
Andy Wingo
cad6094cbc Fix reading #!!#
* module/ice-9/read.scm (%read): Fix reading #!!#.
* test-suite/tests/reader.test ("reading"): Add some test cases.
2021-03-07 20:17:58 +01:00
Michael Gran
1114122fbb tweak unknown hash object error in reader
This makes it match the other species of unknown hash object error
when reading number with radix.

* module/ice-9/read.scm (read-sharp): modified
2021-03-05 22:33:20 -08:00
Michael Gran
d6753e5af5 print token in error msg for unknown hash object
* module/ice-9/read.scm (read-number-and-radix): modified
2021-03-05 22:26:00 -08:00
Michael Gran
1ae9a8df3a Handle <eof> in reader's character escape sequences
* module/ice-9/read.scm (read-r6rs-hex-escape, read-fixed-hex-escape):
    modified
2021-03-05 22:24:40 -08:00
Andy Wingo
9fb550b945 Fix reading "#;", "'", and similar premature-EOF situations
* module/ice-9/read.scm (%read): Adjust how subexpressions are read to
error on EOF.  Improve the error message.
* test-suite/tests/reader.test ("#;"): Adapt expectation.
2021-03-05 21:06:04 +01:00
Andy Wingo
4ad56ed938 Fix up source properties section in manual
* doc/ref/api-debug.texi (Source Properties): Fix wordo, and adapt
text.
2021-03-05 20:49:37 +01:00
Andy Wingo
9897650f7a Fix reading of #true / #false
* module/ice-9/read.scm (%read): Fix bad argument order to unread-char.
2021-03-05 20:44:58 +01:00
Andy Wingo
aaa8f201e9 Update reference for GUILE_EXTENSIONS_PATH
* NEWS: Update.
* doc/ref/guile-invoke.texi (Environment Variables): Add entry.
2021-03-04 21:54:08 +01:00
Andy Wingo
579870abbc Update documentation to incorporate read-syntax
* NEWS: Update a bit.
* doc/ref/api-debug.texi (Source Properties): Mention read-syntax.
* doc/ref/api-evaluation.texi (Annotated Scheme Read): New section.
* doc/ref/api-macros.texi (Syntax Case): Update for source vectors.
2021-03-04 21:42:22 +01:00
Andy Wingo
2c3029e660 Syntax objects print with source locations
* module/system/syntax.scm (print-syntax): Print source locations.
2021-03-04 21:42:22 +01:00
Daniel Llorens
bd93eaf7cc Add docstring for array-shape 2021-03-04 14:35:50 +01:00
Andy Wingo
d904392885 Fix reading improper curly-infix expressions
* module/ice-9/read.scm (%read): A fix to last night's fix, to make
srfi-105.test pass.
2021-03-04 12:40:14 +01:00
Michael Gran
6ca3ab621c don't presume availability of gmp.pc
This suggests moving the conditional that determines if mini-gmp is used
into scmconfig.h.

* configure.ac: replace PKG_CHECK_MODULES for gmp with AC_LIB_HAVE_LINKFLAGS
    Remove ENABLE_MINI_GMP define.  Also don't run mpz_inits test for
    --enable-mini-gmp.
* libguile/gen-scmconfig.c (main) [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
    with SCM_I_GSC_ENABLE_MINI_GMP
* libguile/bytevectors.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
    with SCM_ENABLE_MINI_GMP
* libguile/init.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
    with SCM_ENABLE_MINI_GMP
* libguile/numbers.c: include scm.h
    [SCM_ENABLE_MINI_GMP]: provide mpz_inits and mpz_clears
    [ENABLE_MINI_GMP]: prefer SCM_ENABLE_MINI_GMP to ENABLE_MINI_GMP
* libguile/numbers.h: include scm.h
* libguile/random.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
    with SCM_ENABLE_MINI_GMP
* libguile/socket.c [ENABLE_MINI_GMP]: replace ENABLE_MINI_GMP
    with SCM_ENABLE_MINI_GMP
2021-03-03 14:06:29 -08:00
Andy Wingo
eb5ffda6ce Fix reading #c32 vectors
* module/ice-9/read.scm (%read): Fix a wee typo.
2021-03-03 22:59:27 +01:00
Andy Wingo
ea86a5c6d2 Fix some srfi-105 parsing errors
* module/ice-9/read.scm (%read): Fix parsing errors.
2021-03-03 22:56:58 +01:00
Andy Wingo
94279414a8 Fix length of \U hex escape in new reader
* module/ice-9/read.scm (%read): \U escape is 6 digits long.
2021-03-03 22:44:30 +01:00
Andy Wingo
a574fdf964 Remove read extension support from primitive-read
* libguile/read.c (scm_read_sharp_extension): Remove.
(scm_read_sharp): Adapt.
2021-03-03 22:30:49 +01:00
Andy Wingo
f2a2baa042 More read.c simplifications
* libguile/read.c: Use "return EXPR" instead of "return (EXPR)".  Avoid
passing around line and column info, as we don't use it any more.
2021-03-03 22:22:56 +01:00
Andy Wingo
38abf6b247 primitive-read handles only default reader options
* libguile/read.c: Remove support for all non-default reader options.
Also remove support for source positions.  The idea is that
primitive-read should just be a stripped-down, easy-to-understand reader
that is enough to bootstrap the C reader.  Probably more refactoring
will follow.
2021-03-03 22:17:16 +01:00
Andy Wingo
a1fdb76455 Scheme reader fully replaces C reader
* libguile/read.h:
* libguile/read.c (scm_primitive_read): New name for C reader.
(scm_read): Call current value of "read" variable.
(scm_init_read): Initialize "read" binding to "primitive-read".
Replaced later in boot-9.
2021-03-03 21:43:33 +01:00
Daniel Llorens
9516a10ab3 Fix bug in new array reader
* module/ice-9/read.scm (read-array): Return pair for dimension when len
  is given; single number is lbnd for list->typed-array.
* test-suite/tests/arrays.test: More test cases for the reader.
2021-03-03 18:40:39 +01:00
Andy Wingo
8edf1dc623 Read-in-scheme replaces boot "read" definition
Instead of defining a separate module, given that "read" calls are quite
all over the place, we're just going to replace the boot "read" binding
with read.scm.  This way, we'll be able to remove support for reader
options in the boot reader, as it will only ever be used for a finite
set of files.

* NEWS: Update.
* module/Makefile.am (ice-9/boot-9.go): Depend on read.scm.
(SOURCES):
* am/bootstrap.am (SOURCES): Don't build a ice-9/read.go, as we include
it.
* module/ice-9/boot-9.scm (read-syntax): Define here, as "include" now
uses it.
(read-hash-procedures, read-hash-procedure, read-hash-extend): New
procedures.  Will replace C variants.
(read, read-syntax): Include read.scm to define these.
* module/ice-9/psyntax-pp.scm (include): Regenerate.
* module/ice-9/psyntax.scm (include): Use read-syntax, so we get better
source information.
* module/ice-9/read.scm (let*-values): New local definition, to avoid
loading srfi-11.
(%read): Use list->typed-array instead of u8-list->bytevector.
* module/language/scheme/spec.scm: Remove (ice-9 read) import;
read-syntax is there in the boot environment
2021-03-03 17:08:55 +01:00
Andy Wingo
118f0c23c4 Relax srfi-105 source expectations
* test-suite/tests/srfi-105.test ("curly-infix"): For { EXPR }, allow
the source to be at the { rather than at EXPR.
2021-03-03 17:08:55 +01:00
Andy Wingo
079800d682 Fix unterminated #!...!# error message in Scheme reader
* module/ice-9/read.scm (%read): Tweak "unterminated block constant"
error to be more compatible with C reader.
2021-03-03 16:22:56 +01:00
Andy Wingo
dba7669077 Fix reading neoteric exprs in Scheme reader
* module/ice-9/read.scm (%read): Call the inner reader, not the outer
reader.
2021-03-03 16:22:56 +01:00
Andy Wingo
816c8d23a1 Fix reader extensions in Scheme reader
* module/ice-9/read.scm (%read): Fix invocation of hash procedure.
2021-03-03 16:22:56 +01:00
Andy Wingo
5ea8c69e91 Invalid charset at EOF does not cause decoding error
* libguile/ports.c (peek_iconv_codepoint): If the input has no bytes,
there's little point in raising a decoding error here.  Therefore remove
the needless iconv acquisition, harmonising with suspendable-ports.
* test-suite/tests/ports.test ("port-encoding"): Update test to include
some input so that the exception gets raised.
2021-03-03 16:22:56 +01:00
Andy Wingo
c802ed4832 Remove textual-ports include from (ice-9 read)
* module/ice-9/read.scm: We'll be loading this file early, so avoid
extraneous deps.
2021-03-03 15:08:10 +01:00
Michael Gran
54adbd6f0f improve autoconfigury for minigmp
* configure.ac: add SCM_I_GSC_ENABLE_MINI_GMP var and rename
    GUILE_MINI_GMP to ENABLE_MINI_GMP
* libguile/bytevectors (GUILE_MINI_GMP): rename to ENABLE_MINI_GMP
* libguile/gen-scmconfig.c: renamed GUILE_MINI_GMP to ENABLE_MINI_GMP.
    rename GUILE_MINI_GMP to SCM_ENABLE_MINI_GMP
* libguile/gen-scmconfig.h: add SCM_I_GSC_ENABLE_MINI_GMP
* libguile/init.c [GUILE_MINI_GMP]: prefer ENABLE_MINI_GMP
* libguile/numbers.c [GUILE_MINI_GMP]: prefer ENABLE_MINI_GMP
* libguile/numbers.h: include scmconfig.h
    rename GUILE_MINI_GMP to SCM_ENABLE_MINI_GMP
* libguile/random.c [GUILE_MINI_GMP]: prefer ENABLE_MINI_GMP
* libguile/socket.c [GUILE_MINI_GMP]: prefer ENABLE_MINI_GMP
* libguile.h [GUILE_MINI_GMP]: prefer SCM_ENABLE_MINI_GMP
2021-03-02 06:18:32 -08:00