@@ -221,11 +221,9 @@ impl core::fmt::Debug for ShortFileName {
221221}
222222
223223/// Used to store a Long File Name
224- ///
225- /// The const generic specifies the maximum capacity in bytes.
226- pub struct LfnBuffer < const N : usize > {
224+ pub struct LfnBuffer < ' a > {
227225 /// We fill this buffer in from the back
228- inner : [ u8 ; N ] ,
226+ inner : & ' a mut [ u8 ] ,
229227 /// How many bytes are free.
230228 ///
231229 /// This is also the byte index the string starts from.
@@ -234,19 +232,20 @@ pub struct LfnBuffer<const N: usize> {
234232 overflow : bool ,
235233}
236234
237- impl < const N : usize > LfnBuffer < N > {
238- /// Create a new, empty, LFN Buffer
239- pub fn new ( ) -> LfnBuffer < N > {
235+ impl < ' a > LfnBuffer < ' a > {
236+ /// Create a new, empty, LFN Buffer using the given mutable slice as its storage.
237+ pub fn new ( storage : & ' a mut [ u8 ] ) -> LfnBuffer < ' a > {
238+ let len = storage. len ( ) ;
240239 LfnBuffer {
241- inner : [ 0u8 ; N ] ,
242- free : N ,
240+ inner : storage ,
241+ free : len ,
243242 overflow : false ,
244243 }
245244 }
246245
247246 /// Empty out this buffer
248247 pub fn clear ( & mut self ) {
249- self . free = N ;
248+ self . free = self . inner . len ( ) ;
250249 self . overflow = false ;
251250 }
252251
@@ -291,12 +290,6 @@ impl<const N: usize> LfnBuffer<N> {
291290 }
292291}
293292
294- impl < const N : usize > core:: default:: Default for LfnBuffer < N > {
295- fn default ( ) -> Self {
296- LfnBuffer :: new ( )
297- }
298- }
299-
300293// ****************************************************************************
301294//
302295// Unit Tests
@@ -402,7 +395,8 @@ mod test {
402395
403396 #[ test]
404397 fn one_piece ( ) {
405- let mut buf: LfnBuffer < 64 > = LfnBuffer :: new ( ) ;
398+ let mut storage = [ 0u8 ; 64 ] ;
399+ let mut buf: LfnBuffer = LfnBuffer :: new ( & mut storage) ;
406400 buf. push ( & [
407401 0x0030 , 0x0031 , 0x0032 , 0x0033 , 0x2202 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
408402 0xFFFF , 0xFFFF ,
@@ -412,7 +406,8 @@ mod test {
412406
413407 #[ test]
414408 fn two_piece ( ) {
415- let mut buf: LfnBuffer < 64 > = LfnBuffer :: new ( ) ;
409+ let mut storage = [ 0u8 ; 64 ] ;
410+ let mut buf: LfnBuffer = LfnBuffer :: new ( & mut storage) ;
416411 buf. push ( & [
417412 0x0030 , 0x0031 , 0x0032 , 0x0033 , 0x2202 , 0x0000 , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF , 0xFFFF ,
418413 0xFFFF , 0xFFFF ,
0 commit comments