Closes Alioth #311614 Globbing might occur if $cur contains one of these globbing characters: * ? [ ] The bug becomes apparent: On Cygwin if the glob-string contains backslashes as well, causing a warning (Cygwin >= 1.7): MS-DOS style path detected: ... Preferred POSIX equivalent is: ... CYGWIN environment variable option "nodosfilewarning" turns off this warning. Consult the user's guide for more details about POSIX paths: http://cygwin.com/cygwin-ug-net/using.html#using-pathnames On Linux, using strace, you can see bash-completion doing an unnecessary `open' system call. Steps to reproduce on Linux using `strace': Environment: Linux, bash-completion-1.0 1. Start bash with bash-completion loaded and find out PID ($$): $ echo $$ MYPID 2. In a second bash shell, `strace' the above PID: $ strace -e trace=open -f -o strace.log -p MYPID 3. Within the first bash shell, type: $ cur="?"; _kernel_versions 4. In the second bash shell, type ^C to quick `strace'. 5. Check `strace.log', here you can see bash accessing something it shouldn't: ... open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3 ... 6. The above call to `open' disappears if $cur in _kernel_versions gets quoted, and you repeat the steps above: _kernel_versions() { COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) ) }
75 lines
2.2 KiB
Bash
75 lines
2.2 KiB
Bash
# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
|
|
# ex: ts=8 sw=8 noet filetype=sh
|
|
#
|
|
# bash completion for mkisofs/genisoimage
|
|
|
|
(have mkisofs || have genisoimage) &&
|
|
_mkisofs()
|
|
{
|
|
local cur prev
|
|
|
|
COMPREPLY=()
|
|
cur=`_get_cword`
|
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
|
|
case "$prev" in
|
|
-@(o|abstract|biblio|check-session|copyright|log-file|root-info|prep-boot|*-list))
|
|
_filedir
|
|
return 0
|
|
;;
|
|
-*-charset)
|
|
COMPREPLY=( $( compgen -W '$( mkisofs -input-charset \
|
|
help 2>&1 | tail -n +3 )' -- "$cur" ) )
|
|
return 0
|
|
;;
|
|
-uid)
|
|
_uids
|
|
return 0
|
|
;;
|
|
-gid)
|
|
_gids
|
|
return 0
|
|
;;
|
|
esac
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $( compgen -W '-abstract -A -allow-lowercase \
|
|
-allow-multidot -biblio -cache-inodes \
|
|
-no-cache-inodes -b -eltorito-alt-boot -B -G \
|
|
-hard-disk-boot -no-emul-boot -no-boot \
|
|
-boot-load-seg -boot-load-size \
|
|
-boot-info-table -C -c -check-oldname \
|
|
-check-session -copyright -d -D -dir-mode \
|
|
-dvd-video -f -file-mode -gid -gui \
|
|
-graft-points -hide -hide-list -hidden \
|
|
-hidden-list -hide-joliet -hide-joliet-list \
|
|
-hide-joliet-trans-tbl -hide-rr-moved \
|
|
-input-charset -output-charset -iso-level -J \
|
|
-joliet-long -jcharset -l -L -log-file -m \
|
|
-exclude-list -max-iso9660-filenames -M -N \
|
|
-new-dir-mode -nobak -no-bak -force-rr -no-rr \
|
|
-no-split-symlink-components \
|
|
-no-split-symlink-fields -o -pad -no-pad \
|
|
-path-list -P -p -print-size -quiet -R -r \
|
|
-relaxed-filenames -sort -split-output \
|
|
-stream-media-size -stream-file-name -sysid -T\
|
|
-table-name -ucs-level -udf -uid \
|
|
-use-fileversion -U -no-iso-translate -V \
|
|
-volset -volset-size -volset-seqno -v -x -z \
|
|
-hfs -apple -map -magic -hfs-creator \
|
|
-hfs-type -probe -no-desktop -mac-name \
|
|
-boot-hfs-file -part -auto -cluster-size \
|
|
-hide-hfs -hide-hfs-list -hfs-volid \
|
|
-icon-position -root-info -prep-boot \
|
|
-input-hfs-charset -output-hfs-charset \
|
|
-hfs-unlock -hfs-bless -hfs-parms --cap \
|
|
--netatalk --double --ethershare --ushare \
|
|
--exchange --sgi --xinet --macbin --single \
|
|
--dave --sfm --osx-double --osx-hfs' -- "$cur" ))
|
|
else
|
|
_filedir
|
|
fi
|
|
|
|
} &&
|
|
complete -F _mkisofs $filenames mkisofs genisoimage
|