Files
sics/definealias.h

94 lines
2.9 KiB
C

/*--------------------------------------------------------------------------
D E F I N E A L I A S E S . C
Markus Zolliker, September 2000
copyright: see implementation file
More general and safe Aliases:
- an alias may be defined even if the corresponding command
does not yet exist
- SICS does not crash when the original command of an alias is
removed
---------------------------------------------------------------------------*/
#ifndef DEFINE_ALIAS
#define DEFINE_ALIAS
#include "conman.h"
#include "definealias.i"
/*---------------------------------------------------------------------------*/
char *TranslateAlias(AliasList * pAList, char *pCmd);
/*
translate the command *pCmd
- the translation may go through several steps
- if no translation is found, the return value is equal to pCmd
- no strings are copied
- the return value becomes invalid when the corresponding alias is removed
- *pCmd must be lowercase
*/
/*---------------------------------------------------------------------------*/
int RemoveAlias(AliasList * pAList, char *pCmd);
/*
remove the alias *pCmd
- returns 1 when the alias existed, 0 otherwise
- *pCmd must be lowercase
*/
/*---------------------------------------------------------------------------*/
void FreeAliasList(AliasList * pAList);
/*
dispose the alias list
*/
/*---------------------------------------------------------------------------*/
char *CreateAlias(AliasList * pAList, char *pName, char *pTranslation);
/*
create a new alias *pName with the translation *pTranslation
- the alias *pName must not yet exist
- *pTranslation is translated first
- recursive definitions are prohibited
- *pName and *pTranslation must be lowercase
if the creation is successful, the return value is NULL, otherwise
it points to one of the following error messages:
"recursive alias not allowed"
"alias already exists"
"not enough memory to create an alias"
*/
/*---------------------------------------------------------------------------*/
int DefineAlias(SConnection * pCon, SicsInterp * pSics, void *pData,
int argc, char *argv[]);
/* this command requires manager privileges
argv[1]: the alias to define
- must not be a proper SICS command
- if an alias with this name exists already, it is removed first
argv[2]: the original command
- if omitted, the alias is removed
- if it is an alias the definiton refers to it's translation
- may be an unknown command (probably defined later)
- AddCommand removes an eventual alias matching the command name
- RemoveCommand does not remove it's aliases
Trying to use an alias of a removed command leads to the error message
"object > ... < NOT found"
- trying to define a recursive alias leads the error message
"recursive alias not allowed"
*/
#endif