Support parsing lowercase base32

[?]
4CHRPcmUnKRaqFSjkeS8VGLFwmTTd9HLaUoX6yc39s2s
Sep 14, 2022, 4:40 AM
4RQHY7LHPHKUWAUQEXFRHKK37RAEFR3RC2QOSUTFTGZRFVWJIVXQC

Dependencies

  • [2] D3LR4GTK Fixing a panic when decoding ChangeId from base32
  • [3] DO2Y5TY5 Tag synchronisation
  • [4] 4D6HYFW6 Avoid a panic in data_encoding when parsing a wrong Inode
  • [5] L4EZSH6B Fixing zombie conflicts: known was computed on the wrong thing
  • [6] KDF6FJRV bigger clippy refactors
  • [7] OJZWJUF2 MUCH faster `pijul add -r`
  • [8] IIV3EL2X Cleanup, formatting, and fixing the Git feature
  • [9] IYJZVLET Cleaning up the literate programming bits
  • [10] 2VXTRPO4 Custom diff separators
  • [11] ZJWCPRMH Fixing known patches in deleted contexts
  • [12] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [13] 6T5ULULM Fixing conflicts with the changes from discussion #143
  • [14] 5GYRDN47 Error cleanup in libpijul
  • [15] EEFI7RAX Alternative Inode serializer (as a Base32 str)
  • [16] 5FI6SBEZ Re-implement change printing and parsing
  • [17] YN63NUZO Sanakirja 1.0
  • [18] X243Z3Y5 Recording only the required metadata (can even be changed later!)
  • [19] RRCSHAYZ Formatting
  • [20] 2RXOCWUW Making libpijul deterministic (and getting rid of `rand`)
  • [21] 7A2TSC4P Conflict solving code (FOLDER edges)
  • [22] 7SQ7COLT Add length check to pijul remote delete
  • [23] 33ANCTMF Fixing a panic when decoding a bad ChangeId
  • [24] NLTVCN2D Fixing a conflict
  • [25] 7HOBLRD4 Fixing remote push/pull
  • [26] A3RM526Y Integrating identity malleability
  • [27] 3I4PAA2A Making a few types and methods public

