File: restart.sh

package info (click to toggle)
bashdb 4.0.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 4,820 kB
  • ctags: 942
  • sloc: sh: 10,581; lisp: 885; makefile: 449; ansic: 325
file content (73 lines) | stat: -rw-r--r-- 2,571 bytes parent folder | download
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
# -*- shell-script -*-
# restart.sh - gdb-like "restart" debugger command
#
#   Copyright (C) 2002, 2003, 2004, 2006, 2008, 2009 Rocky Bernstein 
#   rocky@gnu.org
#
#   bashdb is free software; you can redistribute it and/or modify it under
#   the terms of the GNU General Public License as published by the Free
#   Software Foundation; either version 2, or (at your option) any later
#   version.
#
#   bashdb is distributed in the hope that it will be useful, but WITHOUT ANY
#   WARRANTY; without even the implied warranty of MERCHANTABILITY or
#   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
#   for more details.
#   
#   You should have received a copy of the GNU General Public License along
#   with bashdb; see the file COPYING.  If not, write to the Free Software
#   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA.

# Restart script in same way with saved arguments (probably the same
# ones as we were given before).

_Dbg_help_add restart \
'restart [args] -- Attempt to restart the program.'

_Dbg_do_restart() {
    typeset script_args
    # We need to escape any embedded blanks in script_args and such.
    if (( $# == 0 )) ; then 
	printf -v script_args "%q " "${_Dbg_orig_script_args[@]}"
    else
	printf -v script_args "%q " "$@"
    fi

    typeset exec_cmd_prefix="$_Dbg_orig_0"
    if (( _Dbg_script )) ; then
	[ -z "$BASH" ] && BASH='bash'
        typeset bash_opt=''
        case  $orig_0 in
        bashdb | */bashdb )
            bash_opt='--debugger ' ;;
        esac
	if [[ $_Dbg_frame_last_filename == $_Dbg_bogus_file ]] ; then
	    script_args="${bash_opt}-c \"$_Dbg_EXECUTION_STRING\""
	else
	    script_args="${bash_opt}$_Dbg_orig_0 $script_args";
	fi
	exec_cmd_prefix="$BASH $script_args"
    elif [[ -n "$BASH" ]] ; then
	local exec_cmd_prefix="$BASH $_Dbg_orig_0 $script_args"
    fi

    _Dbg_msg "Restarting with: $script_args"

    # If we are in a subshell we need to get out of those levels
    # first before we restart. The strategy is to write into persistent
    # storage the restart command, and issue a "quit." The quit should
    # discover the restart at the last minute and issue the restart.
    if (( BASH_SUBSHELL > 0 )) ; then 
	_Dbg_msg "Note you are in a subshell. We will need to leave that first."
	_Dbg_write_journal "_Dbg_RESTART_COMMAND=\"$exec_cmd_prefix $script_args\""
	_Dbg_do_quit 0
    fi
    _Dbg_cleanup
    _Dbg_save_state
    builtin cd $_Dbg_init_cwd

    eval "exec $exec_cmd_prefix $script_args"
}

_Dbg_alias_add R restart
_Dbg_alias_add run restart