1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/cmd/modutil/installparse.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,433 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef lint 1.9 +char yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90"; 1.10 +#endif 1.11 +#line 37 "installparse.y" 1.12 + 1.13 +#define yyparse Pk11Install_yyparse 1.14 +#define yylex Pk11Install_yylex 1.15 +#define yyerror Pk11Install_yyerror 1.16 +#define yychar Pk11Install_yychar 1.17 +#define yyval Pk11Install_yyval 1.18 +#define yylval Pk11Install_yylval 1.19 +#define yydebug Pk11Install_yydebug 1.20 +#define yynerrs Pk11Install_yynerrs 1.21 +#define yyerrflag Pk11Install_yyerrflag 1.22 +#define yyss Pk11Install_yyss 1.23 +#define yyssp Pk11Install_yyssp 1.24 +#define yyvs Pk11Install_yyvs 1.25 +#define yyvsp Pk11Install_yyvsp 1.26 +#define yylhs Pk11Install_yylhs 1.27 +#define yylen Pk11Install_yylen 1.28 +#define yydefred Pk11Install_yydefred 1.29 +#define yydgoto Pk11Install_yydgoto 1.30 +#define yysindex Pk11Install_yysindex 1.31 +#define yyrindex Pk11Install_yyrindex 1.32 +#define yygindex Pk11Install_yygindex 1.33 +#define yytable Pk11Install_yytable 1.34 +#define yycheck Pk11Install_yycheck 1.35 +#define yyname Pk11Install_yyname 1.36 +#define yyrule Pk11Install_yyrule 1.37 + 1.38 +/* C Stuff */ 1.39 +#include "install-ds.h" 1.40 +#include <prprf.h> 1.41 + 1.42 +#define YYSTYPE Pk11Install_Pointer 1.43 +extern char *Pk11Install_yytext; 1.44 +char *Pk11Install_yyerrstr=NULL; 1.45 + 1.46 +#line 40 "ytab.c" 1.47 +#define OPENBRACE 257 1.48 +#define CLOSEBRACE 258 1.49 +#define STRING 259 1.50 +#define YYERRCODE 256 1.51 +short yylhs[] = { -1, 1.52 + 0, 1, 1, 2, 2, 3, 4, 1.53 +}; 1.54 +short yylen[] = { 2, 1.55 + 1, 2, 0, 1, 1, 4, 1, 1.56 +}; 1.57 +short yydefred[] = { 0, 1.58 + 0, 0, 1, 0, 4, 0, 2, 0, 0, 6, 1.59 +}; 1.60 +short yydgoto[] = { 2, 1.61 + 3, 4, 5, 6, 1.62 +}; 1.63 +short yysindex[] = { -257, 1.64 + 0, 0, 0, -257, 0, -252, 0, -257, -251, 0, 1.65 +}; 1.66 +short yyrindex[] = { 6, 1.67 + 1, 0, 0, 3, 0, 0, 0, -250, 0, 0, 1.68 +}; 1.69 +short yygindex[] = { 0, 1.70 + -4, 0, 0, 0, 1.71 +}; 1.72 +#define YYTABLESIZE 261 1.73 +short yytable[] = { 7, 1.74 + 5, 1, 3, 9, 8, 3, 10, 3, 0, 0, 1.75 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.76 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.77 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.78 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.79 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.80 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.81 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.82 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.83 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.84 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.85 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.86 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.87 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.88 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.89 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.90 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.91 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.92 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.93 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.94 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.95 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.96 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.97 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.98 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.99 + 0, 0, 0, 0, 0, 0, 0, 7, 5, 5, 1.100 + 3, 1.101 +}; 1.102 +short yycheck[] = { 4, 1.103 + 0, 259, 0, 8, 257, 0, 258, 258, -1, -1, 1.104 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.105 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.106 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.107 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.108 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.109 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.110 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.111 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.112 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.113 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.114 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.115 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.116 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.117 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.118 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.119 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.120 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.121 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.122 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.123 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.124 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.125 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.126 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.127 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1.128 + -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 1.129 + 258, 1.130 +}; 1.131 +#define YYFINAL 2 1.132 +#ifndef YYDEBUG 1.133 +#define YYDEBUG 0 1.134 +#endif 1.135 +#define YYMAXTOKEN 259 1.136 +#if YYDEBUG 1.137 +char *yyname[] = { 1.138 +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1.139 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1.140 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1.141 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1.142 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1.143 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1.144 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"OPENBRACE","CLOSEBRACE","STRING", 1.145 +}; 1.146 +char *yyrule[] = { 1.147 +"$accept : toplist", 1.148 +"toplist : valuelist", 1.149 +"valuelist : value valuelist", 1.150 +"valuelist :", 1.151 +"value : key_value_pair", 1.152 +"value : STRING", 1.153 +"key_value_pair : key OPENBRACE valuelist CLOSEBRACE", 1.154 +"key : STRING", 1.155 +}; 1.156 +#endif 1.157 +#ifndef YYSTYPE 1.158 +typedef int YYSTYPE; 1.159 +#endif 1.160 +#define yyclearin (yychar=(-1)) 1.161 +#define yyerrok (yyerrflag=0) 1.162 +#ifndef YYSTACKSIZE 1.163 +#ifdef YYMAXDEPTH 1.164 +#define YYSTACKSIZE YYMAXDEPTH 1.165 +#else 1.166 +#define YYSTACKSIZE 300 1.167 +#endif 1.168 +#endif 1.169 +int yydebug; 1.170 +int yynerrs; 1.171 +int yyerrflag; 1.172 +int yychar; 1.173 +short *yyssp; 1.174 +YYSTYPE *yyvsp; 1.175 +YYSTYPE yyval; 1.176 +YYSTYPE yylval; 1.177 +#define yystacksize YYSTACKSIZE 1.178 +short yyss[YYSTACKSIZE]; 1.179 +YYSTYPE yyvs[YYSTACKSIZE]; 1.180 +#line 118 "installparse.y" 1.181 +/*----------------------- Program Section --------------------------------*/ 1.182 + 1.183 +/*************************************************************************/ 1.184 +void 1.185 +Pk11Install_yyerror(char *message) 1.186 +{ 1.187 + char *tmp; 1.188 + if(Pk11Install_yyerrstr) { 1.189 + tmp=PR_smprintf("%sline %d: %s\n", Pk11Install_yyerrstr, 1.190 + Pk11Install_yylinenum, message); 1.191 + PR_smprintf_free(Pk11Install_yyerrstr); 1.192 + } else { 1.193 + tmp = PR_smprintf("line %d: %s\n", Pk11Install_yylinenum, message); 1.194 + } 1.195 + Pk11Install_yyerrstr=tmp; 1.196 +} 1.197 +#line 191 "ytab.c" 1.198 +#define YYABORT goto yyabort 1.199 +#define YYACCEPT goto yyaccept 1.200 +#define YYERROR goto yyerrlab 1.201 +int 1.202 +yyparse() 1.203 +{ 1.204 + register int yym, yyn, yystate; 1.205 +#if YYDEBUG 1.206 + register char *yys; 1.207 + extern char *getenv(); 1.208 + 1.209 + if (yys = getenv("YYDEBUG")) 1.210 + { 1.211 + yyn = *yys; 1.212 + if (yyn >= '0' && yyn <= '9') 1.213 + yydebug = yyn - '0'; 1.214 + } 1.215 +#endif 1.216 + 1.217 + yynerrs = 0; 1.218 + yyerrflag = 0; 1.219 + yychar = (-1); 1.220 + 1.221 + yyssp = yyss; 1.222 + yyvsp = yyvs; 1.223 + *yyssp = yystate = 0; 1.224 + 1.225 +yyloop: 1.226 + if (yyn = yydefred[yystate]) goto yyreduce; 1.227 + if (yychar < 0) 1.228 + { 1.229 + if ((yychar = yylex()) < 0) yychar = 0; 1.230 +#if YYDEBUG 1.231 + if (yydebug) 1.232 + { 1.233 + yys = 0; 1.234 + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1.235 + if (!yys) yys = "illegal-symbol"; 1.236 + printf("yydebug: state %d, reading %d (%s)\n", yystate, 1.237 + yychar, yys); 1.238 + } 1.239 +#endif 1.240 + } 1.241 + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 1.242 + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 1.243 + { 1.244 +#if YYDEBUG 1.245 + if (yydebug) 1.246 + printf("yydebug: state %d, shifting to state %d\n", 1.247 + yystate, yytable[yyn]); 1.248 +#endif 1.249 + if (yyssp >= yyss + yystacksize - 1) 1.250 + { 1.251 + goto yyoverflow; 1.252 + } 1.253 + *++yyssp = yystate = yytable[yyn]; 1.254 + *++yyvsp = yylval; 1.255 + yychar = (-1); 1.256 + if (yyerrflag > 0) --yyerrflag; 1.257 + goto yyloop; 1.258 + } 1.259 + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 1.260 + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 1.261 + { 1.262 + yyn = yytable[yyn]; 1.263 + goto yyreduce; 1.264 + } 1.265 + if (yyerrflag) goto yyinrecovery; 1.266 +#ifdef lint 1.267 + goto yynewerror; 1.268 +yynewerror: 1.269 +#endif 1.270 + yyerror("syntax error"); 1.271 +#ifdef lint 1.272 + goto yyerrlab; 1.273 +yyerrlab: 1.274 +#endif 1.275 + ++yynerrs; 1.276 +yyinrecovery: 1.277 + if (yyerrflag < 3) 1.278 + { 1.279 + yyerrflag = 3; 1.280 + for (;;) 1.281 + { 1.282 + if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && 1.283 + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 1.284 + { 1.285 +#if YYDEBUG 1.286 + if (yydebug) 1.287 + printf("yydebug: state %d, error recovery shifting\ 1.288 + to state %d\n", *yyssp, yytable[yyn]); 1.289 +#endif 1.290 + if (yyssp >= yyss + yystacksize - 1) 1.291 + { 1.292 + goto yyoverflow; 1.293 + } 1.294 + *++yyssp = yystate = yytable[yyn]; 1.295 + *++yyvsp = yylval; 1.296 + goto yyloop; 1.297 + } 1.298 + else 1.299 + { 1.300 +#if YYDEBUG 1.301 + if (yydebug) 1.302 + printf("yydebug: error recovery discarding state %d\n", 1.303 + *yyssp); 1.304 +#endif 1.305 + if (yyssp <= yyss) goto yyabort; 1.306 + --yyssp; 1.307 + --yyvsp; 1.308 + } 1.309 + } 1.310 + } 1.311 + else 1.312 + { 1.313 + if (yychar == 0) goto yyabort; 1.314 +#if YYDEBUG 1.315 + if (yydebug) 1.316 + { 1.317 + yys = 0; 1.318 + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1.319 + if (!yys) yys = "illegal-symbol"; 1.320 + printf("yydebug: state %d, error recovery discards token %d (%s)\n", 1.321 + yystate, yychar, yys); 1.322 + } 1.323 +#endif 1.324 + yychar = (-1); 1.325 + goto yyloop; 1.326 + } 1.327 +yyreduce: 1.328 +#if YYDEBUG 1.329 + if (yydebug) 1.330 + printf("yydebug: state %d, reducing by rule %d (%s)\n", 1.331 + yystate, yyn, yyrule[yyn]); 1.332 +#endif 1.333 + yym = yylen[yyn]; 1.334 + yyval = yyvsp[1-yym]; 1.335 + switch (yyn) 1.336 + { 1.337 +case 1: 1.338 +#line 84 "installparse.y" 1.339 +{ 1.340 + Pk11Install_valueList = yyvsp[0].list; 1.341 +} 1.342 +break; 1.343 +case 2: 1.344 +#line 89 "installparse.y" 1.345 +{ 1.346 + Pk11Install_ValueList_AddItem(yyvsp[0].list,yyvsp[-1].value); 1.347 + yyval .list = yyvsp[0].list; 1.348 +} 1.349 +break; 1.350 +case 3: 1.351 +#line 94 "installparse.y" 1.352 +{ 1.353 + yyval .list = Pk11Install_ValueList_new(); 1.354 +} 1.355 +break; 1.356 +case 4: 1.357 +#line 99 "installparse.y" 1.358 +{ 1.359 + yyval .value= Pk11Install_Value_new(PAIR_VALUE,yyvsp[0]); 1.360 +} 1.361 +break; 1.362 +case 5: 1.363 +#line 103 "installparse.y" 1.364 +{ 1.365 + yyval .value= Pk11Install_Value_new(STRING_VALUE, yyvsp[0]); 1.366 +} 1.367 +break; 1.368 +case 6: 1.369 +#line 108 "installparse.y" 1.370 +{ 1.371 + yyval .pair = Pk11Install_Pair_new(yyvsp[-3].string,yyvsp[-1].list); 1.372 +} 1.373 +break; 1.374 +case 7: 1.375 +#line 113 "installparse.y" 1.376 +{ 1.377 + yyval .string = yyvsp[0].string; 1.378 +} 1.379 +break; 1.380 +#line 374 "ytab.c" 1.381 + } 1.382 + yyssp -= yym; 1.383 + yystate = *yyssp; 1.384 + yyvsp -= yym; 1.385 + yym = yylhs[yyn]; 1.386 + if (yystate == 0 && yym == 0) 1.387 + { 1.388 +#ifdef YYDEBUG 1.389 + if (yydebug) 1.390 + printf("yydebug: after reduction, shifting from state 0 to\ 1.391 + state %d\n", YYFINAL); 1.392 +#endif 1.393 + yystate = YYFINAL; 1.394 + *++yyssp = YYFINAL; 1.395 + *++yyvsp = yyval; 1.396 + if (yychar < 0) 1.397 + { 1.398 + if ((yychar = yylex()) < 0) yychar = 0; 1.399 +#if YYDEBUG 1.400 + if (yydebug) 1.401 + { 1.402 + yys = 0; 1.403 + if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1.404 + if (!yys) yys = "illegal-symbol"; 1.405 + printf("yydebug: state %d, reading %d (%s)\n", 1.406 + YYFINAL, yychar, yys); 1.407 + } 1.408 +#endif 1.409 + } 1.410 + if (yychar == 0) goto yyaccept; 1.411 + goto yyloop; 1.412 + } 1.413 + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 1.414 + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 1.415 + yystate = yytable[yyn]; 1.416 + else 1.417 + yystate = yydgoto[yym]; 1.418 +#ifdef YYDEBUG 1.419 + if (yydebug) 1.420 + printf("yydebug: after reduction, shifting from state %d \ 1.421 +to state %d\n", *yyssp, yystate); 1.422 +#endif 1.423 + if (yyssp >= yyss + yystacksize - 1) 1.424 + { 1.425 + goto yyoverflow; 1.426 + } 1.427 + *++yyssp = yystate; 1.428 + *++yyvsp = yyval; 1.429 + goto yyloop; 1.430 +yyoverflow: 1.431 + yyerror("yacc stack overflow"); 1.432 +yyabort: 1.433 + return (1); 1.434 +yyaccept: 1.435 + return (0); 1.436 +}