mirror of
				https://github.com/limosek/zaf.git
				synced 2025-10-31 17:47:37 +01:00 
			
		
		
		
	Added return parameters checking
This commit is contained in:
		| @@ -370,7 +370,7 @@ zaf_install_all() { | |||||||
| 	for i in lib/zaf.lib.sh lib/plugin.lib.sh lib/os.lib.sh lib/ctrl.lib.sh lib/cache.lib.sh lib/zbxapi.lib.sh lib/JSON.sh; do | 	for i in lib/zaf.lib.sh lib/plugin.lib.sh lib/os.lib.sh lib/ctrl.lib.sh lib/cache.lib.sh lib/zbxapi.lib.sh lib/JSON.sh; do | ||||||
| 		zaf_install $i ${ZAF_LIB_DIR}/  | 		zaf_install $i ${ZAF_LIB_DIR}/  | ||||||
| 	done | 	done | ||||||
| 	for i in lib/zaflock lib/zafcache lib/preload.sh; do | 	for i in lib/zaflock lib/zafcache lib/preload.sh lib/zafret; do | ||||||
| 		zaf_install_bin $i ${ZAF_LIB_DIR}/  | 		zaf_install_bin $i ${ZAF_LIB_DIR}/  | ||||||
| 	done | 	done | ||||||
| 	zaf_install_dir ${ZAF_BIN_DIR} | 	zaf_install_dir ${ZAF_BIN_DIR} | ||||||
|   | |||||||
							
								
								
									
										191
									
								
								lib/ctrl.lib.sh
									
									
									
									
									
								
							
							
						
						
									
										191
									
								
								lib/ctrl.lib.sh
									
									
									
									
									
								
							| @@ -104,7 +104,7 @@ zaf_ctrl_get_item_option() { | |||||||
| 	else | 	else | ||||||
| 		zaf_ctrl_get_item_block <$1 "$2" | zaf_block_get_moption "$3" \ | 		zaf_ctrl_get_item_block <$1 "$2" | zaf_block_get_moption "$3" \ | ||||||
| 		|| zaf_ctrl_get_item_block <$1 "$2" | zaf_block_get_option "$3" | 		|| zaf_ctrl_get_item_block <$1 "$2" | zaf_block_get_option "$3" | ||||||
| 	fi  | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
| # Get external item specific option (single or multiline) | # Get external item specific option (single or multiline) | ||||||
| @@ -212,12 +212,12 @@ zaf_ctrl_install() { | |||||||
| 	binaries=$(zaf_ctrl_get_global_option $2 "Install-bin") | 	binaries=$(zaf_ctrl_get_global_option $2 "Install-bin") | ||||||
| 	for b in $binaries; do | 	for b in $binaries; do | ||||||
| 		zaf_fetch_url "$1/$b" >"${ZAF_TMP_DIR}/$b" | 		zaf_fetch_url "$1/$b" >"${ZAF_TMP_DIR}/$b" | ||||||
| 								zaf_install_bin "${ZAF_TMP_DIR}/$b" "$pdir" | 		zaf_install_bin "${ZAF_TMP_DIR}/$b" "$pdir" | ||||||
| 	done | 	done | ||||||
| 	files=$(zaf_ctrl_get_global_option $2 "Install-files") | 	files=$(zaf_ctrl_get_global_option $2 "Install-files") | ||||||
| 	for f in $files; do | 	for f in $files; do | ||||||
| 		zaf_fetch_url "$1/$b" >"${ZAF_TMP_DIR}/$b" | 		zaf_fetch_url "$1/$f" >"${ZAF_TMP_DIR}/$f" | ||||||
| 								zaf_install "${ZAF_TMP_DIR}/$b" "$pdir" | 		zaf_install "${ZAF_TMP_DIR}/$f" "$pdir" | ||||||
| 	done | 	done | ||||||
| 	true | 	true | ||||||
| 	) || zaf_err "Error during zaf_ctrl_install" | 	) || zaf_err "Error during zaf_ctrl_install" | ||||||
| @@ -241,54 +241,67 @@ zaf_ctrl_generate_items_cfg() { | |||||||
| 	local zafparms | 	local zafparms | ||||||
|  |  | ||||||
| 	items=$(zaf_ctrl_get_items <"$1") | 	items=$(zaf_ctrl_get_items <"$1") | ||||||
| 	tmpfile=$ZAF_TMP_DIR/gencfg$$ | 	tmpfile=$(zaf_tmpfile genparms) | ||||||
| 	(set -e | 	(set -e | ||||||
| 	for i in $items; do | 	for i in $items; do | ||||||
| 						iscript=$(zaf_stripctrl $i) | 		iscript=$(zaf_stripctrl $i) | ||||||
| 			zaf_ctrl_get_item_option $1 $i "Parameters" >$tmpfile | 		zaf_ctrl_get_item_option $1 $i "Parameters" >$tmpfile | ||||||
| 			if [ -s "$tmpfile" ]; then | 		echo >>$tmpfile | ||||||
| 		ikey="$2.$i[*]" | 		zafparams=""; | ||||||
| 		args="" | 		if [ -s "$tmpfile" ]; then | ||||||
| 		apos=1; | 			ikey="$2.$i[*]" | ||||||
| 		while read pname pdefault pregex prest; do | 			args="" | ||||||
| 			zafparams="$zafparams value=\"\$$apos\"; zaf_agentparm $pname $pdefault $pregex; export $pname; " | 			apos=1; | ||||||
| 			args="$args \$$apos" | 			while read pname pdefault pregex prest; do | ||||||
| 			apos=$(expr $apos + 1) | 				[ -z "$pname" ] && continue | ||||||
| 		done <$tmpfile | 				zaf_trc "Adding param $pname ($pdefault $pregex) to $i" | ||||||
| 			else | 				zafparams="$zafparams value=\"\$$apos\"; zaf_agentparm $pname $pdefault $pregex; export $pname; " | ||||||
| 		ikey="$2.$i" | 				args="$args \$$apos" | ||||||
| 		zafparams="" | 				apos=$(expr $apos + 1) | ||||||
| 		args="" | 			done <$tmpfile | ||||||
| 			fi | 		else | ||||||
| 			env="export ITEM_KEY='$ikey'; export PLUGIN='$2'; export PATH=${ZAF_PLUGINS_DIR}/$2:$ZAF_LIB_DIR:\$PATH; cd ${ZAF_PLUGINS_DIR}/$2; . $ZAF_LIB_DIR/preload.sh; " | 			ikey="$2.$i" | ||||||
| 			lock=$(zaf_ctrl_get_item_option $1 $i "Lock") | 			zafparams="" | ||||||
| 			if [ -n "$lock" ]; then | 			args="" | ||||||
| 		lock="${ZAF_LIB_DIR}/zaflock $lock " | 		fi | ||||||
| 			fi | 		env="export ITEM_KEY='$ikey'; export PLUGIN='$2'; export PATH=${ZAF_PLUGINS_DIR}/$2:$ZAF_LIB_DIR:\$PATH; cd ${ZAF_PLUGINS_DIR}/$2; . $ZAF_LIB_DIR/preload.sh; " | ||||||
| 			cache=$(zaf_ctrl_get_item_option $1 $i "Cache") | 		lock=$(zaf_ctrl_get_item_option $1 $i "Lock") | ||||||
| 			if [ -n "$cache" ]; then | 		if [ -n "$lock" ]; then | ||||||
| 		cache="${ZAF_LIB_DIR}/zafcache '$cache' " | 			lock="${ZAF_LIB_DIR}/zaflock $lock " | ||||||
| 			fi | 		fi | ||||||
| 						cmd=$(zaf_ctrl_get_item_option $1 $i "Cmd") | 		cache=$(zaf_ctrl_get_item_option $1 $i "Cache") | ||||||
| 						if [ -n "$cmd" ]; then | 		if [ -n "$cache" ]; then | ||||||
| 								printf "%s" "UserParameter=$ikey,${env}${zafparams}${preload}${cache}${lock}${cmd}"; echo | 			cache="${ZAF_LIB_DIR}/zafcache '$cache' " | ||||||
| 								continue | 		fi | ||||||
| 						fi | 		ret=$(zaf_ctrl_get_item_option $1 $i "Return") | ||||||
| 						cmd=$(zaf_ctrl_get_item_option $1 $i "Script") | 		retnull=$(zaf_ctrl_get_item_option $1 $i "Return-null") | ||||||
| 						if [ -n "$cmd" ]; then | 		reterr=$(zaf_ctrl_get_item_option $1 $i "Return-error") | ||||||
| 								( echo "#!/bin/sh" | 		if [ -n "$ret" ] || [ -n "$reterr" ] || [ -n "$retnull" ]; then | ||||||
|  | 			retscr=" 1>\${tmpf}o 2>\${tmpf}e; ${ZAF_LIB_DIR}/zafret \${tmpf}o \${tmpf}e \$? '$ret' '$retnull' '$retempty' "; | ||||||
|  | 		else | ||||||
|  | 			retscr=""; | ||||||
|  | 		fi | ||||||
|  | 		cmd=$(zaf_ctrl_get_item_option $1 $i "Cmd") | ||||||
|  | 		 | ||||||
|  | 		if [ -n "$cmd" ]; then | ||||||
|  | 			printf "%s" "UserParameter=$ikey,${env}${zafparams}${preload}${cache}${lock}${cmd}${retscr}"; echo | ||||||
|  | 			continue | ||||||
|  | 		fi | ||||||
|  | 		cmd=$(zaf_ctrl_get_item_option $1 $i "Script") | ||||||
|  | 		if [ -n "$cmd" ]; then | ||||||
|  | 			( echo "#!/bin/sh" | ||||||
| 			echo ". $ZAF_LIB_DIR/preload.sh; " | 			echo ". $ZAF_LIB_DIR/preload.sh; " | ||||||
| 			zaf_ctrl_get_item_option $1 $i "Script" | 			zaf_ctrl_get_item_option $1 $i "Script" | ||||||
| 			) >${ZAF_TMP_DIR}/${iscript}.sh; | 			) >${ZAF_TMP_DIR}/${iscript}.sh; | ||||||
| 								[ -z "$3" ] && zaf_install_bin ${ZAF_TMP_DIR}/${iscript}.sh ${ZAF_PLUGINS_DIR}/$2/ | 			[ -z "$3" ] && zaf_install_bin ${ZAF_TMP_DIR}/${iscript}.sh ${ZAF_PLUGINS_DIR}/$2/ | ||||||
| 								printf "%s" "UserParameter=$ikey,${env}${preload}${zafparams}${cache}${lock}${ZAF_PLUGINS_DIR}/$2/${iscript}.sh ${args}"; echo | 			printf "%s" "UserParameter=$ikey,${env}${preload}${zafparams}${cache}${lock}${ZAF_PLUGINS_DIR}/$2/${iscript}.sh ${args}"; echo | ||||||
| 		rm -f ${ZAF_TMP_DIR}/${iscript}.sh | 			rm -f ${ZAF_TMP_DIR}/${iscript}.sh | ||||||
| 								continue; | 			continue; | ||||||
| 						fi | 		fi | ||||||
| 			zaf_err "Item $i declared in control file but has no Cmd, Function or Script!" | 		zaf_err "Item $i declared in control file but has no Cmd, Function or Script!" | ||||||
| 	done | 	done | ||||||
| 	) || zaf_err "Error during zaf_ctrl_generate_items_cfg" | 	) || zaf_err "Error during zaf_ctrl_generate_items_cfg" | ||||||
| 	rm -f $tmpfile | 	[ "$ZAF_DEBUG" -lt 4 ] && rm -f $tmpfile | ||||||
| } | } | ||||||
|  |  | ||||||
| # Generates zabbix items cfg from control file | # Generates zabbix items cfg from control file | ||||||
| @@ -309,48 +322,56 @@ zaf_ctrl_generate_extitems_cfg() { | |||||||
| 	local zafparms | 	local zafparms | ||||||
|  |  | ||||||
| 	items=$(zaf_ctrl_get_extitems <"$1") | 	items=$(zaf_ctrl_get_extitems <"$1") | ||||||
| 	tmpfile=$ZAF_TMP_DIR/gencfg$$ | 	tmpfile=$(zaf_tmpfile genparms) | ||||||
| 	(set -e | 	(set -e | ||||||
| 	for i in $items; do | 	for i in $items; do | ||||||
| 						iscript=$(zaf_stripctrl $i) | 		iscript=$(zaf_stripctrl $i) | ||||||
| 			zaf_ctrl_get_extitem_option $1 $i "Parameters" >$tmpfile | 		(zaf_ctrl_get_extitem_option $1 $i "Parameters"; echo) >$tmpfile | ||||||
| 			ikey="$2.$i" | 		ikey="$2.$i" | ||||||
| 			if [ -s "$tmpfile" ]; then | 		if [ -s "$tmpfile" ]; then | ||||||
| 		args="" | 			args="" | ||||||
| 		apos=1; | 			apos=1; | ||||||
| 		while read pname pdefault pregex prest; do | 			while read pname pdefault pregex prest; do | ||||||
| 			zafparams="$zafparams value=\"\$$apos\"; zaf_agentparm $pname $pdefault $pregex; export $pname; " | 				zafparams="$zafparams value=\"\$$apos\"; zaf_agentparm $pname $pdefault $pregex; export $pname; " | ||||||
| 			args="$args \$$apos" | 				args="$args \$$apos" | ||||||
| 			apos=$(expr $apos + 1) | 				apos=$(expr $apos + 1) | ||||||
| 		done <$tmpfile | 			done <$tmpfile | ||||||
| 			else | 		else | ||||||
| 		zafparams="" | 			zafparams="" | ||||||
| 		args="" | 			args="" | ||||||
| 			fi | 		fi | ||||||
| 			env="export ITEM_KEY='$ikey'; export PLUGIN='$2'; export PATH=${ZAF_PLUGINS_DIR}/$2:$ZAF_LIB_DIR:\$PATH; cd ${ZAF_PLUGINS_DIR}/$2; . $ZAF_LIB_DIR/preload.sh; " | 		env="export ITEM_KEY='$ikey'; export PLUGIN='$2'; export PATH=${ZAF_PLUGINS_DIR}/$2:$ZAF_LIB_DIR:\$PATH; cd ${ZAF_PLUGINS_DIR}/$2; . $ZAF_LIB_DIR/preload.sh; " | ||||||
| 			lock=$(zaf_ctrl_get_extitem_option $1 $i "Lock") | 		lock=$(zaf_ctrl_get_extitem_option $1 $i "Lock") | ||||||
| 			if [ -n "$lock" ]; then | 		if [ -n "$lock" ]; then | ||||||
| 		lock="${ZAF_LIB_DIR}/zaflock $lock " | 			lock="${ZAF_LIB_DIR}/zaflock $lock " | ||||||
| 			fi | 		fi | ||||||
| 			cache=$(zaf_ctrl_get_extitem_option $1 $i "Cache") | 		cache=$(zaf_ctrl_get_extitem_option $1 $i "Cache") | ||||||
| 			if [ -n "$cache" ]; then | 		if [ -n "$cache" ]; then | ||||||
| 		cache="${ZAF_LIB_DIR}/zafcache '$cache' " | 			cache="${ZAF_LIB_DIR}/zafcache '$cache' " | ||||||
| 			fi | 		fi | ||||||
| 						cmd=$(zaf_ctrl_get_extitem_option $1 $i "Cmd") | 		ret=$(zaf_ctrl_get_extitem_option $1 $i "Return") | ||||||
| 						if [ -n "$cmd" ]; then | 		retnull=$(zaf_ctrl_get_extitem_option $1 $i "Return-null") | ||||||
| 		echo "#!/bin/sh" >${ZAF_SERVER_EXTSCRIPTS}/$ikey | 		reterr=$(zaf_ctrl_get_extitem_option $1 $i "Return-error") | ||||||
| 		chmod +x ${ZAF_SERVER_EXTSCRIPTS}/$ikey | 		if [ -n "$ret" ] || [ -n "$reterr" ] || [ -n "$retnull" ]; then | ||||||
| 								(printf "%s" "${env}${zafparams}${preload}${cache}${lock}${cmd}"; echo) >>${ZAF_SERVER_EXTSCRIPTS}/$ikey | 			retscr=" 1>\${tmpf}o 2>\${tmpf}e; ${ZAF_LIB_DIR}/zafret \${tmpf}o \${tmpf}e \$? '$ret' '$retnull' '$retempty' \$*"; | ||||||
| 								continue | 		else | ||||||
| 						fi | 			retscr=""; | ||||||
| 						cmd=$(zaf_ctrl_get_extitem_option $1 $i "Script") | 		fi | ||||||
| 						if [ -n "$cmd" ]; then | 		cmd=$(zaf_ctrl_get_extitem_option "$1" "$i" "Cmd") | ||||||
| 								echo "#!/bin/sh" >${ZAF_SERVER_EXTSCRIPTS}/$ikey | 		if [ -n "$cmd" ]; then | ||||||
| 		chmod +x ${ZAF_SERVER_EXTSCRIPTS}/$ikey | 			echo "#!/bin/sh" >"${ZAF_SERVER_EXTSCRIPTS}/$ikey" | ||||||
| 								(printf "%s" "${env}${zafparams}${preload}${cache}${lock}${cmd}"; echo) >>${ZAF_SERVER_EXTSCRIPTS}/$ikey | 			chmod +x "${ZAF_SERVER_EXTSCRIPTS}/$ikey" | ||||||
| 								continue; | 			(printf "%s" "${env}${zafparams}${preload}${cache}${lock}${cmd}${retscr}"; echo) >>"${ZAF_SERVER_EXTSCRIPTS}/$ikey" | ||||||
| 						fi | 			continue | ||||||
| 			zaf_err "External item $i declared in control file but has no Cmd, Function or Script!" | 		fi | ||||||
|  | 		cmd=$(zaf_ctrl_get_extitem_option "$1" "$i" "Script") | ||||||
|  | 		if [ -n "$cmd" ]; then | ||||||
|  | 			echo "#!/bin/sh" >"${ZAF_SERVER_EXTSCRIPTS}/$ikey" | ||||||
|  | 			chmod +x "${ZAF_SERVER_EXTSCRIPTS}/$ikey" | ||||||
|  | 			(printf "%s" "${env}${zafparams}${preload}${cache}${lock}${cmd}"; echo) >>"${ZAF_SERVER_EXTSCRIPTS}/$ikey" | ||||||
|  | 			continue; | ||||||
|  | 		fi | ||||||
|  | 		zaf_err "External item $i declared in control file but has no Cmd, Function or Script!" | ||||||
| 	done | 	done | ||||||
| 	) || zaf_err "Error during zaf_ctrl_generate_extitems_cfg" | 	) || zaf_err "Error during zaf_ctrl_generate_extitems_cfg" | ||||||
| 	rm -f $tmpfile | 	rm -f $tmpfile | ||||||
|   | |||||||
| @@ -81,8 +81,8 @@ zaf_prepare_plugin() { | |||||||
| 	url=$(zaf_get_plugin_url "$1")/control.zaf || exit $? | 	url=$(zaf_get_plugin_url "$1")/control.zaf || exit $? | ||||||
| 	plugindir="$2" | 	plugindir="$2" | ||||||
| 	control=${plugindir}/control.zaf | 	control=${plugindir}/control.zaf | ||||||
| 	if [ "$(zaf_url_info $1)" = "path" ] && cmp -s "$url" "$control"; then | 	if [ "$(zaf_url_info $1)" = "path" ] &&  [ "$url" = "$control" ]; then | ||||||
| 		zaf_err "prepare_plugin: Cannot install from itself!" | 		zaf_err "prepare_plugin: Cannot install from itself ($url,$control)!" | ||||||
| 	fi | 	fi | ||||||
| 	zaf_install_dir "$plugindir" | 	zaf_install_dir "$plugindir" | ||||||
| 	zaf_dbg "Fetching control file from $url ..." | 	zaf_dbg "Fetching control file from $url ..." | ||||||
| @@ -256,19 +256,27 @@ zaf_item_info() { | |||||||
| 	local plugin | 	local plugin | ||||||
| 	local item | 	local item | ||||||
| 	local param | 	local param | ||||||
|  | 	local tmp | ||||||
|  |  | ||||||
| 	plugin=$(echo $1 | cut -d '.' -f 1) | 	plugin=$(echo $1 | cut -d '.' -f 1) | ||||||
| 	item=$(echo $1 | cut -d '.' -f 2-) | 	item=$(echo $1 | cut -d '.' -f 2-) | ||||||
| 	if zaf_is_plugin $plugin; then | 	if zaf_is_plugin $plugin; then | ||||||
| 		if zaf_ctrl_get_items <$ZAF_PLUGINS_DIR/$plugin/control.zaf | grep -wq "$item"; then | 		if zaf_ctrl_get_items <$ZAF_PLUGINS_DIR/$plugin/control.zaf | grep -wq "$item"; then | ||||||
| 			echo "Item $1:" | 			printf "%b" "Item $1\n\n" | ||||||
| 			echo -n "Cache: "; zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Cache"; echo | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Cache") | ||||||
| 			echo "Parameters:" | 			[ -n "$tmp" ] && printf "%b" "Cache: $tmp \n\n" | ||||||
| 			zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Parameters" ; echo | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Parameters") | ||||||
| 			echo "Testparameters:" | 			[ -n "$tmp" ] && printf "%b" "Parameters:\n$tmp\n\n" | ||||||
| 			zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Testparameters"; echo | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Return") | ||||||
| 			echo "Precache:" | 			[ -n "$tmp" ] && printf "%b" "Return: $tmp\n\n" | ||||||
| 			zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Precache"; echo | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Return-null") | ||||||
|  | 			[ -n "$tmp" ] && printf "%b" "Return-null: $tmp\n\n" | ||||||
|  | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Return-empty") | ||||||
|  | 			[ -n "$tmp" ] && printf "%b" "Return-empty: $tmp\n\n" | ||||||
|  | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Testparameters") | ||||||
|  | 			[ -n "$tmp" ] && printf "%b" "Testparameters: $tmp\n\n" | ||||||
|  | 			tmp=$(zaf_ctrl_get_item_option $ZAF_PLUGINS_DIR/$plugin/control.zaf "$item" "Precache") | ||||||
|  | 			[ -n "$tmp" ] && printf "%b" "Precache: $tmp\n\n" | ||||||
| 			grep "UserParameter=$1" $ZAF_AGENT_CONFIGD/zaf_${plugin}.conf | 			grep "UserParameter=$1" $ZAF_AGENT_CONFIGD/zaf_${plugin}.conf | ||||||
| 		else | 		else | ||||||
| 			zaf_err "No such item $item." | 			zaf_err "No such item $item." | ||||||
|   | |||||||
| @@ -146,6 +146,11 @@ zaf_far(){ | |||||||
| 	 eval $sedcmd | 	 eval $sedcmd | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # Trim spaces and newlines from string | ||||||
|  | zaf_trim(){ | ||||||
|  | 	tr -d '\n' | ||||||
|  | } | ||||||
|  |  | ||||||
| # Limit concurrent processes or continue | # Limit concurrent processes or continue | ||||||
| zaf_bglimit(){ | zaf_bglimit(){ | ||||||
| 		local maxbg | 		local maxbg | ||||||
| @@ -255,7 +260,7 @@ zaf_toupper() { | |||||||
|  |  | ||||||
| # Return simplified key with discarded special chars. | # Return simplified key with discarded special chars. | ||||||
| zaf_stripctrl() { | zaf_stripctrl() { | ||||||
| 	echo $1 | tr '[]*&;:.-' '________' | 	echo $1 | tr '[]*&;:.-' '________' | tr -d '\n' | ||||||
| } | } | ||||||
|  |  | ||||||
| # Unescape string on stdin | # Unescape string on stdin | ||||||
| @@ -279,7 +284,7 @@ zaf_date_add() { | |||||||
| # Create temp file and return its name | # Create temp file and return its name | ||||||
| # $1 prefix or empty | # $1 prefix or empty | ||||||
| zaf_tmpfile() { | zaf_tmpfile() { | ||||||
| 	echo "$ZAF_TMP_DIR/tmp$1" | 	echo "$ZAF_TMP_DIR/tmp$1$(zaf_random)" | ||||||
| } | } | ||||||
|  |  | ||||||
| # return random number | # return random number | ||||||
|   | |||||||
							
								
								
									
										52
									
								
								lib/zafret
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										52
									
								
								lib/zafret
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,52 @@ | |||||||
|  | #!/bin/sh | ||||||
|  |  | ||||||
|  | . $(dirname $0)/preload.sh | ||||||
|  |  | ||||||
|  | if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ]; then | ||||||
|  | 	zaf_err "zafret valuefile stderrfile retcode [return return_if_null return_if_error]" | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | value="$(cat $1)" | ||||||
|  | rm -f $1 | ||||||
|  | shift | ||||||
|  |  | ||||||
|  | stderr="$(cat $1)" | ||||||
|  | rm -f $1 | ||||||
|  | shift | ||||||
|  |  | ||||||
|  | retcode="$1" | ||||||
|  | shift | ||||||
|  |  | ||||||
|  | if [ -n "$1" ]; then | ||||||
|  | 	ret="$1" | ||||||
|  | 	shift | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ -n "$1" ]; then | ||||||
|  | 	retnull="$1" | ||||||
|  | 	shift | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ -n "$1" ]; then | ||||||
|  | 	reterr="$1" | ||||||
|  | 	shift | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ "$retcode" != 0 ]; then | ||||||
|  | 	echo "$reterr" | ||||||
|  | 	zaf_wrn "${ITEM_KEY}("$*"): Error code '$retcode', returning '$reterr' ($stderr)" | ||||||
|  | 	exit $retcode | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ -z "$value" ]; then | ||||||
|  | 	echo "$retnull" | ||||||
|  | 	zaf_wrn "${ITEM_KEY}("$*"): Got empty result, returning '$retnull' ($stderr)" | ||||||
|  | 	exit | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | echo $value | ||||||
|  | if [ -n "$stderr" ]; then | ||||||
|  | 	zaf_wrn "${ITEM_KEY}("$*"): $stderr" | ||||||
|  | fi | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 Lukas Macura
					Lukas Macura