X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/16060c9b46a9a84f18629b0234d09144ba68a746..dabab7c78d2a621f1a6c22b14ec29b7fa7f4ad6e:/projects/rlm_stg/token.h?ds=sidebyside diff --git a/projects/rlm_stg/token.h b/projects/rlm_stg/token.h new file mode 100644 index 00000000..0f553788 --- /dev/null +++ b/projects/rlm_stg/token.h @@ -0,0 +1,79 @@ +#ifndef FR_TOKEN_H +#define FR_TOKEN_H + +/* + * token.h Special tokens. + * + * $Id$ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * Copyright 2001,2006 The FreeRADIUS server project + */ + +//#include +//RCSIDH(token_h, "$Id$") + +typedef enum fr_token_t { + T_OP_INVALID = 0, /* invalid token */ + T_EOL, /* end of line */ + T_LCBRACE, /* { */ + T_RCBRACE, /* } */ + T_LBRACE, /* ( */ + T_RBRACE, /* ) 5 */ + T_COMMA, /* , */ + T_SEMICOLON, /* ; */ + + T_OP_ADD, /* += */ + T_OP_SUB, /* -= */ + T_OP_SET, /* := 10 */ + T_OP_EQ, /* = */ + T_OP_NE, /* != */ + T_OP_GE, /* >= */ + T_OP_GT, /* > */ + T_OP_LE, /* <= 15 */ + T_OP_LT, /* < */ + T_OP_REG_EQ, /* =~ */ + T_OP_REG_NE, /* !~ */ + T_OP_CMP_TRUE, /* =* */ + T_OP_CMP_FALSE, /* !* 20 */ + T_OP_CMP_EQ, /* == */ + T_HASH, /* # */ + T_BARE_WORD, /* bare word */ + T_DOUBLE_QUOTED_STRING, /* "foo" */ + T_SINGLE_QUOTED_STRING, /* 'foo' 25 */ + T_BACK_QUOTED_STRING, /* `foo` */ + T_TOKEN_LAST +} FR_TOKEN; + +#define T_EQSTART T_OP_ADD +#define T_EQEND (T_OP_CMP_EQ + 1) + +typedef struct FR_NAME_NUMBER { + const char *name; + int number; +} FR_NAME_NUMBER; + +int fr_str2int(const FR_NAME_NUMBER *table, const char *name, int def); +const char *fr_int2str(const FR_NAME_NUMBER *table, int number, + const char *def); + + +int getword (const char **ptr, char *buf, int buflen); +int getbareword (const char **ptr, char *buf, int buflen); +FR_TOKEN gettoken(const char **ptr, char *buf, int buflen); +FR_TOKEN getstring(const char **ptr, char *buf, int buflen); + +#endif /* FR_TOKEN_H */