[racket-dev] [plt] Push #26693: master branch updated

From: Greg Hendershott (greghendershott at gmail.com)
Date: Mon Sep 16 17:07:04 EDT 2013

After I saw this, I closed the open pull request over on GitHub:

https://github.com/plt/racket/pull/324

BTW here is the commit over on GitHub:

https://github.com/plt/racket/commit/c6e28435578b6b8607d4c767ee956f88c8388ff0

I fetched from HEAD at the time, verison 5.3.4.7.  I've been using it
on that server ever since.

Today I wanted to move my app to a new server, which has 5.3.6
official. I was really confused that I got an error because
imap-append has only 3 args not 4. My PR added the 4th, optional arg.

Did this not get merged into release, after all??

Maybe I'm doing something really dumb, but...?


p.s. I do see my changes as the last commit in collect/net/imap.rkt

https://github.com/plt/racket/commits/c6e28435578b6b8607d4c767ee956f88c8388ff0/collects/net/imap.rkt

and the scribbling collects/net/scribblings/imap.scrbl

https://github.com/plt/racket/blob/c6e28435578b6b8607d4c767ee956f88c8388ff0/collects/net/scribblings/imap.scrbl

This should have been in 5.3.5, as well as 5.3.6. But it doesn't seem
to be in either (I just tried both).


p.p.s. Post package split, I'm not sure how to follow the history. But
searching for "imap-append":

https://github.com/plt/racket/search?q=imap-append&source=c

I do see my changes in pkgs/net-lib/net/imap.rkt

https://github.com/plt/racket/blob/3ad009070e063614f22a32fbbffa950a8d84e599/pkgs/net-lib/net/imap.rkt#L21-L25
https://github.com/plt/racket/blob/3ad009070e063614f22a32fbbffa950a8d84e599/pkgs/net-lib/net/imap.rkt#L21-L25

and in the scribbling:

https://github.com/plt/racket/blob/3ad009070e063614f22a32fbbffa950a8d84e599/pkgs/net-lib/net/imap.rkt#L21-L25

But I get a similar error running 5.900.


