From 74f4f1a1d604a4d9decf10ebd0906d52cba00b32 Mon Sep 17 00:00:00 2001 From: zhanghuanhuan Date: Tue, 31 Oct 2023 16:32:35 +0800 Subject: [PATCH] add assoc_dequote func and assoc_dequote_escapes func for assoc file --- bash-5.1/r_assoc/src/lib.rs | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/bash-5.1/r_assoc/src/lib.rs b/bash-5.1/r_assoc/src/lib.rs index 8f906076..a5690b36 100644 --- a/bash-5.1/r_assoc/src/lib.rs +++ b/bash-5.1/r_assoc/src/lib.rs @@ -237,4 +237,57 @@ pub unsafe extern "C" fn assoc_quote_escapes(mut h: *mut HASH_TABLE) -> *mut HAS return h; } +#[no_mangle] +pub unsafe extern "C" fn assoc_dequote(mut h: *mut HASH_TABLE) -> *mut HASH_TABLE { + let mut i: libc::c_int = 0; + let mut tlist: *mut BUCKET_CONTENTS = 0 as *mut BUCKET_CONTENTS; + let mut t: *mut libc::c_char = 0 as *mut libc::c_char; + if h.is_null() || assoc_empty!(h) { + return 0 as *mut libc::c_void as *mut HASH_TABLE; + } + i = 0 as libc::c_int; + while i < (*h).nbuckets { + tlist = hash_items!(i,h); + while !tlist.is_null() { + t = dequote_string((*tlist).data as *mut libc::c_char); + if !((*tlist).data).is_null() { + libc::free((*tlist).data); + } + (*tlist).data = 0 as *mut libc::c_void; + (*tlist).data = t as *mut libc::c_void; + tlist = (*tlist).next; + } + i += 1; + i; + } + return h; +} + +#[no_mangle] +pub unsafe extern "C" fn assoc_dequote_escapes( + mut h: *mut HASH_TABLE, +) -> *mut HASH_TABLE { + let mut i: libc::c_int = 0; + let mut tlist: *mut BUCKET_CONTENTS = 0 as *mut BUCKET_CONTENTS; + let mut t: *mut libc::c_char = 0 as *mut libc::c_char; + if h.is_null() || assoc_empty!(h) { + return 0 as *mut libc::c_void as *mut HASH_TABLE; + } + i = 0 as libc::c_int; + while i < (*h).nbuckets { + tlist = hash_items!(i,h); + while !tlist.is_null() { + t = dequote_escapes((*tlist).data as *mut libc::c_char); + if !((*tlist).data).is_null() { + libc::free((*tlist).data); + } + (*tlist).data = 0 as *mut libc::c_void; + (*tlist).data = t as *mut libc::c_void; + tlist = (*tlist).next; + } + i += 1; + i; + } + return h; +} -- Gitee