!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/share/git-gui/lib/   drwxr-xr-x
Free 13.29 GB of 57.97 GB (22.93%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     tools.tcl (3.89 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# git-gui Tools menu implementation

proc tools_list {} {
    global repo_config

    set names {}
    foreach item [array names repo_config guitool.*.cmd] {
        lappend names [string range $item 8 end-4]
    }
    return [lsort $names]
}

proc tools_populate_all {} {
    global tools_menubar tools_menutbl
    global tools_tailcnt

    set mbar_end [$tools_menubar index end]
    set mbar_base [expr {$mbar_end - $tools_tailcnt}]
    if {$mbar_base >= 0} {
        $tools_menubar delete 0 $mbar_base
    }

    array unset tools_menutbl

    foreach fullname [tools_list] {
        tools_populate_one $fullname
    }
}

proc tools_create_item {parent args} {
    global tools_menubar tools_tailcnt
    if {$parent eq $tools_menubar} {
        set pos [expr {[$parent index end]-$tools_tailcnt+1}]
        eval [list $parent insert $pos] $args
    } else {
        eval [list $parent add] $args
    }
}

proc tools_populate_one {fullname} {
    global tools_menubar tools_menutbl tools_id

    if {![info exists tools_id]} {
        set tools_id 0
    }

    set names [split $fullname '/']
    set parent $tools_menubar
    for {set i 0} {$i < [llength $names]-1} {incr i} {
        set subname [join [lrange $names 0 $i] '/']
        if {[info exists tools_menutbl($subname)]} {
            set parent $tools_menutbl($subname)
        } else {
            set subid $parent.t$tools_id
            tools_create_item $parent cascade \
                    -label [lindex $names $i] -menu $subid
            menu $subid
            set tools_menutbl($subname) $subid
            set parent $subid
            incr tools_id
        }
    }

    tools_create_item $parent command \
        -label [lindex $names end] \
        -command [list tools_exec $fullname]
}

proc tools_exec {fullname} {
    global repo_config env current_diff_path
    global current_branch is_detached
    global selected_paths

    if {[is_config_true "guitool.$fullname.needsfile"]} {
        if {$current_diff_path eq {}} {
            error_popup [mc "Running %s requires a selected file." $fullname]
            return
        }
    }

    catch { unset env(ARGS) }
    catch { unset env(REVISION) }

    if {[get_config "guitool.$fullname.revprompt"] ne {} ||
        [get_config "guitool.$fullname.argprompt"] ne {}} {
        set dlg [tools_askdlg::dialog $fullname]
        if {![tools_askdlg::execute $dlg]} {
            return
        }
    } elseif {[is_config_true "guitool.$fullname.confirm"]} {
        if {[is_config_true "guitool.$fullname.needsfile"]} {
            if {[ask_popup [mc "Are you sure you want to run %1\$s on file \"%2\$s\"?" $fullname $current_diff_path]] ne {yes}} {
                return
            }
        } else {
            if {[ask_popup [mc "Are you sure you want to run %s?" $fullname]] ne {yes}} {
                return
            }
        }
    }

    set env(GIT_GUITOOL) $fullname
    set env(FILENAME) $current_diff_path
    set env(FILENAMES) [join [array names selected_paths] \n]
    if {$is_detached} {
        set env(CUR_BRANCH) ""
    } else {
        set env(CUR_BRANCH) $current_branch
    }

    set cmdline $repo_config(guitool.$fullname.cmd)
    if {[is_config_true "guitool.$fullname.noconsole"]} {
        tools_run_silent [list sh -c $cmdline] \
                 [list tools_complete $fullname {}]
    } else {
        regsub {/} $fullname { / } title
        set w [console::new \
            [mc "Tool: %s" $title] \
            [mc "Running: %s" $cmdline]]
        console::exec $w [list sh -c $cmdline] \
                 [list tools_complete $fullname $w]
    }

    unset env(GIT_GUITOOL)
    unset env(FILENAME)
    unset env(FILENAMES)
    unset env(CUR_BRANCH)
    catch { unset env(ARGS) }
    catch { unset env(REVISION) }
}

proc tools_run_silent {cmd after} {
    lappend cmd 2>@1
    set fd [_open_stdout_stderr $cmd]

    fconfigure $fd -blocking 0 -translation binary
    fileevent $fd readable [list tools_consume_input $fd $after]
}

proc tools_consume_input {fd after} {
    read $fd
    if {[eof $fd]} {
        fconfigure $fd -blocking 1
        if {[catch {close $fd}]} {
            uplevel #0 $after 0
        } else {
            uplevel #0 $after 1
        }
    }
}

proc tools_complete {fullname w {ok 1}} {
    if {$w ne {}} {
        console::done $w $ok
    }

    if {$ok} {
        set msg [mc "Tool completed successfully: %s" $fullname]
    } else {
        set msg [mc "Tool failed: %s" $fullname]
    }

    if {[is_config_true "guitool.$fullname.norescan"]} {
        ui_status $msg
    } else {
        rescan [list ui_status $msg]
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0055 ]--