eculocate

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 97526702a8b41056a7fad5e55a19b7ea34113f5c
parent 90e19a06111b126ec1f2eedb23c456912aa71a40
Author: Daniel Barlow <dan@telent.net>
Date:   Tue, 30 Dec 2025 15:20:55 +0000

extract helper, fix naming

a label is "example", "com" not "example.com"

Diffstat:
Mecu-esp32/src/wifi.rs | 23++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs @@ -234,14 +234,18 @@ enum RData { } impl RData { - fn encode_as_label<'a>(name: &str, out: &'a mut [u8], offset: usize) -> &'a [u8] { + fn copy_string<'a>(s: &str, out: &'a mut [u8], offset: usize) -> usize { + let end = s.len() + offset + 1; + out[offset] = (s.len() & 0xff) as u8; + let _ = &out[(offset+1) .. end].clone_from_slice(s.as_bytes()); + end + } + + fn encode_as_name<'a>(name: &str, out: &'a mut [u8], offset: usize) -> &'a [u8] { let mut offset = offset; for l in name.split('.') { - let end = l.len() + offset + 1; - out[offset] = (l.len() & 0xff) as u8; - let _ = &out[(offset+1) .. end].clone_from_slice(l.as_bytes()); - offset = end; + offset = Self::copy_string(l, out, offset); } out[offset] = 0; &out[..offset+1] @@ -251,10 +255,7 @@ impl RData { let mut offset = offset; for l in strings.into_iter() { - let end = l.len() + offset + 1; - out[offset] = (l.len() & 0xff) as u8; - let _ = &out[(offset+1) .. end].clone_from_slice(l.as_bytes()); - offset = end; + offset = Self::copy_string(l, out, offset); } out[offset] = 0; &out[..offset+1] @@ -278,10 +279,10 @@ impl RData { out[3] = (weight & 0xff) as u8; out[4] = (port >> 8) as u8; out[5] = (port & 0xff) as u8; - Self::encode_as_label(target, out, 6) + Self::encode_as_name(target, out, 6) }, RData::Ptr(name) => { - Self::encode_as_label(name, out, 0) + Self::encode_as_name(name, out, 0) } RData::A(octets) => { out[..4].clone_from_slice(octets);