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.
Taylor R. Campbell [Fri, 15 Aug 2008 15:44:37 +0000 (15:44 +0000)]
Rearrange MIME part parsing entry points so that MIME:PARSE-PART can
be used to parse parts with and without headers, rather than embedding
that logic in MIME:PARSE-PARTS.
Taylor R. Campbell [Tue, 12 Aug 2008 01:46:53 +0000 (01:46 +0000)]
When making new cache entries, write them to a file in a temporary
directory first, and move the file to its permanent location only
after it has been fully written. This prevents C-g from leaving
half-written cache entries. (File folders should perhaps do this too,
but it is not clear where the temporary directory should be located,
and using /tmp or /var/tmp is not appropriate, since those directories
may reside on another file system, rendering rename(2) useless.)
Taylor R. Campbell [Tue, 12 Aug 2008 01:36:52 +0000 (01:36 +0000)]
Remove or ignore the now unused variables since the last commit.
Taylor R. Campbell [Tue, 12 Aug 2008 00:49:03 +0000 (00:49 +0000)]
Remove vestige of progress metering in CACHE-FOLDER-CONTENTS. The
procedures that fetch the body parts already indicate their progress
with the message indices, and would overwrite a meter of the cache's
progress anyway except for fractions of seconds between messages.
Taylor R. Campbell [Mon, 11 Aug 2008 22:48:50 +0000 (22:48 +0000)]
Retain names with addresses when replying to mail.
Taylor R. Campbell [Mon, 11 Aug 2008 22:27:26 +0000 (22:27 +0000)]
Use APPEND-MAP, not MAP, over the list of internal header fields in
HEADER-FIELDS->MESSAGE-FLAGS: BURST-STRING returns a list of flags
each time, the collection of which we want to concatenate before
deleting duplicates.
Taylor R. Campbell [Mon, 11 Aug 2008 17:53:51 +0000 (17:53 +0000)]
Preload folder outlines before popping up a summary of messages to
expunge.
Taylor R. Campbell [Mon, 11 Aug 2008 17:51:12 +0000 (17:51 +0000)]
Remember what IMAP message keywords have been cached on disk, and
avoid stat(2)ing the cache files if we already expect them to exist.
This dramatically expedites repeated scanning of the message cache
(for preloading folder outlines when sorting or summarizing).
Taylor R. Campbell [Mon, 11 Aug 2008 17:44:50 +0000 (17:44 +0000)]
In GUARANTEE-IMAP-FOLDER-OPEN, send a SELECT command if the folder's
messages are not synchronized. This fixes
(with-open-resource <url> folder-length)
;Value: 0
where <url> is an IMAP URL for a folder that was recently open.
Taylor R. Campbell [Fri, 8 Aug 2008 03:40:49 +0000 (03:40 +0000)]
Change IMAIL-READ-FLAG to use visible defaults, rather than inserted
defaults, and to specify the history index, so that the prompting
facility will select a default at all.
Chris Hanson [Thu, 31 Jul 2008 05:23:39 +0000 (05:23 +0000)]
Closing string and octet ports is a no-op, so don't bother closing in
CALL-WITH-INPUT-STRING and CALL-WITH-INPUT-OCTETS.
Chris Hanson [Thu, 31 Jul 2008 05:22:03 +0000 (05:22 +0000)]
Eliminate now-unused helper procedures.
Chris Hanson [Sun, 27 Jul 2008 04:24:26 +0000 (04:24 +0000)]
Change mime-type parsing to use parser language; export the relevant
matchers and parsers.
Chris Hanson [Sat, 26 Jul 2008 22:53:55 +0000 (22:53 +0000)]
Export CHAR-SET:MIME-TOKEN.
Chris Hanson [Sat, 26 Jul 2008 22:51:29 +0000 (22:51 +0000)]
Export STRING-IS-MIME-TOKEN? and STRING-IS-MIME-TYPE?, and add
substring args to them.
Chris Hanson [Sat, 26 Jul 2008 20:35:25 +0000 (20:35 +0000)]
Add HTTP line ending.
Chris Hanson [Sat, 26 Jul 2008 07:10:27 +0000 (07:10 +0000)]
Provide better error for invalid match index in RE-MATCH-EXTRACT.
Chris Hanson [Sat, 26 Jul 2008 07:02:12 +0000 (07:02 +0000)]
Fix CALL-WITH-TRUNCATED-OUTPUT-STRING: return type plain wrong.
Chris Hanson [Sat, 26 Jul 2008 07:01:34 +0000 (07:01 +0000)]
Fix stupid typo in CALL-WITH-TRUNCATED-OUTPUT-PORT.
Chris Hanson [Sat, 26 Jul 2008 05:45:36 +0000 (05:45 +0000)]
Rename 'bytes' I/O to 'octets'.
Chris Hanson [Sat, 26 Jul 2008 05:12:20 +0000 (05:12 +0000)]
Eliminate port operations {READ,WRITE}-{WIDE,EXTERNAL}-SUBSTRING by
pushing the functionality into the {READ,WRITE}-SUBSTRING operations.
Chris Hanson [Thu, 24 Jul 2008 06:58:08 +0000 (06:58 +0000)]
Fix input transcription problem that was introduced in revision 1.55.