Server IP : 103.119.228.120 / Your IP : 3.144.42.174 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/zsh/5.0.2/functions/ |
Upload File : |
#autoload # This function can be used to separately complete parts of strings # where each part may be one of a set of matches and different parts # have different sets. # Arguments are alternately arrays and separator strings. Arrays may # be given by name or literally as words separated by white space in # parentheses, e.g.: # # _sep_parts '(foo bar)' @ hosts # # This will make this function complete the strings `foo' and `bar'. # If the string on the line contains a `@', the substring after it # will be completed from the array `hosts'. Of course more arrays # may be given, each preceded by another separator string. # # This function understands the `-J group', `-V group', and # `-X explanation' options. local str arr sep test testarr tmparr prefix suffixes autosuffix local matchflags opt group expl nm=$compstate[nmatches] opre osuf opts matcher # Get the options. zparseopts -D -a opts \ 'J+:=group' 'V+:=group' P: F: S: r: R: q 1 2 n 'X+:=expl' 'M+:=matcher' # Get the string from the line. opre="$PREFIX" osuf="$SUFFIX" str="$PREFIX$SUFFIX" SUFFIX="" prefix="" # Walk through the arguments to find the longest unambiguous prefix. while [[ $# -gt 1 ]]; do # Get the next array and separator. arr="$1" sep="$2" if [[ "$arr[1]" == '(' ]]; then tmparr=( ${=arr[2,-2]} ) arr=tmparr fi # Is the separator on the line? [[ "$str" != *${sep}* ]] && break # Get the matching array elements. PREFIX="${str%%(|\\)${sep}*}" builtin compadd -O testarr "$matcher[@]" -a "$arr" [[ $#testarr -eq 0 && -n "$_comp_correct" ]] && compadd -O testarr "$matcher[@]" -a "$arr" # If there are no matches we give up. If there is more than one # match, this is the part we will complete. (( $#testarr )) || return 1 [[ $#testarr -gt 1 ]] && break # Only one match, add it to the prefix and skip over it in `str', # continuing with the next array and separator. prefix="${prefix}${testarr[1]}${sep}" str="${str#*${sep}}" shift 2 done # Get the array to work upon. arr="$1" if [[ "$arr[1]" == '(' ]]; then tmparr=( ${=arr[2,-2]} ) arr=tmparr fi if [[ $# -le 1 || "$str" != *${2}* ]]; then # No more separators, build the matches. PREFIX="$str" builtin compadd -O testarr "$matcher[@]" -a "$arr" [[ $#testarr -eq 0 && -n "$_comp_correct" ]] && compadd -O testarr "$matcher[@]" -a "$arr" fi [[ $#testarr -eq 0 || ${#testarr[1]} -eq 0 ]] && return 1 # Now we build the suffixes to give to the completion code. shift suffixes=("") autosuffix=() while [[ $# -gt 0 && "$str" == *${1}* ]]; do # Remove anything up to the suffix. str="${str#*${1}}" # Again, we get the string from the line up to the next separator # and build a pattern from it. if [[ $# -gt 2 ]]; then PREFIX="${str%%${3}*}" else PREFIX="$str" fi # We incrementally add suffixes by appending to them the separators # and the strings from the next array that match the pattern we built. arr="$2" if [[ "$arr[1]" == '(' ]]; then tmparr=( ${=arr[2,-2]} ) arr=tmparr fi builtin compadd -O tmparr "$matcher[@]" -a "$arr" [[ $#tmparr -eq 0 && -n "$_comp_correct" ]] && compadd -O tmparr "$matcher[@]" - "$arr" suffixes=("${(@)^suffixes[@]}${(q)1}${(@)^tmparr}") shift 2 done # If we were given at least one more separator we make the completion # code offer it by appending it as a autoremovable suffix. (( $# )) && autosuffix=(-qS "${(q)1}") # Add the matches for each of the suffixes. PREFIX="$pre" SUFFIX="$suf" for i in "$suffixes[@]"; do compadd -U "$group[@]" "$expl[@]" "$autosuffix[@]" "$opts[@]" \ -i "$IPREFIX" -I "$ISUFFIX" -p "$prefix" -s "$i" -a testarr done # This sets the return value to indicate that we added matches (or not). [[ nm -ne compstate[nmatches] ]]