]> git.mxchange.org Git - flightgear.git/blobdiff - scripts/completion/fg-completion.bash
Fixed some memory leaks. Thanks to Andreas Gaeb for reporting.
[flightgear.git] / scripts / completion / fg-completion.bash
index 6c73e0cc9c9a79a1ebc8ab6e3f5120576e57005e..4f34e2dd1fed252939f928832e016b236fb2ddee 100755 (executable)
@@ -1,18 +1,24 @@
 #!/bin/bash
-# Tab completion for FlightGear command line options.
+# Tab completion for FlightGear command line options. To use it put
+# this in your ~/.bashrc file:
 #
-# 1. define $FG_HOME (or accept the default "$HOME/.fgfs/")
+#   export FG_HOME=$HOME/.fgfs/
+#   [ -e $FG_HOME/fg-completion.bash ] && source $FG_HOME/fg-completion.bash
 #
-# 2. source this file from your ~/.bashrc:
+# Defining FG_HOME is only required if you don't like the default
+# "$HOME/.fgfs/". The script doesn't offer all available airports
+# for the --airport option, but only those listed in a file
+# $FG_HOME/airport.list if available, or a short default list otherwise.
 #
-#      [ -e $FG_HOME/fg-completion.bash ] && source $FG_HOME/fg-completion.bash
-#
-__fgfs_scriptname="fg-completion.bash"  # adapt this if you renamed this script!
+# After installing new aircraft you have to rebuild the aircraft list
+# by typing   $ fgfs --aircraft=?<TAB>
 
 __fgfs_root=${FG_ROOT:-/usr/local/share/FlightGear}
 __fgfs_home=${FG_HOME:-$HOME/.fgfs}
 [ -d "$__fgfs_home" ] || mkdir -p "$__fgfs_home"
 
+
+__fgfs_ac_list="$__fgfs_home/aircraft.list"
 __fgfs_apt_list="$__fgfs_home/airport.list"
 
 __fgfs_options="
@@ -182,6 +188,18 @@ fi
 shopt -s progcomp
 
 
+__fgfs_write_ac_list() {
+       rm -f $__fgfs_ac_list
+       for i in $__fgfs_root/Aircraft/*/*-set.xml; do
+               i=${i%-set.xml}
+               echo ${i##*/} >>$__fgfs_ac_list
+       done
+}
+
+
+[ -e $__fgfs_ac_list ] || __fgfs_write_ac_list
+
+
 __fgfs_ai_scenario() {
        local i
        for i in $__fgfs_root/AI/*.xml; do
@@ -192,11 +210,9 @@ __fgfs_ai_scenario() {
 
 
 __fgfs_aircraft() {
-       local i
-       for i in $__fgfs_root/Aircraft/*/*-set.xml; do
-               i=${i%-set.xml}
-               echo ${i##*/}
-       done
+       while read i; do
+               echo $i
+       done <$__fgfs_ac_list
 }
 
 
@@ -220,6 +236,9 @@ __fgfs() {
        --ai-scenario=*)
                alt=$(__fgfs_offer $(__fgfs_ai_scenario))
                ;;
+       --aircraft=\?)
+               __fgfs_write_ac_list
+               ;;
        --aircraft=*|--vehicle=*)
                alt=$(__fgfs_offer $(__fgfs_aircraft))
                ;;