Code for C

Hi, I need to know how we can write C code for command line options with each time tab pressing. i.e
when i type "ls -" in command prompt it should show all possible list starting with "-" and also when i press tab it should show the same.

I found a sample code in bash: if this is correct please can u write for me in c: here is the code:

svk()
{
    local cur prev commands options command

    COMPREPLY=()
    cur=${COMP_WORDS[COMP_CWORD]}

    commands='add admin annotate ann blame praise cat checkout co cleanup \
        cmerge cm commit ci copy cp delete del remove rm depotmap \
        depot describe desc diff di help h ? import info list ls log \
        merge mirror mi mkdir move mv ren rename patch propdel pd pdel \
        propedit pe pedit propget pg pget proplist pl plist propset ps \
        pset pull push resolved revert smerge sm status st stat switch \
        sw sync sy update up verify'

    if [[ $COMP_CWORD -eq 1 ]] ; then
        if [[ "$cur" == -* ]]; then
            COMPREPLY=( $( compgen -W '--version' -- $cur ) )
        else
            COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
        fi
    else

        prev=${COMP_WORDS[COMP_CWORD-1]}
        case $prev in
            -@(F|-file|-targets))
                _filedir
                return 0;
                ;;
            --encoding)
                COMPREPLY=( $( compgen -W \
                    '$( iconv --list | sed -e "s@//@@;" )' \
                    -- "$cur" ) )
                return 0;
                ;;
        esac

        command=${COMP_WORDS[1]}

        if [[ "$cur" == -* ]]; then
            # possible options for the command
            case $command in
                add)
                    options=' --non-recursive -N -q --quiet'
                    ;;
                @(blame|annotate|ann|praise))
                    options='-r --revisions -x --cross'
                    ;;
                cat)
                    options='-r --revision'
                    ;;
                @(checkout|co))
                    options='-r --revision -q --quiet -N \
                        --non-recursive -l --list -d \
                        --detach --export --relocate \
                        --purge'
                    ;;
                cleanup)
                    options='-a --all'
                    ;;
                @(cmerge|cm))
                    options='-c --change -l --log -r \
                        --revision -a --auto \
                        --verbatim --no-ticket -m \
                        --message -F --file --template \                        --encoding -P --patch -S \
                        --sign -C --check-only --direct'
                    ;;
                @(commit|ci))
                    options='--import -m --message -F \
                        --file --encoding --template \
                        -P --patch -S --sign -C \
                        --check-only -N \
                        --non-recursive --direct'
                    ;;
                @(copy|cp))
                    options='-r --revision -p --parent -q \
                        --quiet -m --message -F --file \
                        --template --encoding -P \
                        --patch -S --sign -C \
                        --check-only --direct'
                    ;;
                @(delete|del|remove|rm))
                    options='-k --keep-local -m --message \
                        -F --file --encoding \
                        --template -P --patch -S \
                        --sign -C --check-only --direct'
                    ;;
                @(depotmap|depot))
                    options='-i --init -l --list -d \
                        --detach --relocate'
                    ;;
                @(diff|di))
                    options='-r --revision -s --summarize \
                        -b --verbose -N --non-recursive'
                    ;;
                import)
                    options='-f --from-checkout -t \
                        --to-checkout -m --message -F \
                        --file --template --encoding \
                        -P --patch -S --sign -C \
                        --check-only -N \
                        --non-recursive --direct'
                    ;;
                @(list|ls))
                    options='-r --revision -v --verbose -R \
                        --recursive -d --depth -f \
                        --full-path'
                    ;;
                log)
                    options='-r --revision -l --limit -q \
                        --quiet -x --cross -v --verbose'
                    ;;
                merge)
                    options='-r --revision -c --change -I \
                        --incremental -a --auto -l \
                        --log -s --sync -t --to -f \
                        --from --verbatim --no-ticket \
                        --track-rename -m --message \
                        -F --file --template \
                        --encoding -P --patch -S \
                        --sign -C --check-only --direct'
                    ;;
                @(mirror|mi))
                    options='-l --list -d --detach \
                        --relocate --recover --unlock \
                        --upgrade'
                    ;;
                mkdir)
                    options='-p --parent -m --message -F \
                        --file --template --encoding \
                        -P --patch -S --sign -C \
                        --check-only --direct'
                    ;;
                @(move|mv|rename|ren))
                    options='-r --revision -p --parent -q \
                        --quiet -m --message -F --file \
                        --encoding --template -P \
                        --patch -S --sign -C \
                        --check-only --direct'
                    ;;
                patch)
                    options='--depot'
                    ;;
                @(propdel|propset|pdel|pset|pd|ps))
                    options='-R --recursive -r --revision \
                        --revprop -m --message -F \
                        --file --template --encoding \
                        -P --patch -S --sign -C \
                        --check-only -q --quiet \
                        --direct'
                    ;;
                @(propedit|pedit|pe))
                    options='-R --recursive -r --revision \
                        --revprop -m --message -F \
                        --file --template --encoding \
                        -P --patch -S --sign -C \
                        --check-only --direct'
                    ;;
                @(propget|pget|pg))
                    options='-R --recursive -r --revision \
                        --revprop --strict'
                    ;;
                @(proplist|plist|pl))
                    options='-R --recursive -v --verbose \
                        -r --revision --revprop'
                    ;;
                pull)
                    options='-a --all -l --lump'
                    ;;
                push)
                    options='-f --from -l --lump -C \
                        --check -P --patch -S --sign \
                        --verbatim'
                    ;;
                resolved)
                    options='-R --recursive'
                    ;;
                revert)
                    options='-R --recursive -q --quiet'
                    ;;
                @(smerge|sm))
                    options='-I --incremental -l --log -B \
                        --baseless -b --base -s --sync \
                        -t --to -f --from --verbatim \
                        --no-ticket --track-rename \
                        --host --remoterev -m \
                        --message -F --file --template \
                        --encoding -P --patch -S \
                        --sign -C --check-only --direct'
                    ;;
                @(status|stat|st))
                    options='-q --quiet --no-ignore -N \
                        --non-recursive -v --verbose'
                    ;;
                @(switch|sw))
                    options='-r --revision -d --detach -q \
                        --quiet'
                    ;;
                @(sync|sy))
                    options='-a --all -s --skipto -t \
                        --torev'
                    ;;
                @(update|up))
                    options='-r --revision -N \
                        --non-recursive -C \
                        --check-only -s --sync -m \
                        --merge -q --quiet'
                    ;;
            esac
            options="$options --help -h"

            COMPREPLY=( $( compgen -W "$options" -- $cur ) )
        else
            case $command in
                @(help|h|\?))
                    COMPREPLY=( $( compgen -W "$commands \
                    environment commands intro" -- $cur ) )
                    ;;
                admin)
                    COMPREPLY=( $( compgen -W 'help \
                        deltify dump hotcopy \
                        list-dblogs list-unused-dblogs \
                        load lstxns recover rmtxns \
                        setlog verify rmcache' \
                        -- $cur ) )
                    ;;
                patch)
                    COMPREPLY=( $( compgen -W '--ls --list \
                        --cat --view --regen \
                        --regenerate --up --update \
                        --apply --rm --delete' \
                        -- $cur ) )
                    ;;
                sync)
                    COMPREPLY=( $( compgen -W "$( svk \
                        mirror --list 2>/dev/null | \
                        awk '/^\//{print $1}' )" \
                        -- $cur ) )
                    ;;
                @(co|checkout|push|pull))
                        if [[ "$cur" == //*/* ]]; then
                        path=${cur%/*}/
                    else
                        path=//
                    fi
                    COMPREPLY=( $( compgen -W "$( svk \
                        list $path 2>/dev/null | sed -e 's|\(.*\)|'$path'\1|')" -- $cur ) )
                    ;;
                *)
                    _filedir
                    ;;
            esac
        fi
    fi

    return 0
}

Thank you

Getopt - The GNU C Library