rust/hg-core/src/revlog/path_encode.rs
changeset 50207 0d2ec486d95c
parent 50148 06659dea51b0
child 50208 96d31efd21f7
equal deleted inserted replaced
50206:fbb4c7117cf1 50207:0d2ec486d95c
   541 
   541 
   542     let mut dest = vec![0; MAXSTOREPATHLEN];
   542     let mut dest = vec![0; MAXSTOREPATHLEN];
   543     memcopy(Some(&mut dest), &mut destlen, b"dh/");
   543     memcopy(Some(&mut dest), &mut destlen, b"dh/");
   544 
   544 
   545     if let Some(last_slash) = last_slash {
   545     if let Some(last_slash) = last_slash {
   546         let mut first = true;
       
   547         for slice in src[..last_slash].split(|b| *b == b'/') {
   546         for slice in src[..last_slash].split(|b| *b == b'/') {
   548             let slice = &slice[..std::cmp::min(slice.len(), dirprefixlen)];
   547             let slice = &slice[..std::cmp::min(slice.len(), dirprefixlen)];
   549             if destlen + (slice.len() + if first { 0 } else { 1 })
   548             if destlen + slice.len() > maxshortdirslen + 3 {
   550                 > maxshortdirslen + 3
       
   551             {
       
   552                 break;
   549                 break;
   553             } else {
   550             } else {
   554                 if !first {
       
   555                     charcopy(Some(&mut dest), &mut destlen, b'/')
       
   556                 };
       
   557                 memcopy(Some(&mut dest), &mut destlen, slice);
   551                 memcopy(Some(&mut dest), &mut destlen, slice);
   558                 if dest[destlen - 1] == b'.' || dest[destlen - 1] == b' ' {
   552                 if dest[destlen - 1] == b'.' || dest[destlen - 1] == b' ' {
   559                     dest[destlen - 1] = b'_'
   553                     dest[destlen - 1] = b'_'
   560                 }
   554                 }
   561             }
   555             }
   562             first = false;
       
   563         }
       
   564         if !first {
       
   565             charcopy(Some(&mut dest), &mut destlen, b'/');
   556             charcopy(Some(&mut dest), &mut destlen, b'/');
   566         }
   557         }
   567     }
   558     }
   568 
   559 
   569     let used = destlen + 40 + {
   560     let used = destlen + 40 + {