It happens often that we want to execute an external program; it is useful to wrap into a function the machinery needed to use program declaration and execution with MBFL’s facilities. Some preprocessor macros automate this function definition.
Let’s say we want to define a function to execute pamixer
, PulseAudio’s mixer program; we
can use the macro MBFL_DEFINE_PROGRAM_EXECUTOR()
:
mbfl_declare_program pamixer MBFL_DEFINE_PROGRAM_EXECUTOR([[[pamixer]]], [[[pamixer]]])
the macro use will expand into:
function program_pamixer () { mbfl_declare_varref(PROGRAM) mbfl_program_found_var mbfl_datavar(PROGRAM) pamixer || exit $? mbfl_program_exec "$PROGRAM" "$@" }
we can use the function as:
if ! program_pamixer --increase 2 then # handle the error fi
the function will return with status equal to the exit status of the program.
Define a function we can call to execute an external program previously declared with
mbfl_declare_program()
and similar functions; Declaring the intention
to use a program. The program is executed with mbfl_program_exec()
; Core API for Program execution.
A string used to compose the function name, which will be: program_STEM
.
The executable specification of the program; it must be the same string used as argument to
mbfl_declare_program()
.
Optional sequence of strings that will be inserted on the command line of the program.
Optional function–name prefix.
With this preprocessor version the expansion of a macro use looks like this:
function OPTIONAL_FUNCTION_PREFIXprogram_STEM () { mbfl_declare_varref(PROGRAM) mbfl_program_found_var mbfl_datavar(PROGRAM) EXECUTABLE_PATHNAME || exit $? mbfl_program_exec "$PROGRAM" OPTIONAL_DEFAULT_FLAGS "$@" }
Like MBFL_DEFINE_PROGRAM_REPLACER()
, but uses mbfl_program_replace()
rather than
mbfl_program_exec()
; Core API for program execution with
replacement.
If the optional parameter OPTIONAL_FUNCTION_PREFIX is not used: the generated function name is:
program_replace_STEM
otherwise it is:
OPTIONAL_FUNCTION_PREFIXprogram_replace_STEM
This document describes version 3.0.0-devel.9 of Marcos Bash Functions Library.