/* Cmdline.h */ #ifndef _cmdline_h_ #define _cmdline_h_ /* If a command (like a transfer) took longer than this many seconds, beep * at the user to notify them that it completed. */ #define kBeepAfterCmdTime 15 typedef int (*CmdProc)(int argc, char **argv); /* These are used in the command table, to specify that a command * doesn't require an exact number of parameters. */ #define kNoMax (-1) #define kNoMin (-1) /* Maximum depth allowed for ExecCommandLine, which can run itself * recursively. This limit is in place to prevent infinite recursion. */ #define kRecursionLimit 8 /* Name of the script we run right before the interactive shell. */ #define kStartupScript "init" /* Structure of the command table. We keep some extra stuff in the * table, so each command doesn't have to check the number of * arguments and print it's own usage messages if it doesn't want to. */ typedef struct Command { char *name; int flags; CmdProc proc; int minargs, maxargs; char *usage, *help; int complete; } Command, *CommandPtr; /* Parameter to GetCommandOrMacro(). */ #define kAbbreviatedMatchAllowed 0 #define kExactMatchRequired 1 /* These can be returned by the GetCommand() routine. */ #define kAmbiguousCommand ((CommandPtr) -1) #define kNoCommand ((CommandPtr) 0) /* Command flag bits. */ #define kCmdHidden 001 #define kCmdMustBeConnected 002 #define kCmdDelayPipe 004 #define kCmdNoRedirect 010 #define kCmdWaitMsg 020 #define kCmdMustBeDisconnected 040 #ifndef _macro_h_ #include "Macro.h" #endif /* Structure of the name list. Each name is either a CommandPtr or * a MacroNodePtr. */ typedef struct CMName { char *name; union cm { CommandPtr cmd; MacroNodePtr mac; } u; int isCmd; } CMName, *CMNamePtr; /* These can be returned by the GetCommandOrMacro() routine. */ #define kAmbiguousName ((CMNamePtr) -1) #define kNoName ((CMNamePtr) 0) int InitCommandAndMacroNameList(void); CMNamePtr GetCommandOrMacro(char *, int); CommandPtr GetCommand(char *name, int wantExactMatch); void PrintCmdHelp(CommandPtr); void PrintCmdUsage(CommandPtr); int ExecCommandLine(char *); void RunScript(FILE *); void RunStartupScript(void); void CommandShell(void); #endif /* _cmdline_h_ */ /* eof Cmdline.h */