nss: import at 3.0.1 beta 1
[mozilla-nss.git] / security / nss / cmd / crlutil / crlgen_lex_orig.l
blob7cb1e5cde7a9349c9d19168a20abbcaa49bd1335
1 %{
3 #include "crlgen.h"
5 static SECStatus parserStatus = SECSuccess;
6 static CRLGENGeneratorData *parserData;
7 static PRFileDesc *src;
9 #define YY_INPUT(buf,result,max_size) \
10     if ( parserStatus != SECFailure) { \
11          if (((result = PR_Read(src, buf, max_size)) == 0) && \
12              ferror( yyin )) \
13            return SECFailure; \
14     } else  { return SECFailure; }
15               
19 %a 5000
20 DIGIT          [0-9]+
21 DIGIT_RANGE    [0-9]+-[0-9]+
22 ID             [a-zA-Z][a-zA-Z0-9]*
23 OID            [0-9]+\.[\.0-9]+
24 DATE           [0-9]{4}[01][0-9][0-3][0-9][0-2][0-9][0-6][0-9][0-6][0-9]
25 ZDATE          [0-9]{4}[01][0-9][0-3][0-9][0-2][0-9][0-6][0-9][0-6][0-9]Z
26 N_SP_STRING    [a-zA-Z0-9\:\|\.]+
30 {ZDATE}   {
31 parserStatus = crlgen_setNextData(parserData, yytext, CRLGEN_TYPE_ZDATE);
32 if (parserStatus != SECSuccess)
33     return parserStatus;
36 {DIGIT}   {
37 parserStatus = crlgen_setNextData(parserData, yytext, CRLGEN_TYPE_DIGIT);
38 if (parserStatus != SECSuccess)
39     return parserStatus;
42 {DIGIT_RANGE}  {
43 parserStatus = crlgen_setNextData(parserData, yytext, CRLGEN_TYPE_DIGIT_RANGE);
44 if (parserStatus != SECSuccess)
45     return parserStatus;
48 {OID}     {
49 parserStatus = crlgen_setNextData(parserData, yytext, CRLGEN_TYPE_OID);
50 if (parserStatus != SECSuccess)
51     return parserStatus;
54 issuer     {
55 parserStatus = crlgen_createNewLangStruct(parserData, CRLGEN_ISSUER_CONTEXT);
56 if (parserStatus != SECSuccess)
57     return parserStatus;
60 update     {
61 parserStatus = crlgen_createNewLangStruct(parserData, CRLGEN_UPDATE_CONTEXT);
62 if (parserStatus != SECSuccess)
63     return parserStatus;
65 nextupdate {
66 parserStatus = crlgen_createNewLangStruct(parserData, CRLGEN_NEXT_UPDATE_CONTEXT);
67 if (parserStatus != SECSuccess)
68     return parserStatus;
71 range      {
72 parserStatus = crlgen_createNewLangStruct(parserData, CRLGEN_CHANGE_RANGE_CONTEXT);
73 if (parserStatus != SECSuccess)
74     return parserStatus;
77 {ID}      {
78 if (strcmp(yytext, "addcert") == 0) {
79     parserStatus = crlgen_createNewLangStruct(parserData,
80                                     CRLGEN_ADD_CERT_CONTEXT);
81     if (parserStatus != SECSuccess)
82         return parserStatus;
83 } else if (strcmp(yytext, "rmcert") == 0) {
84     parserStatus = crlgen_createNewLangStruct(parserData,
85                                     CRLGEN_RM_CERT_CONTEXT);
86     if (parserStatus != SECSuccess)
87         return parserStatus;
88 } else if (strcmp(yytext, "addext") == 0) {
89     parserStatus = crlgen_createNewLangStruct(parserData,
90                                     CRLGEN_ADD_EXTENSION_CONTEXT);
91     if (parserStatus != SECSuccess)
92         return parserStatus;
93 } else {
94     parserStatus = crlgen_setNextData(parserData, yytext, CRLGEN_TYPE_ID);
95     if (parserStatus != SECSuccess)
96         return parserStatus;
102 \"[^\"]* {
103 if (yytext[yyleng-1] == '\\') {
104     yymore();
105 } else {
106     register int c;
107     c = input();
108     if (c != '\"') {
109         printf( "Error: Line ending \" is missing:  %c\n", c);
110         unput(c);
111     } else {
112         parserStatus = crlgen_setNextData(parserData, yytext + 1,
113                                           CRLGEN_TYPE_STRING);
114         if (parserStatus != SECSuccess)
115             return parserStatus;
116     }
120 {N_SP_STRING} {
121 parserStatus = crlgen_setNextData(parserData, yytext, CRLGEN_TYPE_STRING);
122 if (parserStatus != SECSuccess)
123     return parserStatus;
128 ^#[^\n]*     /* eat up one-line comments */ {}
130 [ \t]+      {}
132 (\n|\r\n)  {
133 parserStatus = crlgen_updateCrl(parserData);
134 if (parserStatus != SECSuccess)
135     return parserStatus;
138 .           {
139     fprintf(stderr, "Syntax error at line %d: unknown token %s\n",
140             parserData->parsedLineNum, yytext);
141     return SECFailure;
145 #include "prlock.h"
147 static PRLock *parserInvocationLock;
149 void CRLGEN_InitCrlGenParserLock()
151     parserInvocationLock = PR_NewLock();
154 void CRLGEN_DestroyCrlGenParserLock()
156     PR_DestroyLock(parserInvocationLock);
160 SECStatus CRLGEN_StartCrlGen(CRLGENGeneratorData *parserCtlData)
162     SECStatus rv;
164     PR_Lock(parserInvocationLock);
166     parserStatus = SECSuccess;
167     parserData = parserCtlData;
168     src = parserCtlData->src;
170     rv = yylex();
172     PR_Unlock(parserInvocationLock);
174     return rv;
177 int yywrap() {return 1;}