1223328Sgavin/* $NetBSD: cmdtab.c,v 1.11 2009/05/20 12:53:47 lukem Exp $ */ 2223328Sgavin/* from NetBSD: cmdtab.c,v 1.51 2009/04/12 10:18:52 lukem Exp */ 379971Sobrien 479971Sobrien/*- 5223328Sgavin * Copyright (c) 1996-2009 The NetBSD Foundation, Inc. 679971Sobrien * All rights reserved. 779971Sobrien * 879971Sobrien * This code is derived from software contributed to The NetBSD Foundation 979971Sobrien * by Luke Mewburn. 1079971Sobrien * 1179971Sobrien * Redistribution and use in source and binary forms, with or without 1279971Sobrien * modification, are permitted provided that the following conditions 1379971Sobrien * are met: 1479971Sobrien * 1. Redistributions of source code must retain the above copyright 1579971Sobrien * notice, this list of conditions and the following disclaimer. 1679971Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1779971Sobrien * notice, this list of conditions and the following disclaimer in the 1879971Sobrien * documentation and/or other materials provided with the distribution. 1979971Sobrien * 2079971Sobrien * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2179971Sobrien * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2279971Sobrien * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2379971Sobrien * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 2479971Sobrien * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2579971Sobrien * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2679971Sobrien * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2779971Sobrien * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2879971Sobrien * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2979971Sobrien * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3079971Sobrien * POSSIBILITY OF SUCH DAMAGE. 3179971Sobrien */ 3279971Sobrien 3379971Sobrien/* 3479971Sobrien * Copyright (c) 1985, 1989, 1993, 1994 3579971Sobrien * The Regents of the University of California. All rights reserved. 3679971Sobrien * 3779971Sobrien * Redistribution and use in source and binary forms, with or without 3879971Sobrien * modification, are permitted provided that the following conditions 3979971Sobrien * are met: 4079971Sobrien * 1. Redistributions of source code must retain the above copyright 4179971Sobrien * notice, this list of conditions and the following disclaimer. 4279971Sobrien * 2. Redistributions in binary form must reproduce the above copyright 4379971Sobrien * notice, this list of conditions and the following disclaimer in the 4479971Sobrien * documentation and/or other materials provided with the distribution. 45121966Smikeh * 3. Neither the name of the University nor the names of its contributors 4679971Sobrien * may be used to endorse or promote products derived from this software 4779971Sobrien * without specific prior written permission. 4879971Sobrien * 4979971Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 5079971Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 5179971Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 5279971Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 5379971Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 5479971Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 5579971Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 5679971Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 5779971Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 5879971Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 5979971Sobrien * SUCH DAMAGE. 6079971Sobrien */ 6179971Sobrien 62223328Sgavin#include "tnftp.h" 63223328Sgavin 64223328Sgavin#if 0 /* tnftp */ 65223328Sgavin 66116424Smikeh#include <sys/cdefs.h> 67116424Smikeh#ifndef lint 68116424Smikeh#if 0 69116424Smikehstatic char sccsid[] = "@(#)cmdtab.c 8.4 (Berkeley) 10/9/94"; 70116424Smikeh#else 71223328Sgavin__RCSID(" NetBSD: cmdtab.c,v 1.51 2009/04/12 10:18:52 lukem Exp "); 72116424Smikeh#endif 73116424Smikeh#endif /* not lint */ 7479971Sobrien 75116424Smikeh#include <stdio.h> 76223328Sgavin 77223328Sgavin#endif /* tnftp */ 78223328Sgavin 7979971Sobrien#include "ftp_var.h" 8079971Sobrien 8179971Sobrien/* 8279971Sobrien * User FTP -- Command Tables. 8379971Sobrien */ 8479971Sobrien 85142129Smikeh#define HSTR static const char 86142129Smikeh 87142129Smikeh#ifndef NO_HELP 88142129SmikehHSTR accounthelp[] = "send account command to remote server"; 89142129SmikehHSTR appendhelp[] = "append to a file"; 90142129SmikehHSTR asciihelp[] = "set ascii transfer type"; 91142129SmikehHSTR beephelp[] = "beep when command completed"; 92142129SmikehHSTR binaryhelp[] = "set binary transfer type"; 93142129SmikehHSTR casehelp[] = "toggle mget upper/lower case id mapping"; 94142129SmikehHSTR cdhelp[] = "change remote working directory"; 95142129SmikehHSTR cduphelp[] = "change remote working directory to parent directory"; 96142129SmikehHSTR chmodhelp[] = "change file permissions of remote file"; 97142129SmikehHSTR connecthelp[] = "connect to remote ftp server"; 98142129SmikehHSTR crhelp[] = "toggle carriage return stripping on ascii gets"; 99142129SmikehHSTR debughelp[] = "toggle/set debugging mode"; 100142129SmikehHSTR deletehelp[] = "delete remote file"; 101142129SmikehHSTR disconhelp[] = "terminate ftp session"; 102142129SmikehHSTR domachelp[] = "execute macro"; 103142129SmikehHSTR edithelp[] = "toggle command line editing"; 104223328SgavinHSTR epsvhelp[] = "toggle use of EPSV/EPRT on both IPv4 and IPV6 ftp"; 105142129SmikehHSTR epsv4help[] = "toggle use of EPSV/EPRT on IPv4 ftp"; 106223328SgavinHSTR epsv6help[] = "toggle use of EPSV/EPRT on IPv6 ftp"; 107142129SmikehHSTR feathelp[] = "show FEATures supported by remote system"; 108142129SmikehHSTR formhelp[] = "set file transfer format"; 109142129SmikehHSTR gatehelp[] = "toggle gate-ftp; specify host[:port] to change proxy"; 110142129SmikehHSTR globhelp[] = "toggle metacharacter expansion of local file names"; 111142129SmikehHSTR hashhelp[] = "toggle printing `#' marks; specify number to set size"; 112142129SmikehHSTR helphelp[] = "print local help information"; 113142129SmikehHSTR idlehelp[] = "get (set) idle timer on remote side"; 114142129SmikehHSTR lcdhelp[] = "change local working directory"; 115142129SmikehHSTR lpagehelp[] = "view a local file through your pager"; 116142129SmikehHSTR lpwdhelp[] = "print local working directory"; 117142129SmikehHSTR lshelp[] = "list contents of remote path"; 118142129SmikehHSTR macdefhelp[] = "define a macro"; 119142129SmikehHSTR mdeletehelp[] = "delete multiple files"; 120142129SmikehHSTR mgethelp[] = "get multiple files"; 121142129SmikehHSTR mregethelp[] = "get multiple files restarting at end of local file"; 122142129SmikehHSTR fgethelp[] = "get files using a localfile as a source of names"; 123142129SmikehHSTR mkdirhelp[] = "make directory on the remote machine"; 124142129SmikehHSTR mlshelp[] = "list contents of multiple remote directories"; 125142129SmikehHSTR mlsdhelp[] = "list contents of remote directory in a machine " 12679971Sobrien "parsable form"; 127142129SmikehHSTR mlsthelp[] = "list remote path in a machine parsable form"; 128142129SmikehHSTR modehelp[] = "set file transfer mode"; 129142129SmikehHSTR modtimehelp[] = "show last modification time of remote file"; 130142129SmikehHSTR mputhelp[] = "send multiple files"; 131142129SmikehHSTR newerhelp[] = "get file if remote file is newer than local file "; 132142129SmikehHSTR nmaphelp[] = "set templates for default file name mapping"; 133142129SmikehHSTR ntranshelp[] = "set translation table for default file name mapping"; 134142129SmikehHSTR optshelp[] = "show or set options for remote commands"; 135142129SmikehHSTR pagehelp[] = "view a remote file through your pager"; 136142129SmikehHSTR passivehelp[] = "toggle use of passive transfer mode"; 137142129SmikehHSTR plshelp[] = "list contents of remote path through your pager"; 138142129SmikehHSTR pmlsdhelp[] = "list contents of remote directory in a machine " 13979971Sobrien "parsable form through your pager"; 140142129SmikehHSTR porthelp[] = "toggle use of PORT/LPRT cmd for each data connection"; 141142129SmikehHSTR preservehelp[] ="toggle preservation of modification time of " 14279971Sobrien "retrieved files"; 143142129SmikehHSTR progresshelp[] ="toggle transfer progress meter"; 144142129SmikehHSTR prompthelp[] = "force interactive prompting on multiple commands"; 145142129SmikehHSTR proxyhelp[] = "issue command on alternate connection"; 146142129SmikehHSTR pwdhelp[] = "print working directory on remote machine"; 147142129SmikehHSTR quithelp[] = "terminate ftp session and exit"; 148142129SmikehHSTR quotehelp[] = "send arbitrary ftp command"; 149142129SmikehHSTR ratehelp[] = "set transfer rate limit (in bytes/second)"; 150142129SmikehHSTR receivehelp[] = "receive file"; 151142129SmikehHSTR regethelp[] = "get file restarting at end of local file"; 152142129SmikehHSTR remotehelp[] = "get help from remote server"; 153142129SmikehHSTR renamehelp[] = "rename file"; 154142129SmikehHSTR resethelp[] = "clear queued command replies"; 155142129SmikehHSTR restarthelp[]= "restart file transfer at bytecount"; 156142129SmikehHSTR rmdirhelp[] = "remove directory on the remote machine"; 157142129SmikehHSTR rmtstatushelp[]="show status of remote machine"; 158142129SmikehHSTR runiquehelp[] = "toggle store unique for local files"; 159142129SmikehHSTR sendhelp[] = "send one file"; 160142129SmikehHSTR sethelp[] = "set or display options"; 161142129SmikehHSTR shellhelp[] = "escape to the shell"; 162142129SmikehHSTR sitehelp[] = "send site specific command to remote server\n" 16379971Sobrien "\t\tTry \"rhelp site\" or \"site help\" " 16479971Sobrien "for more information"; 165142129SmikehHSTR sizecmdhelp[] = "show size of remote file"; 166142129SmikehHSTR statushelp[] = "show current status"; 167142129SmikehHSTR structhelp[] = "set file transfer structure"; 168142129SmikehHSTR suniquehelp[] = "toggle store unique on remote machine"; 169142129SmikehHSTR systemhelp[] = "show remote system type"; 170142129SmikehHSTR tenexhelp[] = "set tenex file transfer type"; 171142129SmikehHSTR tracehelp[] = "toggle packet tracing"; 172142129SmikehHSTR typehelp[] = "set file transfer type"; 173142129SmikehHSTR umaskhelp[] = "get (set) umask on remote side"; 174142129SmikehHSTR unsethelp[] = "unset an option"; 175142129SmikehHSTR usagehelp[] = "show command usage"; 176142129SmikehHSTR userhelp[] = "send new user information"; 177142129SmikehHSTR verbosehelp[] = "toggle verbose mode"; 178142129SmikehHSTR xferbufhelp[] = "set socket send/receive buffer size"; 179142129Smikeh#endif 18079971Sobrien 181142129SmikehHSTR empty[] = ""; 182142129Smikeh 183142129Smikeh#ifdef NO_HELP 184142129Smikeh#define H(x) empty 185142129Smikeh#else 186142129Smikeh#define H(x) x 187142129Smikeh#endif 188142129Smikeh 18979971Sobrien#ifdef NO_EDITCOMPLETE 19079971Sobrien#define CMPL(x) 19179971Sobrien#define CMPL0 19279971Sobrien#else /* !NO_EDITCOMPLETE */ 19379971Sobrien#define CMPL(x) #x, 194146309Smikeh#define CMPL0 empty, 19579971Sobrien#endif /* !NO_EDITCOMPLETE */ 19679971Sobrien 19779971Sobrienstruct cmd cmdtab[] = { 198142129Smikeh { "!", H(shellhelp), 0, 0, 0, CMPL0 shell }, 199142129Smikeh { "$", H(domachelp), 1, 0, 0, CMPL0 domacro }, 200142129Smikeh { "account", H(accounthelp), 0, 1, 1, CMPL0 account}, 201142129Smikeh { "append", H(appendhelp), 1, 1, 1, CMPL(lr) put }, 202142129Smikeh { "ascii", H(asciihelp), 0, 1, 1, CMPL0 setascii }, 203142129Smikeh { "bell", H(beephelp), 0, 0, 0, CMPL0 setbell }, 204142129Smikeh { "binary", H(binaryhelp), 0, 1, 1, CMPL0 setbinary }, 205142129Smikeh { "bye", H(quithelp), 0, 0, 0, CMPL0 quit }, 206142129Smikeh { "case", H(casehelp), 0, 0, 1, CMPL0 setcase }, 207142129Smikeh { "cd", H(cdhelp), 0, 1, 1, CMPL(r) cd }, 208142129Smikeh { "cdup", H(cduphelp), 0, 1, 1, CMPL0 cdup }, 209142129Smikeh { "chmod", H(chmodhelp), 0, 1, 1, CMPL(nr) do_chmod }, 210142129Smikeh { "close", H(disconhelp), 0, 1, 1, CMPL0 disconnect }, 211142129Smikeh { "cr", H(crhelp), 0, 0, 0, CMPL0 setcr }, 212142129Smikeh { "debug", H(debughelp), 0, 0, 0, CMPL0 setdebug }, 213142129Smikeh { "delete", H(deletehelp), 0, 1, 1, CMPL(r) delete }, 214142129Smikeh { "dir", H(lshelp), 1, 1, 1, CMPL(rl) ls }, 215142129Smikeh { "disconnect", H(disconhelp), 0, 1, 1, CMPL0 disconnect }, 216142129Smikeh { "edit", H(edithelp), 0, 0, 0, CMPL0 setedit }, 217223328Sgavin { "epsv", H(epsvhelp), 0, 0, 0, CMPL0 setepsv }, 218142129Smikeh { "epsv4", H(epsv4help), 0, 0, 0, CMPL0 setepsv4 }, 219223328Sgavin { "epsv6", H(epsv6help), 0, 0, 0, CMPL0 setepsv6 }, 220142129Smikeh { "exit", H(quithelp), 0, 0, 0, CMPL0 quit }, 221142129Smikeh { "features", H(feathelp), 0, 1, 1, CMPL0 feat }, 222142129Smikeh { "fget", H(fgethelp), 1, 1, 1, CMPL(l) fget }, 223142129Smikeh { "form", H(formhelp), 0, 1, 1, CMPL0 setform }, 224142129Smikeh { "ftp", H(connecthelp), 0, 0, 1, CMPL0 setpeer }, 225142129Smikeh { "gate", H(gatehelp), 0, 0, 0, CMPL0 setgate }, 226142129Smikeh { "get", H(receivehelp), 1, 1, 1, CMPL(rl) get }, 227142129Smikeh { "glob", H(globhelp), 0, 0, 0, CMPL0 setglob }, 228142129Smikeh { "hash", H(hashhelp), 0, 0, 0, CMPL0 sethash }, 229142129Smikeh { "help", H(helphelp), 0, 0, 1, CMPL(C) help }, 230142129Smikeh { "idle", H(idlehelp), 0, 1, 1, CMPL0 idlecmd }, 231142129Smikeh { "image", H(binaryhelp), 0, 1, 1, CMPL0 setbinary }, 232142129Smikeh { "lcd", H(lcdhelp), 0, 0, 0, CMPL(l) lcd }, 233142129Smikeh { "less", H(pagehelp), 1, 1, 1, CMPL(r) page }, 234142129Smikeh { "lpage", H(lpagehelp), 0, 0, 0, CMPL(l) lpage }, 235142129Smikeh { "lpwd", H(lpwdhelp), 0, 0, 0, CMPL0 lpwd }, 236142129Smikeh { "ls", H(lshelp), 1, 1, 1, CMPL(rl) ls }, 237142129Smikeh { "macdef", H(macdefhelp), 0, 0, 0, CMPL0 macdef }, 238142129Smikeh { "mdelete", H(mdeletehelp), 1, 1, 1, CMPL(R) mdelete }, 239142129Smikeh { "mdir", H(mlshelp), 1, 1, 1, CMPL(R) mls }, 240142129Smikeh { "mget", H(mgethelp), 1, 1, 1, CMPL(R) mget }, 241142129Smikeh { "mkdir", H(mkdirhelp), 0, 1, 1, CMPL(r) makedir }, 242142129Smikeh { "mls", H(mlshelp), 1, 1, 1, CMPL(R) mls }, 243142129Smikeh { "mlsd", H(mlsdhelp), 1, 1, 1, CMPL(r) ls }, 244142129Smikeh { "mlst", H(mlsthelp), 1, 1, 1, CMPL(r) mlst }, 245142129Smikeh { "mode", H(modehelp), 0, 1, 1, CMPL0 setftmode }, 246142129Smikeh { "modtime", H(modtimehelp), 0, 1, 1, CMPL(r) modtime }, 247142129Smikeh { "more", H(pagehelp), 1, 1, 1, CMPL(r) page }, 248142129Smikeh { "mput", H(mputhelp), 1, 1, 1, CMPL(L) mput }, 249142129Smikeh { "mreget", H(mregethelp), 1, 1, 1, CMPL(R) mget }, 250142129Smikeh { "msend", H(mputhelp), 1, 1, 1, CMPL(L) mput }, 251142129Smikeh { "newer", H(newerhelp), 1, 1, 1, CMPL(r) newer }, 252142129Smikeh { "nlist", H(lshelp), 1, 1, 1, CMPL(rl) ls }, 253142129Smikeh { "nmap", H(nmaphelp), 0, 0, 1, CMPL0 setnmap }, 254142129Smikeh { "ntrans", H(ntranshelp), 0, 0, 1, CMPL0 setntrans }, 255142129Smikeh { "open", H(connecthelp), 0, 0, 1, CMPL0 setpeer }, 256142129Smikeh { "page", H(pagehelp), 1, 1, 1, CMPL(r) page }, 257142129Smikeh { "passive", H(passivehelp), 0, 0, 0, CMPL0 setpassive }, 258142129Smikeh { "pdir", H(plshelp), 1, 1, 1, CMPL(r) ls }, 259142129Smikeh { "pls", H(plshelp), 1, 1, 1, CMPL(r) ls }, 260142129Smikeh { "pmlsd", H(pmlsdhelp), 1, 1, 1, CMPL(r) ls }, 261142129Smikeh { "preserve", H(preservehelp),0, 0, 0, CMPL0 setpreserve }, 262142129Smikeh { "progress", H(progresshelp),0, 0, 0, CMPL0 setprogress }, 263142129Smikeh { "prompt", H(prompthelp), 0, 0, 0, CMPL0 setprompt }, 264142129Smikeh { "proxy", H(proxyhelp), 0, 0, 1, CMPL(c) doproxy }, 265142129Smikeh { "put", H(sendhelp), 1, 1, 1, CMPL(lr) put }, 266142129Smikeh { "pwd", H(pwdhelp), 0, 1, 1, CMPL0 pwd }, 267142129Smikeh { "quit", H(quithelp), 0, 0, 0, CMPL0 quit }, 268142129Smikeh { "quote", H(quotehelp), 1, 1, 1, CMPL0 quote }, 269142129Smikeh { "rate", H(ratehelp), 0, 0, 0, CMPL0 setrate }, 270142129Smikeh { "rcvbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf }, 271142129Smikeh { "recv", H(receivehelp), 1, 1, 1, CMPL(rl) get }, 272142129Smikeh { "reget", H(regethelp), 1, 1, 1, CMPL(rl) reget }, 273142129Smikeh { "remopts", H(optshelp), 0, 1, 1, CMPL0 opts }, 274142129Smikeh { "rename", H(renamehelp), 0, 1, 1, CMPL(rr) renamefile }, 275142129Smikeh { "reset", H(resethelp), 0, 1, 1, CMPL0 reset }, 276142129Smikeh { "restart", H(restarthelp), 1, 1, 1, CMPL0 restart }, 277142129Smikeh { "rhelp", H(remotehelp), 0, 1, 1, CMPL0 rmthelp }, 278142129Smikeh { "rmdir", H(rmdirhelp), 0, 1, 1, CMPL(r) removedir }, 279142129Smikeh { "rstatus", H(rmtstatushelp),0, 1, 1, CMPL(r) rmtstatus }, 280142129Smikeh { "runique", H(runiquehelp), 0, 0, 1, CMPL0 setrunique }, 281142129Smikeh { "send", H(sendhelp), 1, 1, 1, CMPL(lr) put }, 282142129Smikeh { "sendport", H(porthelp), 0, 0, 0, CMPL0 setport }, 283142129Smikeh { "set", H(sethelp), 0, 0, 0, CMPL(o) setoption }, 284142129Smikeh { "site", H(sitehelp), 0, 1, 1, CMPL0 site }, 285142129Smikeh { "size", H(sizecmdhelp), 1, 1, 1, CMPL(r) sizecmd }, 286142129Smikeh { "sndbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf }, 287142129Smikeh { "status", H(statushelp), 0, 0, 1, CMPL0 status }, 288142129Smikeh { "struct", H(structhelp), 0, 1, 1, CMPL0 setstruct }, 289142129Smikeh { "sunique", H(suniquehelp), 0, 0, 1, CMPL0 setsunique }, 290142129Smikeh { "system", H(systemhelp), 0, 1, 1, CMPL0 syst }, 291142129Smikeh { "tenex", H(tenexhelp), 0, 1, 1, CMPL0 settenex }, 292142129Smikeh { "throttle", H(ratehelp), 0, 0, 0, CMPL0 setrate }, 293142129Smikeh { "trace", H(tracehelp), 0, 0, 0, CMPL0 settrace }, 294142129Smikeh { "type", H(typehelp), 0, 1, 1, CMPL0 settype }, 295142129Smikeh { "umask", H(umaskhelp), 0, 1, 1, CMPL0 do_umask }, 296142129Smikeh { "unset", H(unsethelp), 0, 0, 0, CMPL(o) unsetoption }, 297142129Smikeh { "usage", H(usagehelp), 0, 0, 1, CMPL(C) help }, 298142129Smikeh { "user", H(userhelp), 0, 1, 1, CMPL0 user }, 299142129Smikeh { "verbose", H(verbosehelp), 0, 0, 0, CMPL0 setverbose }, 300142129Smikeh { "xferbuf", H(xferbufhelp), 0, 0, 0, CMPL0 setxferbuf }, 301142129Smikeh { "?", H(helphelp), 0, 0, 1, CMPL(C) help }, 302223328Sgavin { NULL, NULL, 0, 0, 0, CMPL0 NULL }, 30379971Sobrien}; 30479971Sobrien 30579971Sobrienstruct option optiontab[] = { 30679971Sobrien { "anonpass", NULL }, 30779971Sobrien { "ftp_proxy", NULL }, 30879971Sobrien { "http_proxy", NULL }, 30979971Sobrien { "no_proxy", NULL }, 31079971Sobrien { "pager", NULL }, 31179971Sobrien { "prompt", NULL }, 31279971Sobrien { "rprompt", NULL }, 313223328Sgavin { NULL, NULL }, 31479971Sobrien}; 315