You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

547 lines
17 KiB

#!/bin/bash
CPUS(){ nproc;};
clean(){ _clean;};
_nl(){ echo -e "$rs_";};
_set_dialog_types(){
gui="$(which dialog)";
st_="--stdout";
ib_="--infobox";
ip_="--inputbox";
nc_="--no-cancel";
cl_="--checklist";
rl_="--radiolist";
bt_="--backtitle";
pb_="--progressbox";
title_="SIMPLEBUILD_V($SIMPLEVERSION)";};
cedit(){ s3cfg_menu;bye;};
counter(){ COUNT="$((COUNT+1))";};
timer_calc(){ Tcalc="$((Te-Ts))";};
timer_stop(){ Te="$(date +%s)";};
timer_start(){ Ts="$(date +%s)";};
decode(){ echo -en "$1" | base64 -d;};
get_module_name(){ echo "${INTERNAL_MODULES[$1]}";};
gitrevision(){ svn info $1 |grep Rev: |cut -d " " -f 4;};
_wait(){ echo -e "$w_l";read -n1 -r -p " $txt_help3" key;tput cuu1;echo ' ';}
_systype(){ systype="bad";case "$(uname -m)" in x86|x86_64|amd64|i686) systype="ok";;esac;};
_pcsc_on(){ sed -i 's@^//#define CARDREADER_PCSC 1@#define CARDREADER_PCSC 1@g' "$svndir/config.h";};
_pcsc_off(){ sed -i 's@^#define CARDREADER_PCSC 1@//#define CARDREADER_PCSC 1@g' "$svndir/config.h";};
_stapi5_on(){ sed -i 's@^//#define CARDREADER_STAPI5 1@#define CARDREADER_STAPI5 1@g' "$svndir/config.h";};
_stapi5_off(){ sed -i 's@^#define CARDREADER_STAPI5 1@//#define CARDREADER_STAPI5 1@g' "$svndir/config.h";};
_generate_oscam_name(){ cd "$svndir";_dvbapi=$(
[ "$(./config.sh --enabled HAVE_DVBAPI)" == Y ] && echo -n -dvbapi || echo ''; );_webif=$(
[ "$(./config.sh --enabled WEBIF)" == Y ] && echo -n -webif || echo ''; );_ssl=$(
[ "$(./config.sh --enabled WITH_SSL)" == Y ] && echo -n -ssl || echo ''; );_emu=$(
[ "$(./config.sh --enabled WITH_EMU)" == Y ] && echo -n -emu || echo ''; );_ipv6=$(
[ "$(./config.sh --enabled IPV6SUPPORT)" == Y ] && echo -n -ipv6 || echo ''; );
[ "${USE_vars[USE_COMPRESS]}" == "USE_COMPRESS=1" ] && _upx="-upx" || _upx='';
[ "$1" == "native" ] && _b_name="$(hostname)$_upx" || _b_name="$1";
oscam_name="oscam-svn$(REVISION)-$_b_name$_webif$_dvbapi$_ssl$_usb$_pcsc$_stapi$_stapi5$_emu$_ipv6$_upx";};
e_readers(){ silent=$("$svndir/config.sh" -s readers);echo ${silent//READER_/};};
e_protocols() { silent=$("$svndir/config.sh" -s protocols);echo ${silent//MODULE_/};};
e_card_readers(){ silent=$("$svndir/config.sh" -s card_readers);echo ${silent//CARDREADER_/};};
e_addons(){ "$svndir/config.sh" -s addons |sed 's/WEBIF_//g;s/WITH_//g;s/MODULE_//g;s/CS_//g;s/HAVE_//g;s/_CHARSETS//g;s/CW_CYCLE_CHECK/CWCC/g;s/SUPPORT//g';};
sysinfo(){
echo -e "$g_l\nSYSTEM$w_l";
system_info=$(which lsb_release);
[ ${#system_info} -ge 11 ] && lsb_release -irc;
echo -e "Uptime:\t\t$(uptime -p)";
echo -e "$g_l\nMEMORY$w_l";
free -mht | awk '/Mem/{print "Memory:\t\tTotal: " $2 "Mb\tUsed: " $3 "Mb\tFree: " $4 "Mb"} /Swap/{print "Swap:\t\tTotal: " $2 "Mb\tUsed: " $3 "Mb\tFree: " $4 "Mb" }';
[ -f /sys/dev/block ] && lsblk;
echo -e "$g_l\n CPU$w_l";
cpu_info=$(which lscpu);
[ ${#cpu_info} -ge 5 ] && lscpu | grep -iE 'model name|vendor id|Architecture|per socket|MHz';
echo -e "$g_l\nNetwork";
echo -e "$w_l""Hostname:\t$HOSTNAME";
ip -o addr | awk '/inet /{print "IP (" $2 "):\t" $4}';
route -n | awk '/^0.0.0.0/{ printf "Gateway:\t"$2"\n" }';
awk '/^nameserver/{ printf "Name Server:\t" $2 "\n"}' /etc/resolv.conf;
echo -e "$re_";
exit;
};
_pget(){
tc_dl="$dldir/$(decode "$_t1e""$_toolchainfilename")";
[ -f "$tc_dl" ] && rm -rf "$tc_dl";
#tput civis;
cd "$dldir";
zeile=$(expr 12+$zzusatz);
spalte=$(expr 17+$szusatz);
wget -N --progress=dot "$(decode "$_u1e")/$dln" 2>&1 |grep --line-buffered "%"|awk '{ printf "\033["'$zeile'";"'$spalte'"H\033[K%-4s ", $7;} {printf "'"$txt_wait >"'";} {printf " %-6s",$9;}';
echo -e "\033["$zeile";"$spalte"H\033[K100% done... "$W;
#tput cnorm;
};
_clean(){
[ -L "$workdir/lastbuild.log" ] && rm -rf "$workdir/lastbuild.log";
[ -L "$workdir/lastpatch.log" ] && rm -rf "$workdir/lastpatch.log";
clear;
echo -e "$w_l";
ologo;
for e in "$menudir" "$bdir" "$ldir" "$tcdir";do
echo -e " $r_l$txt_delete$w_l\t$e"| sed "s@$workdir@@g";
done;
rm -rf "$menudir" "$bdir" "$ldir" "$tcdir" 2>/dev/null;
for e in "$menudir" "$bdir" "$ldir" "$tcdir";do
echo -e " $g_l$txt_create$w_l\t$e"| sed "s@$workdir@@g";
done;
mkdir -p "$menudir" "$bdir" "$ldir" "$tcdir" 2>/dev/null;
sleep 2;
svnrestore;
_nl;
};
_sz(){
lmin=24;
lmax=40;
_lin=$(tput lines);
cmin=79;
cmax=200;
_col=$(tput cols);
if [ "$_lin" -gt "$lmin" ];then
if [ "$_lin" -lt "$lmax" ] || [ "$_lin" -eq "$lmax" ];then
_lines="$((_lin-6))";
fi;
if [ "$_lin" -gt "$lmax" ];then
_lines="$((lmax-6))";
fi;
fi;
if [ "$_col" -gt "$cmin" ];then
if [ "$_col" -lt "$cmax" ] || [ "$_col" -eq "$cmax" ];then
_cols="$((_col-6))";
fi;
if [ "$_col" -gt "$cmax" ];then
_cols="$((cmax-6))";
fi;
fi;
};
save_master(){
[ -f "$svndir/config.sh" ] && cat "$svndir/config.sh" >"$configdir/config.sh.master";
[ -f "$svndir/Makefile" ] && cat "$svndir/Makefile" >"$configdir/Makefile.master";
};
_pre_build(){
_oscamconfdir_default="";
_oscamconfdir_custom="";
source "$tccfgdir/$1";
clear;
_nl;
echo $WH;
ologo;
_tcfile="";
dln="$(decode "$_t1e")$(decode "$_toolchainfilename")";
tc_dl="$dldir/$dln";
if [ -f "$tcdir/$_toolchainname/bin/$_compiler""gcc" ];then
if [ "$run" == "0" ];then
echo -e "$w_l toolchain :$y_l $_toolchainname";
echo -e "$w_l status :$g_l compiler $txt_found ";
echo -e "$w_l compiler :$p_l $_compiler""gcc";
else
echo -e "$w_l toolchain :$y_l $_toolchainname ";
echo -e "$w_l recheck :$g_l ok $txt_now compiler $txt_found";
echo -e "$w_l compiler :$p_l $_compiler""gcc ";
fi;
else
[ "$run" == "1" ] && echo "$txt_error : build not possible" && exit;
_nl;
echo -e "$w_l toolchain :$y_l $_toolchainname ";
echo -e "$w_l status :$r_l compiler $txt_not_found";
echo -en "$w_l backupcheck : ";
if [ -f "$dldir/$dln" ];then
echo -e "$g_l$dln $txt_found";
echo -en "$w_l $txt_extracting :$y_l $txt_wait";
_console_extract_toolchain;
run=1;
else
echo -e "$r_l$dln $txt_not_found ";
echo -en "$w_l $txt_loading :$g_l";
zzusatz=1;szusatz=1;
_pget;
_nl;
echo -en "$w_l $txt_extracting :$y_l $txt_wait";
_console_extract_toolchain 1;
run=1;
fi;
_pre_build "$1";
fi;
_cmd_build "$_toolchainname";
};
_init_menu(){ IFS="#";COUNT=0;MENU_OPTIONS="BACK#$txt_back#";counter;};
_select_menu(){
revision_="$(REVISION)";
_menutext="Simplebuild V$SIMPLEVERSION by Gorgone";
smenu=$(
"$gui" "$st_" "$bt_" "$title_" "$nc_" --title "-[ $txt_start_menu ]-" --menu "\n $_menutext" 13 55 7 "Continue" "$txt_firstmenu_continue r$revision_" "CHANGE" "$txt_firstmenu_chose" "CEDIT" "$txt_firstmenu_cedit" "LANG" "$txt_firstmenu_lang" "EXIT" "$txt_firstmenu_exit");
[ $? = 255 ] && _select_menu;
case $smenu in
Continue)
if [ ! -f "$svndir/config.sh" ];then
"$gui" "$st_" "$bt_" "$title_" --infobox "\n $txt_no oscam-svn $txt_found" 5 35;
sleep 2;
_select_menu;
else
_toolchain_main_menu;
fi;;
CHANGE)
new_rev=$("$gui" "$st_" "$nc_" --cr-wrap "$ip_" "Revision: 7000+ \nRevision: 0 = $txt_latest" 9 35);
[[ $new_rev =~ ^-?[0-9]+$ ]] && [ ! "$new_rev" -le "7000" ] && _rev="$new_rev" || _rev=0;
_dialog_checkout1 "$_rev";
_select_menu;;
CEDIT)
s3cfg_menu;
_select_menu;;
LANG)
lang_select;
cd "$workdir";
./s3 menu;;
EXIT)
bye;;
esac;
exit;
};
_oscam_extra_menu(){
uv=;
check_smargo;
unset MENU_OPTIONS;
for e in "${!USE_vars[@]}";do
if [ ! "$e" == "USE_TARGZ" ] && [ ! "$e" == "USE_COMPRESS" ] && [ ! "$e" == "USE_PATCH" ] && [ ! "$e" == "USE_LIBUSB" ];then
if [ "${#USE_vars[$e]}" -gt "4" ];then
MENU_OPTIONS+=( "$e" "$e" on );
else
MENU_OPTIONS+=( "$e" "$e" off );
fi;
fi;
done;
oextra=$("$gui" "$st_" "$nc_" "$bt_" "$title_" --title "-[ Oscam EXTRA ]-" "$cl_" " OPTIONS " 19 40 12 ${MENU_OPTIONS[@]});
[ $? = 255 ] && _toolchain_extra_menu;
for e in "${!USE_vars[@]}";do
if [ ! "$e" == "USE_TARGZ" ] && [ ! "$e" == "USE_COMPRESS" ] && [ ! "$e" == "USE_PATCH" ] && [ ! "$e" == "USE_LIBUSB" ];then
ok=0;
for oex in $oextra;do
o=$(echo "$oex" | tr -d '"');
[ "$e" == "$o" ] && ok=1;
done;
if [ "$ok" == "1" ];then
USE_vars[$e]="$e=1";
else
USE_vars[$e]=;
fi;
fi;
done;
[ "${USE_vars[USE_PCSC]}" == "USE_PCSC=1" ] && _pcsc_on;
[ ! "${USE_vars[USE_PCSC]}" == "USE_PCSC=1" ] && _pcsc_off;
save_config;
_toolchain_config_menu;
};
_build_extra_menu(){
us=;
check_smargo;
unset MENU_OPTIONS;
for e in USE_COMPRESS USE_TARGZ USE_PATCH;do
[ "${#USE_vars[$e]}" -gt "4" ] && MENU_OPTIONS+=( "$e" "$e=1" on ) || MENU_OPTIONS+=( "$e" "$e=1" off );
done;
bextra=$("$gui" "$st_" "$nc_" "$bt_" "$title_" --title "-[ Build EXTRA ]-" "$cl_" " OPTIONS " 10 40 3 ${MENU_OPTIONS[@]});
[ $? = 255 ] && _build_extra_menu;
USE_vars[USE_COMPRESS]=;
USE_vars[USE_PATCH]=;
USE_vars[USE_TARGZ]=;
for bex in $bextra;do
b=$(echo "$bex" | tr -d '"');
USE_vars[$b]="$b=1";
done;
save_config;
_toolchain_config_menu;
};
_pre_main_menu(){
IFS="#";
COUNT=0;
MENU_OPTIONS="EXIT#$txt_menu_builder1#";
counter;
MENU_OPTIONS=${MENU_OPTIONS}"ADD#$txt_menu_builder2#";
counter;
if [ "$tcempty" == "0" ];then
MENU_OPTIONS="${MENU_OPTIONS}REMOVE#$txt_menu_builder3#";
counter;
fi;
MENU_OPTIONS="${MENU_OPTIONS}NATIVE#$txt_menu_builder4$native#";
counter;
_a=$(uname -m);
if [ "$systype" == "ok" ];then
if [ "$tcempty" == "0" ];then
for i in "${INST_TCLIST[@]}";do
source "$tccfgdir/$i";
MENU_OPTIONS="${MENU_OPTIONS}$_toolchainname#$_description#";
counter;
done;
fi;
fi;
out=$("$gui" --help-button --help-label INFO --title "-[ Toolchain Menu V$SIMPLEVERSION ]-" --menu "$txt_t_menu1$REVISION" "${COUNT+8}" 75 0 "${MENU_OPTIONS}");
IFS=$OIFS;
first=$(echo "$out" | awk '{printf $1}');
tc_info=$(echo "$out" | awk '{printf $2}');
if [ "$first" == "HELP" ];then
if [ -f "$tccfgdir/$(echo "$out" | awk '{printf $2}')" ];then
source "$tccfgdir/$tc_info";
echo -e "\n\n\tinfobox $_tc_info";
sleep 4;
fi;
fi;
if [ "$first" == "EXIT" ];then
bye;
else
toolchain_main_menu;
fi;
};
tedit(){
clear;
if [ -f "$tccfgdir/$1" ];then
source "$tccfgdir/$1";
echo -e $y_l;
slogo;
echo -e " $p_l change CONF_DIR for $c_l$_toolchainname$w_l\n";
echo -e $w_l" current =$c_l $_oscamconfdir_custom";
echo -e $w_l" default =$c_l $_oscamconfdir_default";
echo -en $w_l" Enter new =$w_l ";read name;
echo -e " now =$y_l CONF_DIR=$name\n$re_";
sed -i s@^_oscamconfdir_custom.*@_oscamconfdir_custom=\"$name\"@ "$tccfgdir/$_toolchainname";
fi;
};
_gtedit(){
if [ -f "$tccfgdir/$_toolchainname" ];then
source "$tccfgdir/$_toolchainname";
input=$("$gui" "$st_" "$bt_" "$title_" --title " -[ $1 Toolchain ]- " --inputbox "\n CONF_DIR=$_oscamconfdir_default 'default'\n [ESC] = default\n" 0 0 "$_oscamconfdir_custom");
retval=$?;
case $retval in
0)
confdir="$input";;
1)
confdir="$_oscamconfdir_custom";;
255)
confdir="$_oscamconfdir_default";;
esac;
sed -i s@^_oscamconfdir_custom.*@_oscamconfdir_custom=\"$confdir\"@ "$tccfgdir/$_toolchainname";
source "$tccfgdir/$_toolchainname";
fi;
};
check_smargo(){
if [ -f "$svndir/config.sh" ];then
if [ "$("$svndir/config.sh" -e CARDREADER_SMARGO)" == "Y" ];then
USE_vars[USE_LIBUSB]="USE_LIBUSB=1";
else
USE_vars[USE_LIBUSB]=;
fi;
fi;
};
_reset_config(){
if [ -f "$svndir/config.sh" ];then
[ -f "$menudir/$_toolchainname.save" ] && rm -rf "$menudir/$_toolchainname.save";
if [ ! -f "$workdir/SVN-IS-PATCHED" ];then
reset_="$("$svndir/config.sh" -R)";
fi;
else
_select_menu;
fi;
};
_get_config_menu(){
tmp="$(mktemp)";
while read -r _l;do
c=$(echo "$_l" | tr -cd \" | wc -c);
_c=$((_c + c));
[ ${_c} -lt 11 ] && echo "$_l" >>"$tmp";
[ ${_c} -eq 10 ] && break;
done <"$svndir/config.sh";
mk="$(grep '^ USE_' "$workdir/oscam-svn/Makefile" |sort -u|awk '{print $1}')";
for e in $mk;do
USE_vars[${e:0:-2}]=;
done;
check_smargo;
source "$tmp";
rm -rf "$tmp";
};
read_s3cfg(){
if [ -f "$s3cfg" ];then
while read l;do
s3cfg_vars[$(echo "$l"| awk -F'=' '{print $1}')]=$(echo "$l"| awk -F'=' '{print $2}');
done < "$s3cfg";
fi;
};
s3cfg_menu(){
unset CFG_MENU;
declare -a CFG_MENU;
old_IFS=$IFS;
COUNT=0;
found="";
for e in "${!s3cfg_vars[@]}";do
CFG_MENU+="$e#on/off#$([ "${s3cfg_vars[$e]}" -gt "0" ] && echo on || echo off)#";
counter;
done;
IFS="#";
erg=$("$gui" "$st_" "$bt_" "$title_" "$cl_" "enable/disable options" 16 45 10 ${CFG_MENU[@]});
IFS=$old_IFS;
for e1 in "${!s3cfg_vars[@]}";do
for e2 in $erg;do
found="0";
if [ "$e1" == "${e2//\'}" ];then
found="1";
break;
fi;
done;
if [ "$found" == "1" ];then
s3cfg_vars[$e1]=1;
else
s3cfg_vars[$e1]=0;
fi;
done;
write_s3cfg;
};
write_s3cfg(){
[ -f "$s3cfg" ] && rm -rf "$s3cfg";
for e in "${!s3cfg_vars[@]}";do
echo "$e=${s3cfg_vars[${e}]}" >>"$s3cfg";
done;
};
_stapi_select(){
if [ "$stapi_allowed" == "1" ];then
stapivar='';
addstapi=;
USESTRING=;
stapimode=$($gui $rl_ " SELECT STAPI MODE" 12 0 5 0 "STAPI_OFF" on 1 "USE_STAPI" off 2 "USE_STAPI5 UFS916" off 3 "USE_STAPI5 UFS916003" off 4 "USE_STAPI5 OPENBOX" off 3>&1 1>&2 2>&3);
usevars=$(echo $usevars | sed "s@USE_STAPI5@@" | xargs);
usevars=$(echo $usevars | sed "s@USE_STAPI@@" | xargs);
case $stapimode in
0)
stapivar=;;
1)
stapivar="STAPI_LIB=$sdir/stapi/liboscam_stapi.a";
addstapi="USE_STAPI";;
2)
stapivar="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_UFS916.a";
addstapi="USE_STAPI5";;
3)
stapivar="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_UFS916_0.03.a";
addstapi="USE_STAPI5";;
4)
stapivar="STAPI5_LIB=$sdir/stapi/liboscam_stapi5_OPENBOX.a";
addstapi="USE_STAPI5";;
esac;
save_config;
else
"$gui" "$st_" --title "STAPI INFO" --msgbox "NOT for $_toolchainname" 0 0;
_toolchain_config_menu;
fi;
};
save_config(){
usevars=;
enabled=;
disabled=;
check_smargo;
enabled=($("$svndir/config.sh" -s));
disabled=($("$svndir/config.sh" -Z));
[ "$_toolchainname" == "sh4" ] && unset USE_vars[USE_COMPRESS];
[ "$_toolchainname" == "sh_4" ] && unset USE_vars[USE_COMPRESS];
unset USE_vars[USE_STAPI];
unset USE_vars[USE_STAPI5];
for e in ${USE_vars[*]};do
usevars="${e:0:-2} $usevars";
done;
[ -f "$menudir/$_toolchainname.save" ] && rm -rf "$menudir/$_toolchainname.save";
echo "enabled=\"${enabled[*]}\"" >"$menudir/$_toolchainname.save";
echo "disabled=\"${disabled[*]}\"">>"$menudir/$_toolchainname.save";
if [ "$stapi_allowed" == "1" ];then
if [ "${#stapivar}" -gt "15" ];then
echo "stapivar=\"$stapivar\"">>"$menudir/$_toolchainname.save";
echo "usevars=\"$usevars $addstapi\"" >>"$menudir/$_toolchainname.save";
else
echo "usevars=\"$usevars\"" >>"$menudir/$_toolchainname.save";
fi;
else
echo "usevars=\"$usevars\"" >>"$menudir/$_toolchainname.save";
fi;
};
load_config(){
_stapi=;
_stapi5=;
enabled=;
disabled=;
stapivar="";
USESTRING=;
usevars=;
unset USE_vars[USE_STAPI];
unset USE_vars[USE_STAPI5];
if [ -f "$menudir/$_toolchainname.save" ];then
source "$menudir/$_toolchainname.save";
ena=$("$svndir/config.sh" -E $enabled);
dis=$("$svndir/config.sh" -D $disabled);
for e in $usevars;do
USE_vars[$e]="$e=1";
[ "$e" == "USE_LIBUSB" ] && silent=$("$svndir/config.sh" --enable CARDREADER_SMARGO);
[ "$e" == "USE_PCSC" ] && sed -i 's@^//#define CARDREADER_PCSC 1@#define CARDREADER_PCSC 1@g' "$svndir/config.h";
done;
else
_reset_config;
[ "${s3cfg_vars[USE_TARGZ]}" == "1" ] && USE_vars[USE_TARGZ]="USE_TARGZ=1";
[ "${s3cfg_vars[USE_COMPRESS]}" == "1" ] && USE_vars[USE_COMPRESS]="USE_COMPRESS=1";
for e in $default_use;do
USE_vars[$e]="$e=1";
done;
fi;
check_smargo;
[ "$_toolchainname" == "sh4" ] && unset USE_vars[USE_COMPRESS];
[ "$_toolchainname" == "sh_4" ] && unset USE_vars[USE_COMPRESS];
USESTRING="$(echo "${USE_vars[@]}"| sed 's@USE_@@g'| sed 's@=1@@g'| tr -s ' ')";
};
_get_config_con(){
if [ ! "$1" == "checkout" ] && [ ! "$1" == "clean" ];then
tmp="$(mktemp)";
if [ -f "$svndir/config.sh" ];then
while read -r _l;do
c=$(echo "$_l" | tr -cd \" | wc -c);
_c=$((_c + c));
[ ${_c} -lt 11 ] && echo "$_l" >>"$tmp";
[ ${_c} -eq 10 ] && break;
done <"$svndir/config.sh";
else
while read -r _l;do
c=$(echo "$_l" | tr -cd \" | wc -c);
_c=$((_c + c));
[ ${_c} -lt 11 ] && echo "$_l" >>"$tmp";
[ ${_c} -eq 10 ] && break;
done <"$configdir/config.sh.master";
fi;
if [ -f "$workdir/oscam-svn/Makefile" ];then
str_="$(grep '^ USE_' "$workdir/oscam-svn/Makefile"| sort -u| awk '{print $1}')";
for e in $str_;do
es="${e:0:-2}";
USE_vars[$es]=;
done;
else
if [ -f "$configdir/Makefile.master" ];then
str_="$(grep '^ USE_' "$configdir/Makefile.master"| sort -u| awk '{print $1}')";
for e in $str_;do
es="${e:0:-2}";
USE_vars[$es]=;
done;
fi;
fi;
check_smargo;
source "$tmp";
rm -rf "$tmp" "$tmp1";
rm -rf "$tmp.load" "$tmp1.load";
fi;
};
_gtedit(){
if [ -f "$tccfgdir/$_toolchainname" ];then
source "$tccfgdir/$_toolchainname";
input=$("$gui" "$st_" "$bt_" "$title_" --title " -[ $1 Toolchain ]- " --inputbox "\n CONF_DIR=$_oscamconfdir_default 'default'\n [ESC] = default\n" 0 0 "$_oscamconfdir_custom");
retval=$?;
case $retval in
0)
confdir="$input";;
1)
confdir="$_oscamconfdir_custom";;
255)
confdir="$_oscamconfdir_default";;
esac;
sed -i s@^_oscamconfdir_custom.*@_oscamconfdir_custom=\"$confdir\"@ "$tccfgdir/$_toolchainname";
source "$tccfgdir/$_toolchainname";
fi;
};