Snapshot release 20030318-1713

Charles Cazabon <[email protected]> 18 Mar 2003 23:14:05 -0000
Newsgroups gmane.mail.bikini.devel
Message-ID <[email protected]>

Snapshot 20030318-1713 released and uploaded.  From the CHANGELOG:

2003-03-18

  Almost finish formal grammar for responses.  Add note about registering
    experimental capability X- tokens and commands.


Diff follows.

diff -urN --exclude=bikini.html --exclude=bikini.txt --exclude=CHANGELOG bikini-20030317-1704/bikini.texi bikini-20030318-1713/bikini.texi
--- bikini-20030317-1704/bikini.texi	Mon Mar 17 17:04:07 2003
+++ bikini-20030318-1713/bikini.texi	Tue Mar 18 17:13:37 2003
@@ -685,7 +685,13 @@
 Servers MAY implement experimental or nonstandardized capabilities which
 are not listed in this specification using capability tokens beginning with
 @samp{X-} (i.e. @samp{X-FOO}).  The BikINI protocol will never define
-a standard capability token beginning with @samp{X-}.
+a standard capability token beginning with @samp{X-}.  I encourage client
+and server authors to register their @samp{X-...} tokens with me to prevent
+collisions.  Authors should implement experimental commands with the same
+@samp{X-} prefix and use the command name as the capability token representing
+the command.  For example, an experimental glob search command might use the
+command @samp{X-GLOBSEARCH} and be advertised with the capability token
+@samp{X-GLOBSEARCH}.
 
 Servers MUST NOT send any capability tokens not defined in this specification
 with the exception of tokens beginning with @samp{X-} as stated above.
@@ -749,6 +755,9 @@
 @c ****************************************************************************
 @chapter Commands
 
+Experimental commands must start with @samp{X-}.  The Bikini protocol will 
+never define a standard command starting with this prefix.
+
 @c ============================================================================
 @section Commands -- Authentication State
 
@@ -1577,6 +1586,9 @@
 @c      ; Any C0 Controls and Basic Latin, excluding NULL from
 @c      ; Code Charts, pages 7-6 through 7-9 in [UNICODE]
 
+BYTE                = %x00-FF
+        ; any 8-bit byte
+
 CR                  = %x0D
         ; Carriage Return
 
@@ -1660,6 +1672,9 @@
 content-size        =  NONZERODIGIT *DIGIT
         ; Positive nonzero decimal number with no leading zeroes.
 
+content-block       = 1*BYTE
+        ; content-size bytes of 8-bit data
+
 year                = 4DIGIT
         ; valid values are 1970 - 9999.  We'll need to revisit this before
         ; Y10K.
@@ -1706,19 +1721,17 @@
 response-line           = <response-code-char> <response-modifier> SP <response-info> CR LF
         ; space is required even though response-info can be empty
 
-success-line            = %x4B SP <response-info> CR LF
+positive-response       = %x4B SP <response-info> CR LF
         ; space is required even though response-info can be empty
 
 continuation-line       = %x2B SP 1*NORMCHAR CR LF
         ; "+" SP ...
 
-multiline-response      = *<continuation-line> <success-line>
+multiline-response      = *<continuation-line> <positive-response>
         ; 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
@@ -1779,6 +1792,7 @@
     ; uppercase "AUTH" followed by a space, auth-method, then optional auth tokens
 
 auth-response       = ( negative-response )
+auth-response       =/ ( positive-response )
     ;
 @end example
 
@@ -1795,7 +1809,7 @@
     ; uppercase "CAPS"
 
 caps-response       = ( negative-response )
-caps-response       =/ ( *(%x2B SP 1*NORMCHAR CR LF) positive-response CR LF )
+caps-response       =/ ( *(%x2B SP 1*NORMCHAR CR LF) positive-response )
     ;
 @end example
 
@@ -1828,6 +1842,7 @@
     ; uppercase "LISTDIRS"
 
 listdirs-response   = ( negative-response )
+listdirs-response   =/ ( *(%x2B SP message-listing CR LF) positive-response )
     ;
 @end example
 
