Snapshot release 20030317-1704

Charles Cazabon <[email protected]> 17 Mar 2003 23:04:33 -0000
Newsgroups gmane.mail.bikini.devel
Message-ID <[email protected]>

Snapshot 20030317-1704 released and uploaded.  From the CHANGELOG:

2003-03-17

  Get a start on formal grammar for individual commands and responses.
  Add "P" flag to grammar.


Diff follows.

diff -urN --exclude=bikini.html --exclude=bikini.txt --exclude=CHANGELOG bikini-20030310-1502/bikini.texi bikini-20030317-1704/bikini.texi
--- bikini-20030310-1502/bikini.texi	Mon Mar 10 15:02:22 2003
+++ bikini-20030317-1704/bikini.texi	Mon Mar 17 17:04:07 2003
@@ -1427,8 +1427,6 @@
 S:  K ok, directory removed
 @end example
 
-??? Allow multiple flags in single command?
-
 @c ----------------------------------------------------------------------------
 @node clearflag
 @subsection CLEARFLAG
@@ -1457,8 +1455,6 @@
 S:  K ok, directory removed
 @end example
 
-??? Allow multiple flags in single command?
-
 @c ----------------------------------------------------------------------------
 @c @node search
 @c @subsection SEARCH
@@ -1538,8 +1534,8 @@
 C:  SEND projects/alpha/1046273407.M181707P22689Q2.localhost 65
 S:  K ok, send envelope of 65 octets
 C:  [email protected]\[email protected]\[email protected]\0
-	finished
-S:	K ok, message sent to 2 recipient(s)
+    finished
+S:  K ok, message sent to 2 recipient(s)
 @end example
 
 @example
@@ -1551,16 +1547,16 @@
 C:  SEND projects/alpha/1046273407.M181707P22689Q2.localhost 65
 S:  K ok, send envelope of 65 octets
 C:  [email protected]\[email protected]\[email protected]\0
-	finished
-S:	A error queuing message, try again later
+    finished
+S:  A error queuing message, try again later
 @end example
 
 @example
 C:  SEND projects/alpha/1046273407.M181707P22689Q2.localhost 65
 S:  K ok, send envelope of 65 octets
 C:  [email protected]\[email protected]\[email protected]\0
-	finished
-S:	E you're not "[email protected]"
+    finished
+S:  E you're not "[email protected]"
 @end example
 
 @c ****************************************************************************
@@ -1654,11 +1650,11 @@
         ; in LISTDIRS output, the trailing "/" indicates a directory
         ; instead of a mail folder
 
-flag                = %x44 / %x46 / %x4E / %x52 / %x53 / %x54
-        ; current flags D, F, N, R, S, and T are uppercase only ; because of
+flag                = %x44 / %x46 / %x4E / %x50 / %x52 / %x53 / %x54
+        ; current flags D, F, N, P, R, S, and T are uppercase only ; because of
         ; case-sensitivity, new flags can be added later using "r", etc.
 
-flags               = [%x44] [%x46] [%x4E] [%x52] [%x53] [%x54]
+flags               = [%x44] [%x46] [%x4E] [%x50] [%x52] [%x53] [%x54]
         ; flags are in any order but cannot be repeated
 
 content-size        =  NONZERODIGIT *DIGIT
@@ -1694,6 +1690,9 @@
 response-code-char  = %x2B / %x41 / %x45 / %x4B / %x55 / %x58
         ; single character response code +, A, E, K, U, or X
 
+negative-response-code-char  = %x41 / %x45 / %x55 / %x58
+        ; single character response code A, E, U, or X
+
 response-modifier-char  = %x43
         ; single character response modifier C.  New modifiers may be added
         ; later.
@@ -1716,6 +1715,10 @@
 multiline-response      = *<continuation-line> <success-line>
         ; zero or more continuation lines followed by a "K" response line
 
+negative-response       = negative-response-code-char <response-modifier> SP response-info
+
+positive-response       = %x4B <response-modifier> SP response-info
+
 command                 =  ( %x41 %x55 %x54 %x48 )                          ; AUTH
 command                 =/ ( %x43 %x41 %x50 %x53 )                          ; CAPS
 command                 =/ ( %x43 %x4C %x45 %x41 %x52 %x46 %x4C %x41 %x47)  ; CLEARFLAG
@@ -1746,13 +1749,335 @@
 auth-method             =/ ( %x50 %x4C %x41 %x49 %x4E )                                 ; PLAIN
 auth-method             =/ ( %x4D %x45 %x53 %x53 %x41 %x47 %x45 %x2D %x53 %x49 %x5A %x45 ) ; MESSAGE-SIZE
 
