1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 21:10:27 +02:00
Commit graph

286 commits

Author SHA1 Message Date
Michael Gran
5d66005209 Symbols longer than 128 chars can cause an exception. Also, the terminating colon of long postfix keywords are not handled correctly.
* test-suite/tests/reader.test ("read-options"): Add test
	for long postfix keywords.

	* libguile/read.c (scm_read_mixed_case_symbol): Fix
	exception on symbols are greater than 128 chars.  Also,
	colons are not stripped from long postfix keywords.
2009-05-21 00:17:02 +02:00
Ludovic Courtès
45a9f43049 Revert "Make literal strings (i.e., returned by `read') read-only."
This reverts commit fb2f8886c4.

The rationale is that `read' must return mutable strings, as reported
by szgyg <szgyg@ludens.elte.hu>.
2008-10-09 22:21:33 +02:00
Ludovic Courtès
fb2f8886c4 Make literal strings (i.e., returned by `read') read-only.
* libguile/read.c (scm_read_string): Use `scm_i_make_read_only_string ()' to
  return a read-only string, as mandated by R5RS.  Reported by Bill
  Schottstaedt <bil@ccrma.Stanford.EDU>.

* libguile/strings.c (scm_i_make_read_only_string): New function.
  (scm_i_shared_substring_read_only): Special-case the empty string
  so that the read-only and read-write empty strings are `eq?'.  This
  optimization is relied on by the `substring/shared' `empty string'
  test case in `srfi-13.test'.

* libguile/strings.h (scm_i_make_read_only_string): New declaration.

* test-suite/tests/strings.test ("string-set!")["literal string"]: New test.

* NEWS: Update.
2008-09-23 18:45:27 +02:00
Ludovic Courtès
bd22f1c768 Remove extraneous semi-colon in `read.c'. 2008-04-26 21:56:00 +02:00
Ludovic Courtès
904fabb602 Revert "Fix typo in `read.c'."
This reverts commit 6ddb3ca825.
2008-04-15 20:14:44 +02:00
Ludovic Courtès
6ddb3ca825 Fix typo in `read.c'. 2008-04-15 20:01:40 +02:00
Ludovic Courtès
ef4cbc08c8 Add support for SRFI-88-like postfix keyword read syntax. 2008-04-15 19:52:43 +02:00
Ludovic Courtès
7f74cf9a67 More compilation fixes with Sun CC (bug #21378). 2008-02-07 09:54:47 +00:00
Ludovic Courtès
d41668faec Changes from arch/CVS synchronization 2007-10-17 21:56:10 +00:00
Ludovic Courtès
454866e052 Changes from arch/CVS synchronization 2007-09-03 16:58:20 +00:00
Ludovic Courtès
492faee1e5 Changes from arch/CVS synchronization 2007-08-23 21:17:24 +00:00
Ludovic Courtès
f743909974 Changes from arch/CVS synchronization 2007-07-29 15:16:46 +00:00
Ludovic Courtès
7337d56d57 Changes from arch/CVS synchronization 2007-07-22 16:30:13 +00:00
Kevin Ryde
b3aa4626cd merge from 1.8 branch 2007-03-07 23:35:55 +00:00
Han-Wen Nienhuys
22fc179acd * backtrace.c, debug.c, debug.h, deprecation.c, eq.c, eval.c
eval.h, gsubr.c, init.c, macros.c, print.c, print.h, read.c,
read.h, stacks.c, symbols.c, throw.c: use private-options.h

* private-options.h: new file: contain hardcoded option
definitions.
2007-01-22 15:14:40 +00:00
Han-Wen Nienhuys
6256065013 * readline.c: terminate option list with NULL.
* read.c: idem.

* print.c: idem.

* eval.c: terminate option lists with 0.

* options.c: remove n (for length) from scm_option_X
functions. Detect option list length by looking for NULL name.
2007-01-19 19:26:36 +00:00
Han-Wen Nienhuys
391f57e6ad (s_scm_read_hash_extend): document #f argument to
read-hash-extend.
2007-01-06 18:20:35 +00:00
Kevin Ryde
23f2b9a3de merge from 1.8 branch 2006-06-17 23:15:59 +00:00
Kevin Ryde
2b829bbb3d merge from 1.8 branch 2006-04-17 00:05:42 +00:00
Marius Vollmer
92205699d0 The FSF has a new address. 2005-05-23 19:57:22 +00:00
Marius Vollmer
9de87eea47 See ChangeLog from 2005-03-02. 2005-03-02 20:42:01 +00:00
Marius Vollmer
4057a3e05a Use new vector elements API or simple vector API, as appropriate.
Removed SCM_HAVE_ARRAYS ifdefery.  Replaced all uses of
SCM_HASHTABLE_BUCKETS with SCM_HASHTABLE_BUCKET.
2005-01-02 20:49:04 +00:00
Marius Vollmer
c35092e670 (scm_lreadr): Bugfix: include the last bit in the bit vector. 2004-11-02 15:53:53 +00:00
Marius Vollmer
eb42ff2564 (scm_lreadr): Call scm_i_read_array for all characters followinf '#'
that can start an array.  Explicitely disambiguate 'i' and 'e' between
introducing numbers and uniform vectors.  Do not call
scm_i_read_homogenous_vector, since that is also handled by
scm_i_read_array now.
2004-10-29 14:45:19 +00:00
Marius Vollmer
a4022e691e * read.c (scm_lreadr): Call scm_i_read_homogenous_vector for '#f',
'#u', and '#s'.

* read.h, read.c (scm_i_input_error): Renamed from scm_input_error
and made non-static.  Changed all uses.
2004-10-26 17:00:13 +00:00
Marius Vollmer
f13b4400d3 (scm_lreadr): Simply do (symbol->keyword (read)) after
reading '#:' or ':'.  See NEWS for consequences.
2004-10-04 18:03:18 +00:00
Marius Vollmer
8631637894 (scm_lreadr): Revert change from 2004-09-22: string literals are now
read-write again (until SCM_STRING_CHARS is removed).
2004-09-29 18:01:36 +00:00
Marius Vollmer
d2e53ed6f8 *** empty log message *** 2004-09-22 17:41:37 +00:00
Marius Vollmer
ec82b7c251 (scm_lreadr): use scm_c_substring_read_only for string
literals, thus making them read-only as specified by R5RS.
2004-09-22 13:55:15 +00:00
Marius Vollmer
ef80ed5ebc (skip_scsh_block_comment): Recognize "!#" everywhere, not just on a
line of its own.
2004-09-20 23:55:38 +00:00
Marius Vollmer
0520c32088 (scm_flush_ws): Detect "#!"-style comments here.
(scm_lreadr): Abort on seeing "#!", which should no longer happen.
(skip_scsh_block_comment): Use scm_input_error instead of
scm_misc_error in case of EOF.
2004-09-07 09:18:59 +00:00
Marius Vollmer
272632a67c (scm_i_casei_streq): New, for counted strings.
* strings.h, strings.c: (scm_i_string_chars, scm_i_string_length,
scm_i_string_writable_chars, scm_i_string_stop_writing): New, to
replace SCM_I_STRING_CHARS and SCM_I_STRING_LENGTH.  Updated all
uses.
(scm_i_make_string, scm_c_make_string): New, to replace
scm_allocate_string.  Updated all uses.
(SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_UCHARS,
SCM_STRING_LENGTH): Deprecated.
(scm_allocate_string, scm_take_str, scm_take0str, scm_mem2string,
scm_str2string, scm_makfrom0str, scm_makfrom0str_opt):
Discouraged.  Replaced all uses with scm_from_locale_string or
similar, as appropriate.
(scm_c_string_length, scm_c_string_ref, scm_c_string_set_x,
scm_c_substring, scm_c_substring_shared, scm_c_substring_copy,
scm_substring_shared, scm_substring_copy): New.

* symbols.c, symbols.h (SCM_SYMBOLP, SCM_SYMBOL_FUNC,
SCM_SET_SYMBOL_FUNC, SCM_SYMBOL_PROPS, SCM_SET_SYMBOL_PROPS,
SCM_SYMBOL_HASH, SCM_SYMBOL_INTERNED_P, scm_mem2symbol,
scm_str2symbol, scm_mem2uninterned_symbol): Discouraged.
(SCM_SYMBOL_LENGTH, SCM_SYMBOL_CHARS, scm_c_symbol2str):
Deprecated.
(SCM_MAKE_SYMBOL_TAG, SCM_SET_SYMBOL_LENGTH, SCM_SET_SYMBOL_CHARS,
SCM_PROP_SLOTS, SCM_SET_PROP_SLOTS): Removed.
(scm_is_symbol, scm_from_locale_symbol, scm_from_locale_symboln):
New, to replace scm_str2symbol and scm_mem2symbol, respectively.
Updated all uses.
(scm_gensym): Generate only the number suffix in the buffer, just
string-append the prefix.
2004-08-19 17:17:43 +00:00
Marius Vollmer
8824ac88f0 * socket.c, rw.c, deprecated.h, validate.h
(SCM_VALIDATE_STRING_COPY): Deprecated.  Replaced all uses with
SCM_VALIDATE_STRING plus SCM_I_STRING_CHARS or
scm_to_locale_string, etc.
(SCM_VALIDATE_SUBSTRING_SPEC_COPY): Deprecated.  Replaced as
above, plus scm_i_get_substring_spec.

* regex-posix.c, read.c, random.c, ramap.c, print.c, numbers.c,
hash.c, gc.c, gc-card.c, convert.i.c, backtrace.c, strop.c,
strorder.c, strports.c, struct.c, symbols.c, unif.c, ports.c: Use
SCM_I_STRING_CHARS, SCM_I_STRING_UCHARS, and SCM_I_STRING_LENGTH
instead of SCM_STRING_CHARS, SCM_STRING_UCHARS, and
SCM_STRING_LENGTH, respectively.  Also, replaced scm_return_first
with more explicit scm_remember_upto_here_1, etc, or introduced
them in the first place.
2004-08-12 17:45:03 +00:00
Marius Vollmer
29a837fd27 (scm_input_error): Use a SCM value for 'fn', not a C string. This
avoids a conversion round-trip.
2004-08-10 13:54:01 +00:00
Marius Vollmer
b9bd8526f0 * numbers.h, numbers.c, discouraged.h, discouraged.c (scm_short2num,
scm_ushort2num, scm_int2num, scm_uint2num, scm_long2num,
scm_ulong2num, scm_size2num, scm_ptrdiff2num, scm_num2short,
scm_num2ushort, scm_num2int, scm_num2uint, scm_num2long,
scm_num2ulong, scm_num2size, scm_num2ptrdiff, scm_long_long2num,
scm_ulong_long2num, scm_num2long_long, scm_num2ulong_long):
Discouraged by moving to discouraged.h and discouraged.c and
reimplementing in terms of scm_from_* and scm_to_*.  Changed all uses
to the new scm_from_* and scm_to_* functions.
2004-08-02 16:14:04 +00:00
Marius Vollmer
bc36d0502b * tags.h, deprecated.h (SCM_EQ_P): Deprecated by moving it into
deprecated.h.  Replaced all uses with scm_is_eq.
2004-07-27 15:41:49 +00:00
Marius Vollmer
e11e83f3d9 * deprecated.h, deprecated.c, numbers.h (SCM_INUMP, SCM_NINUMP,
SCM_INUM): Deprecated by reenaming them to SCM_I_INUMP, SCM_I_NINUMP
and SCM_I_INUM, respectively and adding deprecated versions to
deprecated.h and deprecated.c.  Changed all uses to either use the
SCM_I_ variants or scm_is_*, scm_to_*, or scm_from_*, as appropriate.
2004-07-23 15:43:02 +00:00
Marius Vollmer
7888309be8 * deprecated.h, boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOL,
SCM_NEGATE_BOOL, SCM_BOOLP): Deprecated by moving into "deprecated.h".
Replaced all uses with scm_is_false, scm_is_true, scm_from_bool, and
scm_is_bool, respectively.
2004-07-06 10:59:25 +00:00
Han-Wen Nienhuys
84fad13058 * srfi-13.c (s_scm_string_map): convert character to unsigned char
before converting to unsigned int. This prevents hi-bit ascii as
being converted large integers.
(string_upcase_x): change caller for scm_{up,down}case to
scm_c_{up,down}case

* chars.h (scm_init_chars): change scm_{upcase,downcase} to
scm_c_{up,down}case.
(SCM_MAKE_CHAR): add (unsigned char) cast. This prevents havoc
when hi-bit ASCII is subjected to SCM_MAKE_CHAR().
2004-04-06 21:48:02 +00:00
Marius Vollmer
1988130220 (skip_scsh_block_comment): Also recognize '\r' as a line terminator.
Rewritten the logic as a state machine, I must have been doing too
much VHDL lately...
2004-03-21 02:02:08 +00:00
Neil Jerram
1e55d28813 * list.c (scm_list_n): Add #if SCM_DEBUG_CELL_ACCESSES_P around
validation.

	* read.c (scm_lreadparen): Removed.
	(scm_lreadparen1): Renamed scm_i_lreadparen.
2004-02-20 22:04:24 +00:00
Neil Jerram
cd21f5eb17 * read.c (scm_read_opts): Change `escaped-parens' to
`elisp-strings'.
2004-02-10 19:44:10 +00:00
Neil Jerram
16353acc6f * read.c (scm_read_opts): New opts `elisp-vectors' and
`escaped-parens'.
	(s_vector): New.
	(scm_lreadr): Use scm_lreadparen1 instead of scm_lreadparen.  Make
	handling of elisp vector syntax dependent on SCM_ENABLE_ELISP and
	`elisp-vectors' option instead of SCM_ELISP_READ_EXTENSIONS.
	Allow "\(" and "\)" in strings when SCM_ENABLE_ELISP defined and
	`escaped-parens' option set.
	(scm_read_token): If elisp vector syntax active, disallow [ and ]
	in tokens.
	(scm_lreadparen): Rewrite as interface to scm_lreadparen1.
	(scm_lreadparen1): New.

	* read.h: Remove conditionally compiled last arg to
	scm_lreadparen.
	(SCM_ELISP_VECTORS_P, SCM_ESCAPED_PARENS_P): New.
2004-02-08 19:14:18 +00:00
Marius Vollmer
b645ea8c7e (scm_lreadr): Signal an error for invalid escape sequences in strings.
Code cleanups too.
2003-11-30 00:57:03 +00:00
Marius Vollmer
c62a38765d (scm_lreadr): detect EOF after backslash, and interpret \xNN
hexadecimal sequences.  From Paul Jarc, thanks!
2003-11-16 21:01:57 +00:00
Kevin Ryde
dd72382c32 (scm_input_error): Pass arg list parameter to scm_error_scm,
rather than SCM_EOL.  Needed by "Unknown # object" case in scm_lreadr.
2003-06-04 16:36:03 +00:00
Dirk Herrmann
5bf6a6f0f3 * eval.c, eval.h, read.c, read.h (scm_sym_dot): Moved from eval to
read.  This will allow to make the definition in read.c static.
2003-05-06 20:17:26 +00:00
Dirk Herrmann
d0f6ceb84f * Removed uses of DEBUG_EXTENSIONS and DYNAMIC_LINKING to
fix compile errors with --disable-deprecated.
2003-04-20 07:19:38 +00:00
Marius Vollmer
73be1d9e8e Changed license terms to the plain LGPL thru-out. 2003-04-05 19:15:35 +00:00
Rob Browning
971d1e36f0 * read.c: fix various preprocessor usages of new public
symbols to expect 0 or 1 values rather than 1 or undefined.
i.e. change #ifdef to #if, etc.
2003-03-27 20:09:40 +00:00