
# Actually ash can work with str gsub. Require more investigation.

case "$___X_CMD_SHELL" in
    bash|zsh)
___x_cmd_q1(){
    printf "'%s'" "${1//\'/\\\'}"
}

___x_cmd_q2(){
    printf "\"%s\"" "${1//\"/\\\"}"
}
    ;;
    *)
___x_cmd_q1(){
    ___x_cmd_cmds_awk '
BEGIN{ RS="\001"; S="'\''"; }
{
    gsub(S, "\\" S, $0)
    printf(S "%s" S, $0)
}' <<A
$1
A
}

___x_cmd_q2(){
    ___x_cmd_cmds_awk '
BEGIN{ RS="\001"; S="\""; }
{
    gsub(S, "\\" S, $0)
    printf(S "%s" S, $0)
}' <<A
$1
A
}
    ;;
esac
