Chris Hanson [Mon, 15 Sep 2008 07:07:51 +0000 (07:07 +0000)]
Add CHAR-CTL? and CHAR-WSP? predicates.
Chris Hanson [Mon, 15 Sep 2008 05:18:41 +0000 (05:18 +0000)]
Add missing binding.
Chris Hanson [Mon, 15 Sep 2008 05:15:23 +0000 (05:15 +0000)]
Split "http-io.scm" to create new file "http-syntax.scm". I'm
currently working on the latter, so this minimizes the difference
between the trunk and my code.
Taylor R. Campbell [Sat, 13 Sep 2008 09:50:18 +0000 (09:50 +0000)]
In OPTIONAL-PORT, require only that if an argument was supplied it is
a port. Defer the guarantee that the port is an I/O port until it is
important: ports with PROMPT-FOR-{COMMAND-,}EXPRESSION operations need
not support input operations in order for the prompting procedures to
work.
Taylor R. Campbell [Sat, 13 Sep 2008 09:48:15 +0000 (09:48 +0000)]
Fix WRITE-CHAR operation in restart interface port type so that it
returns the number of characters written.
Taylor R. Campbell [Sat, 13 Sep 2008 09:31:36 +0000 (09:31 +0000)]
Fix package name comment.
Taylor R. Campbell [Fri, 12 Sep 2008 10:26:18 +0000 (10:26 +0000)]
In SIGNAL-IO-THREAD-EVENTS, we may not always find a dentry for all
the descriptors and modes listed. Don't assume that we shall.
This case arises particularly when there is no thread blocked in
BLOCK-ON-IO-DESCRIPTOR and someone invokes the PROCESS-WAIT primitive.
This should fix the random (%RECORD-REF #F 3) error that I have seen
when gunzipping MIT Scheme's Info reference manual and it isn't in the
operating system's disk buffer cache, which led to a losing race.
Taylor R. Campbell [Thu, 11 Sep 2008 17:49:09 +0000 (17:49 +0000)]
Fix bug in updating folder orders after a message is expunged.
Taylor R. Campbell [Thu, 11 Sep 2008 01:15:28 +0000 (01:15 +0000)]
Fix mistake in previous commit: COMPILE-DATA-FROM-FILE must pay
attention to the name of the output file; other parts of the system
rely on it.
Taylor R. Campbell [Wed, 10 Sep 2008 19:32:48 +0000 (19:32 +0000)]
Fix compilation of non-expression data files, broken by the recent
change to non-file scode compilation.
Taylor R. Campbell [Wed, 10 Sep 2008 15:12:07 +0000 (15:12 +0000)]
Change COMPILE-SCODE/INTERNAL/HOOK into three separate hooks:
COMPILE-SCODE/FILE/HOOK, COMPILE-SCODE/NO-FILE/HOOK, and
COMPILE-SCODE/RECURSIVE/HOOK. Use this in the C back end to fix
compilation of scode not from files. Handle temporary files more
carefully in the C back end. Remove vestiges of support for keeping
debugging info in the C back end, which depends on such operations as
SET-COMPILED-CODE-BLOCK/DEBUGGING-INFO! not available in the C code
generator. The info should perhaps be returned in the compiler
output, and applied in FINISH-C-COMPILATION to the compiled code
block, but this is trickier than it sounds. For now we'll just not
pretend to support keeping debugging info.
Taylor R. Campbell [Wed, 10 Sep 2008 14:55:49 +0000 (14:55 +0000)]
Add an optional argument to TEMPORARY-FILE-PATHNAME for a procedure
that transforms the generated pathname before trying to allocate a
temporary file. Implemented only on Unix because that's all I can
test, and the only user of it at the moment will be liarc, which runs
only on Unix anyway.
Taylor R. Campbell [Tue, 9 Sep 2008 18:30:21 +0000 (18:30 +0000)]
Implement FLUSH-OUTPUT and DISCRETIONARY-FLUSH-OUTPUT operations for
wrapped notification output ports.
Chris Hanson [Tue, 9 Sep 2008 16:30:47 +0000 (16:30 +0000)]
Fix typo in WRITE-DECODED-TIME-AS-CTIME.
Chris Hanson [Tue, 9 Sep 2008 16:28:19 +0000 (16:28 +0000)]
Rename DECODED-TIME->GMT to DECODED-TIME->UTC.
Taylor R. Campbell [Tue, 9 Sep 2008 15:37:03 +0000 (15:37 +0000)]
Use the IMAIL-SEARCH prompt history for IMAIL-SEARCH-SUMMARY.
Chris Hanson [Tue, 9 Sep 2008 07:23:49 +0000 (07:23 +0000)]
Fix thinko in PARSER:HOSTPORT.
Chris Hanson [Tue, 9 Sep 2008 06:36:20 +0000 (06:36 +0000)]
Implement CONDITION-TYPE:DECODE-BASE64.
Taylor R. Campbell [Tue, 9 Sep 2008 06:13:43 +0000 (06:13 +0000)]
Clarify IMAP MIME body sections, which are confusing because every
message body is treated as a multipart body by the IMAP's indexing
scheme. This makes IMAIL never fetch TEXT body parts, except when
the user views a message raw with `C-c C-t C-m' (eventually, which
will also view arbitrary MIME bodies raw), and rather use numbered
parts, which will cause IMAIL to refill existing disk caches, even
though they already have mostly the same data in them. IMAIL will
also now show MIME bodies in IMAP and file folders more uniformly,
especially complex nesting of message/rfc822 and multipart bodies.
Chris Hanson [Tue, 9 Sep 2008 05:23:53 +0000 (05:23 +0000)]
Adjustments to help support HTTP. Deleted these procedures:
DECODED-TIME->HTTP-STRING
FILE-TIME->HTTP-STRING
UNIVERSAL-TIME->HTTP-STRING
and added these:
DECODED-TIME->GMT
WRITE-DECODED-TIME-AS-CTIME
WRITE-DECODED-TIME-AS-HTTP
WRITE-DECODED-TIME-AS-ISO8601
WRITE-DECODED-TIME-AS-RFC2822
WRITE-TIME-ZONE
Chris Hanson [Tue, 9 Sep 2008 04:43:48 +0000 (04:43 +0000)]
Implement STRUCTURE-PARSER-VALUES.
Chris Hanson [Tue, 9 Sep 2008 04:33:56 +0000 (04:33 +0000)]
Fix typo in RFC 850 date parser.
Taylor R. Campbell [Mon, 8 Sep 2008 22:27:02 +0000 (22:27 +0000)]
When walking the body of a message/rfc822 body to insert the latter
in-line, add BODY to the selector to disambiguate the message/rfc822
body from its own body. MIME selectors as used by the front end
continue to diverge from IMAP sections, which appear to make little
sense (although this requires further testing with more IMAP server
implementations).
Taylor R. Campbell [Mon, 8 Sep 2008 20:40:59 +0000 (20:40 +0000)]
Ensure a blank line before each boundary. Don't break the line after
every MIME body.
Chris Hanson [Mon, 8 Sep 2008 18:19:54 +0000 (18:19 +0000)]
Add DISQUALIFY keyword.
Chris Hanson [Mon, 8 Sep 2008 04:44:45 +0000 (04:44 +0000)]
Implement MATCH keyword: like QUOTE but generates a value.
Taylor R. Campbell [Mon, 8 Sep 2008 03:55:18 +0000 (03:55 +0000)]
Refactor MIME support,
- to make sense,
- to be more robust,
- to better reflect the terminology of the RFCs,
- to simplify code that uses MIME bodies,
- to move all generic MIME code into imail-mime.scm, and
- to fix a number of small bugs.
The documentation will need to be updated, since some user-visible
commands are now named with the word `body' rather than `entity'.
Undoubtedly, refactoring added many small bugs, too, still to be
weeded out.
Chris Hanson [Mon, 8 Sep 2008 00:09:50 +0000 (00:09 +0000)]
Rebind forward/backward-paragraph to same commands as Emacs.
Chris Hanson [Sun, 7 Sep 2008 04:33:13 +0000 (04:33 +0000)]
Rewrite of LIST-PARSER to be more general. Now there are three
variants: OBJECT-PARSER, LIST-PARSER, and VECTOR-PARSER. There are
corresponding OBJECT, LIST, and VECTOR keywords for switching between
the different modes. And the optimizer is considerably smarter.
Taylor R. Campbell [Thu, 4 Sep 2008 21:55:20 +0000 (21:55 +0000)]
Implement kludges to incrementally expand and contract summary buffers
as messages are added to and expunged from the corresponding folders.
Taylor R. Campbell [Wed, 3 Sep 2008 19:36:59 +0000 (19:36 +0000)]
Back out earlier changes concerning a phantom race condition with
the GC daemon (of course the access to the uncompressed file list
locks the GC daemon out), and instead avoid storing entries in it
before the uncompressor has returned normally. Also, handle file
errors in FASLOAD-LOADER, since they aren't all signalled as bad-
range-argument errors by the microcode.
Chris Hanson [Wed, 3 Sep 2008 15:33:08 +0000 (15:33 +0000)]
Rename FILTER to QUALIFY.
Chris Hanson [Wed, 3 Sep 2008 09:14:17 +0000 (09:14 +0000)]
Implement FILTER keyword in parser language.
Chris Hanson [Wed, 3 Sep 2008 07:00:25 +0000 (07:00 +0000)]
Implement LIST->LIST-PARSER-VALS and MAP-LIST-PARSER-VALS. Simplify
implementation of LIST-PARSER-VALS->LIST.
Chris Hanson [Wed, 3 Sep 2008 06:08:19 +0000 (06:08 +0000)]
Implement LIST-PARSER-VALS-REF and LIST-PARSER-VALS-LENGTH.
Chris Hanson [Wed, 3 Sep 2008 05:53:47 +0000 (05:53 +0000)]
Implement WRAP-LIST-PARSER. Implement VALUES parser expression.
Chris Hanson [Wed, 3 Sep 2008 04:10:34 +0000 (04:10 +0000)]
Add optional argument to control whether to authenticate using a
keytab (needed for cron access).
Chris Hanson [Wed, 3 Sep 2008 02:49:09 +0000 (02:49 +0000)]
Implement LIST-PARSER macro.
Taylor R. Campbell [Tue, 2 Sep 2008 22:46:04 +0000 (22:46 +0000)]
Eliminate unused parameter to DIFF-BUFFER.
Taylor R. Campbell [Tue, 2 Sep 2008 22:22:07 +0000 (22:22 +0000)]
When parsing address lists, disregard all-whitespace entries.
Taylor R. Campbell [Tue, 2 Sep 2008 21:31:59 +0000 (21:31 +0000)]
When diffing with a buffer, ignore whether it is modified or not. The
user may want to see how a file has changed on disk even if the buffer
in memory has not been touched.
Taylor R. Campbell [Tue, 2 Sep 2008 17:19:10 +0000 (17:19 +0000)]
Use the term `dynamic', not `ephemeral', for parts of a message that
are subject to change on the server and should not be cached on disk,
to match the RFC's terminology.
Taylor R. Campbell [Mon, 1 Sep 2008 01:24:47 +0000 (01:24 +0000)]
If, when resynchronizing the mapping between sequence numbers and
UIDs with the server, the folder's length has not changed and all
the UIDs match, don't signal an INCREASE-LENGTH event.
Taylor R. Campbell [Mon, 1 Sep 2008 00:31:15 +0000 (00:31 +0000)]
Tighten synchronization with the server:
- Record a somewhat finer approximation of the status of our
synchronization with the server, which lets us be more careful
about deleting caches for expunged messages: only if our mapping
between sequence numbers to UIDs is synchronized with the server
is it sensible to delete caches for expunged messages.
- If our length is desynchronized with the server when we update the
folder's length because of an EXISTS response, and if all the UIDs
that we know about are synchronized with the server, then no
messages have been expunged from the folder, and its length has
only increased. In this case, signal anINCREASE-LENGTH event,
rather than a SET-LENGTH event. This avoids regenerating summary
buffers when reconnecting if no messages have been expunged by
another client.
Taylor R. Campbell [Sun, 31 Aug 2008 23:02:17 +0000 (23:02 +0000)]
New generic procedure MESSAGE-PERMANENT-FLAGS returns the flags that
remain permanently and are therefore useful to retain when appending
messages to other folders. All %APPEND-MESSAGE methods now use this
rather than MESSAGE-FLAGS. This will keep `recent' flags from being
stored in file folders as an artefact of the IMAP.
Taylor R. Campbell [Sun, 31 Aug 2008 19:32:09 +0000 (19:32 +0000)]
When computing from strings in summaries, avoid empty matches between
parentheses: `From: foo@mumble.bar ()'.
Chris Hanson [Sun, 31 Aug 2008 07:53:07 +0000 (07:53 +0000)]
Implement new *parser forms ENCAPSULATE* and TRANSFORM* that call
their procedure with the values spread out as arguments. TRANSFORM*
additionally expects the procedure to return multiple values.
Chris Hanson [Sun, 31 Aug 2008 07:36:21 +0000 (07:36 +0000)]
Implement WRITE-MIME-TYPE.
Chris Hanson [Sun, 31 Aug 2008 07:33:07 +0000 (07:33 +0000)]
Implement new mechanism to simplify initialization during cold load.
Chris Hanson [Sun, 31 Aug 2008 07:28:05 +0000 (07:28 +0000)]
Implement new mechanism to simplify initialization during cold load.
Taylor R. Campbell [Sat, 30 Aug 2008 19:55:59 +0000 (19:55 +0000)]
Simplify previous change.
Taylor R. Campbell [Sat, 30 Aug 2008 19:54:37 +0000 (19:54 +0000)]
In expansion of VALUES, number the local variables to distinguish
them visibly.
Taylor R. Campbell [Sat, 30 Aug 2008 19:48:20 +0000 (19:48 +0000)]
Use an RFC 2822 header object, rather than a list of a symbol and a
string, per the new HTTP client.
Taylor R. Campbell [Sat, 30 Aug 2008 19:33:25 +0000 (19:33 +0000)]
In IOTA, multiply the index by the increment, rather than adding
adding the increment repeatedly.
Chris Hanson [Fri, 29 Aug 2008 23:20:04 +0000 (23:20 +0000)]
Fix fencepost error in parsing of months.
Taylor R. Campbell [Fri, 29 Aug 2008 20:14:50 +0000 (20:14 +0000)]
Change EXPUNGE folder modification event so that it includes the
message object and its mapped index. This is necessary to find
information about the message by identity, which will be needed by
future implementation of incremental updates to summary buffers.
Taylor R. Campbell [Fri, 29 Aug 2008 20:03:45 +0000 (20:03 +0000)]
In `imail-browser-view-container', if no resource is selected, prompt
the user for a URL, rather than signalling an error. This allows the
IMAIL browser to be an entry point into IMAIL.
Taylor R. Campbell [Thu, 28 Aug 2008 19:39:19 +0000 (19:39 +0000)]
In `vc-version-diff', ask to save the file only if we are diffing
against the current revision. If we are diffing two specified
revisions, there is no need to save changes in the buffer.
Fix the CVS method for LOCKING-USER in the case when FILE-ATTRIBUTES
returns #F.
Taylor R. Campbell [Thu, 28 Aug 2008 19:28:29 +0000 (19:28 +0000)]
When stringifying data, declare data objects after they are defined,
since the declaration is not a C forward declaration but a fragment of
C code that refers to the defined object and therefore must follow its
definition. This fixes compilation of source files that contain only
a literal datum (including empty source files, such as one finds in
scmutils).
Taylor R. Campbell [Thu, 28 Aug 2008 15:26:51 +0000 (15:26 +0000)]
When reading Info files into buffers, don't visit the files. This
prevents Edwin from trying to write over the Info files if something
goes wrong and the editor tries to save the file.
Taylor R. Campbell [Wed, 27 Aug 2008 14:55:48 +0000 (14:55 +0000)]
Implement a preliminary `imail-search-summary' command. This is like
`imail-search', but produces a buffer summarizing all search results
rather than selecting only the first search result.
Taylor R. Campbell [Wed, 27 Aug 2008 14:22:09 +0000 (14:22 +0000)]
Don't cache message flags on disk.
Do meter the progress of caching folder contents, so that IMAIL does
not appear to be hung during the long sequence of lstat(2)s and body
structure traversals if the cache has many items already in it.
Also report a message when connecting to the IMAP server.
Taylor R. Campbell [Wed, 27 Aug 2008 14:16:36 +0000 (14:16 +0000)]
Put bci files in the library directory, not in the SRC/ subdirectory
of the library directory.
Chris Hanson [Wed, 27 Aug 2008 05:31:16 +0000 (05:31 +0000)]
Implement simple parser for RFC 850 date strings (needed for HTTP).
Chris Hanson [Wed, 27 Aug 2008 04:58:09 +0000 (04:58 +0000)]
httpio.scm, runtime.pkg: Rename HTTP-URI to HTTP-REQUEST-URI for
clarification. Change definition of HTTP-REQUEST-URI to match RFC
2616.
url.scm, runtime.pkg: Eliminate PARSE-URI-NO-AUTHORITY, create and
export PARSE-URI-AUTHORITY and PARSE-URI-PATH-ABSOLUTE for use in
"httpio.scm".
Chris Hanson [Wed, 27 Aug 2008 03:59:47 +0000 (03:59 +0000)]
Fix bug: HTTP status codes are arbitrary three-digit numbers.
Chris Hanson [Tue, 26 Aug 2008 08:33:35 +0000 (08:33 +0000)]
Rewrite date parsers to use *PARSER and export them. Rename standard
->STRING procedures to ->RFC2822-STRING to emphasize their meaning.
Chris Hanson [Tue, 26 Aug 2008 05:57:18 +0000 (05:57 +0000)]
Add guarantors for DECODED-TIME? and TIME-ZONE?.
Chris Hanson [Tue, 26 Aug 2008 04:21:54 +0000 (04:21 +0000)]
Make sure that user-agent string is an HTTP token.
Taylor R. Campbell [Mon, 25 Aug 2008 21:11:12 +0000 (21:11 +0000)]
Behave as before with no prefix given to INPUT-PORT->PARSER-BUFFER;
don't spin endlessly trying to double 0 until it exceeds the minimum
length.
Chris Hanson [Mon, 25 Aug 2008 20:53:33 +0000 (20:53 +0000)]
Export character sets for HTTP text and token.
Chris Hanson [Mon, 25 Aug 2008 08:48:33 +0000 (08:48 +0000)]
Rename HTTP-ENTITY to HTTP-MESSAGE.
Chris Hanson [Mon, 25 Aug 2008 08:44:26 +0000 (08:44 +0000)]
Use hyphens rather than underscores in user-agent string.
Chris Hanson [Mon, 25 Aug 2008 08:37:35 +0000 (08:37 +0000)]
Add support for generating the HTTP date strings: required use of
"GMT" time zone marker. Also export the parser for iso8601 time.
Chris Hanson [Mon, 25 Aug 2008 08:23:32 +0000 (08:23 +0000)]
Change definition of HTTP version to that from RFC 2616.
Taylor R. Campbell [Mon, 25 Aug 2008 01:29:02 +0000 (01:29 +0000)]
When resynchronizing message UIDs with the server, stop if we find a
message whose UID is uninitialized. This arises if the previous
attempt to read the UIDs from the server was interrupted.
Taylor R. Campbell [Sun, 24 Aug 2008 23:34:31 +0000 (23:34 +0000)]
Eliminate FILENAME->COMPILED-OBJECT and the call to it in
LOAD-PACKAGE-SET. LOAD will do the right thing when a built-in
object is available, and will also update debugging pathnames.
Taylor R. Campbell [Sun, 24 Aug 2008 23:31:07 +0000 (23:31 +0000)]
In FASLOAD-UPDATE-SUB-BLOCKS, use DEBUG-INFO-PATHNAME?, rather than
PATHNAME?.
Taylor R. Campbell [Sun, 24 Aug 2008 21:27:05 +0000 (21:27 +0000)]
Ignore errors while trying to read the uidvalidity file. If there is
a problem reading the file, this means that we will delete the cache,
rather than signal an error to the user. This may be the wrong
behaviour in some obscure cases -- e.g., perhaps a networked file
system where the network fails after checking that the cache directory
is in fact a directory --, but this is useful for cases where the
cache directory was just set up wrong, perhaps because Scheme was
interrupted.
Chris Hanson [Sun, 24 Aug 2008 07:21:03 +0000 (07:21 +0000)]
Change to use new http-client support.
Chris Hanson [Sun, 24 Aug 2008 07:20:12 +0000 (07:20 +0000)]
Replace http-client.scm with new HTTP support. The new mechanism is
slightly lower level than the old, but it provides support for servers
and is slightly smarter about encoding.
THIS WILL BREAK EXISTING USERS OF HTTP-CLIENT
Chris Hanson [Sun, 24 Aug 2008 06:27:20 +0000 (06:27 +0000)]
Rename XML->STRING to XML->OCTETS; define alias for compatibility.
Chris Hanson [Sat, 23 Aug 2008 21:08:27 +0000 (21:08 +0000)]
Workaround for (what looks like) a bug in XQuartz on MacOS.
Taylor R. Campbell [Sat, 23 Aug 2008 17:44:54 +0000 (17:44 +0000)]
Trim whitespace surrounding addresses in
RFC822:STRING->SPLIT-ADDRESS-TOKENS.
Taylor R. Campbell [Fri, 22 Aug 2008 22:08:23 +0000 (22:08 +0000)]
Define __ppc64__ to 1, not just to an empty token sequence, for
consistency.
Taylor R. Campbell [Fri, 22 Aug 2008 22:07:19 +0000 (22:07 +0000)]
If __powerpc__ or __powerpc64__ is defined, define __ppc__ or
__ppc64__, repsectively. This comes up on NetBSD; why GCC uses
different cpp symbols for different operating systems on a common
machine architecture, I haven't the faintest clue.
Chris Hanson [Thu, 21 Aug 2008 01:00:46 +0000 (01:00 +0000)]
Name and export standard hash-table types.
Chris Hanson [Wed, 20 Aug 2008 09:01:35 +0000 (09:01 +0000)]
Implement HASH-TABLE/TYPE.
Chris Hanson [Tue, 19 Aug 2008 05:03:29 +0000 (05:03 +0000)]
Make TEXT line ending be the more generic XML-1.0 on input; behavior
on output is unchanged. When speaking of generic text this will
support all the standard line endings for input.
Chris Hanson [Mon, 18 Aug 2008 06:59:42 +0000 (06:59 +0000)]
Change DETERMINE-CODING to use the new prefix mechanism of the parser
buffer.
Chris Hanson [Mon, 18 Aug 2008 06:56:14 +0000 (06:56 +0000)]
Add optional argument to INPUT-PORT->PARSER-BUFFER so that a prefix
string can be specified. This is needed for injecting readahead from
a previous process -- for example, character coding detection.
Chris Hanson [Mon, 18 Aug 2008 06:40:18 +0000 (06:40 +0000)]
in PROVIDE-INPUT-FEATURES, don't advertise operations that aren't
supported.
Chris Hanson [Mon, 18 Aug 2008 00:19:46 +0000 (00:19 +0000)]
Simplify DETERMINE-CODING.
Chris Hanson [Mon, 18 Aug 2008 00:15:17 +0000 (00:15 +0000)]
Use UTF-16 surrogate support.
Chris Hanson [Mon, 18 Aug 2008 00:12:53 +0000 (00:12 +0000)]
Export procedures for managing UTF-16 surrogate pairs.
Chris Hanson [Sun, 17 Aug 2008 09:42:29 +0000 (09:42 +0000)]
Fix fencepost error in UNICODE-CODE-POINT?.
Taylor R. Campbell [Sat, 16 Aug 2008 17:57:11 +0000 (17:57 +0000)]
Revert previous change to close I/O ports of subprocesses when they
exit.
Taylor R. Campbell [Fri, 15 Aug 2008 22:46:42 +0000 (22:46 +0000)]
Use MAKE-INITIALIZED-MAIL-BUFFER rather than MAKE-MAIL-BUFFER.
Initialization is separate from selection.
Taylor R. Campbell [Fri, 15 Aug 2008 20:46:12 +0000 (20:46 +0000)]
New procedure MAKE-INITIALIZED-MAIL-BUFFER creates a mail buffer and
initializes it with a user-supplied initialization procedure, after it
is created or after confirmation to discard the contents of any
existing mail buffer.
Taylor R. Campbell [Fri, 15 Aug 2008 17:08:10 +0000 (17:08 +0000)]
Split COMPUTE-MIME-MESSAGE-OUTLINE's method on <MIME-BODY> into one on
<MIME-BODY> and one on <MIME-BODY-ONE-PART>, so that the method on the
more general <MIME-BODY> will not accidentally call procedures
applicable only to <MIME-BODY-ONE-PART> instances.