-auth-command            = ( %x41 %x55 %x54 %x48 ) auth-method *(SP auth-token)
+@c ============================================================================
+@section Commands
+
+This section details the formal grammar for each command and possible responses
+to the command.
+
+@c ----------------------------------------------------------------------------
+@subsection STARTTLS
+
+@example
+starttls-command    = ( %x53 %x54 %x41 %x52 %x54 %x54 %x4C %x53 )
+    ; uppercase "STARTTLS",  ??? finish this
+
+starttls-response   = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection AUTH
+
+@example
+auth-command        = ( %x41 %x55 %x54 %x48 SP auth-method *(SP auth-token))
+    ; uppercase "AUTH" followed by a space, auth-method, then optional auth tokens
+
+auth-response       = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item special case; can be a prompt for more info (@samp{+}), or success or failure ??? finish this
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection CAPS
+
+@example
+caps-command        = ( %x43 %x41 %x50 %x53 )
+    ; uppercase "CAPS"
+
+caps-response       = ( negative-response )
+caps-response       =/ ( *(%x2B SP 1*NORMCHAR CR LF) positive-response CR LF )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection QUIT
+
+@example
+quit-command        = ( %x51 %x55 %x49 %x54 )
+    ; uppercase "QUIT"
+
+quit-response       = ()
+    ; no response, connection just closes ??? how to say this in ABNF
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection LISTDIRS
+
+@example
+listdirs-command    = ( %x4C %x49 %x53 %x54 %x44 %x49 %x52 %x53 )
+    ; uppercase "LISTDIRS"
+
+listdirs-response   = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection MKDIR
+
+@example
+mkdir-command       = ( %x4D %x4B %x44 %x49 %x52 SP directory-path)
+    ; uppercase "MKDIR", space, directory path
+
+mkdir-response      = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection RMDIR
+
+@example
+rmdir-command       = ( %x52 %x4D %x44 %x49 %x52 SP directory-path)
+    ; uppercase "RMDIR", space, directory path
+
+rmdir-response      = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection MKFOLDER
+
+@example
+mkfolder-command    = ( %x4D %x4B %x46 %x4F %x4C %x44 %x45 %x52 SP folder-path)
+    ; uppercase "MKFOLDER", space, folder path and name
+
+mkfolder-response   = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection RMFOLDER
+
+@example
+rmfolder-command    = ( %x52 %x4D %x46 %x4F %x4C %x44 %x45 %x52 SP folder-path)
+    ; uppercase "RMFOLDER", space, folder path and name
+
+rmfolder-response   = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection MVFOLDER
+
+@example
+mvfolder-command    = ( %x4D %x56 %x46 %x4F %x4C %x44 %x45 %x52 SP folder-path SP folder-path)
+    ; uppercase "MVFOLDER", space, old folder path and name, space, new folder path and name
+
+mvfolder-response   = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection LISTMSGS
 
-argument                = 1*VCHAR
+@example
+listmsgs-command    = ( %x4C %x49 %x53 %x54 %x4D %x53 %x47 %x53 SP folder-path)
+    ; uppercase "LISTMSGS", space, folder path and name
 
-command-line            = <command> *(SP argument) CR LF
+listmsgs-response   = ( negative-response )
+    ;
+@end example
 
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection GET
+
+@example
+get-command         = ( %x47 %x45 %x54 SP message-path)
+    ; uppercase "GET", space, folder path and name, /, message identifier
+
+get-response        = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection GETHDR
+
+@example
+gethdr-command      = ( %x47 %x45 %x54 %x48 %x44 %x52 SP message-path)
+    ; uppercase "GETHDR", space, folder path and name, /, message identifier
+
+gethdr-response     = ( negative-response )
+    ;
 @end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection PUT
+
+@example
+put-command         = ( %x50 %x55 %x54 SP folder-path SP content-size)
+    ; uppercase "PUT", space, folder path and name, space, message length
+
+put-response        = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection RMMSG
+
+@example
+rmmsg-command       = ( %x52 %x4D %x4D %x53 %x47 SP message-path)
+    ; uppercase "RMMSG", space, folder path and name, /, message identifier
+
+rmmsg-response      = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection MVMSG
+
+@example
+mvmsg-command       = ( %x4D %x56 %x4D %x53 %x47 SP message-path SP folder-path)
+    ; uppercase "MVMSG", space, old folder path and name, /, message identifier, space, new folder path and name
+
+mvmsg-response      = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection SETFLAG
+
+@example
+setflag-command     = ( %x53 %x45 %x54 %x46 %x4C %x41 %x47 SP flag SP message-path)
+    ; uppercase "SETFLAG", space, flag, space, folder path and name, /, message identifier
+
+setflag-response    = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection CLEARFLAG
+
+@example
+clearflag-command   = ( %x43 %x4C %x45 %x41 %x52 %x46 %x4C %x41 %x47 SP flag SP message-path)
+    ; uppercase "CLEARFLAG", space, flag, space, folder path and name, /, message identifier
+
+clearflag-response  = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
+
+@c ----------------------------------------------------------------------------
+@c @subsection SEARCH
+@c
+@c @strong{Syntax:}
+@c @example
+@c     ( %x51 %x55 %x49 %x54 )
+@c     ; uppercase "QUIT"
+@c @end example
+@c 
+@c @strong{Response:}
+@c @itemize @bullet
+@c @item
+@c @end itemize
+@c 
+@c @strong{Notes:}
+@c @itemize @bullet
+@c @item
+@c @end itemize
+
+@c ----------------------------------------------------------------------------
+@subsection SEND
+
+@example
+send-command        = ( %x53 %x45 %x4E %x44 SP message-path SP content-size)
+    ; uppercase "SEND", space, folder path and name, /, message identifier, space, envelope length
+
+send-response       = ( negative-response )
+    ;
+@end example
+
+@strong{Notes:}
+@itemize @bullet
+@item
+@end itemize
 
 @c ****************************************************************************
 @chapter Examples