Change contents

  • replacement in libpijul/src/unrecord/mod.rs at line 447
    [5.32][5.32:64]()
    return true
    [5.32]
    [5.64]
    return true;
  • replacement in libpijul/src/pristine/vertex.rs at line 2
    [6.525323][6.7464:7480]()
    use super::L64;
    [6.525323]
    [6.8998]
    use super::{BASE32, L64};
  • replacement in libpijul/src/pristine/vertex.rs at line 158
    [6.528783][6.528783:528844]()
    let len = data_encoding::BASE32_NOPAD.encode_len(i);
    [6.528783]
    [6.528844]
    let len = BASE32.encode_len(i);
  • replacement in libpijul/src/pristine/vertex.rs at line 162
    [6.528946][6.528946:529015]()
    data_encoding::BASE32_NOPAD.encode_mut(&bytes[..i], unsafe {
    [6.528946]
    [6.529015]
    BASE32.encode_mut(&bytes[..i], unsafe {
  • replacement in libpijul/src/pristine/vertex.rs at line 173
    [6.529508][6.212:333]()
    let len = data_encoding::BASE32_NOPAD.decode_len(pos.len()).ok()?;
    let pos = data_encoding::BASE32_NOPAD
    [6.529508]
    [6.333]
    let len = BASE32.decode_len(pos.len()).ok()?;
    let pos = BASE32
  • edit in libpijul/src/pristine/mod.rs at line 143
    [6.101013]
    [6.101013]
    }
    lazy_static! {
    pub(crate) static ref BASE32: data_encoding::Encoding = {
    let mut spec = data_encoding::Specification::new();
    spec.symbols.push_str("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");
    spec.translate.from = "abcdefghijklmnopqrstuvwxyz".to_string();
    spec.translate.to = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".to_string();
    spec.encoding().unwrap()
    };
  • replacement in libpijul/src/pristine/mod.rs at line 290
    [6.36086][6.1331:1398]()
    if b.len() != data_encoding::BASE32_NOPAD.encode_len(16) {
    [6.36086]
    [6.35]
    if b.len() != BASE32.encode_len(16) {
  • replacement in libpijul/src/pristine/mod.rs at line 293
    [6.70][6.36086:36160](),[6.36086][6.36086:36160]()
    if data_encoding::BASE32_NOPAD.decode_mut(b, &mut bb.0).is_ok() {
    [6.70]
    [6.36160]
    if BASE32.decode_mut(b, &mut bb.0).is_ok() {
  • replacement in libpijul/src/pristine/mod.rs at line 303
    [3.43998][3.43998:44069]()
    write!(fmt, "{}", data_encoding::BASE32_NOPAD.encode(&self.0))
    [3.43998]
    [3.44069]
    write!(fmt, "{}", BASE32.encode(&self.0))
  • replacement in libpijul/src/pristine/mod.rs at line 309
    [6.36334][6.36334:36405]()
    write!(fmt, "{}", data_encoding::BASE32_NOPAD.encode(&self.0))
    [6.36334]
    [6.588974]
    write!(fmt, "{}", BASE32.encode(&self.0))
  • replacement in libpijul/src/pristine/merkle.rs at line 1
    [6.638739][6.638739:638758]()
    use super::Base32;
    [6.638683]
    [6.638758]
    use super::{Base32, BASE32};
  • replacement in libpijul/src/pristine/merkle.rs at line 103
    [3.45911][3.45911:45993]()
    let bytes = if let Ok(bytes) = data_encoding::BASE32_NOPAD.decode(&b32) {
    [3.45911]
    [3.45993]
    let bytes = if let Ok(bytes) = BASE32.decode(&b32) {
  • replacement in libpijul/src/pristine/merkle.rs at line 121
    [6.640282][6.640282:640340]()
    data_encoding::BASE32_NOPAD.encode(&hash)
    [6.640282]
    [6.640340]
    BASE32.encode(&hash)
  • replacement in libpijul/src/pristine/merkle.rs at line 128
    [6.640467][6.640467:640542]()
    let bytes = if let Ok(b) = data_encoding::BASE32_NOPAD.decode(s) {
    [6.640467]
    [6.640542]
    let bytes = if let Ok(b) = BASE32.decode(s) {
  • replacement in libpijul/src/pristine/inode.rs at line 1
    [6.643628][6.114628:114644]()
    use super::L64;
    [6.643628]
    [6.643684]
    use super::{BASE32, L64};
  • replacement in libpijul/src/pristine/inode.rs at line 13
    [6.85][6.644149:644222](),[6.3557][6.644149:644222](),[6.114736][6.644149:644222](),[6.644149][6.644149:644222]()
    write!(fmt, "Inode({})", data_encoding::BASE32_NOPAD.encode(&b))
    [6.85]
    [6.644222]
    write!(fmt, "Inode({})", BASE32.encode(&b))
  • replacement in libpijul/src/pristine/inode.rs at line 51
    [6.1870][6.1870:1931]()
    data_encoding::BASE32_NOPAD.encode_mut(&b, &mut bb);
    [6.1870]
    [6.1931]
    BASE32.encode_mut(&b, &mut bb);
  • replacement in libpijul/src/pristine/inode.rs at line 57
    [6.2085][4.0:88]()
    if s.len() == 13 && data_encoding::BASE32_NOPAD.decode_mut(s, &mut b).is_ok() {
    [6.2085]
    [6.2190]
    if s.len() == 13 && BASE32.decode_mut(s, &mut b).is_ok() {
  • replacement in libpijul/src/pristine/inode.rs at line 83
    [6.563][4.89:118](),[4.118][4.118:165](),[4.165][4.165:248](),[4.248][6.2463:2477](),[6.2463][6.2463:2477]()
    if s.len() == 13
    && data_encoding::BASE32_NOPAD
    .decode_mut(s.as_bytes(), &mut b)
    .is_ok()
    {
    [6.563]
    [6.649]
    if s.len() == 13 && BASE32.decode_mut(s.as_bytes(), &mut b).is_ok() {
  • replacement in libpijul/src/pristine/inode.rs at line 104
    [6.1234][6.1234:1295]()
    data_encoding::BASE32_NOPAD.encode_mut(&b, &mut bb);
    [6.1234]
    [6.1295]
    BASE32.encode_mut(&b, &mut bb);
  • replacement in libpijul/src/pristine/hash.rs at line 1
    [6.644495][6.644495:644514]()
    use super::Base32;
    [6.644439]
    [6.644514]
    use super::{Base32, BASE32};
  • replacement in libpijul/src/pristine/hash.rs at line 87
    [6.646836][6.646836:646918]()
    let bytes = if let Ok(bytes) = data_encoding::BASE32_NOPAD.decode(&b32) {
    [6.646836]
    [6.646918]
    let bytes = if let Ok(bytes) = BASE32.decode(&b32) {
  • replacement in libpijul/src/pristine/hash.rs at line 102
    [6.647270][6.647270:647338]()
    Hash::None => data_encoding::BASE32_NOPAD.encode(&[0]),
    [6.647270]
    [6.647338]
    Hash::None => BASE32.encode(&[0]),
  • replacement in libpijul/src/pristine/hash.rs at line 107
    [6.647560][6.647560:647618]()
    data_encoding::BASE32_NOPAD.encode(&hash)
    [6.647560]
    [6.647618]
    BASE32.encode(&hash)
  • replacement in libpijul/src/pristine/hash.rs at line 114
    [6.647741][6.647741:647816]()
    let bytes = if let Ok(s) = data_encoding::BASE32_NOPAD.decode(s) {
    [6.647741]
    [6.647816]
    let bytes = if let Ok(s) = BASE32.decode(s) {
  • replacement in libpijul/src/pristine/hash.rs at line 152
    [6.648826][6.648826:648889]()
    let b = data_encoding::BASE32_NOPAD.encode(&[19, 18, 17]);
    [6.648826]
    [6.648889]
    let b = BASE32.encode(&[19, 18, 17]);
  • replacement in libpijul/src/pristine/change_id.rs at line 1
    [6.666427][6.17431:17457]()
    use super::{Base32, L64};
    [6.666427]
    [6.2817]
    use super::{Base32, BASE32, L64};
  • replacement in libpijul/src/pristine/change_id.rs at line 25
    [6.119699][6.667137:667184](),[6.667137][6.667137:667184]()
    data_encoding::BASE32_NOPAD.encode(&b)
    [6.119699]
    [6.667184]
    BASE32.encode(&b)
  • replacement in libpijul/src/pristine/change_id.rs at line 29
    [6.667267][6.0:85]()
    let len = if let Ok(len) = data_encoding::BASE32_NOPAD.decode_len(b.len()) {
    [6.667267]
    [6.85]
    let len = if let Ok(len) = BASE32.decode_len(b.len()) {
  • replacement in libpijul/src/pristine/change_id.rs at line 37
    [2.56][6.451:490](),[6.169][6.451:490](),[6.667343][6.451:490](),[6.490][6.490:565]()
    if data_encoding::BASE32_NOPAD
    .decode_mut(b, &mut dec[..len])
    .is_ok()
    {
    [2.56]
    [6.119700]
    if BASE32.decode_mut(b, &mut dec[..len]).is_ok() {
  • replacement in libpijul/src/pristine/change_id.rs at line 63
    [6.3349][6.3349:3392](),[6.3392][6.3392:3481]()
    if data_encoding::BASE32_NOPAD
    .decode_mut(s.as_bytes(), &mut b)
    .is_ok()
    {
    [6.3349]
    [6.3481]
    if BASE32.decode_mut(s.as_bytes(), &mut b).is_ok() {
  • replacement in libpijul/src/pristine/change_id.rs at line 84
    [6.4144][6.4144:4205]()
    data_encoding::BASE32_NOPAD.encode_mut(&b, &mut bb);
    [6.4144]
    [6.4205]
    BASE32.encode_mut(&b, &mut bb);
  • replacement in libpijul/src/output/output.rs at line 555
    [6.2834][6.3856:3940](),[6.3856][6.3856:3940]()
    data_encoding::BASE32_NOPAD.encode(blake3::hash(&c).as_bytes())
    [6.2834]
    [6.3940]
    BASE32.encode(blake3::hash(&c).as_bytes())