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

13578 commits

Author SHA1 Message Date
Andy Wingo
c372cd74fd repl read/write using current ports, not captured ports
Fixes bug in repl meta-commands after activating readline, which changes
the current input port.

* module/system/repl/common.scm (<repl>): Remove inport and outport
  fields.
  (make-repl): Adapt.
  (repl-read, repl-print): Just read and write to the current ports.

* module/system/repl/repl.scm (meta-reader): Meta-read from the current
  input port.

* module/system/repl/command.scm (read-command, define-meta-command):
  Read from the current input port.
2010-11-18 14:32:53 +01:00
Andy Wingo
9b5fcde6f9 lower-case hexadecimal digits again
* libguile/numbers.c: Default to lower-case hexadecimal digits again.
2010-11-18 13:10:45 +01:00
Andy Wingo
96fa68966d better errors for ecmascript parser too
* module/language/ecmascript/parse.scm (syntax-error): Better errors
  here too.
2010-11-18 13:03:49 +01:00
Andy Wingo
b8b6343318 ecmascript tokenization errors report source location
* module/language/ecmascript/tokenize.scm (syntax-error): Report source
  locations. Adapt all callers to pass source locations.
2010-11-18 12:55:25 +01:00
Andy Wingo
6e699fed6b add source-location->source-properties to lalr
* module/system/base/lalr.scm (source-location->source-properties): New
  public function, to produce source properties that can be given to the
  compiler.
2010-11-18 12:31:28 +01:00
Andy Wingo
e92f113a5e more ecmascript testing
* test-suite/tests/ecmascript.test (eread/1, parse): Also check
  read-ecmascript/1, which uses tokenize/1.
2010-11-18 12:26:20 +01:00
Andy Wingo
a608cad27e fix ecmascript at the repl
* module/language/ecmascript/tokenize.scm (syntax-error): Reorder args
  to throw vals in the right order.
  (make-tokenizer/1): Fix. Broken since the lalr refactor...
2010-11-18 12:24:01 +01:00
Andy Wingo
29de6ae2e8 repl.scm displays syntax errors on read as well
* module/system/repl/repl.scm (prompting-meta-read): Use
  display-syntax-error as appropriate.
2010-11-18 12:21:36 +01:00
Andy Wingo
cd28785f79 deprecate cuserid
* libguile/posix.c:
* libguile/posix.h:
* libguile/deprecated.h:
* libguile/deprecated.c (scm_cuserid): Deprecate cuserid, as it only
  returns 8 bytes of a user's login.

* doc/ref/posix.texi: Remove cuserid from docs.
2010-11-18 11:15:16 +01:00
Andy Wingo
e75184d5d2 adapt tests to new syntax-error form
* test-suite/tests/syntax.test (pass-if-syntax-error): Fix up for new
  form of syntax errors. Adapt all tests.

* test-suite/tests/srfi-17.test: Likewise.
2010-11-18 11:04:15 +01:00
Julian Graham
b98d5a5a76 Add exports for missing functions from `(rnrs base)'.
* module/rnrs.scm (boolean=?): New export.
  Fix typo in export of`integer-valued?'.
* module/rnrs/base.scm: Add exports for `exact' and `inexact'.
  (boolean=?, symbol=?, infinite?, finite?, exact-integer-sqrt,
  integer-valued?, rational-valued?, real-valued?): New functions.
* test-suite/tests/r6rs-base.test (boolean=?, symbol=?, infinite?,
  finite?, exact-integer-sqrt, integer-valued?, rational-valued?,
  real-valued?): New test prefixes and tests.
2010-11-17 00:59:45 -05:00
Andy Wingo
eeb48bc27e fix the C syntax-error pretty-printer
* libguile/throw.c (handler_message): Fix up a bit.
2010-11-16 03:00:01 +01:00
Andy Wingo
2090f909b4 add proper pretty-printing for syntax errors
* module/system/repl/repl.scm (display-syntax-error): New helper,
  displays a syntax error.
  (abort-on-error, run-repl): Use it.

* libguile/throw.c (handler_message): Re-code the same thing in C.
2010-11-16 02:57:27 +01:00
Andy Wingo
6cb423613e remove syntax-error and call-with-compile-error-catch from compile.scm
* module/system/base/compile.scm: Remove unused syntax-error and
  call-with-compile-error-catch exports.
2010-11-16 02:57:27 +01:00
Andy Wingo
1811d0332f ecmascript syntax errors throw to 'syntax-error
* module/language/ecmascript/parse.scm (syntax-error):
* module/language/ecmascript/tokenize.scm (syntax-error): Throw to
  'syntax-error as psyntax does.
