#!/bin/sh # This is a shell library to interface to the Debian configuration management # system. ############################################################################### # Initialization. # Check to see if a FrontEnd is running. if [ ! "$DEBIAN_HAS_FRONTEND" ]; then # Since there is no FrontEnd, this program execs a FrontEnd. # It will then run a new copy of $0 that can talk to it. exec /usr/share/debconf/frontend -- $0 "$@" fi # Only do this once. if [ -z "$DEBCONF_REDIR" ]; then # Redirect standard output to standard error. This prevents common # mistakes by making all the output of the postinst or whatever # script is using this library not be parsed as confmodule commands. # # To actually send something to standard output, send it to fd 3. exec 3>&1 1>&5 DEBCONF_REDIR=1 export DEBCONF_REDIR fi # The original stdin/stdout/stderr fds are duplicated onto fds # DEBCONF_OLD_FD_BASE to DEBCONF_OLD_FD_BASE + 2. These values are exported # so that you can get the original fds back. This is kind of a hack: # ideally, we might use something like a socket for the debconf protocol # instead of stdio. DEBCONF_OLD_FD_BASE='4' export DEBCONF_OLD_FD_BASE ############################################################################### # Commands. _db_cmd () { IFS=' ' printf '%s\n' "$*" >&3 # Set to newline to get whole line. IFS=' ' read -r _db_internal_line # Disgusting, but it's the only good way to split the line, # preserving all other whitespace. RET="${_db_internal_line#[! ][ ]}" return ${_db_internal_line%%[ ]*} } db_beginblock () { _db_cmd "BEGINBLOCK $@"; } db_capb () { _db_cmd "CAPB $@"; } db_clear () { _db_cmd "CLEAR $@"; } db_data () { _db_cmd "DATA $@"; } db_endblock () { _db_cmd "ENDBLOCK $@"; } db_exist () { _db_cmd "EXIST $@"; } db_fget () { _db_cmd "FGET $@"; } db_fset () { _db_cmd "FSET $@"; } db_get () { _db_cmd "GET $@"; } db_go () { _db_cmd "GO $@"; } db_info () { _db_cmd "INFO $@"; } db_input () { _db_cmd "INPUT $@"; } db_metaget () { _db_cmd "METAGET $@"; } db_progress () { _db_cmd "PROGRESS $@"; } db_purge () { _db_cmd "PURGE $@"; } db_register () { _db_cmd "REGISTER $@"; } db_reset () { _db_cmd "RESET $@"; } db_set () { _db_cmd "SET $@"; } db_settitle () { _db_cmd "SETTITLE $@"; } db_subst () { _db_cmd "SUBST $@"; } db_title () { _db_cmd "TITLE $@"; } db_unregister () { _db_cmd "UNREGISTER $@"; } db_version () { _db_cmd "VERSION $@"; } db_x_loadtemplatefile () { _db_cmd "X_LOADTEMPLATEFILE $@"; } db_x_save () { _db_cmd "X_SAVE $@"; } # An old alias for input. db_text () { db_input $@ } # Cannot read a return code, since there is none and it would block. db_stop () { echo STOP >&3 }