This file is indexed.

/usr/sbin/ocs-live-final-action is in clonezilla 3.27.16-2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
#!/bin/bash
# Author: Steven Shiau <steven _at_ nchc org tw>
# License: GPL
# //NOTE// Do not put poweroff/reboot in this program since it's run in jfbterm/bterm. We separate the final action from ocs-live-final-action. Otherwise if the poweroff command run in jfbterm/bterm, the Debian live "Press Enter" message after poweroff/shutdown command is issued might be coverd by jfbterm/bterm and user will not have any idea what's happening after choose poweroff/reboot. 

# We need to know ocsroot.
DRBL_SCRIPT_PATH="${DRBL_SCRIPT_PATH:-/usr/share/drbl}"

. $DRBL_SCRIPT_PATH/sbin/drbl-conf-functions
. /etc/drbl/drbl-ocs.conf
. $DRBL_SCRIPT_PATH/sbin/ocs-functions

# Load the options from config file
[ -e /etc/ocs/ocs-live.conf ] && . /etc/ocs/ocs-live.conf

# Settings
# Default we will check if $ocsroot is a mountpoint after the mount action is done.
chk_ocsroot_mountpont="yes"
cmdl_file_def="/proc/cmdline"

# Functions
USAGE() {
    echo "$ocs - To choose the final action (poweroff, reboot, command line prompt...) and put the output in a file"
    echo "Usage:"
    echo "To run $ocs:"
    echo "$ocs OUTPUT_FILE"
    echo "Ex:"
    echo "To choose the final action and put the output to the file /tmp/my-selection.txt, run"
    echo "   $ocs /tmp/my-selection.txt"
} # end of USAGE
#
ask_final_action() {
  # ocs_postmode_prompt is loaded from ocs-live.conf.
  if [ "$ocs_postmode_prompt" = "cmd" ]; then
    echo "$msg_clone_finished_choose_to:"
    echo "(0) $msg_poweroff"
    echo "(1) $msg_reboot"
    echo "(2) $msg_enter_cml"
    echo "(3) $msg_run_clonezilla_live_again"
    if mountpoint $ocsroot &>/dev/null; then
      echo "(4) $msg_run_clonezilla_live_again_but_keep_mounted_repository"
      echo "(5) $msg_run_clonezilla_live_again_but_remounted_subdir"
    fi
    echo -n "[2] "
    read final_action_no
    case "$final_action_no" in
      0) final_action="poweroff";;
      1) final_action="reboot";;
      3) final_action="rerun1";;
      4) final_action="rerun2";;
      5) final_action="rerun3";;
      *) final_action="cmd";;
    esac
  else
    # Default to use TUI mode
    TMP="$(mktemp /tmp/ocs_final_act.XXXXXX)"
    
    if mountpoint $ocsroot &>/dev/null; then
      repo_dev_="$(findmnt -Un -o source -T $ocsroot)"
      rerun2_ocs_with_repo_mounted_1="rerun2"
      rerun2_ocs_with_repo_mounted_2="$(rep_whspc_w_udrsc "$msg_run_clonezilla_live_again_but_keep_mounted_repository")"
      rerun3_ocs_with_repo_mounted_1="rerun3"
      rerun3_ocs_with_repo_mounted_2="$(rep_whspc_w_udrsc "$msg_run_clonezilla_live_again_but_remounted_subdir: $repo_dev_")"
    fi
    
    final_action_flag=1
    while [ "$final_action_flag" -ne 0 ]; do
      $DIA --default-item "cmd" --nocancel --backtitle "Free Software Labs, NCHC, Taiwan" --title  \
      "Choose mode" --menu "$msg_clone_finished_choose_to:" \
      0 0 0 \
      poweroff "$msg_poweroff" \
      reboot "$msg_reboot" \
      cmd "$msg_enter_cml" \
      rerun1 "$msg_run_clonezilla_live_again" \
      $rerun2_ocs_with_repo_mounted_1 $rerun2_ocs_with_repo_mounted_2 \
      $rerun3_ocs_with_repo_mounted_1 $rerun3_ocs_with_repo_mounted_2 \
      2> $TMP
      final_action="$(cat $TMP)"
      if [ -z "$lang" ]; then
        final_action_flag=1
      else
        final_action_flag=0
      fi
    done
    [ -f "$TMP" ] && rm -f $TMP
  fi
} # end of ask_final_action
#
do_ocs_live_run_final() {
  # //NOTE// Do not put poweroff/reboot in this program since it's run in jfbterm/bterm. We separate the final action from ocs-live-final-action. Otherwise if the poweroff command run in jfbterm/bterm, the Debian live "Press Enter to continue" message after poweroff/shutdown command is issued might be coverd by jfbterm/bterm and user will not have any idea what's happening after choose poweroff/reboot. 
  [ -n "$final_action" ] && echo "The next step: $final_action"
  case "$final_action" in
    poweroff) unmount_mounted_fs_before_ocs_live_reboot
       echo -n 'Will poweroff (Press Ctrl-C to abort)... '
       countdown 7
       poweroff $HALT_REBOOT_OPT ;;
    reboot) unmount_mounted_fs_before_ocs_live_reboot
       echo -n 'Will reboot (Press Ctrl-C to abort)... '
       countdown 7
       reboot $HALT_REBOOT_OPT ;;
    rerun*) # umount the clonezilla home dir
       if [ "$final_action" = "rerun1" ]; then
         echo "Completely start over, so umounting $ocsroot..."
	 # Clean tag file for ocs-live-repository so it can be remounted again.
	 rm -f /var/lib/clonezilla/ocs-live-repository
         unmount_mounted_fs_before_ocs_live_reboot
       elif [ "$final_action" = "rerun3" ]; then
         echo "$msg_remount_subdir"
	 ocs-live-bind-mount
         [ "$chk_ocsroot_mountpont" = "yes" ] && check_if_ocsroot_a_mountpoint
       else
         echo "Keep the mounted image repository $ocsroot..."
       fi
       echo -n 'Run Clonezilla live again... '
       # since we are not in login shell, it's useless to use "exit" or "logout" to force logout bash. Use kill to terminate the login shell in tty1. The clonezilla live main menu will be run again.
       if [ -n "$ocs_live_run_tty" ]; then
         # ocs_live_run_tty is like: /dev/tty2, /dev/pts/2 (very unlikely)
         ttys="$(LC_ALL=C echo $ocs_live_run_tty | sed -e "s|/dev/||g")"
       else
         ttys="tty1"
       fi
       for i in $ttys; do
         tty_bash_id="$(LC_ALL=C ps -t $i | grep bash | awk -F" " '{print $1}')"
         kill -9 $tty_bash_id
       done
       ;;
    *) echo ;;
  esac
} # end of do_ocs_live_run_final
#
decide_final_action_from_cmdline_and_user_assign() {
  # First find if ocs_final_action is assigned in cmdline
  parse_cmdline_option -c $cmdl_file "ocs_final_action"
  if [ -n "$ocs_final_action" ]; then
    final_action="$ocs_final_action"
  fi
  # Then find if user has assigned it in ocs-sr. This may overwrite the one assigned in boot parameter.
  if [ -e /var/lib/clonezilla/ocs-vars ]; then
    . /var/lib/clonezilla/ocs-vars
    if [ -n "$postaction" ]; then
      final_action="$postaction"
    fi
  fi
} # end of decide_final_action_from_cmdline_and_user_assign