2010-11-16 02:57:27 +01:00
Andy Wingo
8f1870f20f syntax-violation uses lambda*, throws a structured message
* module/ice-9/psyntax.scm (syntax-violation): Use lambda* for subform
  arg. Instead of using scm-error, just throw to 'syntax-error with all
  we got.

* module/ice-9/psyntax-pp.scm (#{and-map*\ 37}): Regenerated.
2010-11-16 02:56:57 +01:00
Andy Wingo
a6f3af1618 fix string->number for bases > 16
* libguile/numbers.c (scm_iuint2str): Add an assertion on the domain of
  the radix. Use the number_chars table to write the string, instead of
  doing strange math. Same effect, though.
  (mem2uinteger, char_decimal_value): Change logic to allow all ascii
  alphabetic chars as decimals, not just a-f. Thanks to Nils Gey for the
  report.

* test-suite/tests/numbers.test ("number->string"): Add some tests.
2010-11-15 23:43:30 +01:00
Neil Jerram
8b755a759e Expression-oriented readline history
* guile-readline/ice-9/readline.scm (make-readline-port): Instead of
  calling add-history after every %readline call, do it only when
  starting a new read.  Other times, append the line just read to an
  internal buffer.
2010-11-14 12:22:56 +01:00
Andy Wingo
d9f00c3db5 flesh out (web server)'s sanitize-response
* module/web/server.scm (sanitize-response): Flesh out. If we get a
  string, we encode it to a bytevector using the encoding snarfed from
  the response. We should check the request, though...
2010-11-13 18:31:34 +01:00
Andy Wingo
3d95977991 add extend-response.
* module/web/response.scm (extend-response): New utility.
2010-11-13 18:30:27 +01:00
Andy Wingo
7aa54882cf (web http) parses content-type as "foo/bar", not "foo" "bar"
* module/web/http.scm (parse-media-type, validate-media-type,
  (content-type): Change to represent media types as ("foo/bar" ("param"
  . "val") ...) instead of ("foo" "bar" ("param" . "val") ...). Seems to
  be more in line with what people expect.

* test-suite/tests/web-http.test ("entity headers"): Add content-type
  test.

* test-suite/tests/web-response.test ("example-1"): Adapt expected
  parse.
2010-11-13 18:25:34 +01:00
Andy Wingo
190fa72a8f NUL vs NULL fix
* libguile/read.c (scm_i_scan_for_encoding): Fix NUL rather than NULL.
2010-11-12 17:18:08 +01:00
Andy Wingo
347ba27e4b remove (web toy-server)
* module/Makefile.am
* module/web/toy-server.scm: Remove. It's not so much that the new (web
  server) stuff is not a toy, it's that users are expected to use the
  new backends (mod-lisp, etc) in "production".
2010-11-12 17:16:36 +01:00
Andy Wingo
79ef79ee34 add generic web server with http-over-tcp backend
* module/web/server.scm: New generic web server module, with support for
  different backends. An HTTP-over-TCP backend is the only one included
  with Guile, though one can imagine FastCGI, mod-lisp, mongrel2/0mq etc
  backends as well.

* module/web/server/http.scm: The aforementioned HTTP backend.
2010-11-12 17:16:36 +01:00
Andy Wingo
d4b6200a0a add request-meta
* module/web/request.scm (<request>): Add `meta' field and accessor, for
  metadata like the server IP, the client IP, CGI environment variables,
  etc.
  (build-request): Add meta kwarg.
  (read-request): Add meta optional arg.
  (write-request): Adapt.
2010-11-12 17:16:36 +01:00
Andy Wingo
13b7e2a6e6 more (web http) exports for parsing request components
* module/web/http.scm (lookup-header-decl): New exported function.
  (parse-http-version, parse-http-method, parse-request-uri): Export
  these functions.
2010-11-12 17:16:36 +01:00
Andy Wingo
67d655849a call-with-error-handling pass-keys w/ procedural handlers fix
* module/system/repl/error-handling.scm (call-with-error-handling):
  Respect the pass-keys set for procedural on-error and post-error
  handlers.
2010-11-12 17:16:35 +01:00
Andy Wingo
4eb7c8f004 unparse-uri avoids serializing e.g. :80 in http:// uris
* module/web/uri.scm (declare-default-port!): New function, declares a
  default port for a scheme. Predeclare default ports for http and
  https.
  (unparse-uri): If the port is the default port for the given scheme,
  don't serialize the port part of the URI.
2010-11-12 17:16:35 +01:00
Julian Graham
f25e1b6713 Fix buffer over-read in port encoding scan.
* libguile/read.c (scm_i_scan_for_encoding): Add a NULL terminator to the
  end of header to prevent over-read by subsequent call to strstr.
2010-11-12 08:45:09 -05:00
Ludovic Courtès
16f0612864 Add FFI tests for `sizeof' and structs.
* test-suite/tests/foreign.test ("structs")["sizeof { int8, double }",
  "sizeof { short, int, long, pointer }"]: New tests.
2010-11-11 16:41:15 +01:00
Ludovic Courtès
42f7c01e0a Add FFI support for short' and unsigned short'.
* libguile/foreign.c (sym_short, sym_unsigned_short): New variables.
  (scm_init_foreign): Define Scheme variables SYM_SHORT and
  SYM_UNSIGNED_SHORT.

* module/system/foreign.scm (short, unsigned-short): New exports.
  (integer-ref, integer-set): Support (= (sizeof TYPE) 2).
  (%read-short, %write-short!, %read-unsigned-short,
  %write-unsigned-short!): New variables.
  (*writers*): Add support for `short' and `unsigned-short'.
  (*readers*): Likewise.

* test-suite/tests/foreign.test ("structs")["int8, pointer, short,
  double"]: New test.
2010-11-11 16:41:15 +01:00
Ludovic Courtès
fb636a1cce Have parse-c-struct' and make-c-struct' support `int', pointers, etc.
Reported by Tristan Colgate <tcolgate@gmail.com>.

* module/system/foreign.scm: Call `load-extension' at compile-time too.
  (compile-time-value): New macro.
  (integer-ref, integer-set): New procedures.
  (define-integer-reader, define-integer-writer): New macros.
  (%read-int, %read-long, %write-int!, %write-long!, %read-unsigned-int,
  %read-unsigned-long, %write-unsigned-int!, %write-unsigned-long!,
  %read-size_t, %write-size_t!, %read-pointer, %write-pointer!): New
  procedures.
  (*writers*): Add writers for `int', `unsigned-int', `long',
  `unsigned-long', `size_t', and `*'.
  (*readers*): Likewise.

* test-suite/tests/foreign.test ("structs")["int8, pointer",
  "unsigned-long, int8, size_t", "long, int, pointer"]: New tests.
2010-11-11 16:41:15 +01:00
Ludovic Courtès
1f864a1685 FFI: Honor alignment constraints in `parse-c-struct'.
* module/system/foreign.scm (parse-c-struct): Honor alignment
  constraints for TYPE.

* test-suite/tests/foreign.test ("structs")["alignment constraints
  honored"]: New test.
2010-11-11 16:41:15 +01:00
Michael Gran
8a6b693817 Use ellipsis character in truncated pretty-print of sequences
* module/ice-9/pretty-print.scm (print-sequence): use ellipsis when available
2010-11-08 18:57:29 -08:00
Mike
bf61ca3302 pretty-print print-sequence width error
Avoid the "expected a positive width" display error when printing
sequences with no width remaining.

* module/ice-9/pretty-print (print-sequence): test for zero width when
  printing sequences
2010-11-08 08:52:04 -08:00
Ludovic Courtès
289c3a6112 Fix `reader.test'.
This is a followup to a4e4722944 ("need
read error for extra closing square brackets".)

* test-suite/tests/reader.test (exception:unexpected-rsqbracket): New
  variable.
  ("reading")["paren mismatch (2)"]: Change exception type to
  EXCEPTION:UNEXPECTED-RSQBRACKET.
  ["paren mismatch (3)", "paren mismatch (4)"]: New tests.
  ("mismatching parentheses")["closing square bracket following
  mismatched opening"]: New test.
2010-11-07 23:31:53 +01:00
Ludovic Courtès
253f26085e pretty-print: Suitably indent macro-related constructs.
* module/ice-9/pretty-print.scm (generic-write)[pp-SYNTAX-CASE]: New
  procedure.
  [style]: Add support for `define-public', `define-syntax',
  `let-syntax', `letrec-syntax', `syntax-rules', and `syntax-case'.
2010-11-07 23:18:40 +01:00
Andy Wingo
d41c62f579 fix up toy-server error handling
* module/web/toy-server.scm (serve-client): Fix up error handling, so we
  catch errors when reading, handling, and writing. If we run
  interactively, an error will enter the debugger.
2010-11-06 00:36:45 +01:00
Michael Gran
a4e4722944 need read error for extra closing square brackets
* libguile/read.c (scm_read_expression): add test
2010-11-04 22:07:50 -07:00
Ludovic Courtès
5bae880e26 Improve handling of read macros in `pretty-print'.
* module/ice-9/pretty-print.scm (generic-write)[wr]: Handle read macros
  that appear in the middle of a list.

* test-suite/tests/print.test (prints?): New macro.
  ("pretty-print"): New test prefix.
2010-11-05 01:39:26 +01:00
Andy Wingo
e414bf2178 add toy web server
* module/web/toy-server.scm: New module, a toy web server.

* module/Makefile.am: Adapt.
2010-11-05 00:31:40 +01:00
Andy Wingo
a9eeb2f461 add HTTP response module
* module/web/response.scm: New module, for HTTP responses.
* test-suite/tests/web-response.test: Test suite.

* module/Makefile.am:
* test-suite/Makefile.am: Adapt.
2010-11-05 00:31:40 +01:00
Andy Wingo
ad05d4e8c6 add HTTP request module
* module/web/request.scm: Add HTTP request module.
* test-suite/tests/web-request.test: Test cases.

* module/Makefile.am:
* test-suite/Makefile.am: Adapt.
2010-11-05 00:31:36 +01:00
Andy Wingo
440840c113 add HTTP module
* module/web/http.scm: New module, declares known HTTP headers, and
  their parsers and unparsers.

* test-suite/tests/web-http.test: Add test suite.

* module/Makefile.am:
* test-suite/Makefile.am: Adapt.
2010-11-04 22:52:47 +01:00
Andy Wingo
5a2f7fb315 URI parsing errors throw to `uri-error'
* module/web/uri.scm (uri-error): New proc, throws to 'uri-error.
  (validate-uri, uri-decode, uri-encode): Use uri-error.

* test-suite/tests/web-uri.test: Update for uri-error.
2010-11-04 22:52:47 +01:00
Neil Jerram
b215e5b243 Finish adding api-regex.texi
* doc/ref/Makefile.am (guile_TEXINFOS): Add api-regex.texi, so that it
  gets into distributions.
2010-11-04 01:13:16 +00:00
Andreas Rottmann
12708eeb11 Add implementation of SRFI 38
* module/srfi/srfi-38.scm: New file, partly based on the reference
  implementation and on Alex Shinn's public-domain implementation for
  Chicken.
* module/Makefile.am (SRFI_SOURCES): Add srfi/srfi-38.scm.

* test-suite/tests/srfi-38.test: New file, minimal test suite for SRFI
  38.
* test-suite/Makefile.am (SCM_TESTS): Added tests/srfi-38.test.

* doc/ref/srfi-modules.texi: Add a node for SRFI 38.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2010-11-03 00:19:54 +01:00
Andreas Rottmann
d458073bc0 Use a fluid for the list of the reader's "hash procedures"
This allows customizing the reader behavior for a dynamic extent more easily.

* libguile/read.c (scm_read_hash_procedures): Renamed to
  `scm_i_read_hash_procedures'.
  (scm_i_read_hash_procedures_ref, scm_i_read_hash_procedures_set_x):
  New (internal) accessor functions for the fluid.
  (scm_read_hash_extend, scm_get_hash_procedure): Use these accessor
  functions.
  (scm_init_read): Create the fluid, named `%read-hash-procedures' instead of
  the previous plain list `read-hash-procedures'.

* test-suite/tests/reader.test: Adapt the "R6RS/SRFI-30 block comment
  syntax overridden" test to make use of the fluid.

* module/ice-9/deprecated.scm (read-hash-procedures):
  New identifier macro -- backward-compatibility shim.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2010-11-03 00:09:57 +01:00
Neil Jerram
6887d0a1c6 Manual sections don't need a page break before
* doc/ref/api-coverage.texi (Code Coverage): Remove @page.

* doc/ref/api-foreign.texi (Foreign Function Interface): Ditto.

* doc/ref/api-lalr.texi: (LALR(1) Parsing): Ditto.

* doc/ref/api-macros.texi (Macros): Ditto.
2010-10-31 08:34:05 +00:00
Neil Jerram
a136ada69b Add ref to new location for regex doc
* doc/ref/api-data.texi: Add ref to new location for regex doc.  Also
  correct other refs to say section rather than chapter.
2010-10-31 08:27:56 +00:00