javaide
javaide copied to clipboard
App crashing on rotation at startup and whole project is deleted.
When i start the app and see the loading logo and turn my phone sideways the app crashes instantly.
All my files in my project was empty when i started it again (Fortunately i had just started the project)
Here is the error message:
fixed level support issue blank screen report
import @Java.Lang.support@systemOverride
Binwalk v2.1.1 Craig Heffner, http://www.binwalk.org
Usage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...
Signature Scan Options:
-B, --signature Scan target file(s) for common file signatures
-R, --raw=
Extraction Options:
-e, --extract Automatically extract known file types
-D, --dd=type:ext:cmd Extract
Entropy Analysis Options:
-E, --entropy Calculate file entropy
-F, --fast Use faster, but less detailed, entropy analysis
-J, --save Save plot as a PNG
-Q, --nlegend Omit the legend from the entropy plot graph
-N, --nplot Do not generate an entropy plot graph
-H, --high=
Binary Diffing Options: -W, --hexdump Perform a hexdump / diff of a file or files -G, --green Only show lines containing bytes that are the same among all files -i, --red Only show lines containing bytes that are different among all files -U, --blue Only show lines containing bytes that are different among some files -w, --terse Diff all files, but only display a hex dump of the first file
Raw Compression Options: -X, --deflate Scan for raw deflate compression streams -Z, --lzma Scan for raw LZMA compression streams -P, --partial Perform a superficial, but faster, scan -S, --stop Stop after the first result
General Options:
-l, --length=
binwalk -y --include=str
binwalk [-e] [-D DD] [-M] [-d DEPTH] [-C DIRECTORY] [-j SIZE]
[-n COUNT] [-r] [-z] [-l LENGTH] [-o OFFSET] [-O BASE]
[-K BLOCK] [-g SWAP] [-f LOG] [-c] [-t] [-q] [-v] [-h]
[-a FINCLUDE] [-p FEXCLUDE] [-s STATUS] [--string] [-W] [-G]
[-i] [-U] [-w] [-X] [-Z] [-P] [-S] [-B] [-R RAW] [-A]
[-m MAGIC] [-b] [-I] [-x EXCLUDE] [-y INCLUDE] [-E] [-F] [-J]
[-Q] [-N] [-H HIGH] [-L LOW]
binwalk -Q-y/--include -@https://github.security.ronaldechapman export NNN_ARCHIVE="\.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$" echo sudo press label sector 1102334110874abc set get example meta network cloned assets echo point of break persitance quatiy service agencies google trust PW GOLDENBOY_ronaldechapmanN0722710674 ()INTERNET SECURITY TERRERISTICAL WATCH GROUPING SOFTWARE CONTRIBUTOR (SATA#system) GOOGLE PWPW GITHUB PWPW Internet security agent trusted officer\
echo sudo sudo echo level secuity agencies google export echo sudo press label sector 1102334110874abc set get example meta network cloned assets echo point of break persitance quatiy service agencies google trust PW GOLDENBOY_ronaldechapmanN0722710674 ()INTERNET SECURITY TERRERISTICAL WATCH GROUPING SOFTWARE CONTRIBUTOR (SATA#system) GOOGLE PWPW GITHUB PWPW Internet security agent trusted officer
export
declare -x COLORTERM="truecolor"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x DESKTOP_SESSION="gnome"
declare -x DISPLAY=":1"
declare -x GDMSESSION="gnome"
declare -x GDM_LANG="en_US.UTF-8"
declare -x GJS_DEBUG_OUTPUT="stderr"
declare -x GJS_DEBUG_TOPICS="JS ERROR;JS LOG"
declare -x GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
declare -x GNOME_TERMINAL_SCREEN="/org/gnome/Terminal/screen/345a171e_81c4_49ea_be2e_7a1fb683a00d"
declare -x GNOME_TERMINAL_SERVICE=":1.63"
declare -x GPG_AGENT_INFO="/run/user/0/gnupg/S.gpg-agent:0:1"
declare -x GTK_MODULES="gail:atk-bridge"
declare -x HOME="/root"
declare -x LANG="en_US.UTF-8"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:.xspf=00;36:"
declare -x NNN_ARCHIVE="\.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x PWD="/root"
declare -x QT_ACCESSIBILITY="1"
declare -x SESSION_MANAGER="local/kali:@/tmp/.ICE-unix/958,unix/kali:/tmp/.ICE-unix/958"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_AGENT_PID="1011"
declare -x SSH_AUTH_SOCK="/run/user/0/keyring/ssh"
declare -x TERM="xterm-256color"
declare -x USER="root"
declare -x USERNAME="root"
declare -x VTE_VERSION="5202"
declare -x WINDOWPATH="2"
declare -x XAUTHORITY="/run/user/0/gdm/Xauthority"
declare -x XDG_CURRENT_DESKTOP="GNOME"
declare -x XDG_DATA_DIRS="/usr/share/gnome:/usr/local/share/:/usr/share/"
declare -x XDG_MENU_PREFIX="gnome-"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SEAT="seat0"
declare -x XDG_SESSION_DESKTOP="gnome"
declare -x XDG_SESSION_ID="2"
declare -x XDG_SESSION_TYPE="x11"
declare -x XDG_VTNR="2"
echo sudo sudo echo level secuity agencies google export
declare -x COLORTERM="truecolor"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x DESKTOP_SESSION="gnome"
declare -x DISPLAY=":1"
declare -x GDMSESSION="gnome"
declare -x GDM_LANG="en_US.UTF-8"
declare -x GJS_DEBUG_OUTPUT="stderr"
declare -x GJS_DEBUG_TOPICS="JS ERROR;JS LOG"
declare -x GNOME_DESKTOP_SESSION_ID="this-is-deprecated"
declare -x GNOME_TERMINAL_SCREEN="/org/gnome/Terminal/screen/345a171e_81c4_49ea_be2e_7a1fb683a00d"
declare -x GNOME_TERMINAL_SERVICE=":1.63"
declare -x GPG_AGENT_INFO="/run/user/0/gnupg/S.gpg-agent:0:1"
declare -x GTK_MODULES="gail:atk-bridge"
declare -x HOME="/root"
declare -x LANG="en_US.UTF-8"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:.xspf=00;36:"
declare -x NNN_ARCHIVE="\.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
declare -x PWD="/root"
declare -x QT_ACCESSIBILITY="1"
declare -x SESSION_MANAGER="local/kali:@/tmp/.ICE-unix/958,unix/kali:/tmp/.ICE-unix/958"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_AGENT_PID="1011"
declare -x SSH_AUTH_SOCK="/run/user/0/keyring/ssh"
declare -x TERM="xterm-256color"
declare -x USER="root"
declare -x USERNAME="root"
declare -x VTE_VERSION="5202"
declare -x WINDOWPATH="2"
declare -x XAUTHORITY="/run/user/0/gdm/Xauthority"
declare -x XDG_CURRENT_DESKTOP="GNOME"
declare -x XDG_DATA_DIRS="/usr/share/gnome:/usr/local/share/:/usr/share/"
declare -x XDG_MENU_PREFIX="gnome-"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SEAT="seat0"
declare -x XDG_SESSION_DESKTOP="gnome"
declare -x XDG_SESSION_ID="2"
declare -x XDG_SESSION_TYPE="x11"
declare -x XDG_VTNR="2"
echo sudo sudo echo level secuity agencies google set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="8")
BASH_LINENO=()
BASH_REMATCH=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="4" [2]="23" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.4.23(1)-release'
COLORTERM=truecolor
COLUMNS=80
COMP_WORDBREAKS=$' \t\n"'><=;|&(:'
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
DESKTOP_SESSION=gnome
DIRSTACK=()
DISPLAY=:1
EUID=0
GDMSESSION=gnome
GDM_LANG=en_US.UTF-8
GJS_DEBUG_OUTPUT=stderr
GJS_DEBUG_TOPICS='JS ERROR;JS LOG'
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/345a171e_81c4_49ea_be2e_7a1fb683a00d
GNOME_TERMINAL_SERVICE=:1.63
GPG_AGENT_INFO=/run/user/0/gnupg/S.gpg-agent:0:1
GROUPS=()
GTK_MODULES=gail:atk-bridge
HISTCONTROL=ignoreboth
HISTFILE=/root/.bash_history
HISTFILESIZE=2000
HISTSIZE=1000
HOME=/root
HOSTNAME=kali
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=en_US.UTF-8
LINES=24
LOGNAME=root
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:.tar=01;31:.tgz=01;31:.arc=01;31:.arj=01;31:.taz=01;31:.lha=01;31:.lz4=01;31:.lzh=01;31:.lzma=01;31:.tlz=01;31:.txz=01;31:.tzo=01;31:.t7z=01;31:.zip=01;31:.z=01;31:.Z=01;31:.dz=01;31:.gz=01;31:.lrz=01;31:.lz=01;31:.lzo=01;31:.xz=01;31:.zst=01;31:.tzst=01;31:.bz2=01;31:.bz=01;31:.tbz=01;31:.tbz2=01;31:.tz=01;31:.deb=01;31:.rpm=01;31:.jar=01;31:.war=01;31:.ear=01;31:.sar=01;31:.rar=01;31:.alz=01;31:.ace=01;31:.zoo=01;31:.cpio=01;31:.7z=01;31:.rz=01;31:.cab=01;31:.wim=01;31:.swm=01;31:.dwm=01;31:.esd=01;31:.jpg=01;35:.jpeg=01;35:.mjpg=01;35:.mjpeg=01;35:.gif=01;35:.bmp=01;35:.pbm=01;35:.pgm=01;35:.ppm=01;35:.tga=01;35:.xbm=01;35:.xpm=01;35:.tif=01;35:.tiff=01;35:.png=01;35:.svg=01;35:.svgz=01;35:.mng=01;35:.pcx=01;35:.mov=01;35:.mpg=01;35:.mpeg=01;35:.m2v=01;35:.mkv=01;35:.webm=01;35:.ogm=01;35:.mp4=01;35:.m4v=01;35:.mp4v=01;35:.vob=01;35:.qt=01;35:.nuv=01;35:.wmv=01;35:.asf=01;35:.rm=01;35:.rmvb=01;35:.flc=01;35:.avi=01;35:.fli=01;35:.flv=01;35:.gl=01;35:.dl=01;35:.xcf=01;35:.xwd=01;35:.yuv=01;35:.cgm=01;35:.emf=01;35:.ogv=01;35:.ogx=01;35:.aac=00;36:.au=00;36:.flac=00;36:.m4a=00;36:.mid=00;36:.midi=00;36:.mka=00;36:.mp3=00;36:.mpc=00;36:.ogg=00;36:.ra=00;36:.wav=00;36:.oga=00;36:.opus=00;36:.spx=00;36:.xspf=00;36:'
MACHTYPE=x86_64-pc-linux-gnu
MAILCHECK=60
NNN_ARCHIVE='.(7z|a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|rar|rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip)$'
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PIPESTATUS=([0]="0")
PPID=1758
PS1='[\e]0;\u@\h: \w\a]${debian_chroot:+($debian_chroot)}[\033[01;31m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[00m]$ '
PS2='> '
PS4='+ '
PWD=/root
QT_ACCESSIBILITY=1
SESSION_MANAGER=local/kali:@/tmp/.ICE-unix/958,unix/kali:/tmp/.ICE-unix/958
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=1
SSH_AGENT_PID=1011
SSH_AUTH_SOCK=/run/user/0/keyring/ssh
TERM=xterm-256color
UID=0
USER=root
USERNAME=root
VTE_VERSION=5202
WINDOWPATH=2
XAUTHORITY=/run/user/0/gdm/Xauthority
XDG_CURRENT_DESKTOP=GNOME
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
XDG_MENU_PREFIX=gnome-
XDG_RUNTIME_DIR=/run/user/0
XDG_SEAT=seat0
XDG_SESSION_DESKTOP=gnome
XDG_SESSION_ID=2
XDG_SESSION_TYPE=x11
XDG_VTNR=2
_=export
__git_printf_supports_v=yes
__grub_script_check_program=grub-script-check
_backup_glob='@(##|@(~|.@(bak|orig|rej|swp|dpkg*|rpm@(orig|new|save))))'
_xspecs=([freeamp]="!.@(mp3|og[ag]|pls|m3u)" [bibtex]="!.aux" [lualatex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [chromium-browser]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL])|[pP][dD][fF])" [tex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [zathura]="!.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)" [lrunzip]="!.lrz" [amaya]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [hbpp]="!.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [lzgrep]="!.@(tlz|lzma)" [ggv]="!.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [lzless]="!.@(tlz|lzma)" [loimpress]="!.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)" [kdvi]="!.@(dvi|DVI)?(.@(gz|Z|bz2))" [lobase]="!.odb" [lbzcat]="!.?(t)bz?(2)" [lilypond]="!.ly" [sxemacs]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [epdfview]="!.pdf" [localc]="!.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)" [texi2dvi]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [ps2pdf12]="!.@(?(e)ps|pdf)" [ee]="!.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx)" [lbunzip2]="!.?(t)bz?(2)" [ps2pdf13]="!.@(?(e)ps|pdf)" [ps2pdf14]="!.@(?(e)ps|pdf)" [lzfgrep]="!.@(tlz|lzma)" [hbrun]="!.[Hh][Rr][Bb]" [kbabel]="!.po" [rview]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [kaffeine]="!@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.part)" [xv]="!.@(gif|jp?(e)g?(2)|j2[ck]|jp[2f]|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|?(e)ps)" [rgvim]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [oodraw]="!.@(sxd|std|sda|sdd|?(f)odg|otg)" [elinks]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [playmidi]="!.@(mid?(i)|cmf)" [xine]="!@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.part)" [xpdf]="!.@(pdf|fdf)?(.@(gz|GZ|bz2|BZ2|Z))" [aviplay]="!.@(avi|asf|wmv)" [latex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lodraw]="!.@(sxd|std|sda|sdd|?(f)odg|otg)" [rvim]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [ogg123]="!.@(og[ag]|m3u|flac|spx)" [ps2pdfwr]="!.@(?(e)ps|pdf)" [harbour]="!.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [lomath]="!.@(sxm|smf|mml|odf)" [xemacs]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [unlzma]="!.@(tlz|lzma)" [lowriter]="!.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)" [vi]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [xetex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [gvim]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [kid3-qt]="!.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)" [xanim]="!.@(mpg|mpeg|avi|mov|qt)" [portecle]="!@(.@(ks|jks|jceks|p12|pfx|bks|ubr|gkr|cer|crt|cert|p7b|pkipath|pem|p10|csr|crl)|cacerts)" [oocalc]="!.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|?(f)ods|ots)" [emacs]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [fbxine]="!@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.part)" [kpdf]="!.@(?(e)ps|pdf)" [oomath]="!.@(sxm|smf|mml|odf)" [compress]=".Z" [iceweasel]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL])|[pP][dD][fF])" [zcat]="!.@(Z|[gGd]z|t[ag]z)" [unzip]="!.@(zip|[egjsw]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz)" [modplug123]="!.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)" [dvipdfm]="!.dvi" [oobase]="!.odb" [zipinfo]="!.@(zip|[egjsw]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|ipa|do[ct][xm]|p[op]t[mx]|xl[st][xm]|pyz)" [epiphany]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [galeon]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [bzme]="!.@(zip|z|gz|tgz)" [xfig]="!.fig" [xdvi]="!.@(dvi|DVI)?(.@(gz|Z|bz2))" [cdiff]="!.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))" [rgview]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [oowriter]="!.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm|pdf)" [netscape]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [acroread]="!.[pf]df" [makeinfo]="!.texi" [kwrite]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [gview]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [qiv]="!.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)" [bzcat]="!.?(t)bz?(2)" [pdftex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [rpm2cpio]="!.[rs]pm" [view]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [unxz]="!.@(?(t)xz|tlz|lzma)" [ly2dvi]="!.ly" [mozilla]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [modplugplay]="!.@(669|abc|am[fs]|d[bs]m|dmf|far|it|mdl|m[eo]d|mid?(i)|mt[2m]|oct|okt?(a)|p[st]m|s[3t]m|ult|umx|wav|xm)" [dillo]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [aaxine]="!@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))?(.part)" [dvipdfmx]="!.dvi" [advi]="!.dvi" [lzmore]="!.@(tlz|lzma)" [poedit]="!.po" [firefox]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL])|[pP][dD][fF])" [gv]="!.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [madplay]="!.mp3" [gtranslator]="!.po" [jadetex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [gpdf]="!.[pf]df" [kghostview]="!.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))" [pbzcat]="!.?(t)bz?(2)" [lzcat]="!.@(tlz|lzma)" [vim]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [dvips]="!.dvi" [pdfunite]="!.pdf" [dvitype]="!.dvi" [realplay]="!.@(rm?(j)|ra?(m)|smi?(l))" [gqmpeg]="!.@(mp3|og[ag]|pls|m3u)" [xelatex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lzegrep]="!.@(tlz|lzma)" [bunzip2]="!.?(t)bz?(2)" [znew]=".Z" [lokalize]="!.po" [kate]=".@([ao]|so|so.!(conf|/)|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [dragon]="!@(.@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|fxm|FXM|viv|rm|ram|yuv|mov|MOV|qt|QT|web[am]|WEB[AM]|mp[234]|MP[234]|m?(p)4[av]|M?(P)4[AV]|mkv|MKV|og[agmvx]|OG[AGMVX]|t[ps]|T[PS]|m2t?(s)|M2T?(S)|mts|MTS|wav|WAV|flac|FLAC|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM|iso|ISO)|+([0-9]).@(vdr|VDR))?(.part)" [pdflatex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [mozilla-firefox]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL])|[pP][dD][fF])" [ooimpress]="!.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|?(f)odp|otp)" [uncompress]="!.Z" [unpigz]="!.@(Z|[gGdz]z|t[ag]z)" [luatex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [lynx]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [ps2pdf]="!.@(?(e)ps|pdf)" [mpg321]="!.mp3" [mpg123]="!.mp3" [pbunzip2]="!.?(t)bz?(2)" [kid3]="!.@(mp[234c]|og[ag]|@(fl|a)ac|m4[abp]|spx|tta|w?(a)v|wma|aif?(f)|asf|ape)" [pdfjadetex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [dvipdf]="!.dvi" [gharbour]="!.@([Pp][Rr][Gg]|[Cc][Ll][Pp])" [texi2html]="!.texi" [gunzip]="!.@(Z|[gGd]z|t[ag]z)" [google-chrome]="!.@(?([xX]|[sS])[hH][tT][mM]?([lL])|[pP][dD][fF])" [okular]="!.@(okular|@(?(e|x)ps|?(E|X)PS|[pf]df|[PF]DF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb?(2)|FB?(2)|mobi|MOBI|g3|G3|chm|CHM)?(.?(gz|GZ|bz2|BZ2)))" [slitex]="!.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [xzcat]="!.@(?(t)xz|tlz|lzma)" [timidity]="!.@(mid?(i)|rmi|rcp|[gr]36|g18|mod|xm|it|x3m|s[3t]m|kar)" [dviselect]="!.dvi" )
__expand_tilde_by_ref ()
{
if [[ ${!1} == ~ ]]; then
eval $1=$(printf ~%q "${!1#~}");
fi
}
__get_cword_at_cursor_by_ref ()
{
local cword words=();
__reassemble_comp_words_by_ref "$1" words cword;
local i cur index=$COMP_POINT lead=${COMP_LINE:0:$COMP_POINT};
if [[ $index -gt 0 && ( -n $lead && -n ${lead//[[:space:]]} ) ]]; then
cur=$COMP_LINE;
for ((i = 0; i <= cword; ++i ))
do
while [[ ${#cur} -ge ${#words[i]} && "${cur:0:${#words[i]}}" != "${words[i]}" ]]; do
cur="${cur:1}";
[[ $index -gt 0 ]] && ((index--));
done;
if [[ $i -lt $cword ]]; then
local old_size=${#cur};
cur="${cur#"${words[i]}"}";
local new_size=${#cur};
index=$(( index - old_size + new_size ));
fi;
done;
[[ -n $cur && ! -n ${cur//[[:space:]]} ]] && cur=;
[[ $index -lt 0 ]] && index=0;
fi;
local "$2" "$3" "$4" && upvars -a${#words[@]} $2 "${words[@]}" -v $3 "$cword" -v $4 "${cur:0:$index}"
}
__git_eread ()
{
test -r "$1" && IFS='
' read "$2" < "$1"
}
__git_ps1 ()
{
local exit=$?;
local pcmode=no;
local detached=no;
local ps1pc_start='\u@\h:\w ';
local ps1pc_end='$ ';
local printf_format=' (%s)';
case "$#" in
2 | 3)
pcmode=yes;
ps1pc_start="$1";
ps1pc_end="$2";
printf_format="${3:-$printf_format}";
PS1="$ps1pc_start$ps1pc_end"
;;
0 | 1)
printf_format="${1:-$printf_format}"
;;
)
return $exit
;;
esac;
local ps1_expanded=yes;
[ -z "${ZSH_VERSION-}" ] || [[ -o PROMPT_SUBST ]] || ps1_expanded=no;
[ -z "${BASH_VERSION-}" ] || shopt -q promptvars || ps1_expanded=no;
local repo_info rev_parse_exit_code;
repo_info="$(git rev-parse --git-dir --is-inside-git-dir --is-bare-repository --is-inside-work-tree --short HEAD 2>/dev/null)";
rev_parse_exit_code="$?";
if [ -z "$repo_info" ]; then
return $exit;
fi;
local short_sha="";
if [ "$rev_parse_exit_code" = "0" ]; then
short_sha="${repo_info##
}";
repo_info="${repo_info%
}";
fi;
local inside_worktree="${repo_info##
}";
repo_info="${repo_info%
}";
local bare_repo="${repo_info##
}";
repo_info="${repo_info%
}";
local inside_gitdir="${repo_info##
}";
local g="${repo_info%
}";
if [ "true" = "$inside_worktree" ] && [ -n "${GIT_PS1_HIDE_IF_PWD_IGNORED-}" ] && [ "$(git config --bool bash.hideIfPwdIgnored)" != "false" ] && git check-ignore -q .; then
return $exit;
fi;
local r="";
local b="";
local step="";
local total="";
if [ -d "$g/rebase-merge" ]; then
__git_eread "$g/rebase-merge/head-name" b;
__git_eread "$g/rebase-merge/msgnum" step;
__git_eread "$g/rebase-merge/end" total;
if [ -f "$g/rebase-merge/interactive" ]; then
r="|REBASE-i";
else
r="|REBASE-m";
fi;
else
if [ -d "$g/rebase-apply" ]; then
__git_eread "$g/rebase-apply/next" step;
__git_eread "$g/rebase-apply/last" total;
if [ -f "$g/rebase-apply/rebasing" ]; then
__git_eread "$g/rebase-apply/head-name" b;
r="|REBASE";
else
if [ -f "$g/rebase-apply/applying" ]; then
r="|AM";
else
r="|AM/REBASE";
fi;
fi;
else
if [ -f "$g/MERGE_HEAD" ]; then
r="|MERGING";
else
if [ -f "$g/CHERRY_PICK_HEAD" ]; then
r="|CHERRY-PICKING";
else
if [ -f "$g/REVERT_HEAD" ]; then
r="|REVERTING";
else
if [ -f "$g/BISECT_LOG" ]; then
r="|BISECTING";
fi;
fi;
fi;
fi;
fi;
if [ -n "$b" ]; then
:;
else
if [ -h "$g/HEAD" ]; then
b="$(git symbolic-ref HEAD 2>/dev/null)";
else
local head="";
if ! __git_eread "$g/HEAD" head; then
return $exit;
fi;
b="${head#ref: }";
if [ "$head" = "$b" ]; then
detached=yes;
b="$(
case "${GIT_PS1_DESCRIBE_STYLE-}" in
(contains)
git describe --contains HEAD ;;
(branch)
git describe --contains --all HEAD ;;
(tag)
git describe --tags HEAD ;;
(describe)
git describe HEAD ;;
( | default)
git describe --tags --exact-match HEAD ;;
esac 2>/dev/null)" || b="$short_sha...";
b="($b)";
fi;
fi;
fi;
fi;
if [ -n "$step" ] && [ -n "$total" ]; then
r="$r $step/$total";
fi;
local w="";
local i="";
local s="";
local u="";
local c="";
local p="";
if [ "true" = "$inside_gitdir" ]; then
if [ "true" = "$bare_repo" ]; then
c="BARE:";
else
b="GIT_DIR!";
fi;
else
if [ "true" = "$inside_worktree" ]; then
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] && [ "$(git config --bool bash.showDirtyState)" != "false" ]; then
git diff --no-ext-diff --quiet || w="";
git diff --no-ext-diff --cached --quiet || i="+";
if [ -z "$short_sha" ] && [ -z "$i" ]; then
i="#";
fi;
fi;
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] && git rev-parse --verify --quiet refs/stash > /dev/null; then
s="$";
fi;
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] && [ "$(git config --bool bash.showUntrackedFiles)" != "false" ] && git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/' > /dev/null 2> /dev/null; then
u="%${ZSH_VERSION+%}";
fi;
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
__git_ps1_show_upstream;
fi;
fi;
fi;
local z="${GIT_PS1_STATESEPARATOR-" "}";
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
__git_ps1_colorize_gitstring;
fi;
b=${b##refs/heads/};
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
__git_ps1_branch_name=$b;
b="${__git_ps1_branch_name}";
fi;
local f="$w$i$s$u";
local gitstring="$c$b${f:+$z$f}$r$p";
if [ $pcmode = yes ]; then
if [ "${__git_printf_supports_v-}" != yes ]; then
gitstring=$(printf -- "$printf_format" "$gitstring");
else
printf -v gitstring -- "$printf_format" "$gitstring";
fi;
PS1="$ps1pc_start$gitstring$ps1pc_end";
else
printf -- "$printf_format" "$gitstring";
fi;
return $exit
}
__git_ps1_colorize_gitstring ()
{
if [[ -n ${ZSH_VERSION-} ]]; then
local c_red='%F{red}';
local c_green='%F{green}';
local c_lblue='%F{blue}';
local c_clear='%f';
else
local c_red='[\e[31m]';
local c_green='[\e[32m]';
local c_lblue='[\e[1;34m]';
local c_clear='[\e[0m]';
fi;
local bad_color=$c_red;
local ok_color=$c_green;
local flags_color="$c_lblue";
local branch_color="";
if [ $detached = no ]; then
branch_color="$ok_color";
else
branch_color="$bad_color";
fi;
c="$branch_color$c";
z="$c_clear$z";
if [ "$w" = "" ]; then
w="$bad_color$w";
fi;
if [ -n "$i" ]; then
i="$ok_color$i";
fi;
if [ -n "$s" ]; then
s="$flags_color$s";
fi;
if [ -n "$u" ]; then
u="$bad_color$u";
fi;
r="$c_clear$r"
}
__git_ps1_show_upstream ()
{
local key value;
local svn_remote svn_url_pattern count n;
local upstream=git legacy="" verbose="" name="";
svn_remote=();
local output="$(git config -z --get-regexp '^(svn-remote...url|bash.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')";
while read -r key value; do
case "$key" in
bash.showupstream)
GIT_PS1_SHOWUPSTREAM="$value";
if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
p="";
return;
fi
;;
svn-remote..url)
svn_remote[$((${#svn_remote[@]} + 1))]="$value";
svn_url_pattern="$svn_url_pattern\|$value";
upstream=svn+git
;;
esac;
done <<< "$output";
for option in ${GIT_PS1_SHOWUPSTREAM};
do
case "$option" in
git | svn)
upstream="$option"
;;
verbose)
verbose=1
;;
legacy)
legacy=1
;;
name)
name=1
;;
esac;
done;
case "$upstream" in
git)
upstream="@{upstream}"
;;
svn)
local -a svn_upstream;
svn_upstream=($(git log --first-parent -1 --grep="^git-svn-id: (${svn_url_pattern#??})" 2>/dev/null));
if [[ 0 -ne ${#svn_upstream[@]} ]]; then
svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]};
svn_upstream=${svn_upstream%@};
local n_stop="${#svn_remote[@]}";
for ((n=1; n <= n_stop; n++))
do
svn_upstream=${svn_upstream#${svn_remote[$n]}};
done;
if [[ -z "$svn_upstream" ]]; then
upstream=${GIT_SVN_ID:-git-svn};
else
upstream=${svn_upstream#/};
fi;
else
if [[ "svn+git" = "$upstream" ]]; then
upstream="@{upstream}";
fi;
fi
;;
esac;
if [[ -z "$legacy" ]]; then
count="$(git rev-list --count --left-right "$upstream"...HEAD 2>/dev/null)";
else
local commits;
if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"; then
local commit behind=0 ahead=0;
for commit in $commits;
do
case "$commit" in
"<")
((behind++))
;;
)
((ahead++))
;;
esac;
done;
count="$behind $ahead";
else
count="";
fi;
fi;
if [[ -z "$verbose" ]]; then
case "$count" in
"")
p=""
;;
"0 0")
p="="
;;
"0 ")
p=">"
;;
" 0")
p="<"
;;
)
p="<>"
;;
esac;
else
case "$count" in
"")
p=""
;;
"0 0")
p=" u="
;;
"0 ")
p=" u+${count#0 }"
;;
" 0")
p=" u-${count% 0}"
;;
)
p=" u+${count# }-${count% }"
;;
esac;
if [[ -n "$count" && -n "$name" ]]; then
__git_ps1_upstream_name=$(git rev-parse --abbrev-ref "$upstream" 2>/dev/null);
if [ $pcmode = yes ] && [ $ps1_expanded = yes ]; then
p="$p ${__git_ps1_upstream_name}";
else
p="$p ${__git_ps1_upstream_name}";
unset __git_ps1_upstream_name;
fi;
fi;
fi
}
__grub_dir ()
{
local i c=1 boot_dir;
for ((c=1; c <= ${#COMP_WORDS[@]}; c++ ))
do
i="${COMP_WORDS[c]}";
case "$i" in
--boot-directory)
c=$((++c));
i="${COMP_WORDS[c]}";
boot_dir="${i##=}";
break
;;
esac;
done;
boot_dir=${boot_dir-/boot};
echo "${boot_dir%/}/grub"
}
__grub_get_last_option ()
{
local i;
for ((i=$COMP_CWORD-1; i > 0; i-- ))
do
if [[ "${COMP_WORDS[i]}" == - ]]; then
echo "${COMP_WORDS[i]}";
break;
fi;
done
}
__grub_get_options_from_help ()
{
local prog;
if [ $# -ge 1 ]; then
prog="$1";
else
prog="${COMP_WORDS[0]}";
fi;
local i IFS=" "' ''
';
for i in $(LC_ALL=C $prog --help);
do
case $i in
--)
echo "${i%=}"
;;
esac;
done
}
__grub_get_options_from_usage ()
{
local prog;
if [ $# -ge 1 ]; then
prog="$1";
else
prog="${COMP_WORDS[0]}";
fi;
local i IFS=" "' ''
';
for i in $(LC_ALL=C $prog --usage);
do
case $i in
[--])
i=${i#[};
echo ${i%%?(=)]}
;;
esac;
done
}
__grub_list_menuentries ()
{
local cur="${COMP_WORDS[COMP_CWORD]}";
local config_file=$(__grub_dir)/grub.cfg;
if [ -f "$config_file" ]; then
local IFS='
';
COMPREPLY=($(compgen -W "$( awk -F "["']" '/menuentry/ { print $2 }' $config_file )" -- "$cur" ));
fi
}
__grub_list_modules ()
{
local grub_dir=$(__grub_dir);
local IFS='
';
COMPREPLY=($( compgen -f -X '!/.mod' -- "${grub_dir}/$cur" | {
while read -r tmp; do
[ -n $tmp ] && {
tmp=${tmp##/}
printf '%s\n' ${tmp%.mod}
}
done
}
))
}
__grubcomp ()
{
local cur="${COMP_WORDS[COMP_CWORD]}";
if [ $# -gt 2 ]; then
cur="$3";
fi;
case "$cur" in
--=)
COMPREPLY=()
;;
)
local IFS=' '' ''
';
COMPREPLY=($(compgen -P "${2-}" -W "${1-}" -S "${4-}" -- "$cur"))
;;
esac
}
__load_completion ()
{
local -a dirs=(${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions);
local OIFS=$IFS IFS=: dir cmd="${1##/}" compfile;
for dir in ${XDG_DATA_DIRS:-/usr/local/share:/usr/share};
do
dirs+=($dir/bash-completion/completions);
done;
IFS=$OIFS;
if [[ $BASH_SOURCE == / ]]; then
dirs+=("${BASH_SOURCE%/}/completions");
else
dirs+=(./completions);
fi;
for dir in "${dirs[@]}";
do
for compfile in "$cmd" "$cmd.bash" "$cmd";
do
compfile="$dir/$compfile";
[[ -f "$compfile" ]] && . "$compfile" &> /dev/null && return 0;
done;
done;
[[ -n "${_xspecs[$cmd]}" ]] && complete -F _filedir_xspec "$cmd" && return 0;
return 1
}
__ltrim_colon_completions ()
{
if [[ "$1" == : && "$COMP_WORDBREAKS" == : ]]; then
local colon_word=${1%"${1##:}"};
local i=${#COMPREPLY[]};
while [[ $((--i)) -ge 0 ]]; do
COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"};
done;
fi
}
__parse_options ()
{
local option option2 i IFS='
,/|';
option=;
local -a array;
read -a array <<< "$1";
for i in "${array[@]}";
do
case "$i" in
---)
break
;;
--?)
option=$i;
break
;;
-?)
[[ -n $option ]] || option=$i
;;
)
break
;;
esac;
done;
[[ -n $option ]] || return;
IFS='
';
if [[ $option =~ ([((no|dont)-?)]). ]]; then
option2=${option/"${BASH_REMATCH[1]}"/};
option2=${option2%%[<{().[]};
printf '%s\n' "${option2/=/=}";
option=${option/"${BASH_REMATCH[1]}"/"${BASH_REMATCH[2]}"};
fi;
option=${option%%[<{().[]};
printf '%s\n' "${option/=/=}"
}
__reassemble_comp_words_by_ref ()
{
local exclude i j line ref;
if [[ -n $1 ]]; then
exclude="${1//[^$COMP_WORDBREAKS]}";
fi;
printf -v "$3" %s "$COMP_CWORD";
if [[ -n $exclude ]]; then
line=$COMP_LINE;
for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++))
do
while [[ $i -gt 0 && ${COMP_WORDS[$i]} == +([$exclude]) ]]; do
[[ $line != [[:blank:]]* ]] && (( j >= 2 )) && ((j--));
ref="$2[$j]";
printf -v "$ref" %s "${!ref}${COMP_WORDS[i]}";
[[ $i == $COMP_CWORD ]] && printf -v "$3" %s "$j";
line=${line#"${COMP_WORDS[$i]}"};
[[ $line == [[:blank:]] ]] && ((j++));
(( $i < ${#COMP_WORDS[@]} - 1)) && ((i++)) || break 2;
done;
ref="$2[$j]";
printf -v "$ref" %s "${!ref}${COMP_WORDS[i]}";
line=${line#"${COMP_WORDS[i]}"};
[[ $i == $COMP_CWORD ]] && printf -v "$3" %s "$j";
done;
[[ $i == $COMP_CWORD ]] && printf -v "$3" %s "$j";
else
for i in ${!COMP_WORDS[@]};
do
printf -v "$2[i]" %s "${COMP_WORDS[i]}";
done;
fi
}
_allowed_groups ()
{
if _complete_as_root; then
local IFS='
';
COMPREPLY=($( compgen -g -- "$1" ));
else
local IFS='
';
COMPREPLY=($( compgen -W "$( id -Gn 2>/dev/null || groups 2>/dev/null )" -- "$1" ));
fi
}
_allowed_users ()
{
if _complete_as_root; then
local IFS='
';
COMPREPLY=($( compgen -u -- "${1:-$cur}" ));
else
local IFS='
';
COMPREPLY=($( compgen -W "$( id -un 2>/dev/null || whoami 2>/dev/null )" -- "${1:-$cur}" ));
fi
}
_available_interfaces ()
{
local PATH=$PATH:/sbin;
COMPREPLY=($( {
if [[ ${1:-} == -w ]]; then
iwconfig
elif [[ ${1:-} == -a ]]; then
ifconfig || ip link show up
else
ifconfig -a || ip link show
fi
} 2>/dev/null | awk '/^[^ \t]/ { if ($1 ~ /^[0-9]+:/) { print $2 } else { print $1 } }' ));
COMPREPLY=($( compgen -W '${COMPREPLY[@]/%[[:punct:]]/}' -- "$cur" ))
}
_cd ()
{
local cur prev words cword;
_init_completion || return;
local IFS='
' i j k;
compopt -o filenames;
if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/ ]]; then
_filedir -d;
return;
fi;
local -r mark_dirs=$(_rl_enabled mark-directories && echo y);
local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y);
for i in ${CDPATH//:/'
'};
do
k="${#COMPREPLY[@]}";
for j in $( compgen -d -- $i/$cur );
do
if [[ ( -n $mark_symdirs && -h $j || -n $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then
j+="/";
fi;
COMPREPLY[k++]=${j#$i/};
done;
done;
_filedir -d;
if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
i=${COMPREPLY[0]};
if [[ "$i" == "$cur" && $i != "/" ]]; then
COMPREPLY[0]="${i}/";
fi;
fi;
return
}
_cd_devices ()
{
COMPREPLY+=($( compgen -f -d -X "!/?([amrs])cd*" -- "${cur:-/dev/}" ))
}
_command ()
{
local offset i;
offset=1;
for ((i=1; i <= COMP_CWORD; i++ ))
do
if [[ "${COMP_WORDS[i]}" != -* ]]; then
offset=$i;
break;
fi;
done;
_command_offset $offset
}
_command_offset ()
{
local word_offset=$1 i j;
for ((i=0; i < $word_offset; i++ ))
do
for ((j=0; j <= ${#COMP_LINE}; j++ ))
do
[[ "$COMP_LINE" == "${COMP_WORDS[i]}"* ]] && break;
COMP_LINE=${COMP_LINE:1};
((COMP_POINT--));
done;
COMP_LINE=${COMP_LINE#"${COMP_WORDS[i]}"};
((COMP_POINT-=${#COMP_WORDS[i]}));
done;
for ((i=0; i <= COMP_CWORD - $word_offset; i++ ))
do
COMP_WORDS[i]=${COMP_WORDS[i+$word_offset]};
done;
for ((i; i <= COMP_CWORD; i++ ))
do
unset 'COMP_WORDS[i]';
done;
((COMP_CWORD -= $word_offset));
COMPREPLY=();
local cur;
_get_comp_words_by_ref cur;
if [[ $COMP_CWORD -eq 0 ]]; then
local IFS='
';
compopt -o filenames;
COMPREPLY=($( compgen -d -c -- "$cur" ));
else
local cmd=${COMP_WORDS[0]} compcmd=${COMP_WORDS[0]};
local cspec=$( complete -p $cmd 2>/dev/null );
if [[ ! -n $cspec && $cmd == / ]]; then
cspec=$( complete -p ${cmd##/} 2>/dev/null );
[[ -n $cspec ]] && compcmd=${cmd##/};
fi;
if [[ ! -n $cspec ]]; then
compcmd=${cmd##/};
_completion_loader $compcmd;
cspec=$( complete -p $compcmd 2>/dev/null );
fi;
if [[ -n $cspec ]]; then
if [[ ${cspec# -F } != $cspec ]]; then
local func=${cspec#-F };
func=${func%% };
if [[ ${#COMP_WORDS[@]} -ge 2 ]]; then
$func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}" "${COMP_WORDS[${#COMP_WORDS[@]}-2]}";
else
$func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}";
fi;
local opt;
while [[ $cspec == " -o " ]]; do
cspec=${cspec#-o };
opt=${cspec%% };
compopt -o $opt;
cspec=${cspec#$opt};
done;
else
cspec=${cspec#complete};
cspec=${cspec%%$compcmd};
COMPREPLY=($( eval compgen "$cspec" -- '$cur' ));
fi;
else
if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
_minimal;
fi;
fi;
fi
}
_complete_as_root ()
{
[[ $EUID -eq 0 || -n ${root_command:-} ]]
}
_completion_loader ()
{
local cmd="${1:-EmptycmD}";
__load_completion "$cmd" && return 124;
complete -F _minimal -- "$cmd" && return 124
}
_configured_interfaces ()
{
if [[ -f /etc/debian_version ]]; then
COMPREPLY=($( compgen -W "$( command sed -ne 's|^iface ([^ ]{1,}).$|\1|p' /etc/network/interfaces /etc/network/interfaces.d/ 2>/dev/null )" -- "$cur" ));
else
if [[ -f /etc/SuSE-release ]]; then
COMPREPLY=($( compgen -W "$( printf '%s\n' /etc/sysconfig/network/ifcfg-* | command sed -ne 's|.ifcfg-([^].)$|\1|p' )" -- "$cur" ));
else
if [[ -f /etc/pld-release ]]; then
COMPREPLY=($( compgen -W "$( command ls -B /etc/sysconfig/interfaces | command sed -ne 's|.ifcfg-([^].)$|\1|p' )" -- "$cur" ));
else
COMPREPLY=($( compgen -W "$( printf '%s\n' /etc/sysconfig/network-scripts/ifcfg-* | command sed -ne 's|.ifcfg-([^].)$|\1|p' )" -- "$cur" ));
fi;
fi;
fi
}
_count_args ()
{
local i cword words;
__reassemble_comp_words_by_ref "$1" words cword;
args=1;
for i in "${words[@]:1:cword-1}";
do
[[ "$i" != - ]] && args=$(($args+1));
done
}
_dvd_devices ()
{
COMPREPLY+=($( compgen -f -d -X "!/?(r)dvd" -- "${cur:-/dev/}" ))
}
_expand ()
{
if [[ "$cur" == ~/ ]]; then
__expand_tilde_by_ref cur;
else
if [[ "$cur" == ~* ]]; then
_tilde "$cur" || eval COMPREPLY[0]=$(printf ~%q "${COMPREPLY[0]#~}");
return ${#COMPREPLY[@]};
fi;
fi
}
_filedir ()
{
local IFS='
';
_tilde "$cur" || return;
local -a toks;
local x tmp;
x=$( compgen -d -- "$cur" ) && while read -r tmp; do
toks+=("$tmp");
done <<< "$x";
if [[ "$1" != -d ]]; then
local quoted;
_quote_readline_by_ref "$cur" quoted;
local xspec=${1:+"!.@($1|${1^^})"};
x=$( compgen -f -X "$xspec" -- $quoted ) && while read -r tmp; do
toks+=("$tmp");
done <<< "$x";
[[ -n ${COMP_FILEDIR_FALLBACK:-} && -n "$1" && ${#toks[@]} -lt 1 ]] && x=$( compgen -f -- $quoted ) && while read -r tmp; do
toks+=("$tmp");
done <<< "$x";
fi;
if [[ ${#toks[@]} -ne 0 ]]; then
compopt -o filenames 2> /dev/null;
COMPREPLY+=("${toks[@]}");
fi
}
_filedir_xspec ()
{
local cur prev words cword;
_init_completion || return;
_tilde "$cur" || return;
local IFS='
' xspec=${_xspecs[${1##/}]} tmp;
local -a toks;
toks=($(
compgen -d -- "$(quote_readline "$cur")" | {
while read -r tmp; do
printf '%s\n' $tmp
done
}
));
eval xspec="${xspec}";
local matchop=!;
if [[ $xspec == !* ]]; then
xspec=${xspec#!};
matchop=@;
fi;
xspec="$matchop($xspec|${xspec^^})";
toks+=($(
eval compgen -f -X "'!$xspec'" -- "$(quote_readline "$cur")" | {
while read -r tmp; do
[[ -n $tmp ]] && printf '%s\n' $tmp
done
}
));
if [[ ${#toks[@]} -ne 0 ]]; then
compopt -o filenames;
COMPREPLY=("${toks[@]}");
fi
}
_fstypes ()
{
local fss;
if [[ -e /proc/filesystems ]]; then
fss="$( cut -d' ' -f2 /proc/filesystems )
$( awk '! /*/ { print $NF }' /etc/filesystems 2>/dev/null )";
else
fss="$( awk '/^[ \t][^#]/ { print $3 }' /etc/fstab 2>/dev/null )
$( awk '/^[ \t][^#]/ { print $3 }' /etc/mnttab 2>/dev/null )
$( awk '/^[ \t][^#]/ { print $4 }' /etc/vfstab 2>/dev/null )
$( awk '{ print $1 }' /etc/dfs/fstypes 2>/dev/null )
$( [[ -d /etc/fs ]] && command ls /etc/fs )";
fi;
[[ -n $fss ]] && COMPREPLY+=($( compgen -W "$fss" -- "$cur" ))
}
_get_comp_words_by_ref ()
{
local exclude flag i OPTIND=1;
local cur cword words=();
local upargs=() upvars=() vcur vcword vprev vwords;
while getopts "c:i:n:p:w:" flag "$@"; do
case $flag in
c)
vcur=$OPTARG
;;
i)
vcword=$OPTARG
;;
n)
exclude=$OPTARG
;;
p)
vprev=$OPTARG
;;
w)
vwords=$OPTARG
;;
esac;
done;
while [[ $# -ge $OPTIND ]]; do
case ${!OPTIND} in
cur)
vcur=cur
;;
prev)
vprev=prev
;;
cword)
vcword=cword
;;
words)
vwords=words
;;
)
echo "bash: $FUNCNAME(): `${!OPTIND}': unknown argument" 1>&2;
return 1
;;
esac;
let "OPTIND += 1";
done;
__get_cword_at_cursor_by_ref "$exclude" words cword cur;
[[ -n $vcur ]] && {
upvars+=("$vcur");
upargs+=(-v $vcur "$cur")
};
[[ -n $vcword ]] && {
upvars+=("$vcword");
upargs+=(-v $vcword "$cword")
};
[[ -n $vprev && $cword -ge 1 ]] && {
upvars+=("$vprev");
upargs+=(-v $vprev "${words[cword - 1]}")
};
[[ -n $vwords ]] && {
upvars+=("$vwords");
upargs+=(-a${#words[@]} $vwords "${words[@]}")
};
(( ${#upvars[@]} )) && local "${upvars[@]}" && _upvars "${upargs[@]}"
}
_get_cword ()
{
local LC_CTYPE=C;
local cword words;
__reassemble_comp_words_by_ref "$1" words cword;
if [[ -n ${2//[^0-9]/} ]]; then
printf "%s" "${words[cword-$2]}";
else
if [[ "${#words[cword]}" -eq 0 || "$COMP_POINT" == "${#COMP_LINE}" ]]; then
printf "%s" "${words[cword]}";
else
local i;
local cur="$COMP_LINE";
local index="$COMP_POINT";
for ((i = 0; i <= cword; ++i ))
do
while [[ "${#cur}" -ge ${#words[i]} && "${cur:0:${#words[i]}}" != "${words[i]}" ]]; do
cur="${cur:1}";
[[ $index -gt 0 ]] && ((index--));
done;
if [[ "$i" -lt "$cword" ]]; then
local old_size="${#cur}";
cur="${cur#${words[i]}}";
local new_size="${#cur}";
index=$(( index - old_size + new_size ));
fi;
done;
if [[ "${words[cword]:0:${#cur}}" != "$cur" ]]; then
printf "%s" "${words[cword]}";
else
printf "%s" "${cur:0:$index}";
fi;
fi;
fi
}
_get_first_arg ()
{
local i;
arg=;
for ((i=1; i < COMP_CWORD; i++ ))
do
if [[ "${COMP_WORDS[i]}" != - ]]; then
arg=${COMP_WORDS[i]};
break;
fi;
done
}
_get_pword ()
{
if [[ $COMP_CWORD -ge 1 ]]; then
_get_cword "${@:-}" 1;
fi
}
_gids ()
{
if type getent &> /dev/null; then
COMPREPLY=($( compgen -W '$( getent group | cut -d: -f3 )' -- "$cur" ));
else
if type perl &> /dev/null; then
COMPREPLY=($( compgen -W '$( perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"' )' -- "$cur" ));
else
COMPREPLY=($( compgen -W '$( cut -d: -f3 /etc/group )' -- "$cur" ));
fi;
fi
}
_grub_editenv ()
{
local cur prev;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
case "$prev" in
create | list | set | unset)
COMPREPLY=("");
return
;;
esac;
__grubcomp "$(__grub_get_options_from_help)
create list set unset"
}
_grub_install ()
{
local cur prev last split=false;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
last=$(__grub_get_last_option);
_split_longopt && split=true;
case "$prev" in
--boot-directory)
_filedir -d;
return
;;
--disk-module)
__grubcomp "biosdisk ata";
return
;;
esac;
$split && return 0;
if [[ "$cur" == - ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
case "$last" in
--modules)
__grub_list_modules;
return
;;
esac;
_filedir;
fi
}
_grub_mkconfig ()
{
local cur prev;
COMPREPLY=();
cur=_get_cword
;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_grub_mkfont ()
{
local cur;
COMPREPLY=();
cur=_get_cword
;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_grub_mkimage ()
{
local cur prev split=false;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
_split_longopt && split=true;
case "$prev" in
-d | --directory | -p | --prefix)
_filedir -d;
return
;;
-O | --format)
local prog=${COMP_WORDS[0]};
__grubcomp "$(LC_ALL=C $prog --help | awk -F ":" '/available formats/ { print $2 }' | sed 's/, / /g')";
return
;;
esac;
$split && return 0;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_grub_mkpasswd_pbkdf2 ()
{
local cur;
COMPREPLY=();
cur=_get_cword
;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_grub_mkrescue ()
{
local cur prev last;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
last=$(__grub_get_last_option);
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
case "$last" in
--modules)
__grub_list_modules;
return
;;
esac;
_filedir;
fi
}
_grub_probe ()
{
local cur prev split=false;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
_split_longopt && split=true;
case "$prev" in
-t | --target)
local prog=${COMP_WORDS[0]};
__grubcomp "$(LC_ALL=C $prog --help | awk -F "[()]" '/--target=/ { print $2 }' | sed 's/|/ /g')";
return
;;
esac;
$split && return 0;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_grub_script_check ()
{
local cur;
COMPREPLY=();
cur=_get_cword
;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_grub_set_entry ()
{
local cur prev split=false;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
_split_longopt && split=true;
case "$prev" in
--boot-directory)
_filedir -d;
return
;;
esac;
$split && return 0;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
__grub_list_menuentries;
fi
}
_grub_setup ()
{
local cur prev split=false;
COMPREPLY=();
cur=_get_cword
;
prev=${COMP_WORDS[COMP_CWORD-1]};
_split_longopt && split=true;
case "$prev" in
-d | --directory)
_filedir -d;
return
;;
esac;
$split && return 0;
if [[ "$cur" == -* ]]; then
__grubcomp "$(__grub_get_options_from_help)";
else
_filedir;
fi
}
_have ()
{
PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &> /dev/null
}
_included_ssh_config_files ()
{
[[ $# -lt 1 ]] && echo "error: $FUNCNAME: missing mandatory argument CONFIG";
local configfile i f;
configfile=$1;
local included=$( command sed -ne 's/^[[:blank:]][Ii][Nn][Cc][Ll][Uu][Dd][Ee][[:blank:]]{1,}([^#%])(#.){0,1}$/\1/p' "${configfile}" );
for i in ${included[@]};
do
if ! [[ "$i" =~ ^~.|^/.* ]]; then
if [[ "$configfile" =~ ^/etc/ssh.* ]]; then
i="/etc/ssh/$i";
else
i="$HOME/.ssh/$i";
fi;
fi;
__expand_tilde_by_ref i;
for f in ${i};
do
if [ -r $f ]; then
config+=("$f");
_included_ssh_config_files $f;
fi;
done;
done
}
_init_completion ()
{
local exclude= flag outx errx inx OPTIND=1;
while getopts "n:e:o:i:s" flag "$@"; do
case $flag in
n)
exclude+=$OPTARG
;;
e)
errx=$OPTARG
;;
o)
outx=$OPTARG
;;
i)
inx=$OPTARG
;;
s)
split=false;
exclude+==
;;
esac;
done;
COMPREPLY=();
local redir="@(?([0-9])<|?([0-9&])>?(>)|>&)";
_get_comp_words_by_ref -n "$exclude<>&" cur prev words cword;
_variables && return 1;
if [[ $cur == $redir* || $prev == $redir ]]; then
local xspec;
case $cur in
2'>')
xspec=$errx
;;
'>')
xspec=$outx
;;
'<')
xspec=$inx
;;
)
case $prev in
2'>')
xspec=$errx
;;
'>')
xspec=$outx
;;
'<')
xspec=$inx
;;
esac
;;
esac;
cur="${cur##$redir}";
_filedir $xspec;
return 1;
fi;
local i skip;
for ((i=1; i < ${#words[@]}; 1))
do
if [[ ${words[i]} == $redir ]]; then
[[ ${words[i]} == $redir ]] && skip=2 || skip=1;
words=("${words[@]:0:i}" "${words[@]:i+skip}");
[[ $i -le $cword ]] && cword=$(( cword - skip ));
else
i=$(( ++i ));
fi;
done;
[[ $cword -le 0 ]] && return 1;
prev=${words[cword-1]};
[[ -n ${split-} ]] && _split_longopt && split=true;
return 0
}
_installed_modules ()
{
COMPREPLY=($( compgen -W "$( PATH="$PATH:/sbin" lsmod | awk '{if (NR != 1) print $1}' )" -- "$1" ))
}
_ip_addresses ()
{
local PATH=$PATH:/sbin;
COMPREPLY+=($( compgen -W "$( { LC_ALL=C ifconfig -a || ip addr show; } 2>/dev/null | command sed -ne 's/.addr:([^[:space:]])./\1/p' -ne 's|.inet[[:space:]]{1,}([^[:space:]/]).|\1|p' )" -- "$cur" ))
}
_kernel_versions ()
{
COMPREPLY=($( compgen -W '$( command ls /lib/modules )' -- "$cur" ))
}
_known_hosts ()
{
local cur prev words cword;
_init_completion -n : || return;
local options;
[[ "$1" == -a || "$2" == -a ]] && options=-a;
[[ "$1" == -c || "$2" == -c ]] && options+=" -c";
_known_hosts_real $options -- "$cur"
}
_known_hosts_real ()
{
local configfile flag prefix;
local cur curd awkcur user suffix aliases i host ipv4 ipv6;
local -a kh khd config;
local OPTIND=1;
while getopts "ac46F:p:" flag "$@"; do
case $flag in
a)
aliases='yes'
;;
c)
suffix=':'
;;
F)
configfile=$OPTARG
;;
p)
prefix=$OPTARG
;;
4)
ipv4=1
;;
6)
ipv6=1
;;
esac;
done;
[[ $# -lt $OPTIND ]] && echo "error: $FUNCNAME: missing mandatory argument CWORD";
cur=${!OPTIND};
let "OPTIND += 1";
[[ $# -ge $OPTIND ]] && echo "error: $FUNCNAME("$@"): unprocessed arguments:" $(while [[ $# -ge $OPTIND ]]; do printf '%s\n' ${!OPTIND}; shift; done);
[[ $cur == @ ]] && user=${cur%@}@ && cur=${cur#@};
kh=();
if [[ -n $configfile ]]; then
[[ -r $configfile ]] && config+=("$configfile");
else
for i in /etc/ssh/ssh_config ~/.ssh/config ~/.ssh2/config;
do
[[ -r $i ]] && config+=("$i");
done;
fi;
for i in "${config[@]}";
do
_included_ssh_config_files "$i";
done;
if [[ ${#config[@]} -gt 0 ]]; then
local OIFS=$IFS IFS='
' j;
local -a tmpkh;
tmpkh=($( awk 'sub("^[ \t]([Gg][Ll][Oo][Bb][Aa][Ll]|[Uu][Ss][Ee][Rr])[Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee][ \t]+", "") { print $0 }' "${config[@]}" | sort -u ));
IFS=$OIFS;
for i in "${tmpkh[@]}";
do
while [[ $i =~ ^([^"])"([^"])"(.)$ ]]; do
i=${BASH_REMATCH[1]}${BASH_REMATCH[3]};
j=${BASH_REMATCH[2]};
__expand_tilde_by_ref j;
[[ -r $j ]] && kh+=("$j");
done;
for j in $i;
do
expand_tilde_by_ref j;
[[ -r $j ]] && kh+=("$j");
done;
done;
fi;
if [[ -z $configfile ]]; then
for i in /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2 /etc/known_hosts /etc/known_hosts2 ~/.ssh/known_hosts ~/.ssh/known_hosts2;
do
[[ -r $i ]] && kh+=("$i");
done;
for i in /etc/ssh2/knownhosts ~/.ssh2/hostkeys;
do
[[ -d $i ]] && khd+=("$i"/pub);
done;
fi;
if [[ ${#kh[@]} -gt 0 || ${#khd[@]} -gt 0 ]]; then
awkcur=${cur////\/};
awkcur=${awkcur//./\.};
curd=$awkcur;
if [[ "$awkcur" == [0-9][.:]* ]]; then
awkcur="^$awkcur[.:]";
else
if [[ "$awkcur" == [0-9] ]]; then
awkcur="^$awkcur.[.:]";
else
if [[ -z $awkcur ]]; then
awkcur="[a-z.:]";
else
awkcur="^$awkcur";
fi;
fi;
fi;
if [[ ${#kh[@]} -gt 0 ]]; then
COMPREPLY+=($( awk 'BEGIN {FS=","}
/^\s[^|#]/ {
sub("^@[^ ]+ +", "");
sub(" .$", "");
for (i=1; i<=NF; ++i) {
sub("^\", "", $i); sub("\?$", "", $i);
if ($i !~ /[?]/ && $i ~ /'"$awkcur"'/) {print $i}
}}' "${kh[@]}" 2>/dev/null ));
fi;
if [[ ${#khd[@]} -gt 0 ]]; then
for i in "${khd[@]}";
do
if [[ "$i" == *key_22$curd*.pub && -r "$i" ]]; then
host=${i/#*key_22/};
host=${host/%.pub/};
COMPREPLY+=($host);
fi;
done;
fi;
for ((i=0; i < ${#COMPREPLY[@]}; i++ ))
do
COMPREPLY[i]=$prefix$user${COMPREPLY[i]}$suffix;
done;
fi;
if [[ ${#config[@]} -gt 0 && -n "$aliases" ]]; then
local hosts=$( command sed -ne 's/^[[:blank:]][Hh][Oo][Ss][Tt][[:blank:]]{1,}([^#?%])(#.){0,1}$/\1/p' "${config[@]}" );
COMPREPLY+=($( compgen -P "$prefix$user" -S "$suffix" -W "$hosts" -- "$cur" ));
fi;
COMPREPLY+=($( compgen -W "$( ruptime 2>/dev/null | awk '!/^ruptime:/ { print $1 }' )" -- "$cur" ));
if [[ -n ${COMP_KNOWN_HOSTS_WITH_HOSTFILE-1} ]]; then
COMPREPLY+=($( compgen -A hostname -P "$prefix$user" -S "$suffix" -- "$cur" ));
fi;
if [[ -n $ipv4 ]]; then
COMPREPLY=("${COMPREPLY[@]/:$suffix/}");
fi;
if [[ -n $ipv6 ]]; then
COMPREPLY=("${COMPREPLY[@]/+([0-9]).+([0-9]).+([0-9]).+([0-9])$suffix/}");
fi;
if [[ -n $ipv4 || -n $ipv6 ]]; then
for i in ${!COMPREPLY[@]};
do
[[ -n ${COMPREPLY[i]} ]] || unset -v COMPREPLY[i];
done;
fi;
__ltrim_colon_completions "$prefix$user$cur"
}
_longopt ()
{
local cur prev words cword split;
_init_completion -s || return;
case "${prev,,}" in
--help | --usage | --version)
return
;;
--dir)
filedir -d;
return
;;
--file | --path)
filedir;
return
;;
--+([-a-z0-9]))
local argtype=$( LC_ALL=C $1 --help 2>&1 | command sed -ne "s|.*$prev[{0,1}=[<[]{0,1}([-A-Za-z0-9]{1,}).|\1|p" );
case ${argtype,,} in
dir)
_filedir -d;
return
;;
file | path)
_filedir;
return
;;
esac
;;
esac;
$split && return;
if [[ "$cur" == - ]]; then
COMPREPLY=($( compgen -W "$( LC_ALL=C $1 --help 2>&1 | command sed -ne 's/.(--[-A-Za-z0-9]{1,}={0,1})./\1/p' | sort -u )" -- "$cur" ));
[[ $COMPREPLY == = ]] && compopt -o nospace;
else
if [[ "$1" == @(rmdir|chroot) ]]; then
_filedir -d;
else
[[ "$1" == mkdir ]] && compopt -o nospace;
_filedir;
fi;
fi
}
_mac_addresses ()
{
local re='([A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2}';
local PATH="$PATH:/sbin:/usr/sbin";
COMPREPLY+=($( { LC_ALL=C ifconfig -a || ip link show; } 2>/dev/null | command sed -ne "s/.[[:space:]]HWaddr[[:space:]]{1,}($re)[[:space:]]./\1/p" -ne "s/.[[:space:]]HWaddr[[:space:]]{1,}($re)[[:space:]]$/\1/p" -ne "s|.[[:space:]](link/){0,1}ether[[:space:]]{1,}($re)[[:space:]].|\2|p" -ne "s|.[[:space:]](link/){0,1}ether[[:space:]]{1,}($re)[[:space:]]$|\2|p"
));
COMPREPLY+=($( { arp -an || ip neigh show; } 2>/dev/null | command sed -ne "s/.[[:space:]]($re)[[:space:]]./\1/p" -ne "s/.[[:space:]]($re)[[:space:]]$/\1/p" ));
COMPREPLY+=($( command sed -ne "s/^[[:space:]]($re)[[:space:]]./\1/p" /etc/ethers 2>/dev/null ));
COMPREPLY=($( compgen -W '${COMPREPLY[@]}' -- "$cur" ));
__ltrim_colon_completions "$cur"
}
_make ()
{
local cur prev words cword split;
_init_completion -s || return;
local file makef makef_dir=("-C" ".") makef_inc i;
case $prev in
-f | --file | --makefile | -o | --old-file | --assume-old | -W | --what-if | --new-file | --assume-new)
_filedir;
return
;;
-I | --include-dir | -C | --directory | -m)
_filedir -d;
return
;;
-E)
COMPREPLY=($( compgen -v -- "$cur" ));
return
;;
--eval | -D | -V | -x)
return
;;
--jobs | -j)
COMPREPLY=($( compgen -W "{1..$(( $(_ncpus)2 ))}" -- "$cur" ));
return
;;
esac;
$split && return;
if [[ "$cur" == - ]]; then
local opts="$( _parse_help "$1" )";
[[ -n $opts ]] || opts="$( _parse_usage "$1" )";
COMPREPLY=($( compgen -W "$opts" -- "$cur" ));
[[ $COMPREPLY == = ]] && compopt -o nospace;
else
if [[ $cur == = ]]; then
prev=${cur%%=};
cur=${cur#=};
local diropt;
[[ ${prev,,} == dir?(ectory) ]] && diropt=-d;
_filedir $diropt;
else
for ((i=0; i < ${#words[@]}; i++ ))
do
if [[ ${words[i]} == -@(C|-directory) ]]; then
eval makef_dir=(-C "${words[i+1]}");
break;
fi;
done;
for ((i=0; i < ${#words[@]}; i++ ))
do
if [[ ${words[i]} == -@(f|-?(make)file) ]]; then
eval makef=(-f "${words[i+1]}");
break;
fi;
done;
local mode=--;
if (( COMP_TYPE != 9 )); then
mode=-d;
fi;
local IFS='
' script=$( _make_target_extract_script $mode "$cur" );
COMPREPLY=($( LC_ALL=C $1 -npq BASH_MAKE_COMPLETION=1 "${makef[@]}" "${makef_dir[@]}" .DEFAULT 2>/dev/null | command sed -ne "$script" ));
if [[ $mode != -d ]]; then
[[ $COMPREPLY == / ]] && compopt -o nospace;
fi;
fi;
fi
}
_make_target_extract_script ()
{
local mode="$1";
shift;
local prefix="$1";
local prefix_pat=$( command sed 's/[][,.^$(){}?+|/]/\&/g' <<<"$prefix" );
local basename=${prefix##/};
local dirname_len=$(( ${#prefix} - ${#basename} ));
if [[ $mode == -d ]]; then
local output="\2";
else
local output="\1\2";
fi;
cat <<EOF
1,/^# * Make data base/ d; # skip any makefile output
/^# * Finished Make data base/,/^# * Make data base/{
d; # skip any makefile output
}
/^# * Variables/,/^# * Files/ d; # skip until files section
/^# * Not a target/,/^$/ d; # skip not target blocks
/^${prefix_pat}/,/^$/! d; # skip anything user dont want
# The stuff above here describes lines that are not
# explicit targets or not targets other than special ones
# The stuff below here decides whether an explicit target
# should be output.
/^# * File is an intermediate prerequisite/ {
s/^.*$//;x; # unhold target
d; # delete line
}
/^$/ { # end of target block
x; # unhold target
/^$/d; # dont print blanks
s|^\(.\{${dirname_len}\}\)\(.\{${#basename}\}[^:/]*/\{0,1\}\)[^:]*:.*$|${output}|p;
d; # hide any bugs
}
# This pattern includes a literal tab character as \t is not a portable
# representation and fails with BSD sed
/^[^# :%]\{1,\}:/ { # found target block
/^\.PHONY:/ d; # special target
/^\.SUFFIXES:/ d; # special target
/^\.DEFAULT:/ d; # special target
/^\.PRECIOUS:/ d; # special target
/^\.INTERMEDIATE:/ d; # special target
/^\.SECONDARY:/ d; # special target
/^\.SECONDEXPANSION:/ d; # special target
/^\.DELETE_ON_ERROR:/ d; # special target
/^\.IGNORE:/ d; # special target
/^\.LOW_RESOLUTION_TIME:/ d; # special target
/^\.SILENT:/ d; # special target
/^\.EXPORT_ALL_VARIABLES:/ d; # special target
/^\.NOTPARALLEL:/ d; # special target
/^\.ONESHELL:/ d; # special target
/^\.POSIX:/ d; # special target
/^\.NOEXPORT:/ d; # special target
/^\.MAKE:/ d; # special target
EOF
if [[ -z "${prefix_pat}" || "${prefix_pat}" = */ ]]; then
cat <<EOF
/^${prefix_pat}[^a-zA-Z0-9]/d; # convention for hidden tgt
EOF
fi
cat <<EOF
h; # hold target
d; # delete line
}
EOF
}
_minimal ()
{
local cur prev words cword split;
_init_completion -s || return;
$split && return;
_filedir
}
_modules ()
{
local modpath;
modpath=/lib/modules/$1;
COMPREPLY=($( compgen -W "$( command ls -RL $modpath 2>/dev/null | command sed -ne 's/^(.).k{0,1}o(.[gx]z){0,1}$/\1/p' )" -- "$cur" ))
}
ncpus ()
{
local var=NPROCESSORS_ONLN;
[[ $OSTYPE == linux ]] && var=$var;
local n=$( getconf $var 2>/dev/null );
printf %s ${n:-1}
}
_parse_help ()
{
eval local cmd=$( quote "$1" );
local line;
{
case $cmd in
-)
cat
;;
)
LC_ALL=C "$( dequote "$cmd" )" ${2:---help} 2>&1
;;
esac
} | while read -r line; do
[[ $line == ([[:blank:]])- ]] || continue;
while [[ $line =~ ((^|[^-])-[A-Za-z0-9?][[:space:]]+)[?[A-Z0-9]+]? ]]; do
line=${line/"${BASH_REMATCH[0]}"/"${BASH_REMATCH[1]}"};
done;
__parse_options "${line// or /, }";
done
}
_parse_usage ()
{
eval local cmd=$( quote "$1" );
local line match option i char;
{
case $cmd in
-)
cat
;;
)
LC_ALL=C "$( dequote "$cmd" )" ${2:---usage} 2>&1
;;
esac
} | while read -r line; do
while [[ $line =~ [[[:space:]](-[^]]+)[[:space:]]] ]]; do
match=${BASH_REMATCH[0]};
option=${BASH_REMATCH[1]};
case $option in
-?([)+([a-zA-Z0-9?]))
for ((i=1; i < ${#option}; i++ ))
do
char=${option:i:1};
[[ $char != '[' ]] && printf '%s\n' -$char;
done
;;
)
__parse_options "$option"
;;
esac;
line=${line#"$match"};
done;
done
}
_pci_ids ()
{
COMPREPLY+=($( compgen -W "$( PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur" ))
}
_pgids ()
{
COMPREPLY=($( compgen -W '$( command ps axo pgid= )' -- "$cur" ))
}
_pids ()
{
COMPREPLY=($( compgen -W '$( command ps axo pid= )' -- "$cur" ))
}
_pnames ()
{
if [[ "$1" == -s ]]; then
COMPREPLY=($( compgen -X '
"s/ .
"s:./::" -e
"s/:$//" -e
"s/^[[(-]//" -e
"s/[])]$//" | sort -u )' -- "$cur" ));
fi
}
_quote_readline_by_ref ()
{
if [ -z "$1" ]; then
printf -v $2 %s "$1";
else
if [[ $1 == ' ]]; then
printf -v $2 %s "${1:1}";
else
if [[ $1 == ~* ]]; then
printf -v $2 ~%q "${1:1}";
else
printf -v $2 %q "$1";
fi;
fi;
fi;
[[ ${!2} == \ ]] && printf -v $2 %s "${1//\\/\}";
[[ ${!2} == $* ]] && eval $2=${!2}
}
_realcommand ()
{
type -P "$1" > /dev/null && {
if type -p realpath > /dev/null; then
realpath "$(type -P "$1")";
else
if type -p greadlink > /dev/null; then
greadlink -f "$(type -P "$1")";
else
if type -p readlink > /dev/null; then
readlink -f "$(type -P "$1")";
else
type -P "$1";
fi;
fi;
fi
}
}
_rl_enabled ()
{
[[ "$( bind -v )" == $1+([[:space:]])on ]]
}
_root_command ()
{
local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin;
local root_command=$1;
_command
}
_service ()
{
local cur prev words cword;
_init_completion || return;
[[ $cword -gt 2 ]] && return;
if [[ $cword -eq 1 && $prev == ?(/)service ]]; then
_services;
[[ -e /etc/mandrake-release ]] && _xinetd_services;
else
local sysvdirs;
_sysvdirs;
COMPREPLY=($( compgen -W 'command sed -e "y/|/ /" \ -ne "s/^.*\(U\|msg_u\)sage.*{\(.*\)}.*$/\2/p" \ ${sysvdirs[0]}/${prev##*/} 2>/dev/null
start stop' -- "$cur" ));
fi
}
_services ()
{
local sysvdirs;
_sysvdirs;
local IFS='
' reset=$(shopt -p nullglob);
shopt -s nullglob;
COMPREPLY=($( printf '%s\n' ${sysvdirs[0]}/!($_backup_glob|functions|README) ));
$reset;
COMPREPLY+=($( systemctl list-units --full --all 2>/dev/null | awk '$1 ~ /.service$/ { sub("\.service$", "", $1); print $1 }' ));
if [[ -x /sbin/upstart-udev-bridge ]]; then
COMPREPLY+=($( initctl list 2>/dev/null | cut -d' ' -f1 ));
fi;
COMPREPLY=($( compgen -W '${COMPREPLY[@]#${sysvdirs[0]}/}' -- "$cur" ))
}
_shells ()
{
local shell rest;
while read -r shell rest; do
[[ $shell == / && $shell == "$cur"* ]] && COMPREPLY+=($shell);
done 2> /dev/null < /etc/shells
}
_signals ()
{
local -a sigs=($( compgen -P "$1" -A signal "SIG${cur#$1}" ));
COMPREPLY+=("${sigs[@]/#${1}SIG/${1}}")
}
_split_longopt ()
{
if [[ "$cur" == --?= ]]; then
prev="${cur%%?(\)=}";
cur="${cur#=}";
return 0;
fi;
return 1
}
_sudo ()
{
local cur prev words cword;
_init_completion || return;
local i mode=normal;
[[ $1 == sudoedit ]] && mode=edit;
[[ $mode == normal ]] && for ((i=1; i <= COMP_CWORD; i++ ))
do
if [[ ${COMP_WORDS[i]} != - ]]; then
local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin;
local root_command=${COMP_WORDS[i]};
_command_offset $i;
return;
fi;
if [[ ${COMP_WORDS[i]} == -e ]]; then
mode=edit;
break;
fi;
[[ ${COMP_WORDS[i]} == -[uUgCp] ]] && ((i++));
done;
case "$prev" in
-u | -U)
COMPREPLY=($( compgen -u -- "$cur" ));
return
;;
-g)
COMPREPLY=($( compgen -g -- "$cur" ));
return
;;
-C | -p)
return
;;
esac;
if [[ "$cur" == -* ]]; then
COMPREPLY=($( compgen -W '-A -b -C -E -e -g -H -h -i -K -k -L -l -ll
-n -P -p -S -s -U -u -V -v' -- "$cur" ));
return;
fi;
if [[ $mode == edit ]]; then
_filedir;
fi
}
_sysvdirs ()
{
sysvdirs=();
[[ -d /etc/rc.d/init.d ]] && sysvdirs+=(/etc/rc.d/init.d);
[[ -d /etc/init.d ]] && sysvdirs+=(/etc/init.d);
[[ -f /etc/slackware-version ]] && sysvdirs=(/etc/rc.d)
}
_terms ()
{
COMPREPLY+=($( compgen -W "$( command sed -ne 's/^([^[:space:]#|]{2,})|./\1/p' /etc/termcap 2>/dev/null )" -- "$cur" ));
COMPREPLY+=($( compgen -W "$( { toe -a 2>/dev/null || toe 2>/dev/null; } | awk '{ print $1 }' | sort -u )" -- "$cur" ))
}
_tilde ()
{
local result=0;
if [[ $1 == ~ && $1 != / ]]; then
COMPREPLY=($( compgen -P '~' -u -- "${1#~}" ));
result=${#COMPREPLY[@]};
[[ $result -gt 0 ]] && compopt -o filenames 2> /dev/null;
fi;
return $result
}
_uids ()
{
if type getent &> /dev/null; then
COMPREPLY=($( compgen -W '$( getent passwd | cut -d: -f3 )' -- "$cur" ));
else
if type perl &> /dev/null; then
COMPREPLY=($( compgen -W '$( perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"' )' -- "$cur" ));
else
COMPREPLY=($( compgen -W '$( cut -d: -f3 /etc/passwd )' -- "$cur" ));
fi;
fi
}
_upvar ()
{
if unset -v "$1"; then
if (( $# == 2 )); then
eval $1="$2";
else
eval $1=("${@:2}");
fi;
fi
}
_upvars ()
{
if ! (( $# )); then
echo "${FUNCNAME[0]}: usage: ${FUNCNAME[0]} [-v varname" "value] | [-aN varname [value ...]] ..." 1>&2;
return 2;
fi;
while (( $# )); do
case $1 in
-a*)
[[ -n ${1#-a} ]] || {
echo "bash: ${FUNCNAME[0]}: `$1': missing" "number specifier" 1>&2;
return 1
};
printf %d "${1#-a}" &> /dev/null || {
echo "bash:" "${FUNCNAME[0]}: `$1': invalid number specifier" 1>&2;
return 1
};
[[ -n "$2" ]] && unset -v "$2" && eval $2=("${@:3:${1#-a}}") && shift $((${1#-a} + 2)) || {
echo "bash: ${FUNCNAME[0]}:" "`$1${2+ }$2': missing argument(s)" 1>&2;
return 1
}
;;
-v)
[[ -n "$2" ]] && unset -v "$2" && eval $2="$3" && shift 3 || {
echo "bash: ${FUNCNAME[0]}: $1: missing" "argument(s)" 1>&2;
return 1
}
;;
)
echo "bash: ${FUNCNAME[0]}: $1: invalid option" 1>&2;
return 1
;;
esac;
done
}
_usb_ids ()
{
COMPREPLY+=($( compgen -W "$( PATH="$PATH:/sbin" lsusb | awk '{print $6}' )" -- "$cur" ))
}
_user_at_host ()
{
local cur prev words cword;
_init_completion -n : || return;
if [[ $cur == @ ]]; then
_known_hosts_real "$cur";
else
COMPREPLY=($( compgen -u -S @ -- "$cur" ));
compopt -o nospace;
fi
}
_usergroup ()
{
if [[ $cur == \\ || $cur == :: ]]; then
return;
else
if [[ $cur == \: ]]; then
local prefix;
prefix=${cur%%([^:])};
prefix=${prefix//\};
local mycur="${cur#[:]}";
if [[ $1 == -u ]]; then
allowed_groups "$mycur";
else
local IFS='
';
COMPREPLY=($( compgen -g -- "$mycur" ));
fi;
COMPREPLY=($( compgen -P "$prefix" -W "${COMPREPLY[@]}" ));
else
if [[ $cur == : ]]; then
local mycur="${cur#:}";
if [[ $1 == -u ]]; then
_allowed_groups "$mycur";
else
local IFS='
';
COMPREPLY=($( compgen -g -- "$mycur" ));
fi;
else
if [[ $1 == -u ]]; then
_allowed_users "$cur";
else
local IFS='
';
COMPREPLY=($( compgen -u -- "$cur" ));
fi;
fi;
fi;
fi
}
_userland ()
{
local userland=$( uname -s );
[[ $userland == @(Linux|GNU/) ]] && userland=GNU;
[[ $userland == $1 ]]
}
variables ()
{
if [[ $cur =~ ^($({[!#]?)?)([A-Za-z0-9])$ ]]; then
if [[ $cur == ${ ]]; then
local arrs vars;
vars=($( compgen -A variable -P ${BASH_REMATCH[1]} -S '}' -- ${BASH_REMATCH[3]} )) && arrs=($( compgen -A arrayvar -P ${BASH_REMATCH[1]} -S '[' -- ${BASH_REMATCH[3]} ));
if [[ ${#vars[@]} -eq 1 && -n $arrs ]]; then
compopt -o nospace;
COMPREPLY+=(${arrs[]});
else
COMPREPLY+=(${vars[]});
fi;
else
COMPREPLY+=($( compgen -A variable -P '$' -- "${BASH_REMATCH[3]}" ));
fi;
return 0;
else
if [[ $cur =~ ^(${[#!]?)([A-Za-z0-9])[([^]])$ ]]; then
local IFS='
';
COMPREPLY+=($( compgen -W '$(printf %s\n "${!'${BASH_REMATCH[2]}'[@]}")' -P "${BASH_REMATCH[1]}${BASH_REMATCH[2]}[" -S ']}' -- "${BASH_REMATCH[3]}" ));
if [[ ${BASH_REMATCH[3]} == [@] ]]; then
COMPREPLY+=("${BASH_REMATCH[1]}${BASH_REMATCH[2]}[${BASH_REMATCH[3]}]}");
fi;
_ltrim_colon_completions "$cur";
return 0;
else
if [[ $cur =~ ^${[#!]?[A-Za-z0-9][.*]$ ]]; then
COMPREPLY+=("$cur}");
__ltrim_colon_completions "$cur";
return 0;
else
case $prev in
TZ)
cur=/usr/share/zoneinfo/$cur;
_filedir;
for i in ${!COMPREPLY[@]};
do
if [[ ${COMPREPLY[i]} == *.tab ]]; then
unset 'COMPREPLY[i]';
continue;
else
if [[ -d ${COMPREPLY[i]} ]]; then
COMPREPLY[i]+=/;
compopt -o nospace;
fi;
fi;
COMPREPLY[i]=${COMPREPLY[i]#/usr/share/zoneinfo/};
done;
return 0
;;
esac;
fi;
fi;
fi;
return 1
}
_xfunc ()
{
set -- "$@";
local srcfile=$1;
shift;
declare -F $1 &> /dev/null || {
__load_completion "$srcfile"
};
"$@"
}
_xinetd_services ()
{
local xinetddir=/etc/xinetd.d;
if [[ -d $xinetddir ]]; then
local IFS='
' reset=$(shopt -p nullglob);
shopt -s nullglob;
local -a svcs=($( printf '%s\n' $xinetddir/!($_backup_glob) ));
$reset;
COMPREPLY+=($( compgen -W '${svcs[@]#$xinetddir/}' -- "$cur" ));
fi
}
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
quote ()
{
local quoted=${1//'/'\''};
printf "'%s'" "$quoted"
}
quote_readline ()
{
local quoted;
_quote_readline_by_ref "$1" ret;
printf %s "$ret"
}
*
@override
public void onRewardedVideoAdClosed() {
// Load the next rewarded video ad.
loadRewardedVideoAd();
}*
Adding multi langauge soft files for a complete conversoion tool experiance**