* numbers.c (big2str): Protect t from garbage collection until
[bpt/guile.git] / libguile / ChangeLog
CommitLineData
31b9e767
JB
11998-10-09 Jim Blandy <jimb@zwingli.cygnus.com>
2
c6ff295e
JB
3 * Makefile.am (libguile_la_LDFLAGS): Increment shared library
4 version number.
5 * Makefile.in: Regenerated.
6
31b9e767
JB
7 * fports.h (scm_setbuf0, scm_setvbuf, scm_setfileno,
8 scm_evict_ports, scm_open_file, scm_stdio_to_port): Get rid of
9 SCM_P macro.
10
11 Do magic to mix reads and writes on stdio FILE-based ports.
0445f9f2 12 (Thanks to Christian Lynbech.)
31b9e767
JB
13 * fports.c (FPORT_READ_SAFE, FPORT_WRITE_SAFE, FPORT_ALL_OKAY):
14 New macros.
15 (pre_read, pre_write): New functions.
16 (local_fgetc, local_fgets, local_ffwrite, local_fputc,
17 local_fputs): Call them.
18 (local_fflush): Mark the port as ready for reading and writing.
19 (scm_stdio_to_port): Set the FPORT_READ_SAFE, FPORT_WRITE_SAFE
20 flags on new port objects. This might not be accurate --- who
21 knows what state the FILE * is in when we get it --- but it won't
22 do extraneous calls to fflush or fseek, so it's no worse than the
23 behavior before this change.
24 * ports.h: Add comment.
25
26 Centralize the creation of port objects based on stdio FILE * in
27 fports.c; don't just throw them together anywhere.
28 * fports.c (scm_stdio_to_port): Make NAME a SCM value, which is
29 what the rest of Guile wants. Don't set the revealed count;
30 that's only appropriate for stdin, stdout, stderr.
31 (scm_standard_stream_to_port): This function does set the revealed
32 count.
33 * init.c (scm_init_standard_ports): Use scm_standard_stream_to_port,
34 not scm_stdio_to_port.
35 * filesys.c (scm_open): Call scm_stdio_to_port; don't write it out.
36 * fports.c (scm_open_file): Same.
37 * posix.c (scm_pipe): Same.
38 * socket.c (scm_sock_fd_to_port): Same.
39 * ioext.c (scm_fdopen): Same.
40 (scm_freopen): Moved from here to...
41 * fports.c (scm_freopen): ... here. This is really something that
42 munges the internals of an fport, so it should go here.
43 * fports.h (scm_stdio_to_port): Adjust prototype.
44 (scm_standard_stream_to_port, scm_freopen): New protoypes.
45 * ioext.h (scm_freopen): Prototype removed.
46
47 * filesys.c (set_element, get_element): This can work on both pipe
48 and file ports, so use SCM_FPORTP to typecheck, instead of testing
49 for scm_tc16_fport.
50
51 * scmconfig.h.in: Regenerated.
52
53 Change the definition of the functions in scm_ptobfuns so that
54 they get passed the port object, not the port's stream.
55 * ports.h (scm_ptobfuns): Rename all `stream' arguments to `port'.
56 * gc.c (scm_gc_sweep): Pass the port itself to the free function.
57 * genio.c (scm_putc, scm_puts, scm_lfwrite, scm_fflush, scm_getc):
58 Pass the port itself to the scm_ptobs function.
59 * ports.c (scm_close_port, scm_force_output, scm_flush_all_ports,
60 scm_generic_fgets): Same.
61 (putc_void_port, puts_void_port, write_void_port, flush_void_port,
62 getc_void_port, fgets_void_port, close_void_port): Just change the
63 argument names; these functions don't really do anything.
64 * fports.c (local_fgetc, local_fgets, local_fclose, local_fflush,
65 local_fputc, local_fputs, local_ffwrite, local_pclose): Take the
66 port as an argument, and use SCM_STREAM to get the stdio FILE *.
67 Also, use prototyped definitions, and get rid of the extra
68 declarations.
69 (scm_fptob, scm_pipob): We don't need casts here any more.
70 * strports.c (prinstpt): Use prototype declarations.
71 (stputc, stwrite, stputs, stgetc): Take the port as an argument,
72 and use SCM_STREAM to get the string info. Also, use prototyped
73 definitions, and get rid of the extra declarations.
74 * vports.c (sfputc, sfwrite, sfputs, sfflush, sfgetc, sfclose,
75 noop0): Same.
76
77 * ports.h (scm_ptobfuns): Replace uses of SCM_P with a straight
78 prototype; it's okay (preferred, even!) to use ANSI C in Guile.
79
80 * fports.c (local_fgetc, local_fgets): Renamed from scm_fgetc and
81 scm_fgets, for consistency.
82 (scm_fptop, scm_pipob): References updated.
83
6d921cd6
JB
841998-10-08 Jim Blandy <jimb@zwingli.cygnus.com>
85
86 Include the source location in error messages for scripts.
87 * init.c (scm_boot_guile_1): Use scm_internal_lazy_catch, so the
88 stack is still there when we catch the error.
89 * throw.c (handler_message): If we are handling an error with a
90 message, then put together the proper arguments and call
91 scm_display_error, instead of scm_display_error_message. That
92 displays source location, if it can find it.
93
13af3048
JB
941998-10-07 Jim Blandy <jimb@zwingli.cygnus.com>
95
a8e05009
JB
96 * gc.c (scm_unprotect_object): Change this so that calls to
97 scm_protect_object and scm_unprotect_object nest properly.
98 (scm_protect_object): Doc fixes.
99
3c0a54bd
JB
100 * strings.c (scm_string_set_x): Require the argument to be a
101 writable string, not a substring or a symbol.
102 * strings.h (SCM_RWSTRINGP, SCM_NRWSTRINGP): New predicates.
74f87516
JB
103 (Thanks to John Redford and Charbel Jacquin.)
104
13af3048
JB
105 * scmconfig.h.in: Regenerated; ../acconfig.h has changed.
106
6ea669d7
JB
1071998-10-07 Jim Blandy <jimb@totoro.red-bean.com>
108
109 * eval.c (safe_setjmp): Remove this misunderstanding.
110 (ENTER_APPLY, SCM_CEVAL, SCM_APPLY): Replace with references to
111 ordinary setjmp.
112
2d0937bc
JB
1131998-10-06 Jim Blandy <jimb@zwingli.cygnus.com>
114
115 * libguile.h: Mark these as C declarations, for compilation by C++
116 compilers.
117
118 * snarf.h (SCM_PROC, SCM_PROC1): Remove very odd code in #ifdef
119 __cplusplus clause. I seriously doubt this ever worked the way
120 the author seems to have intended.
121
1221998-10-05 Jim Blandy <jimb@zwingli.cygnus.com>
123
124 Utterly needless cleanups to hopelessly messy code.
125 * ports.c: Doc fixes.
126 (scm_fflush): Moved to ...
127 * genio.c (scm_fflush): ... here, amongst all the other port
128 method invocation functions.
129 * genio.h, ports.h: The prototype moves too.
130
53314947
JB
1311998-10-04 Jim Blandy <jimb@zwingli.cygnus.com>
132
8b49142f
JB
133 * backtrace.c (display_error_body): The current frame does not
134 always have a parent frame; consider a function called directly
135 from the MAIN_FUNC passed to scm_boot_guile. (Thanks to Maciej
136 Stachowiak.)
137
53314947
JB
138 * alloca.c (alloca): Undo yesterday's changes, and simply call
139 malloc directly for storage, and abort if we don't get what we
140 want. The situation is much simpler --- just call malloc. Emacs
141 has bizarre/evil requirements (signal handlers might malloc unless
142 you set this global flag, so you have to set the flag around all
143 calls to malloc) which we are certainly not going to conform to,
144 so we can do the simple and obvious thing.
145
146 * coop.c (coop_condition_variable_wait): Make this function
147 static. It's only useful internally --- you should never just
148 wait on a condition variable.
149 * coop-defs.h (coop_condition_variable_wait): Delete prototype.
150
026065b7
JB
1511998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
152
7265de70
JB
153 * unif.c (scm_array_set_x): Accept any kind of number as an
154 element for a uniform vector of doubles. This is more consistent
155 with Scheme's view of numbers. (Thanks to Miroslav Silovic.)
156
a9fe62cb
JB
157 * alloca.c: Use scm_must_malloc to obtain storage. Hopefully this
158 works; I can't conveniently test it myself. (Thanks to Dvid
159 Tillman for the bug report.)
160
026065b7
JB
161 * init.c: Doc fixes.
162
163 * init.c (invoke_main_func): Load the startup files (boot-9.scm)
164 from here, not from scm_compile_shell_switches (which is a pretty
165 dumb place to do it).
166 (scm_load_startup_files): New function.
167 (scm_ice_9_already_loaded): Variable moved to here from script.c.
168 * script.c (scm_compile_shell_switches): Don't load the startup
169 files here.
170 (scm_ice_9_already_loaded): Variable moved.
171 * init.c (scm_load_startup_files): Prototype for new function.
172 * gh_init.c (gh_enter): Doc fix.
173
541716d1
JB
1741998-10-03 <jimb@savonarola.red-bean.com>
175
176 Some anti-warning changes from Greg Harvey.
177 * gh_data.c (gh_scm2doubles): Initialize m, to avoid compiler
178 warnings when it doesn't understand our NORETURN declarations in
179 error.h.
180 * posix.c (scm_mknod): Similar.
181
f9d12ce8
JB
1821998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
183
184 * posix.c (scm_getpwuid): If we can't find an entry, return our
185 own message, instead of using scm_syserror --- the getpwMUMBLE
186 functions don't set `errno' to anything interesting.
187
0553d3a2
JB
1881998-10-03 <jimb@savonarola.red-bean.com>
189
190 Get rid of warnings from the cooperative threading system.
191 * threads.h (scm_single_thread_p, scm_yield,
192 scm_call_with_new_thread, scm_join_thread, scm_make_mutex,
193 scm_lock_mutex, scm_unlock_mutex, scm_make_condition_variable,
194 scm_wait_condition_variable, scm_signal_condition_variable): Add
195 prototypes for these Scheme-visible functions.
196 * coop-defs.h (coop_next_runnable_thread,
197 coop_wait_for_runnable_thread_now, coop_wait_for_runnable_thread):
198 Prototypes for these here, even though they're from iselect.c.
199 (coop_condition_variable_wait, coop_join): Add prototypes.
200 * coop-threads.c (scm_threads_free_thread, scm_threads_free_mutex,
201 scm_threads_free_condvar): Make these smob functions static.
202 * coop-threads.h (coop_init): Give this a real prototype.
203 * coop.c: #include <unistd.h>, if we have it, for `usleep' and `sleep'.
204 (coop_next_runnable_thread): No need to provide prototype; it's in
205 coop-defs.h.
206
207 * scmconfig.h.in: .detarenegeR
208
209 * iselect.c, threads.c: Doc fixes.
210
235bb3fe
JB
2111998-10-03 Jim Blandy <jimb@zwingli.cygnus.com>
212
213 * Makefile.in: Regenerated with a patched automake, to get
214 dependency generation right when using EGCS.
215
216 * inet_aton.c (inet_aton): Add prototype, to remove compiler
217 warning. (Thanks to Robert Pluim.)
218
219 * inet_aton.c (inet_aton): Reassure the compiler that the
220 arguments to the <ctype.h> macros are all unsigned characters, not
221 signed characters.
222
83d1c666
JB
2231998-10-03 <jimb@savonarola.red-bean.com>
224
225 Getting rid of more warnings...
226 * iselect.c: Test for MISSING_BZERO_DECL, not DECLARE_BZERO; see
227 today's change to ../configure.in.
228 * scmsigs.c: Test for MISSING_USLEEP_DECL, not DECLARE_USLEEP.
229 * scmconfig.h.in: Regenertaded.de.,.__
230 * stime.c (strptime): Declare this, #ifdef MISSING_STRPTIME_DECL.
231 (scm_localtime, scm_mktime): Use a const char * to manipulate the
232 time zone name.
233
234 * readline.c: Doc fix.
235 (rl_cleanup_after_signal, rl_free_line_state): Make these static.
236 * readline.h (scm_filename_completion_function): Add prototype.
237 (scm_init_readline): Make this into a prototype.
238
239 * readline.c (scm_filename_completion_function): Use SCM_PROC to
240 declare this, instead of calling scm_make_subr manually.
241
2421998-10-02 <jimb@savonarola.red-bean.com>
243
244 * readline.h (scm_init_readline): Add prototype for this.
245 (scm_init_readline): Make this a real prototype.
246
94c0b3b8
JB
2471998-09-30 Jim Blandy <jimb@zwingli.cygnus.com>
248
249 Warning fixes from Maciej Stachowiak:
250 * backtrace.h (scm_display_application, scm_backtrace): Add
251 prototypes.
252 * debug.c (scm_m_start_stack): Make this function static.
253 * fluids.h (scm_fluid_p): Add prototype.
254 * procprop.c (scm_i_procedure_arity): Make this function static.
255 * regex-posix.c (scm_regexp_error_msg): Make this function static.
256 * regex-posix.h (scm_init_regex_posix): Use prototype, not K&R decl.
257 * root.h (scm_dynamic_root): Add external prototype.
258 * scmsigs.h (scm_usleep): Add external prototype.
259 * script.h (scm_init_script): Use prototype, not K&R decl.
260 * stacks.h (scm_stack_id): Add external prototype.
261 * symbols.h (scm_sysintern0_no_module_lookup): Add external prototype.
262
dc9f6d6a
MG
2631998-09-30 Mark Galassi <rosalia@cygnus.com>
264
265 * gh.h: took out the definitions of vset and vref, since they are
266 replaced by the proper vector routines that correspond to the R4RS
267 procedures.
268
61a9ba48
JB
2691998-09-29 Jim Blandy <jimb@totoro.red-bean.com>
270
94c0b3b8 271 * snarf.h (SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): New macros;
61a9ba48
JB
272 these are analogous to SCM_VCELL and SCM_GLOBAL_VCELL but take a
273 third argument, a C expression that should result in a SCM value,
274 which is used to initialize the variable. Reimplemented
275 SCM_CONST_LONG in terms of SCM_VCELL_INIT. (Thanks to Maciej
276 Stachowiak.)
277
278 * version.h (scm_libguile_config_stamp): Add prototype.
279 (From Maciej Stachowiak.)
280
9a3c1149
JB
2811998-09-26 Jim Blandy <jimb@zwingli.cygnus.com>
282
283 * eval.c (scm_force): Assert that x is SCM_NIMP to fix segv when
284 (force 9) is tried. (Thanks to Karl M. Hegbloom.)
285
52591c80
JB
2861998-09-06 Jim Blandy <jimb@zwingli.cygnus.com>
287
6925bc4e
JB
288 * print.c (scm_iprin1): Rather than having one i, and using it in
289 several places, declare a fresh i local to each block where it is
290 used, and give it a signedness appropriate to its use in each case.
291 (scm_iprlist): Same.
292
293 * print.c (scm_iprin1): Add cast to avoid unsigned/signed
294 comparison warnings.
295
296 * print.c (ENTER_NESTED_DATA): Make i an unsigned long, to avoid
297 signed/unsigned clashes.
298
299 * posix.h (scm_tmpnam): Added prototype.
300
52591c80
JB
301 * objects.h (scm_set_object_procedure_x, scm_make_class_object,
302 scm_make_subclass_object): Add external prototypes.
303
304 * numbers.c (scm_mkbig): Add cast, and note that signed/unsigned
305 comparison is okay here.
306
307 * numbers.c (scm_istr2int): Add cast; len is known to be positive.
308
309 * numbers.c (scm_bigcomp): Clarify logic, and avoid relying on the
310 (true, but confusing) fact that -1 == ((unsigned) 0 - 1).
311
312 * numbers.c (scm_adjbig): Make nsiz an scm_sizet, to avoid mixing
313 signed/unsigned.
314
315 * load.c (swap_port): Make this function static.
316
317 * load.c (scm_search_path): Make max_path_len and max_ext_len
318 unsigned, since they're compared against string sizes.
319
320 * load.c (init_build_info): Make i unsigned.
321
322 * ioext.h (scm_read_line): Add prototype.
323
324 * hashtab.c (scm_hash_fn_get_handle, scm_hash_fn_create_handle_x,
325 scm_hash_fn_remove_x): Make hash bucket index local variable k
326 unsigned. Use scm_ulong2num to pass it to SCM_ASSERT as
327 accurately as possible.
328
329 * gh_data.c (gh_set_substr): Add casts to avoid signed/unsigned
330 comparisons, and range checking to make sure those casts are
331 harmless.
2d2c87e1
JB
332
333 * stackchk.h (SCM_STACK_OVERFLOW_P): Change definition to avoid
334 signed/unsigned comparisons.
335
336 * smob.c (scm_numsmob): Make this an int, not an scm_sizet, to
337 avoid signed/unsigned comparisons.
338 * smob.h (scm_numsmob): Change extern declaration to match.
339
340 * ports.c (scm_numptob): Make this an int, not an scm_sizet, to
341 avoid signed/unsigned comparisons.
342 * ports.h (scm_numptob): Change extern declaration to match.
343 (scm_current_load_port, scm_set_port_line_x,
344 scm_set_port_column_x): New prototypes.
345
346 * gsubr.c (GSUBR_TEST): Don't #define this. Nobody's using the
347 test code, and it causes warnings.
348
349 * gh.h (gh_int2scmb, gh_uniform_vector_length,
350 gh_uniform_vector_ref): Added prototypes.
351
352 * Makefile.am (libguile_la_SOURCES): Include Scheme-level
353 debugging support unconditionally. That's backtrace.c, stack.c,
354 debug.c, and srcprop.c.
355 (EXTRA_libguile_la_SOURCES): Omit those from here.
356 * Makefile.in: Regenerated.
357
a9b70caf
MD
3581998-08-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
359
360 * options.c (scm_options): Bugfix: Allow empty list of options!
361
362 * debug.c, debug.h (scm_single_step): Removed.
363 (scm_with_traps): New procedure. This procedure could easily be
364 written in Scheme but needs to be highly optimized.
365
366 * eval.h, eval.c: New evaluator trap flag: SCM_TRAPS_P.
367
368 * eval.c (SCM_CEVAL, SCM_APPLY): Removed resetting of trap flags.
369 Check SCM_TRAPS_P before trapping.
370
6dd78771
JB
3711998-07-30 Jim Blandy <jimb@zwingli.cygnus.com>
372
373 Changes to avoid signed/unsigned comparison warnings.
374 * gc.c (scm_mtrigger, scm_heap_size): Make these unsigned longs.
375 (scm_gc_sweep): Make n and j local to the blocks they're used in,
376 so they can have appropriate types for each application. Make i
377 signed. Use initializers in some spots. I'll probably pay for
378 all this tweaking.
379 (scm_must_malloc, scm_must_realloc): Use scm_sizet for size args.
380 (scm_must_realloc): Make nm unsigned.
381 (init_heap_seg): Make new_seg_index and n_new_objects signed.
382 (scm_init_storage): Use prototype-style definition, and make the
383 argument unsigned.
384 * gc.h (scm_heap_size, scm_mtrigger, scm_must_malloc,
385 scm_must_realloc, scm_init_storage): Adjust prototype accordingly.
386
387 * filesys.c (scm_readlink): Make local vars rv and size ints, to
388 avoid signed/unsigned comparison warnings, and because the return
389 value of readlink may be -1. Don't bother casting the third
390 argument to readlink.
391
392 * filesys.c (scm_dirname, scm_basename): Move these to their own
393 page, at the end of the file.
394 * filesys.h (scm_dirname, scm_basename): Add prototypes for these.
395
396 * eval.h (scm_eval_options_interface): Add external prototype for this.
397 * eval.c (scm_eval_options_interface): Use prototype-style def'n.
398
399 * eval.c (scm_lookupcar1): Make this static.
400
401 * dynl.h (scm_registered_modules, scm_clear_registered_modules):
402 Make these prototype declarations, not K&R-style.
403
404 * chars.c (scm_tables_prehistory): Add cast, to remove signed/
405 unsigned comparison warning.
406
407 * appinit.c: File removed. It had a single function in it, empty,
408 whose reason for existence is explained in no documentation or
409 comment. I think it's there as a default for some Tcl-style
410 initialization, but Tcl abandoned that approach a while ago.
411 * Makefile.am (libguile_la_SOURCES): Remove appinit.c.
412 (BUILT_SOURCES): Remove appinit.x.
413 * Makefile.in: Regenerated.
414
0dcbc17a
JB
4151998-07-29 Jim Blandy <jimb@zwingli.cygnus.com>
416
417 * Makefile.in: Regenerated using the last public version of
418 automake, not the hacked Cygnus version.
419
1f5ae2fd
JB
4201998-07-28 Jim Blandy <jimb@zwingli.cygnus.com>
421
422 Remove Totoro kludge.
423 * Makefile.in, scmconfig.h.in: Regenerated.
424 * init.c, readline.c: Don't check if TOTORO is #defined.
425
e99cbcd6
JB
4261998-07-26 Jim Blandy <jimb@zwingli.cygnus.com>
427
428 * Makefile.am: Adjust for new thread configuration system.
429 (INCLUDES): Include the value of THREAD_CPPFLAGS.
430 (guile_LDADD, check_ldadd): THREAD_LIBS_LOCAL has been renamed from
431 THREAD_LIBS.
432 (THREAD_LIBS): Definition deleted; automake will generate such
433 things automatically.
434 * Makefile.in: Regenerated.
435
87148d9e
JB
4361998-07-23 Jim Blandy <jimb@zwingli.cygnus.com>
437
438 Simplify smob and port marking; set the mark bit in the generic
439 marking code, and make marker routines only responsible for
440 turning up outgoing pointers.
441 * gc.c (scm_gc_mark): Set the mark bit on ports and smobs here,
442 before calling the marking function. Don't call the marking
443 function if it's zero.
444 * markers.c (scm_mark0): Just return #f. This function isn't
445 necessary at all now, but it's harmless to call it. We'll leave
446 it in so other folks' code doesn't croak at link time.
447 (scm_markcdr): Don't call SCM_SETGC8MARK.
448 * async.c (mark_async): Don't call SCM_SETGC8MARK.
449 * dynl.c (mark_dynl_obj): Same.
450 * root.c (mark_root): Same.
451 * srcprop.c (marksrcprops): Same.
452 * unif.c (markra): Same.
453 * variable.c (scm_markvar): Same.
454 * ports.c (scm_markstream): Same.
455 (void_port_ptob): Specify zero for our marking function.
456 * debug.c (debugobjsmob): Same.
457 * dynwind.c (guardsmob): Same.
458 * filesys.c (dir_smob): Same.
459 * fluids.c (fluid_smob): Same.
460 * fports.c (scm_fptob, scm_pipob): Same.
461 * mallocs.c (mallocsmob): Same.
462 * regex-posix.c (regex_t_smob): Same.
463 * smob.c (freecell, flob, bigob): Same.
464 * threads.c (thread_smob, mutex_smob, condvar_smob): Same.
465 * throw.c (jbsmob, lazy_catch_funs): Same.
466
3910272e
MD
4671998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
468
469 * eval.c (scm_copy_tree): Reverted last change: `eval' uses
470 scm_copy_tree on code in order not to let memoized code to leak
471 out. Thus, scm_copy_tree needs to copy vectors as well since
472 quasiquote can introduce evaluated code also inside vector
473 constants.
474
240ed1e5
MD
4751998-07-17 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
476
477 * eval.c (scm_copy_tree): Removed ability to copy vectors.
478
479 * gh_data.c, gh.h (gh_ints2scm, gh_longs2ivect,
480 gh_ulongs2uvect): New procedures. (Complements gh_doubles2scm and
481 gh_doubles2dvect.)
482
483 * unif.c: Say that ivect and uvect are of type signed and unsigned
484 long instead of int in commentary so that it correctly describes
485 the implementation.
486
5ef81022
MD
4871998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
488
489 * stime.c: Removed declaration of strptime. (It should be
490 declared by the system headers. If it turns out that some systems
491 don't, we'll handle that then.) (Thanks to Greg Troxel.)
492
493 * stime.h: Renamed TIMEH --> STIMEH
494
495 * backtrace.c (scm_display_error, scm_display_backtrace): In order
496 to increase portability, don't use structure assignment.
497 (Thanks to Nicolas Neuss.)
498
499 * iselect.c: Use LONG_MAX instead of ULONG_MAX for increased
500 portability.
501 (finalize_fd_sets): Added empty statement after last case label.
502 (Thanks to Nicolas Neuss.)
503
504 * gc.c (scm_igc): Changed //-comment into /*-comment. (Thanks to
505 Nicolas Neuss.)
506
212d45b8
MD
507Sat Jul 11 22:08:21 1998 Mikael Djurfeldt <mdj@totoro.red-bean.com>
508
509 * init.c, readline.c: OK, I won't have these readline.x bug
510 reports anymore. We've had them since April. The current reason
511 is a completely unintelligible failure of totoro.red-bean.com to
512 do the test for rl_getc_function in libreadline correctly. This
513 kludge overrides the test if we're on totoro so that the snapshot
514 generation process can work.
515
516 * readline.c: Define a strdup replacement if not existent on system.
517
43eeb5a6
MD
5181998-07-12 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
519
520 * vectors.c, vectors.h (scm_make_vector): Removed third argument.
521 This change makes scm_make_vector R5RS compatible. We cannot keep
522 the third argument since people want to be able to deduce the form
523 of the C function call only by looking at R5RS. (At the same time
524 we have removed some unnecessary complexity!)
525
526 * eval.c, filesys.c, fluids.c, gc.c, gh_data.c, init.c, kw.c,
527 net_db.c, posix.c, print.c, regex-posix.c, scmsigs.c, socket.c,
528 stime.c, symbols.c, unif.c, vectors.c, weaks.c: Removed third
529 argument in call to scm_make_vector.
530
9d0b279f
MD
5311998-07-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
532
533 * numbers.h (SCM_NUM2DBL): New macro. Complements SCM_NUMBERP.
534 This macro is useful in applications.
535
dbb25e7f
MD
5361998-06-21 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
537
538 * load.c (scm_internal_parse_path): Renamed from scm_parse_path.
539 (scm_parse_path, scm_search_path): New Scheme level procedures.
540
541 * load.h (scm_internal_parse_path, scm_parse_path,
542 scm_search_path): Declared.
543
74d6650d
MD
5441998-06-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
545
546 * filesys.c (dirname, basename): New procedures.
547
548 * init.c (scm_boot_guile_1): Removed condition around
549 scm_init_options.
550
551 * dynwind.c: #include "genio.h"; #include "smob.h"; Implemented a
552 new data type (guards) for representation of C level guards and
553 data on the wind chain.
554 (scm_internal_dynamic_wind): New function.
555
556 * dynwind.h: Declare scm_internal_dynamic_wind.
557
558 * root.h (scm_root_state): Added scm_cur_loadp.
559
560 * root.c (mark_root): Added comment about cur_loadp.
561
562 * load.c: #include "dynwind.h";
563 (scm_primitive_load): Use scm_inner_dynamic_wind to update
564 scm_cur_loadp.
565
566 * init.c (scm_init_standard_ports): Initialize scm_def_loadp.
567
568 * ports.c (current-load-port): New procedure.
569
391aebfc
MD
5701998-06-09 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
571
10ccfad7
MD
572 * ioext.c (scm_isatty_p): Accept any kind of data as argument. If
573 not a tty, return #f.
574
391aebfc
MD
575 * regex-posix.c (scm_regexp_exec): Free malloced memory. (Thanks
576 to Julian Satchell and Roland Kaufmann.)
577
578 * gh.h (gh_memv, gh_member): Fixed typos in macro definitions.
579 (gh_write): Added declaration. (Thanks to Eiichi Takamori.)
580
6dabf6a9
MD
5811998-06-07 Mikael Djurfeldt <mdj@barbara.nada.kth.se>
582
583 * debug.h, debug.c (scm_start_stack): New function. Implements
584 the guts of old scm_m_start_stack.
585
586 * debug.c (scm_m_start_stack): Use scm_start_stack.
587
588 * init.c (scm_start_stack, scm_restart_stack): Renamed to
589 start_stack and restart_stack. (These have static scope.)
590
daca2816
MD
5911998-05-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
592
593 * readline.c (rl_cleanup_after_signals, rl_free_line_state): New
594 readline functions to come in release 2.3. (Thanks to Chet
595 Ramey.)
596 (handle_errors): Use the above functions.
597
be0ea988
MD
5981998-05-12 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
599
600 * readline.c: Improvements for readline support: Handle errors
601 better; Implement before-read-hook.
602
6031998-05-11 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
604
605 * init.c (scm_boot_guile_1), readline.c: Test for
606 HAVE_RL_GETC_FUNCTION instead of HAVE_LIBREADLINE. (Need to
607 assure that we have version >= 2.1.)
608
e158e4f4
MD
6091998-05-11 Mikael Djurfeldt <mdj@kenneth>
610
83d1c666
JB
611 * readline.c (scm_readline): Defer interrupts while we're calling
612 readline.
613
e158e4f4
MD
614 * readline.c (scm_add_history): Bugfix: Do strdup before giving
615 away the string to add_history.
56600c45
MD
616 (completion_function): Do completion for readline. (Thanks to
617 Andrew Archibald.)
e158e4f4
MD
618 (scm_filename_completion_function): New procedure: Filename
619 completer.
620 (current_input_getc): New function. Use this one instead of
621 standard getc from readline.
622
623 * throw.c, throw.h (scm_handle_by_throw): New function: This
624 handler throws errors to next handler on the dynwind chain.
625
6261998-05-09 Mikael Djurfeldt <mdj@kenneth>
627
628 * scmsigs.c (scm_usleep): Bugfix: Don't define j if it isn't
629 used.
630
8bb51def
MD
6311998-05-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
632
633 * procprop.c (scm_i_procedure_arity): New function. Returns arity
634 of procedure.
635 (scm_procedure_properties): Modified to return arity together with
636 other properties.
637 (scm_procedure_property): Added the read-only property `arity'.
638 (scm_set_procedure_property_x): It is an error to set the `arity'
639 property.
640
641 * gsubr.h, gsubr.c: Moved macros from gsubr.c to gsubr.h and added
642 prefix SCM_; Made f_gsubr_apply global and added prefix scm_.
643
644 * procprop.h (scm_sym_arity): New symbol.
645
646 * objects.c (scm_set_object_procedure_x): New procedure: Use this
647 to set the dispatch procedure of an operator or entity object.
648
649 * objects.h (SCM_METACLASS_OPERATOR_LAYOUT, SCM_ENTITY_LAYOUT):
650 Made procedure slots read-only.
651
652 * eval.c (SCM_CEVAL): Moved scm_tc7_contin case above
653 scm_tcs_cons_gloc case in zero args switch; Fixed args
654 construction for operators in scm_tcs_cons_gloc case in two args
655 switch.
656
680ed4a8
MD
6571998-05-02 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
658
104d4533
MD
659 * fluids.c: Removed use of assert.h (in order to avoid
660 __eprintf).
661
662 * Makefile.am (libguile_la_LDFLAGS): Added -export-dynamic.
663
664 * dynl.c (maybe_drag_in_eprintf): Disabled through #ifdef 0.
665
680ed4a8
MD
666 * eval.c (SCM_CEVAL): Do more thorough argument checking. This
667 change makes the evaluator safer at the cost of evaluation speed.
668 It handles the case when the user has added a non-immediate
669 improper end of the application form, e.g., `(+ 0 . x)'.
670 (Earlier only cases like `(+ 0 . 0)' were handled.) I've tried to
671 minimize the extra cost as much as possible. The new code is
672 enclosed in #ifdef CAUTIOUS regions. NOTE: This also fixes the
673 problem with structs planted directly in the code (e.g. by a
674 macro). This no longer causes segmentation fault. (Thanks to
675 Eric Hanchrow.)
676
677 * eval.c, eval.h (scm_eval_args, scm_deval_args): Take one extra
678 arg `proc' in order to be able to throw errors; New argument
679 checking code.
680
681 * Removed extra #include "debug.h"
682
0935d604
MD
6831998-04-25 Mikael Djurfeldt <mdj@kenneth>
684
685 * scmsigs.c: Declare usleep as returning void on some systems.
2c36126d
MD
686 (scm_usleep): Return SCM_INUM0 on those systems. (Thanks to Julian
687 Satchell.)
0935d604
MD
688
689 * coop.c (usleep): Return void on some systems.
690
f1a5fa3c
MD
6911998-04-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
692
693 * Makefile.am (libguile_la_LDFLAGS): Removed redundant -rpath.
694
695 * coop.c: Changed return type of usleep to int.
696
697 * scmsigs.c (scm_usleep): New procedure; Declare usleep if it
698 isn't found in the OS.
699
700 * iselect.h: #define scm_internal_select select if GUILE_ISELECT
701 isn't enabled. (Thought that I had made this change ages ago...)
702
703 * iselect.c: Declare bzero if not defined by OS.
704
26c41b99
MD
7051998-04-19 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
706
c3e09ef9
MD
707 * dynl.c (scm_must_free_argv): Fixed memory leak due to negated
708 condition. (Thanks to John Tobey.)
709
710 * continuations.c (scm_make_cont), debug.c (scm_make_memoized,
711 scm_make_debugobj), eval.c (scm_makprom): SCM_DEFER/ALLOW_INTS -->
712 A section.
713
714 * __scm.h: Start the long-term project of moving to POSIX threads.
715 Phase 1: Classification of all critical sections.
716 (SCM_ENTER_A_SECTION, SCM_EXIT_A_SECTION): New macros: Delimiters
717 for A sections. (See comments in __scm.h for details.)
718
26c41b99
MD
719 * dynl.c: Only check that HAVE_DLOPEN is defined before loading
720 dynl-dl.c; Test on HAVE_LIBDLD instead of HAVE_DLD.
721
28795b1f
MD
7221998-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
723
724 * Makefile.am (BUILT_SOURCES): Added cpp_err_symbols.c,
725 cpp_sig_symbols.c, libpath.h and versiondat.h to BUILT_SOURCES
726 (libpath.h, versiondat.h): Replaced dependency on Makefile with
727 dependencies on $(srcdir)/Makefile.in
728 $(top_builddir)/config.status in order to avoid circularity.
729
730 * script.c (scm_compile_shell_switches): Bugfix: Don't discount i
731 from argc if argc was 0 initially.
732
733 * Makefile.am (Makefile.am): Replaced THREAD_LIBS --> GUILE_LIBS
734 in generation of libpath.h.
735
f2e5c92c
MD
7361998-04-15 Mikael Djurfeldt <mdj@nada.kth.se>
737
738 * Makefile.am (libguile_la_LDFLAGS): Bumped version number of
739 libguile from 2 to 3.
740
a3365d47
MD
7411998-04-14 Mikael Djurfeldt <mdj@nada.kth.se>
742
743 * Makefile.am: Added .x-dependencies to variable BUILT_SOURCES.
744
fc1d67c4
MD
7451998-04-13 Mikael Djurfeldt <mdj@kenneth>
746
747 * ports.c (scm_port_line, scm_set_port_line_x, scm_port_column,
748 scm_set_port_column_x, scm_port_filename,
749 scm_set_port_filename_x): Removed optional arguments. Added
750 proper argument checking.
751
752 * eval.c, eval.h, coop.c (scm_eval_stack, SCM_EVAL_STACK): Measure
753 stack size in machine words.
754
755 * unif.c (scm_uniform_vector_ref, scm_cvref, scm_array_set_x,
756 rapr1): Use SCM_UCHARS instead of SCM_CHARS for strings. (Thanks
757