94 lines
2.9 KiB
C
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
|