⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msi_ros.diff

📁 winNT技术操作系统,国外开放的原代码和LIUX一样
💻 DIFF
📖 第 1 页 / 共 5 页
字号:
+    break;
+
+  case 19:
+#line 230 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_lt_i;
+        ;}
+    break;
+
+  case 20:
+#line 234 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_gt_i;
+        ;}
+    break;
+
+  case 21:
+#line 238 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_le_i;
+        ;}
+    break;
+
+  case 22:
+#line 242 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_ge_i;
+        ;}
+    break;
+
+  case 23:
+#line 247 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_bitand;
+        ;}
+    break;
+
+  case 24:
+#line 251 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_highcomp;
+        ;}
+    break;
+
+  case 25:
+#line 255 "./cond.y"
+    {
+            yyval.fn_comp_int = comp_lowcomp;
+        ;}
+    break;
+
+  case 26:
+#line 263 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_eq_s;
+        ;}
+    break;
+
+  case 27:
+#line 267 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_ne_s;
+        ;}
+    break;
+
+  case 28:
+#line 271 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_lt_s;
+        ;}
+    break;
+
+  case 29:
+#line 275 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_gt_s;
+        ;}
+    break;
+
+  case 30:
+#line 279 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_le_s;
+        ;}
+    break;
+
+  case 31:
+#line 283 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_ge_s;
+        ;}
+    break;
+
+  case 32:
+#line 288 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_substring;
+        ;}
+    break;
+
+  case 33:
+#line 292 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_start;
+        ;}
+    break;
+
+  case 34:
+#line 296 "./cond.y"
+    {
+            yyval.fn_comp_str = comp_end;
+        ;}
+    break;
+
+  case 35:
+#line 304 "./cond.y"
+    {
+            yyval.fn_comp_m1 = comp_eq_m1;
+        ;}
+    break;
+
+  case 36:
+#line 308 "./cond.y"
+    {
+            yyval.fn_comp_m1 = comp_ne_m1;
+        ;}
+    break;
+
+  case 37:
+#line 312 "./cond.y"
+    {
+            yyval.fn_comp_m1 = comp_lt_m1;
+        ;}
+    break;
+
+  case 38:
+#line 316 "./cond.y"
+    {
+            yyval.fn_comp_m1 = comp_gt_m1;
+        ;}
+    break;
+
+  case 39:
+#line 320 "./cond.y"
+    {
+            yyval.fn_comp_m1 = comp_le_m1;
+        ;}
+    break;
+
+  case 40:
+#line 324 "./cond.y"
+    {
+            yyval.fn_comp_m1 = comp_ge_m1;
+        ;}
+    break;
+
+  case 41:
+#line 329 "./cond.y"
+    {
+            yyval.fn_comp_m1 = 0;
+        ;}
+    break;
+
+  case 42:
+#line 333 "./cond.y"
+    {
+            yyval.fn_comp_m1 = 0;
+        ;}
+    break;
+
+  case 43:
+#line 337 "./cond.y"
+    {
+            yyval.fn_comp_m1 = 0;
+        ;}
+    break;
+
+  case 44:
+#line 345 "./cond.y"
+    {
+            yyval.fn_comp_m2 = comp_eq_m2;
+        ;}
+    break;
+
+  case 45:
+#line 349 "./cond.y"
+    {
+            yyval.fn_comp_m2 = comp_ne_m2;
+        ;}
+    break;
+
+  case 46:
+#line 353 "./cond.y"
+    {
+            yyval.fn_comp_m2 = comp_lt_m2;
+        ;}
+    break;
+
+  case 47:
+#line 357 "./cond.y"
+    {
+            yyval.fn_comp_m2 = comp_gt_m2;
+        ;}
+    break;
+
+  case 48:
+#line 361 "./cond.y"
+    {
+            yyval.fn_comp_m2 = comp_le_m2;
+        ;}
+    break;
+
+  case 49:
+#line 365 "./cond.y"
+    {
+            yyval.fn_comp_m2 = comp_ge_m2;
+        ;}
+    break;
+
+  case 50:
+#line 370 "./cond.y"
+    {
+            yyval.fn_comp_m2 = 0;
+        ;}
+    break;
+
+  case 51:
+#line 374 "./cond.y"
+    {
+            yyval.fn_comp_m2 = 0;
+        ;}
+    break;
+
+  case 52:
+#line 378 "./cond.y"
+    {
+            yyval.fn_comp_m2 = 0;
+        ;}
+    break;
+
+  case 53:
+#line 385 "./cond.y"
+    {
+            yyval.value = yyvsp[0].value;
+        ;}
+    break;
+
+  case 54:
+#line 389 "./cond.y"
+    {
+            yyval.value = yyvsp[0].value;
+        ;}
+    break;
+
+  case 55:
+#line 396 "./cond.y"
+    {
+        yyval.string = yyvsp[0].string;
+    ;}
+    break;
+
+  case 56:
+#line 400 "./cond.y"
+    {
+        yyval.string = yyvsp[0].string;
+    ;}
+    break;
+
+  case 57:
+#line 407 "./cond.y"
+    {
+            yyval.string = COND_GetLiteral(&yyvsp[0].str);
+            if( !yyval.string )
+                YYABORT;
+        ;}
+    break;
+
+  case 58:
+#line 416 "./cond.y"
+    {
+            COND_input* cond = (COND_input*) info;
+            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
+      
+            MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action );
+            yyval.value = action;
+            msi_free( yyvsp[0].string );
+        ;}
+    break;
+
+  case 59:
+#line 425 "./cond.y"
+    {
+            COND_input* cond = (COND_input*) info;
+            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
+      
+            MSI_GetComponentStateW(cond->package, yyvsp[0].string, &install, &action );
+            yyval.value = install;
+            msi_free( yyvsp[0].string );
+        ;}
+    break;
+
+  case 60:
+#line 434 "./cond.y"
+    {
+            COND_input* cond = (COND_input*) info;
+            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
+      
+            MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action );
+            yyval.value = action;
+            msi_free( yyvsp[0].string );
+        ;}
+    break;
+
+  case 61:
+#line 443 "./cond.y"
+    {
+            COND_input* cond = (COND_input*) info;
+            INSTALLSTATE install = INSTALLSTATE_UNKNOWN, action = INSTALLSTATE_UNKNOWN;
+      
+            MSI_GetFeatureStateW(cond->package, yyvsp[0].string, &install, &action );
+            yyval.value = install;
+            msi_free( yyvsp[0].string );
+        ;}
+    break;
+
+  case 62:
+#line 455 "./cond.y"
+    {
+            DWORD sz;
+            COND_input* cond = (COND_input*) info;
+
+            sz = 0;
+            MSI_GetPropertyW(cond->package, yyvsp[0].string, NULL, &sz);
+            if (sz == 0)
+            {
+                yyval.string = msi_alloc( sizeof(WCHAR));
+                yyval.string[0] = 0;
+            }
+            else
+            {
+                sz ++;
+                yyval.string = msi_alloc( sz*sizeof (WCHAR) );
+
+                /* Lookup the identifier */
+
+                MSI_GetPropertyW(cond->package,yyvsp[0].string,yyval.string,&sz);
+            }
+            msi_free( yyvsp[0].string );
+        ;}
+    break;
+
+  case 63:
+#line 478 "./cond.y"
+    {
+            UINT len = GetEnvironmentVariableW( yyvsp[0].string, NULL, 0 );
+            if( len++ )
+            {
+                yyval.string = msi_alloc( len*sizeof (WCHAR) );
+                if( yyval.string )
+                    GetEnvironmentVariableW( yyvsp[0].string, yyval.string, len );
+            }
+            msi_free( yyvsp[0].string );
+        ;}
+    break;
+
+  case 64:
+#line 492 "./cond.y"
+    {
+            yyval.string = COND_GetString(&yyvsp[0].str);
+            if( !yyval.string )
+                YYABORT;
+        ;}
+    break;
+
+  case 65:
+#line 501 "./cond.y"
+    {
+            LPWSTR szNum = COND_GetString(&yyvsp[0].str);
+            if( !szNum )
+                YYABORT;
+            yyval.value = atoiW( szNum );
+            msi_free( szNum );
+        ;}
+    break;
+
+
+    }
+
+/* Line 1000 of yacc.c.  */
+#line 1733 "cond.tab.c"
+
+  yyvsp -= yylen;
+  yyssp -= yylen;
+
+
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if YYERROR_VERBOSE
+      yyn = yypact[yystate];
+
+      if (YYPACT_NINF < yyn && yyn < YYLAST)
+	{
+	  YYSIZE_T yysize = 0;
+	  int yytype = YYTRANSLATE (yychar);
+	  const char* yyprefix;
+	  char *yymsg;
+	  int yyx;
+
+	  /* Start YYX at -YYN if negative to avoid negative indexes in
+	     YYCHECK.  */
+	  int yyxbegin = yyn < 0 ? -yyn : 0;
+
+	  /* Stay within bounds of both yycheck and yytname.  */
+	  int yychecklim = YYLAST - yyn;
+	  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+	  int yycount = 0;
+
+	  yyprefix = ", expecting ";
+	  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	      {
+		yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+		yycount += 1;
+		if (yycount == 5)
+		  {
+		    yysize = 0;
+		    break;
+		  }
+	      }
+	  yysize += (sizeof ("syntax error, unexpected ")
+		     + yystrlen (yytname[yytype]));
+	  yymsg = (char *) YYSTACK_ALLOC (yysize);
+	  if (yymsg != 0)
+	    {
+	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -