From ce6ed41cbe1ac97e3a7f75b88f4aa71617b8e1c0 Mon Sep 17 00:00:00 2001
From: Bruno Deferrari <utizoc@gmail.com>
Date: Sat, 6 Dec 2008 23:27:32 -0200
Subject: [PATCH] irc.messages: Fix parsing of MODE messages with the mode on
 the trailing part of the message

---
 extra/irc/messages/messages.factor | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/extra/irc/messages/messages.factor b/extra/irc/messages/messages.factor
index bea9bf37b1..8054dc8075 100755
--- a/extra/irc/messages/messages.factor
+++ b/extra/irc/messages/messages.factor
@@ -90,11 +90,11 @@ M: end-of-names >>command-parameters ( names-reply params -- names-reply )
     first2 [ >>who ] [ >>channel ] bi* ;
 
 M: mode >>command-parameters ( mode params -- mode )
-    dup length 3 = [
-        first3 [ >>name ] [ >>mode ] [ >>parameter ] tri*
-    ] [
-        first2 [ >>name ] [ >>mode ] bi*
-    ] if ;
+    dup length {
+        { 3 [ first3 [ >>name ] [ >>mode ] [ >>parameter ] tri* ] }
+        { 2 [ first2 [ >>name ] [ >>mode ] bi* ] }
+        [ drop first >>name dup trailing>> >>mode ]
+    } case ;
 
 PRIVATE>
 
@@ -135,12 +135,12 @@ M: irc-message irc-message>server-line ( irc-message -- string )
 
 : copy-message-in ( command irc-message -- command )
     {
-        [ parameters>> [ >>parameters ] [ >>command-parameters ] bi ]
         [ line>>      >>line ]
         [ prefix>>    >>prefix ]
         [ command>>   >>command ]
         [ trailing>>  >>trailing ]
         [ timestamp>> >>timestamp ]
+        [ parameters>> [ >>parameters ] [ >>command-parameters ] bi ]
     } cleave ;
 
 PRIVATE>