On Tue, Apr 23, 2013 at 5:50 PM,  <mflatt at racket-lang.org> wrote:
> mflatt has updated `master' from 8c7632c025 to c6e2843557.
>   http://git.racket-lang.org/plt/8c7632c025..c6e2843557
>
> =====[ 2 Commits ]======================================================
> Directory summary:
>   19.8% collects/net/scribblings/
>   49.1% collects/net/
>    9.1% collects/racket/private/
>   21.8% src/racket/src/
>
> ~~~~~~~~~~
>
> 3779cf6 Matthew Flatt <mflatt at racket-lang.org> 2013-04-23 15:06
> :
> | fix `exn:fail:filesystem:missing-module-path'
> :
>   M collects/racket/private/kernstruct.rkt | 2 +-
>   M src/racket/src/makeexn                 | 2 +-
>   M src/racket/src/schexn.h                | 2 +-
>   M src/racket/src/schvers.h               | 4 ++--
>
> ~~~~~~~~~~
>
> c6e2843 Greg Hendershott <greghendershott at gmail.com> 2013-04-23 13:50
> :
> | Add optional message flags argument to imap-append.
> |
> | Previously this was hard-coded to use the \Seen flag. Now that's the
> | default value when the argument is not supplied.
> :
>   M collects/net/imap.rkt               | 20 +++++++++++++-------
>   M collects/net/scribblings/imap.scrbl |  5 ++++-
>
> =====[ Overall Diff ]===================================================
>
> collects/net/imap.rkt
> ~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/net/imap.rkt
> +++ NEW/collects/net/imap.rkt
> @@ -1,8 +1,9 @@
>  #lang racket/base
>
> -(require racket/contract/base
> -         racket/tcp
> -         openssl
> +(require racket/contract/base
> +         racket/tcp
> +         openssl
> +         racket/format
>           "private/rbtree.rkt")
>
>  ;; define the imap struct and its predicate here, for use in the contract, below
> @@ -16,7 +17,12 @@
>   [imap-list-child-mailboxes
>    (->* (imap-connection? (or/c string? bytes? #f))
>         ((or/c string? bytes?))
> -       (listof (list/c (listof symbol?) bytes?)))])
> +       (listof (list/c (listof symbol?) bytes?)))]
> + [imap-append ((imap? string? (or/c string? bytes?))
> +               ((listof
> +                 (or/c 'seen 'answered 'flagged 'deleted 'draft 'recent)))
> +              . ->* .
> +              void?)])
>
>  (provide
>   imap-connection?
> @@ -45,7 +51,7 @@
>   imap-pending-updates?
>
>   imap-get-messages
> - imap-copy imap-append
> + imap-copy
>   imap-store imap-flag->symbol symbol->imap-flag
>   imap-expunge
>
> @@ -539,13 +545,13 @@
>    (check-ok
>     (imap-send imap (list "COPY" (box (msg-set msgs)) dest-mailbox) void)))
>
> -(define (imap-append imap dest-mailbox msg)
> +(define (imap-append imap dest-mailbox msg [flags '(seen)])
>    (no-expunges 'imap-append imap)
>    (let ([msg (if (bytes? msg) msg (string->bytes/utf-8 msg))])
>      (check-ok
>       (imap-send imap (list "APPEND"
>                             dest-mailbox
> -                           (box "(\\Seen)")
> +                           (box (~a (map symbol->imap-flag flags)))
>                             (box (format "{~a}" (bytes-length msg))))
>                  void
>                  (lambda (loop contin)
>
> collects/net/scribblings/imap.scrbl
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/net/scribblings/imap.scrbl
> +++ NEW/collects/net/scribblings/imap.scrbl
> @@ -416,7 +416,10 @@ Pending expunges must be handled before calling this function; see
>
>  @defproc[(imap-append [imap imap-connection?]
>                        [mailbox string?]
> -                      [message (or/c string? bytes?)])
> +                      [message (or/c string? bytes?)]
> +                      [flags (listof (or/c 'seen 'answered 'flagged
> +                                           'deleted 'draft 'recent))
> +                             '(seen)])
>           void?]{
>
>  Adds a new message (containing @racket[message]) to the given
>
> collects/racket/private/kernstruct.rkt
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/collects/racket/private/kernstruct.rkt
> +++ NEW/collects/racket/private/kernstruct.rkt
> @@ -376,7 +376,7 @@
>            (quote-syntax make-exn:fail:filesystem:missing-module)
>            (quote-syntax exn:fail:filesystem:missing-module?)
>            (list
> -           (quote-syntax exn:fail:filesystem:missing-module--path)
> +           (quote-syntax exn:fail:filesystem:missing-module-path)
>             (quote-syntax exn-continuation-marks)
>             (quote-syntax exn-message))
>            '(#f #f #f)
>
> src/racket/src/makeexn
> ~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/src/racket/src/makeexn
> +++ NEW/src/racket/src/makeexn
> @@ -66,7 +66,7 @@ propeties (the latter in curly braces), strings are contracts/comments.
>                                 (errno "pair of symbol and number" "system error code")]
>                                "error with system error code")
>                         (missing-module [module_path_field_check_2
> -                                        (-path "module path" "module path")
> +                                        (path "module path" "module path")
>                                          {exn:module-path scheme_module_path_property |scheme_make_prim(extract_module_path_2)|}]
>                                         "error resolving a module path"))
>             (network [] "TCP and UDP errors"
>
> src/racket/src/schexn.h
> ~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/src/racket/src/schexn.h
> +++ NEW/src/racket/src/schexn.h
> @@ -115,7 +115,7 @@ static exn_rec *exn_table;
>    static const char *MZEXN_FAIL_SYNTAX_MISSING_MODULE_FIELDS[1] = { "path" };
>    static const char *MZEXN_FAIL_READ_FIELDS[1] = { "srclocs" };
>    static const char *MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS[1] = { "errno" };
> -  static const char *MZEXN_FAIL_FILESYSTEM_MISSING_MODULE_FIELDS[1] = { "-path" };
> +  static const char *MZEXN_FAIL_FILESYSTEM_MISSING_MODULE_FIELDS[1] = { "path" };
>    static const char *MZEXN_FAIL_NETWORK_ERRNO_FIELDS[1] = { "errno" };
>    static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" };
>  #endif
>
> src/racket/src/schvers.h
> ~~~~~~~~~~~~~~~~~~~~~~~~
> --- OLD/src/racket/src/schvers.h
> +++ NEW/src/racket/src/schvers.h
> @@ -13,12 +13,12 @@
>     consistently.)
>  */
>
> -#define MZSCHEME_VERSION "5.3.4.4"
> +#define MZSCHEME_VERSION "5.3.4.5"
>
>  #define MZSCHEME_VERSION_X 5
>  #define MZSCHEME_VERSION_Y 3
>  #define MZSCHEME_VERSION_Z 4
> -#define MZSCHEME_VERSION_W 4
> +#define MZSCHEME_VERSION_W 5
>
>  #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
>  #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

Posted on the dev mailing list.