# zini function to parse INI files and store their content in an associative array zini() { local ini_path="$1" typeset -gA config # Check if the file exists if [[ ! -f "$ini_path" ]]; then echo "Configuration file not found: $ini_path" return 1 fi local current_section="" local line key value composite_key # Read the INI file line by line while IFS= read -r line || [[ -n $line ]]; do line=$(echo $line | xargs) # Trim whitespace # Skip empty lines and comments [[ -z "$line" || "$line" == \;* ]] && continue # Detect section headers if [[ "$line" == \[*\]* ]]; then current_section="${line:1:-1}" else # Parse key-value pairs key=${line%%=*} value=${line#*=} key=$(echo $key | xargs) # Trim key value=$(echo $value | xargs) # Trim value # Store in associative array with 'section_key' format composite_key="${current_section}_${key}" config[$composite_key]="$value" fi done < "$ini_path" # echo "Configuration loaded." }