| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version and date.
* share/txr/stdlib/ver.tl: Likewise.
* txr.vim, tl.vim: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* linenoise/linenoise.c (struct lino_state): Members
plen, pos, sel, end, dlen, dpos, dsel, dend, cols,
oldrow and maxrows change from size_t to int.
(struct lino_undo): Member dpos changes likewise.
(restore_undo, free_completions, complete_line,
next_hist_match, history_search, sync_data_to_buf,
copy_display_params, refresh_singleline, screen_rows,
col_offset_in_str, refresh_multiline, scan_match_rev,
scan_rev, scan_match_fwd, scan_fwd, find_nearest_paren,
paren_jump, update_sel, yank_sel, delete_sel, edit_insert,
edit_insert_str, edit_move_eol, edit_move_matching_paren,
edit_delete_prev_all, edit_delete_to_eol,
edit_delete_prev_word, edit_delete_line, edit): Replace
various size_t's in function arguments, return values
and local variables with int. Drop what would now be
useless casts of constants to type int.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* gc.c (gc_report_copies): C style casts found in this
function.
* linenoise.c (strip_qual, convert, coerce): Copy and paste
the macros here.
(record_undo, compare_completions, lino_add_completion,
history_search, ab_append, sync_data_to_buf,
refresh_singleline, screen_rows, refresh_multiline,
find_nearest_paren, paren_jump, yank_sel,
edit_move_matching_paren, edit, lino_make, lino_copy,
lino_hist_add, lino_hist_set_max_len): C style casts
replaced.
* mpi/mpi-types.h (MP_DIGIT_BIT, MP_DIGIT_MAX, MP_WORD_BIT,
MP_WORD_MAX, RADIX): C style casts replaced.
* mpi/mpi.c (convert, coerce): Copy and paste the macros here.
(mp_init_size, mp_init_copy, mp_copy, mp_set_int, mp_div_d,
mp_bit, mp_to_double, mp_to_signed_bin, mp_to_unsigned_bin,
mp_to_unsigned_buf, mp_toradix_case, mp_grow, s_mp_set_bit,
s_mp_mod_2d, s_mp_mul_2d, s_mp_div_2d, s_mp_mul_d, s_mp_mul,
s_mp_sqr, s_mp_div, s_mp_2expt, s_mp_todigit): C style
casts replaced.
* mpi/mplogic (convert): Macro copy and pasted here.
(mpl_num_set, mpl_num_clear): C style casts replaced.
* parser.c (provide_completions): Likewise.
* signal.c (small_sigfillset): Likewise.
* stream.c (stdio_truncate, test_set_indent_mode,
set_indent_mode): Likewise.
|
|
|
|
| |
* txr.1: Concrete example is given, with a detailed walk-through.
|
|
|
|
|
| |
* txr.1: Wrong troff macro used for syntax of suspend macro,
rendering it invisible.
|
|
|
|
|
|
|
| |
* txr.1: open-file, open-tail and open-directory
moved into Input and Output (Streams) section.
remove-path and rename-path moved into System Programming.
Filesystem Access section removed.
|
|
|
|
|
|
|
|
|
| |
* lisplib.c (place_set_entries): Added "lset" to autoload
list.
* share/txr/stdlib/place.tl (lset): New macro.
* txr.1: Documented lset.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (eval_init): Registered intrinsics rmemq, rmemql,
rmemqual, rmember, rmember-if, rposqual, rposql, rposq,
rpos, rpos-if, rfind, rfind-if and rsearch.
* lib.c (rmemq, rmemql, rmemqual, rmember, rmember-if,
rposqual, rposql, rposq, rpos, rpos-if, rfind, rfind-if,
rsearch): New functions.
(rsearch_list): New static function.
(search): Omit unreachable return statement.
* lib.h (rmemq, rmemql, rmemqual, rmember, rmember-if,
rposqual, rposql, rposq, rpos, rpos-if, rfind, rfind-if,
rsearch): Declared.
* txr.1: Documented.
|
|
|
|
| |
* txr.1: Fix inaccurate wording referring to pairs.
|
|
|
|
|
|
|
| |
* eval.c (do_expand, macroexpand_1): The original form
must have priority in providing source location info,
over the macro. Otherwise macro bodies may get reported as
locations of errors that occur in substituted code.
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.c (time_local_s, time_utc_s): New symbol variables.
(time_meth): New static function.
(time_init): Initialize new symbol variables. Create the
time struct with two static slots, and initialize those
static slots to be methods.
* txr.1: Introduce "the epoch" term. Document the
new methods.
|
|
|
|
|
| |
* txr.1: Fixed wrongly copied and pasted reference to
time-string-local and time-string-utc.
|
|
|
|
|
| |
* lib.c (lazy_str_put, out_lazy_str): Decrement lim
variable in loop body.
|
|
|
|
| |
* txr.1: similar stray space removed in two places.
|
|
|
|
| |
* txr.1: Under Macro parameter lists again.
|
|
|
|
|
|
| |
* txr.1: One piece of syntax under the section Macro parameter
lists looks fine in a man page rendering and in the PDF, but
not in the HTML.
|
|
|
|
|
|
|
| |
* arith.c (tofloat): The isdigit here should be iswdigit.
Use '0' to '9' range check.
(toint): Replace accidental isalpha and toupper with
iswalpha and towupper.
|
|
|
|
|
|
| |
* match.c (maybe_next): New static function.
(v_block, v_if): Replace block of code with call to
maybe_next.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.h (if_s): Declared.
* match.c (v_if): New static function.
(dir_tables_init): Register v_if in v_directive_table under if symbol.
* parser.y (IF): Token assigned to <lineno> type.
(if_clause, elif_clauses_opt, else_clause_opt): New syntactic
representation, understood by v_if.
* txr.1: Documented if semantics more precisely, dropped
the text about it being syntactic sugar for a cases with require,
added compatibility note.
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version and date.
* share/txr/stdlib/ver.tl: Likewise.
* txr.vim, tl.vim: Regenerated.
|
|
|
|
|
|
|
| |
* txr.1: Restructured mode-string under open-file to give the
syntax as a grammar, and explain its elements using indented
paragraphs. No longer refers user to find documentation
on the C fopen function.
|
|
|
|
|
|
|
|
|
| |
* stream.c (tail_strategy): Apply the mode whenever a new
stream is opened.
(open_tail): Store the original mode string in h->mode
rather than the normalized one, so in tail_strategy
we can apply all the same attributes to a newly opened
stream that we applied to the original stream.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is more to this patch than just more permissive
mode strings. Now if a socket can be opened with mode
"l2" for instance, and these options are effectively applied
to the socket-specific "r+b" default, not to "r".
* stream.c (parse_mode): New argument specifying a default
mode. The syntax is relaxed, allowing previously required
elements to be omitted.
(normalize_mode): New argument specifying a default mode.
Format mode is always called now, because an input string
is no longer necessarily a valid fopen string even in cases
when it doesn't specify any extensions.
(open_file, open_fileno, open_tail, open_command,
open_process): Use new normalize_mode argument for defaulting;
normalize_mode no longer defaults to "r".
* stream.h (stdio_mode_init_trivial): Macro removed.
(stdio_mode_init_blank, stdio_mode_init_r,
stdio_mode_init_rpb): New initializer macros.
(parse_mode, normalize_mode): Declarations updated.
* socket.c (sock_accept): In datagram socket case, use new
parse_mode argument for defaulting using stdio_mode_init_rpb,
rather than overriding a missing string with "r+b".
(open_sockfd): Likewise, and use new normalize_mode
argument similarly for defaulting the mode on a stream socket.
* txr.1: Documented mode string permissiveness.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* socket.c (struct dgram_stream): new rx_max member.
(make_dgram_sock_stream): New arguments: a struct stdio_mode,
and pointer to prototype dgram socket. If a size is specified
in the mode, then use that as rx_max. Otherwise if a prototype
socket is specified, use its rx_max as the new socket's rx_max.
Otherwise default on 65536.
(dgram_get_byte_callback): Use d->rx_max as the capture size,
rather than a hard-coded 65536.
(sock_accept): Use d->rx_max as capture size for datagram.
Parse the mode. Pass the parsed mode to make_dgram_sock_stream,
as well as the accepting socket, so it can set up the rx_max
for the new socket.
(open_sockfd): Parse the mode and pass to make_dgram_sock_stream.
* stream.c (parse_mode): Static function becomes extern.
* stream.h (parse_mode): Declared.
* txr.1: Documented.
|
|
|
|
|
| |
* socket.c: Inadvertently introduced tabs recently
while working on Solaris. Grr!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* streamn.c (struct stdio_handle): New member, buf.
(stdio_stream_destroy): Free the stdio_handle's buf.
(parse_mode): Handle digit character, converting it
to integer value stored in m.buforder.
(set_mode_props): Allocate a buffer and install into
FILE * stream if the mode specifies a buforder.
(make_stdio_stream_common): Initialize buffer to null.
* stream.h (struct stdio_mode): New signed bitfield
member, buforder.
(stdio_mode_init_trivial): Initialize buforder member
to -1.
* txr.1: Documented size order digit.
|
|
|
|
|
|
| |
* socket.c (open_sockfd): Default mode string is "r+b".
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stream.c (parse_mode): Recognize "l" and "u", and
set new flags.
(set_mode_props): More complicated behavior to
integrate the new options with the line mode defaulting
behavior of "i".
* stream.h (struct stdio_mode): New members unbuf
and linebuf. All members become bit fields of width 1.
(stdio_mode_init_trivial): Initializers for new members.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (extract_bindings): Check for (var expr) syntax,
evaluate and bind.
* match.h (vars_k): Declared.
* parser.y (expand_repeat_rep_args): New static function.
(repeat_rep_helper): The :counter and :var arguments of
repeat/rep must be macro-expanded, since there can be Lisp
expressions there. This supports the new feature, but also
fixes the bug of :counter (var form) not expanding
form.
* txr.1: Updated documentation about :vars in @(repeat).
|
|
|
|
|
|
|
| |
* match.c (extract_bindings): Do not destructively
append to vars, because that's a piece of syntax.
The return value of extract_vars is freshly allocated,
though, so we can fix this by reversing the arguments.
|
|
|
|
|
|
|
|
|
|
| |
* socket.c (sock_accept): New third parameter specifying
timeout. If a timeout is specified, use the select function to
select socket for reading, datagram or stream.
(sock_load_init): Update registration of sock-accept
intrinsic to three arguments, one optional.
* txr.1: Documented sock-accept's timeout parameter.
|
|
|
|
|
|
|
|
|
|
| |
* socket.c (to_connect): New static function.
(sock_connect): Use to_connect instead of calling
connect directly.
(lock_load_init): sock-connect intrinsic registration
updated to three arguments, one optional.
* txr.1: Documented sock-connect timeout.
|
|
|
|
|
|
| |
* stream.c (stdio_unget_byte): Set errno to zero before
ungetc, because ungetc probably almost certainly
doesn't set errno when it fails.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.c (timeout_error_s): New symbol variable.
(obj_init): Intern timeout-error, init new variable.
* lib.h (timeout_error_s): Declared.
* socket.c (sock_timeout, sock_send_timeout,
sock_recv_timeout): New static functions.
(sock_load_init): Register sock-send-timeout and
sock-recv-timeout intrinsics.
* stream.c (stdio_maybe_read_error, stdio_maybe_error):
Convert EAGAIN into timeout_error_s.
* txr.1: Documented.
|
|
|
|
| |
* txr.1: Missing .desc macro.
|
|
|
|
|
|
|
|
|
|
| |
* match.c (complex_open): If name is a stream object, just
return it.
(v_output): Do not close the output stream if it came
from a destination expression specifying an existing
stream, and thus wasn't created inside complex_open.
* txr.1: Document stream destination in output directive.
|
|
|
|
|
|
|
| |
* socket.c (sock_connect): return a useful value rather than
t, namely the socket.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
| |
* socket.c (open_sockfd): We no longer need to set
stream sockets to line buffered mode here;
it's done in set_mode_props.
* stream.c (set_mode_props): If the mode specifies interactive,
streams open for writing are also switched to line buffering.
* txr.1: Documented under open-file, and open-socket.
|
|
|
|
|
| |
* txr.1: Datagram sockets don't use stdio streams any
more, and do not use full buffering.
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version and date.
* share/txr/stdlib/ver.tl: Likewise.
* txr.vim, tl.vim: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
| |
This fix is required for the stream socket test case to pass.
Some interaction between a stdio stream in line buffering
mode and the putc function causes a stream to lose data.
If we use fputs instead to output a character, the
issue goes away.
* stream.c (se_putc): When compiling for Cygwin, construct
a one-character-long string and use fputs, rather than putc.
|
|
|
|
|
|
|
|
|
|
| |
* tests/014/dgram-stream.tl (test): Renamed to
dgram-test since now this includes common.tl which
has a macro called test.
Only include af-inet6 in the family list if
the OS is GNU/Linux, Darwin or Cygwin.
* tests/common.tl (osname): New function.
|
|
|
|
|
|
|
|
|
|
| |
Undocumented members in struct sockaddr_in, and possibly
sockaddr_in6 also, must be cleared to all zero bits, otherwise
bind fails for the loopback address, even if the relevant
addressing members are correctly set.
* socket.c (sockaddr_in): memset the IPv4 or IPv6 address
to zero before filing it.
|
|
|
|
|
|
|
|
| |
* socket.c (struct dgram_stream): New member, sock_connected.
(make_dgram_sock_stream): Initialize sock_connected to zero.
(dgram_flush): Use send if sock_connected is nonzero, otherwise
sendto.
(dgram_set_sock_peer): Set sock_connected to 1.
|
|
|
|
|
| |
* txr.1: Briefly introduce datagram streams in sockets
overview and describe in more detail in special section.
|
|
|
|
|
|
|
| |
* sysif.c (setenv_wrap): We must use default_arg_strict,
not default_arg, because default_arg treats a nil value
as missing. We do not want to replace an explicit nil
with the default t.
|
|
|
|
|
|
|
| |
* sysif.c (setenv_wrap): If value is nil, and overwrite is
missing or t, call unsetenv.
* txr.1: Documented.
|
|
|
|
|
|
|
| |
* stream.c (delegate_get_sock_family, delegate_get_sock_type,
delegate_get_sock_peer, delegate_set_sock_peer): New static
functions.
(stream_init): Wire new functions in record_adapter_ops.
|
|
|
|
|
| |
* socket.c (sock_bind, sock_connect, sock_listen,
sock_accept): If the socket is closed, throw an error.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* socket.c (struct dgram_stream): New member, addr.
(make_dgram_sock_stream): Initialize addr to nil.
(dgram_print): Instead of printing the numeric fd, print the
stream description, obtained from the name_k property.
(dgram_mark): Mark the addr member.
(dgram_get_prop): Calculate a descriptive string from the
dgram stream state for the name_k property.
(dgram_set_prop): New static function.
(dgram_strm_ops): Name change to dgram-sock. Wire in
dgram_set_prop function.
(sock_bind): Set the addr_k property of the stream
to the local address that was just bound.
* stream.c (addr_k): New keyword symbol variable.
(stdio_handle): New member, addr.
(stdio_stream_print): Obtain descr by calling get_prop
method rather than directly from h->descr, in case it is
dynamically computed. Use ~a rather than ~s for incorporating
string properties into printed form, to eliminate quotes.
(stdio_stream_mark): Mark new addr member.
(sock_get_prop, sock_set_prop): New static functions.
(stdio_set_sock_peer): Invalidate h->descr by setting
it to nil.
(make_stdio_stream_common): Initialize h->addr to nil.
(make_sock_stream): Specify description as nil rather
than "socket".
(stream_init): Intern the addr keyword, and initialize
the addr_k variable.
Set the name of stdio_sock_ops to "stream-sock"
rather than leaving it inherited as "file-stream".
Wire in the sock_get_prop and sock_set_prop functions into
stdio_sock_ops.
* stream.h (addr_k): Declared.
|