1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
/*
* alias.h: header for alias.c
*
* Written by Jeremy Nelson
* Copyright 1997 EPIC Software Labs
* See the COPYRIGHT file, or do a HELP IRCII COPYRIGHT
*/
#ifndef __alias_h__
#define __alias_h__
/*
* XXXX - These need to go away
*/
#define COMMAND_ALIAS 0
#define VAR_ALIAS 1
#define VAR_ALIAS_LOCAL 2
/*
* These are the user commands. Dont call these directly.
*/
BUILT_IN_COMMAND(aliascmd);
BUILT_IN_COMMAND(assigncmd);
BUILT_IN_COMMAND(localcmd);
BUILT_IN_COMMAND(stubcmd);
BUILT_IN_COMMAND(dumpcmd);
BUILT_IN_COMMAND(unloadcmd);
void add_var_alias (const char *name, const char *stuff, int noisy);
void add_local_alias (const char *name, const char *stuff, int noisy);
#if 0 /* Internal now */
void add_cmd_alias (void);
#endif
void add_var_stub_alias (const char *name, const char *stuff);
void add_cmd_stub_alias (const char *name, const char *stuff);
char * get_variable (const char *name);
char ** glob_cmd_alias (const char *name, int *howmany, int maxret, int start, int rev);
char * get_cmd_alias (const char *name, int *howmany,
char **complete_name, void **args);
char ** get_subarray_elements (const char *root, int *howmany, int type);
/* These are in expr.c */
/*
* This function is a general purpose interface to alias expansion.
* The second argument is the text to be expanded.
* The third argument are the command line expandoes $0, $1, etc.
* The fourth argument is a flag whether $0, $1, etc are used
* The fifth argument, if set, controls whether only the first "command"
* will be expanded. If set, this argument will be set to the "rest"
* of the commands (after the first semicolon, or the null). If NULL,
* then the entire text will be expanded.
*/
char * expand_alias (const char *, const char *, int *, ssize_t *);
/*
* This is the interface to the "expression parser"
* The first argument is the expression to be parsed
* The second argument is the command line expandoes ($0, $1, etc)
* The third argument will be set if the command line expandoes are used.
*/
char * parse_inline (char *, const char *, int *);
/*
* This function is used to call a user-defined function.
* Noone should be calling this directly except for call_function.
*/
char * call_user_function (const char *, char *);
void call_user_alias (const char *, char *, char *, void *);
/*
* This function is used to call a lambda (``anonymous'') function.
* You provide the lambda function name, its contents, and $*, and
* it returns you $FUNCTION_RETURN.
*/
char * call_lambda_function (const char *, const char *, const char *);
/*
* This function is used to save all the current aliases to a global
* file. This is used by /SAVE and /ABORT.
*/
void save_assigns (FILE *, int);
void save_aliases (FILE *, int);
/*
* This function is in functions.c
* This function allows you to execute a primitive "BUILT IN" expando.
* These are the $A, $B, $C, etc expandoes.
* The argument is the character of the expando (eg, 'A', 'B', etc)
*
* This is in functions.c
*/
char * built_in_alias (char, int *);
/* BOGUS */
/*
* This function is used to prepare the $* string before calling a user
* alias or function. You should pass in the last argument from get_cmd_alias
* to this function, and also the $* value. The second value may very well
* be modified.
*/
void prepare_alias_call (void *, char **);
void destroy_alias_call (void *);
/*
* This is in functions.c
* This is only used by next_unit and expand_alias to call built in functions.
* Noone should call this function directly.
*/
char * call_function (char *, const char *, int *);
/*
* These are the two primitives for runtime stacks.
*/
int make_local_stack (const char *);
void destroy_local_stack (void);
void set_current_command (char *);
void bless_local_stack (void);
void unset_current_command (void);
void lock_stack_frame (void);
void unlock_stack_frame (void);
void destroy_call_stack (void);
void dump_call_stack (void);
void panic_dump_call_stack (void);
/*
* This is the alias interface to the /STACK command.
*/
void do_stack_alias (int, char *, int);
/*
* Truly bogus. =)
*/
char *canon_number (char *input);
char *aliasctl (char *);
char * after_expando (char *, int, int *);
#endif /* _ALIAS_H_ */
|