y_url.cpp

来自「Pegasus is an open-source implementation」· C++ 代码 · 共 1,826 行 · 第 1/4 页

CPP
1,826
字号
#endif#if YYDEBUG  /* We have to keep this `#if YYDEBUG', since we use variables which     are defined only if `YYDEBUG' is set.  */  if (yydebug)    {      int yyi;      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",		 yyn, yyrline[yyn]);      /* Print the symbols being reduced, and their result.  */      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);    }#endif  switch (yyn) {case 1:#line 85 "url.y"{			if (NULL != (yyval._aturl = (lslpAtomizedURL *)calloc(1, sizeof(lslpAtomizedURL))))			{				int32 urlLen = 1;				lslpAtomList *temp = srvcHead.next;				while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)				{					urlLen += strlen(temp->str);					temp = temp->next;				}				temp = siteHead.next;				while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)				{					urlLen += strlen(temp->str);					temp = temp->next;				}				temp = pathHead.next;				while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)				{					urlLen += strlen(temp->str) + 1;					temp = temp->next;				}				temp = attrHead.next;				while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)				{					urlLen += strlen(temp->str) + 1;					temp = temp->next;				}				if (NULL != (yyval._aturl->url = (char *)calloc(urlLen, sizeof(char))))				{					temp = srvcHead.next;					if (! _LSLP_IS_HEAD(temp) && temp->str != NULL)					{						strcpy(yyval._aturl->url, temp->str);						temp = temp->next;					}					while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)					{						strcat(yyval._aturl->url, temp->str);						temp = temp->next;					}					temp = siteHead.next;					while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)					{						strcat(yyval._aturl->url, temp->str);						temp = temp->next;					}					temp = pathHead.next;					while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)					{						strcat(yyval._aturl->url, "/");						strcat(yyval._aturl->url, temp->str);						temp = temp->next;					}					temp = attrHead.next;					while (! _LSLP_IS_HEAD(temp) && temp->str != NULL)					{						strcat(yyval._aturl->url, ";");						strcat(yyval._aturl->url, temp->str);						temp = temp->next;					}					yyval._aturl->urlHash = lslpCheckSum(yyval._aturl->url, (int16)strlen(yyval._aturl->url));				}				/* make certain the listheads are initialized */				yyval._aturl->srvcs.next = yyval._aturl->srvcs.prev = &(yyval._aturl->srvcs);				yyval._aturl->srvcs.isHead = TRUE;				yyval._aturl->site.next = yyval._aturl->site.prev = &(yyval._aturl->site);				yyval._aturl->site.isHead = TRUE;				yyval._aturl->path.next = yyval._aturl->path.prev = &(yyval._aturl->path);				yyval._aturl->path.isHead = TRUE;				yyval._aturl->attrs.next = yyval._aturl->attrs.prev = &(yyval._aturl->attrs);				yyval._aturl->attrs.isHead = TRUE;				if (! _LSLP_IS_EMPTY(&srvcHead ))				{					_LSLP_LINK_HEAD(&(yyval._aturl->srvcs), &srvcHead);				}				if (! _LSLP_IS_EMPTY(&siteHead))				{					_LSLP_LINK_HEAD(&(yyval._aturl->site), &siteHead);				}				if (! _LSLP_IS_EMPTY(&pathHead))				{					_LSLP_LINK_HEAD(&(yyval._aturl->path), &pathHead);				}				if (! _LSLP_IS_EMPTY(&attrHead))				{					_LSLP_LINK_HEAD(&(yyval._aturl->attrs), &attrHead);				}				_LSLP_INSERT_BEFORE(yyval._aturl, &urlHead);				lslpInitAtomLists();			}		;    break;}case 2:#line 179 "url.y"{			yyval._atl = &srvcHead;			if (yyvsp[0]._atl != NULL)			{				_LSLP_INSERT_BEFORE(yyvsp[0]._atl, yyval._atl);			}		;    break;}case 3:#line 187 "url.y"{			yyval._atl = &srvcHead;			if (yyvsp[0]._atl != NULL)			{				_LSLP_INSERT_BEFORE(yyvsp[0]._atl, yyval._atl);			}		;    break;}case 4:#line 196 "url.y"{			if (NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				yyval._atl->next = yyval._atl->prev = yyval._atl;				if (NULL != (yyval._atl->str = (char *)calloc(2 + strlen(yyvsp[-1]._s), sizeof(char))))				{					strcpy(yyval._atl->str, yyvsp[-1]._s);					strcat(yyval._atl->str, ":");						yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}				else				{					free(yyval._atl);					yyval._atl = NULL;				}			}		;    break;}case 5:#line 214 "url.y"{			if (NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				yyval._atl->next = yyval._atl->prev = yyval._atl;				if (NULL != (yyval._atl->str = (char *)calloc(3 + strlen(yyvsp[-3]._s) + strlen(yyvsp[-1]._s), sizeof(char))))				{					strcpy(yyval._atl->str, yyvsp[-3]._s);					strcat(yyval._atl->str, ".");					strcat(yyval._atl->str, yyvsp[-1]._s);					strcat(yyval._atl->str, ":");						yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}				else				{					free(yyval._atl);					yyval._atl = NULL;				}			}		;    break;}case 6:#line 236 "url.y"{			yyval._atl = &siteHead;			if (yyvsp[0]._atl != NULL)			{				_LSLP_INSERT_BEFORE(yyvsp[0]._atl, yyval._atl);			}		;    break;}case 7:#line 243 "url.y"{			yyval._atl = &siteHead;			if (yyvsp[-1]._atl != NULL)			{					_LSLP_INSERT_BEFORE(yyvsp[-1]._atl, yyval._atl);			}		;    break;}case 8:#line 252 "url.y"{			if (yyvsp[0]._s != NULL)			{				if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))				{					yyval._atl->next = yyval._atl->prev = yyval._atl;					yyval._atl->str = yyvsp[0]._s;					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}			}			else				yyval._atl = NULL;		;    break;}case 9:#line 265 "url.y"{			if (yyvsp[0]._s != NULL)			{				if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))				{					yyval._atl->next = yyval._atl->prev = yyval._atl;					yyval._atl->str = yyvsp[0]._s;					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}			}			else				yyval._atl = NULL;		;    break;}case 10:#line 278 "url.y"{			if (yyvsp[0]._s != NULL)			{				if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))				{					yyval._atl->next = yyval._atl->prev = yyval._atl;					yyval._atl->str = yyvsp[0]._s;					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}			}			else				yyval._atl = NULL;		;    break;}case 11:#line 292 "url.y"{  			if (yyvsp[0]._s != NULL)			{				if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))				{					yyval._atl->next = yyval._atl->prev = yyval._atl;					yyval._atl->str = yyvsp[0]._s;					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}			}			else				yyval._atl = NULL;  ;    break;}case 12:#line 310 "url.y"{			yyval._s = strdup("//");		;    break;}case 13:#line 313 "url.y"{			if(NULL != yyvsp[0]._s && (NULL !=(yyval._s = (char *)calloc(3 + strlen(yyvsp[0]._s), sizeof(char)))))			{				strcpy(yyval._s, "//");				strcat(yyval._s, yyvsp[0]._s);			}		;    break;}case 14:#line 321 "url.y"{			if(NULL != yyvsp[0]._s && (NULL !=(yyval._s = (char *)calloc(4 + strlen(yyvsp[-2]._s) + strlen(yyvsp[0]._s), sizeof(char)))))			{				strcpy(yyval._s, "//");				strcat(yyval._s, yyvsp[-2]._s);				strcat(yyval._s, "@");				strcat(yyval._s, yyvsp[0]._s);			}		;    break;}case 15:#line 332 "url.y"{	  yyval._s = strdup(yyvsp[0]._s);	;    break;}case 16:#line 337 "url.y"{			yyval._s = yyvsp[0]._s;		;    break;}case 17:#line 342 "url.y"{			if(NULL != (yyval._s = (char *)calloc(strlen(yyvsp[-5]._s) + strlen(yyvsp[-4]._s) + strlen(yyvsp[-2]._s) + strlen(yyvsp[0]._s) + 3, sizeof(char))))			{				strcpy(yyval._s, yyvsp[-5]._s);				strcat(yyval._s, yyvsp[-4]._s);				strcat(yyval._s, ":");				strcat(yyval._s, yyvsp[-2]._s);				strcat(yyval._s, ":");				strcat(yyval._s, yyvsp[0]._s);			}		;    break;}case 18:#line 355 "url.y"{			yyval._s = yyvsp[0]._s;			;    break;}case 19:#line 358 "url.y"{			if (yyvsp[-2]._s != NULL)			{				if(NULL != (yyval._s = (char *)calloc(strlen(yyvsp[-2]._s) + strlen(yyvsp[0]._s) + 2, sizeof(char))))				{					strcpy(yyval._s, yyvsp[-2]._s);					strcat(yyval._s, ":");					strcat(yyval._s, yyvsp[0]._s);				}			}			else				yyval._s = NULL;			;    break;}case 20:#line 373 "url.y"{			yyval._s = yyvsp[0]._s;		;    break;}case 21:#line 376 "url.y"{			yyval._s = yyvsp[0]._s;		;    break;}case 22:#line 381 "url.y"{			;			;    break;}case 23:#line 384 "url.y"{			;				;    break;}case 24:#line 387 "url.y"{			;		;    break;}case 25:#line 392 "url.y"{			yyval._atl = &pathHead;			if (yyvsp[0]._atl != NULL)			{				_LSLP_INSERT_BEFORE(yyvsp[0]._atl, yyval._atl);			}		;    break;}case 26:#line 399 "url.y"{			yyval._atl = &pathHead;			if (yyvsp[0]._atl != NULL)			{				_LSLP_INSERT_BEFORE(yyvsp[0]._atl, yyval._atl);			}		;    break;}case 27:#line 409 "url.y"{			 /* dangling path slash - do nothing */			 yyval._atl = NULL;			 ;    break;}case 28:#line 413 "url.y"{			if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				yyval._atl->prev = yyval._atl->next = yyval._atl;				if(NULL != (yyval._atl->str = (char *)calloc(1 + strlen(yyvsp[0]._s), sizeof(char))))				{					strcpy(yyval._atl->str, yyvsp[0]._s);					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}				else				{					free(yyval._atl);					yyval._atl = NULL;				}			}		;    break;}case 29:#line 431 "url.y"{			if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				yyval._atl->prev = yyval._atl->next = yyval._atl;				if(NULL != (yyval._atl->str = (char *)calloc(1 + strlen(yyvsp[0]._s), sizeof(char))))				{					strcpy(yyval._atl->str, yyvsp[0]._s);					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}				else				{					free(yyval._atl);					yyval._atl = NULL;				}			}		;    break;}case 30:#line 448 "url.y"{			if(NULL != (yyval._atl = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				yyval._atl->prev = yyval._atl->next = yyval._atl;				if(NULL != (yyval._atl->str = (char *)calloc(1 + strlen(yyvsp[0]._s), sizeof(char))))				{					strcpy(yyval._atl->str, yyvsp[0]._s);					yyval._atl->hash = lslpCheckSum(yyval._atl->str, (int16)strlen(yyval._atl->str));				}				else				{					free(yyval._atl);					yyval._atl = NULL;

⌨️ 快捷键说明

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