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

📄 url.y

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 Y
📖 第 1 页 / 共 2 页
字号:
				strcpy($$, "//");				strcat($$, $3);				strcat($$, "@");				strcat($$, $5);			}		}	;service_id: _RESNAME {	  $$ = strdup($1);	}        ;ipx_site: _IPX {			$$ = $1;		}	;at_site: _AT _ZONE ':' _ZONE ':' _ZONE {			if(NULL != ($$ = (char *)calloc(strlen($1) + strlen($2) + strlen($4) + strlen($6) + 3, sizeof(char))))			{				strcpy($$, $1);				strcat($$, $2);				strcat($$, ":");				strcat($$, $4);				strcat($$, ":");				strcat($$, $6);			}		}	;hostport: host {			$$ = $1;			}	|	host ':' _HEXDIG {			if ($1 != NULL)			{				if(NULL != ($$ = (char *)calloc(strlen($1) + strlen($3) + 2, sizeof(char))))				{					strcpy($$, $1);					strcat($$, ":");					strcat($$, $3);				}			}			else				$$ = NULL;			}	;host: _RESNAME {			$$ = $1;		}	|  _IPADDR {			$$ = $1;		}	;url_part: path_list {			;			}	|	attr_list {			;				}	|	path_list attr_list {			;		}	;path_list:	path_el {			$$ = &pathHead;			if ($1 != NULL)			{				_LSLP_INSERT_BEFORE($1, $$);			}		}	| path_list path_el {			$$ = &pathHead;			if ($2 != NULL)			{				_LSLP_INSERT_BEFORE($2, $$);			}		}	;path_el: '/' {			 /* dangling path slash - do nothing */			 $$ = NULL;			 }	|    '/' _ELEMENT  {			if(NULL != ($$ = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				$$->prev = $$->next = $$;				if(NULL != ($$->str = (char *)calloc(1 + strlen($2), sizeof(char))))				{					strcpy($$->str, $2);					$$->hash = lslpCheckSum($$->str, (int16)strlen($$->str));				}				else				{					free($$);					$$ = NULL;				}			}		}	|	 '/' _RESNAME  {			if(NULL != ($$ = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				$$->prev = $$->next = $$;				if(NULL != ($$->str = (char *)calloc(1 + strlen($2), sizeof(char))))				{					strcpy($$->str, $2);					$$->hash = lslpCheckSum($$->str, (int16)strlen($$->str));				}				else				{					free($$);					$$ = NULL;				}			}		}	| 	'/' _HEXDIG {			if(NULL != ($$ = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				$$->prev = $$->next = $$;				if(NULL != ($$->str = (char *)calloc(1 + strlen($2), sizeof(char))))				{					strcpy($$->str, $2);					$$->hash = lslpCheckSum($$->str, (int16)strlen($$->str));				}				else				{					free($$);					$$ = NULL;				}			}		}	;attr_list: attr_el {			$$ = &attrHead;			if ($1 != NULL)			{				_LSLP_INSERT_BEFORE($1, $$);			}		}	| attr_list attr_el {			$$ = &attrHead;			if ($2 != NULL)			{				_LSLP_INSERT_BEFORE($2, $$);			}		}	;attr_el: ';' _ELEMENT  {			if(NULL != ($$ = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				$$->prev = $$->next = $$;				if(NULL != ($$->str = (char *)calloc(1 + strlen($2), sizeof(char))))				{					strcpy($$->str, $2);					$$->hash = lslpCheckSum($$->str, (int16)strlen($$->str));				}				else				{					free($$);					$$ = NULL;				}			}		}	|  ';' _ELEMENT '=' _ELEMENT {			if(NULL != ($$ = (lslpAtomList *)calloc(1, sizeof(lslpAtomList))))			{				$$->prev = $$->next = $$;				if(NULL != ($$->str = (char *)calloc(2 + strlen($2) + strlen($4), sizeof(char))))				{					strcpy($$->str, $2);					strcat($$->str, "=");					strcat($$->str, $4);					$$->hash = lslpCheckSum($$->str, (int16)strlen($$->str));				}				else				{					free($$);					$$ = NULL;				}			}		}	;%% lslpAtomList *lslpAllocAtom(void){	lslpAtomList *temp = (lslpAtomList *)calloc(1, sizeof(lslpAtomList));	if (temp != NULL)	{		temp->next = temp->prev = temp;	}	return(temp);}	lslpAtomList *lslpAllocAtomList(void){	lslpAtomList *temp =lslpAllocAtom(); 	if (temp != NULL)		temp->isHead = TRUE;	return(temp);}	void lslpFreeAtom(lslpAtomList *a ){	assert(a != NULL);	if (a->str != NULL)		free(a->str);	free(a);	return;}	void lslpFreeAtomList(lslpAtomList *l, int32 flag){	lslpAtomList *temp;	assert(l != NULL);	assert(_LSLP_IS_HEAD(l));	while (! _LSLP_IS_EMPTY(l))	{		temp = l->next;		temp->prev->next = temp->next;		temp->next->prev = temp->prev; 		lslpFreeAtom(temp);	}	if (flag)		lslpFreeAtom(l);	return;}	lslpAtomizedURL *lslpAllocAtomizedURL(void){	lslpAtomizedURL *temp = (lslpAtomizedURL *)calloc(1, sizeof(lslpAtomizedURL));	if (temp != NULL)	{		temp->prev = temp->next = temp;	}	return(temp);}	lslpAtomizedURL *lslpAllocAtomizedURLList(void){	lslpAtomizedURL *temp = lslpAllocAtomizedURL();	if (temp != NULL)	{		temp->isHead = TRUE;	}	return(temp);}	void lslpFreeAtomizedURL(lslpAtomizedURL *u){	assert(u != NULL);	if (u->url != NULL)		free(u->url);	if (! _LSLP_IS_EMPTY(&(u->srvcs)))		lslpFreeAtomList(&(u->srvcs), 0);	if (! _LSLP_IS_EMPTY(&(u->site)))		lslpFreeAtomList(&(u->site), 0);	if (! _LSLP_IS_EMPTY(&(u->path)))		lslpFreeAtomList(&(u->path), 0);	if (!  _LSLP_IS_EMPTY(&(u->attrs)))		lslpFreeAtomList(&(u->attrs), 0);	free(u);	return;}	void lslpFreeAtomizedURLList(lslpAtomizedURL *l, int32 flag){	lslpAtomizedURL *temp;	assert(l != NULL);	assert(_LSLP_IS_HEAD(l));	while (! (_LSLP_IS_HEAD(l->next)))	{		temp = l->next;		temp->prev->next = temp->next;		temp->next->prev = temp->prev;		lslpFreeAtomizedURL(temp);	}	if (flag)		free(l);	return;}	void lslpInitAtomLists(void){	srvcHead.next = srvcHead.prev = &srvcHead;	siteHead.next = siteHead.prev = &siteHead;	pathHead.next = pathHead.prev = &pathHead;	attrHead.next = attrHead.prev = &attrHead;	return;}	void lslpInitURLList(void){	urlHead.next = urlHead.prev = &urlHead;	return;}	void lslpCleanUpURLLists(void){    lslpFreeAtomList(&srvcHead, 0);  lslpFreeAtomList(&siteHead, 0);  lslpFreeAtomList(&pathHead, 0);  lslpFreeAtomList(&attrHead, 0);  lslpFreeAtomizedURLList(&urlHead, 0);}lslpAtomizedURL *_lslpDecodeURLs(char *u[], int32 count){  int32 i;    uint32 lexer = 0;  lslpAtomizedURL *temp = NULL;  assert(u != NULL && u[count - 1] != NULL);  lslpInitURLList();  lslpInitAtomLists();    for (i = 0; i < count; i++) {    if (NULL == u[i])      break;    if((0 != (lexer = url_init_lexer(u[i])))) {      if(urlparse())	lslpCleanUpURLLists();      url_close_lexer(lexer);    }  }  if (! _LSLP_IS_EMPTY(&urlHead)) {    if(NULL != (temp = lslpAllocAtomizedURLList())) {      _LSLP_LINK_HEAD(temp, &urlHead);    }  }    return(temp);	}	 

⌨️ 快捷键说明

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