11package main
22
3- import "strings"
3+ import (
4+ "bytes"
5+ "strings"
6+ )
47
58// Command modification types
69const (
@@ -81,53 +84,57 @@ func modSingleCommand(command, username string, args [][]byte) ([][]byte, revive
8184
8285 namespacePrefix := []byte (username + ":" )
8386
87+ appendPrefix := func (b []byte ) []byte {
88+ return bytes .Join ([][]byte {namespacePrefix , b }, nil )
89+ }
90+
8491 switch modType {
8592 case ModifyFirst :
8693 if len (args ) > 1 {
87- args [1 ] = append ( namespacePrefix , args [1 ]... )
94+ args [1 ] = appendPrefix ( args [1 ])
8895 }
8996 case ModifyFirstTwo :
9097 if len (args ) > 2 {
91- args [1 ] = append ( namespacePrefix , args [1 ]... )
92- args [2 ] = append ( namespacePrefix , args [2 ]... )
98+ args [1 ] = appendPrefix ( args [1 ])
99+ args [2 ] = appendPrefix ( args [2 ])
93100 }
94101 case ModifyAll :
95102 for i := 1 ; i < len (args ); i ++ {
96- args [i ] = append ( namespacePrefix , args [i ]... )
103+ args [i ] = appendPrefix ( args [i ])
97104 }
98105 case ModifyExcludeFirst :
99106 for i := 2 ; i < len (args ); i ++ {
100- args [i ] = append ( namespacePrefix , args [i ]... )
107+ args [i ] = appendPrefix ( args [i ])
101108 }
102109 case ModifyExcludeLast :
103110 for i := 1 ; i < len (args )- 1 ; i ++ {
104- args [i ] = append ( namespacePrefix , args [i ]... )
111+ args [i ] = appendPrefix ( args [i ])
105112 }
106113 case ModifyExcludeOpts :
107114 if len (args ) > 2 && len (args [len (args )- 1 ]) > 0 {
108115 // Check if last argument is an option (e.g., weight, aggregate)
109116 for i := 1 ; i < len (args )- 1 ; i ++ {
110- args [i ] = append ( namespacePrefix , args [i ]... )
117+ args [i ] = appendPrefix ( args [i ])
111118 }
112119 } else {
113120 for i := 1 ; i < len (args ); i ++ {
114- args [i ] = append ( namespacePrefix , args [i ]... )
121+ args [i ] = appendPrefix ( args [i ])
115122 }
116123 }
117124 case ModifyAlternate :
118125 for i := 2 ; i < len (args ); i += 2 {
119- args [i ] = append ( namespacePrefix , args [i ]... )
126+ args [i ] = appendPrefix ( args [i ])
120127 }
121128 case ModifySort :
122129 if len (args ) > 1 {
123- args [1 ] = append ( namespacePrefix , args [1 ]... )
130+ args [1 ] = appendPrefix ( args [1 ])
124131 }
125132 // If second argument is not hash, modify 'by', 'store', and 'get' keys
126133 for i := 2 ; i + 1 < len (args ); i += 1 {
127134 key := strings .ToUpper (string (args [i ]))
128135 if key == "BY" || key == "STORE" {
129136 i += 1
130- args [i ] = append ( namespacePrefix , args [i ]... )
137+ args [i ] = appendPrefix ( args [i ])
131138 }
132139 if key == "LIMIT" {
133140 i += 2
@@ -149,14 +156,14 @@ func modSingleCommand(command, username string, args [][]byte) ([][]byte, revive
149156 return args , nil
150157 }
151158 for i := 3 ; i < 3 + klen ; i ++ {
152- args [i ] = append ( namespacePrefix , args [i ]... )
159+ args [i ] = appendPrefix ( args [i ])
153160 }
154161 case ModifyScanStyle :
155162 // Modify MATCH argument
156163 found := false
157164 for i := 1 ; i < len (args )- 1 ; i ++ {
158165 if strings .ToUpper (string (args [i ])) == "MATCH" {
159- args [i + 1 ] = append ( namespacePrefix , args [i + 1 ]... )
166+ args [i + 1 ] = appendPrefix ( args [i + 1 ])
160167 found = true
161168 break
162169 }
0 commit comments