@@ -1844,6 +1859,7 @@
     ; uppercase "MKDIR", space, directory path
 
 mkdir-response      = ( negative-response )
+mkdir-response      =/ ( positive-response )
     ;
 @end example
 
@@ -1860,6 +1876,7 @@
     ; uppercase "RMDIR", space, directory path
 
 rmdir-response      = ( negative-response )
+rmdir-response      =/ ( positive-response )
     ;
 @end example
 
@@ -1876,6 +1893,7 @@
     ; uppercase "MKFOLDER", space, folder path and name
 
 mkfolder-response   = ( negative-response )
+mkfolder-response   =/ ( positive-response )
     ;
 @end example
 
@@ -1892,6 +1910,7 @@
     ; uppercase "RMFOLDER", space, folder path and name
 
 rmfolder-response   = ( negative-response )
+rmfolder-response   =/ ( positive-response )
     ;
 @end example
 
@@ -1908,6 +1927,7 @@
     ; uppercase "MVFOLDER", space, old folder path and name, space, new folder path and name
 
 mvfolder-response   = ( negative-response )
+mvfolder-response   =/ ( positive-response )
     ;
 @end example
 
@@ -1940,12 +1960,14 @@
     ; uppercase "GET", space, folder path and name, /, message identifier
 
 get-response        = ( negative-response )
+get-response        =/ ( %x4B SP content-size content-block positive-response )
     ;
 @end example
 
 @strong{Notes:}
 @itemize @bullet
-@item
+@item content-block is exactly content-size bytes of 8-bit data, with an [RFC-2822]
+message using LF-only line ends being the normal payload
 @end itemize
 
 @c ----------------------------------------------------------------------------
@@ -1956,12 +1978,15 @@
     ; uppercase "GETHDR", space, folder path and name, /, message identifier
 
 gethdr-response     = ( negative-response )
+gethdr-response     =/ ( %x4B SP content-size content-block positive-response )
     ;
 @end example
 
 @strong{Notes:}
 @itemize @bullet
-@item
+@item content-block is exactly content-size bytes of 8-bit data, with an [RFC-2822]
+message header using LF-only line ends being the normal payload.  The header
+ends with LF LF.
 @end itemize
 
 @c ----------------------------------------------------------------------------
@@ -1972,12 +1997,13 @@
     ; uppercase "PUT", space, folder path and name, space, message length
 
 put-response        = ( negative-response )
+put-response        =/ ( %x4B SP message-identifier )
     ;
 @end example
 
 @strong{Notes:}
 @itemize @bullet
-@item
+@item The new message identifier is returned in the successful response.
 @end itemize
 
 @c ----------------------------------------------------------------------------
@@ -1988,6 +2014,7 @@
     ; uppercase "RMMSG", space, folder path and name, /, message identifier
 
 rmmsg-response      = ( negative-response )
+rmmsg-response      =/ ( positive-response )
     ;
 @end example
 
@@ -2004,12 +2031,13 @@
     ; uppercase "MVMSG", space, old folder path and name, /, message identifier, space, new folder path and name
 
 mvmsg-response      = ( negative-response )
+mvmsg-response      =/ ( %x4B SP message-identifier )
     ;
 @end example
 
 @strong{Notes:}
 @itemize @bullet
-@item
+@item The new message identifier is returned in the successful response.
 @end itemize
 
 @c ----------------------------------------------------------------------------
@@ -2020,6 +2048,7 @@
     ; uppercase "SETFLAG", space, flag, space, folder path and name, /, message identifier
 
 setflag-response    = ( negative-response )
+setflag-response    =/ ( positive-response )
     ;
 @end example
 
@@ -2036,6 +2065,7 @@
     ; uppercase "CLEARFLAG", space, flag, space, folder path and name, /, message identifier
 
 clearflag-response  = ( negative-response )
+clearflag-response  =/ ( positive-response )
     ;
 @end example
 
@@ -2071,6 +2101,7 @@
     ; uppercase "SEND", space, folder path and name, /, message identifier, space, envelope length
 
 send-response       = ( negative-response )
+send-response       =/ ( positive-response )
     ;
 @end example