####################
### Main program ###
####################

ocs=`basename $0`
#
while [ $# -gt 0 ]; do
 case "$1" in
   -c|--cmdline-file)
      shift
      if [ -z "$(echo $1 |grep ^-.)" ]; then
        # skip the -xx option, in case 
        cmdl_file="$1"
        shift
      fi
      [ -z "$cmdl_file" ] && echo "-c is used, but no cmdl_file assigned." && exit 1
      ;;
   -*)     echo "${0}: ${1}: invalid option" >&2
           USAGE >& 2
           exit 2 ;;
   *)      break ;;
 esac
done

#
input_status="$1"

ask_and_load_lang_set $ocs_lang

# check DIA
check_DIA_set_ESC $DIA

#
[ -z "$cmdl_file" ] && cmdl_file="$cmdl_file_def"
if [ ! -e "$cmdl_file" ]; then
  [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
  echo "Kernel cmdline file ($cmdl_file) does _NOT_ exist!"
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo "$msg_program_stop!"
  exit 1
fi

if [ -n "$input_status" ]; then
  # The input status is the return code
  if [ "$input_status" -eq 0 ]; then
    # Normal exit.
    decide_final_action_from_cmdline_and_user_assign
  elif [ "$input_status" -eq 99 ]; then
    final_action="cmd"
  else
    # Fail. Exit code is not 0
    final_action="choose"
  fi
else
  # input status unknown.
  decide_final_action_from_cmdline_and_user_assign
fi

# If final_action is still unknown or is "choose", ask it.
if [ -z "$final_action" -o "$final_action" = "choose" ]; then
  ask_final_action
fi

do_ocs_live_run_final