亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? pssuaprofparser.c

?? 移動(dòng)流媒體同步服務(wù)器模塊
?? C
字號(hào):
/********************************************************************
Copyright(C), 2006, Wuhan Hongxu Information Technologies Co., Ltd.
Filename   : pssUaprofParser.c
Description: uaprof parser program.
Author     : YangJun
Version    : Initial version
Date       : 2006年12月
History    :
<author>     <time>     <version >     <desc>
********************************************************************/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <expat.h>
#include "StreamDBMsgDefs.h"
#include "pssUaprofParser.h"

/*終端能力信息文件命名空間*/
#define XMLNS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
#define XMLNS_PRF "http://www.openmobilealliance.org/tech/profiles/UAPROF/ccppschema-20021212#"
#define XMLNS_PSS5 "http://www.3gpp.org/profiles/PSS/ccppschema-PSS5"
#define XMLNS_PSS6 "http://www.3gpp.org/profiles/PSS/ccppschema-PSS6"

/*流媒體終端能力組件*/
#define PSS5_COMPONENT_STREAMING     "Streaming"
#define PSS6_COMPONENT_COMMON        "PssCommon"
#define PSS6_COMPONENT_STREAMING     "Streaming"
#define PSS6_COMPONENT_3GP_FILE      "ThreeGPFileFormat"

/*流媒體終端能力屬性*/
#define PSS_PROPERTY_PSSVERSION         "PssVersion"
#define PSS_PROPERTY_SCREENSIZE         "RenderingScreenSize"
#define PSS5_PROPERTY_PSSACCEPT         "PssAccept"
#define PSS6_PROPERTY_STREAMING_ACCEPT  "StreamingAccept"
#define PSS6_PROPERTY_3GP_ACCEPT        "ThreeGPAccept"
#define PSS6_PROPERTY_BRANDS            "Brands"

/*終端能力硬件屬性*/
#define UAPROF_MODEL        "Model"

/*其他終端能力信息文件通用屬性*/
#define UAPROF_RDF_BAG      "Bag"
#define UAPROF_RDF_LI       "li"

/*流媒體終端能力信息文件版本*/
#define PSS_VERSION_5       5
#define PSS_VERSION_6       6
#define PSS_VERSION_UNKNOWN 7

#define THREEGP_R5        "3GPP-R5"
#define THREEGP_R6        "3GPP-R6"

#define MAX_XMLNS_LEN        16
typedef struct _pss_uaprof_parser_context_t
{
    pss_uaprof_t        *pPssUaProf;
    XML_Parser          parser;
    char                xmlnsRdf[MAX_XMLNS_LEN];
    char                xmlnsPrf[MAX_XMLNS_LEN];
    char                xmlnsPss5[MAX_XMLNS_LEN];
    char                xmlnsPss6[MAX_XMLNS_LEN];
    unsigned int        parserStatus;
    XML_Bool            isPss5PssAcept;
    XML_Bool            isPss6StreamingAccept;
    XML_Bool            isPss6Brands;
    XML_Bool            isPss63GPAccept;
    XML_Bool            isRootElement;
    XML_Bool            isBagLi;
    XML_Bool            isPssVersion;
    XML_Bool            isScreenSize;
    XML_Bool            isModel;
    char                pssVersion;/*PSS_VERSION_5,PSS_VERSION_6*/
}pss_uaprof_parser_context_t;

static void XMLCALL
startUaprofElement(void *userData, const char *name, const char **atts)
{
    pss_uaprof_parser_context_t *pCtx=(pss_uaprof_parser_context_t*)userData;
    int i;
    char temp[128];

    /*在根元素中確定各相關(guān)命名空間的值*/
    if (XML_TRUE==pCtx->isRootElement)
    {
        for (i=0;atts[i];i=i+2)
        {
            if (strlen(atts[i])>MAX_XMLNS_LEN+5)/*去掉"xmlns:"后長(zhǎng)度不能超過(guò)MAX_XMLNS_LEN-1*/
            {
                pCtx->parserStatus=UAPROF_PARSER_OVERFLOW;
                XML_StopParser(pCtx->parser,XML_FALSE);
                return;
            }
            if (0==strcmp(atts[i+1],XMLNS_RDF))
            {
                strcpy(pCtx->xmlnsRdf,atts[i]+strlen("xmlns:"));
                continue;
            }
            if (0==strcmp(atts[i+1],XMLNS_PRF))
            {
                strcpy(pCtx->xmlnsPrf,atts[i]+strlen("xmlns:"));
                continue;
            }
            if (0==strcmp(atts[i+1],XMLNS_PSS5))
            {
                strcpy(pCtx->xmlnsPss5,atts[i]+strlen("xmlns:"));
                continue;
            }
            if (0==strcmp(atts[i+1],XMLNS_PSS6))
            {
                strcpy(pCtx->xmlnsPss5,atts[i]+strlen("xmlns:"));
                continue;
            }
        }
        pCtx->isRootElement=XML_FALSE;
        return;
    }

    /*記錄當(dāng)前分析到哪個(gè)元素*/
    sprintf(temp,"%s:%s",pCtx->xmlnsPrf,UAPROF_MODEL);
    if (0==strcmp(name,temp))/*prf:Model*/
    {
        pCtx->isModel=XML_TRUE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss5,PSS5_PROPERTY_PSSACCEPT);
    if (0==strcmp(name,temp))/*pss5:PssAccept*/
    {
        pCtx->isPss5PssAcept=XML_TRUE;
        return;
    }
    if (NULL!=strstr(name,PSS_PROPERTY_SCREENSIZE))/*pss5:RenderingScreenSize或者pss6:RenderingScreenSize*/
    {
        pCtx->isScreenSize=XML_TRUE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss6,PSS6_PROPERTY_STREAMING_ACCEPT);
    if (0==strcmp(name,temp))/*pss6:StreamingAccept*/
    {
        pCtx->isPss6StreamingAccept=XML_TRUE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss6,PSS6_PROPERTY_BRANDS);
    if (0==strcmp(name,temp))/*pss6:Brands*/
    {
        pCtx->isPss6Brands=XML_TRUE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss6,PSS6_PROPERTY_3GP_ACCEPT);
    if (0==strcmp(name,temp))/*pss6:ThreeGPAccept*/
    {
        pCtx->isPss63GPAccept=XML_TRUE;
        return;
    }
    if (NULL!=strstr(name,PSS_PROPERTY_PSSVERSION))/*pss5:PssVersion 或者 pss6:PssVersion*/
    {
        pCtx->isPssVersion=XML_TRUE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsRdf,"li");
    if (0==strcmp(name,temp))/*rdf:li*/
    {
        pCtx->isBagLi=XML_TRUE;
        return;
    }
}

static void XMLCALL
endUaprofElement(void *userData,const XML_Char *name)
{
    pss_uaprof_parser_context_t *pCtx=(pss_uaprof_parser_context_t*)userData;
    char temp[128];

    /*退出當(dāng)前元素的處理,與進(jìn)入時(shí)的賦值正好相反*/
    sprintf(temp,"%s:%s",pCtx->xmlnsPrf,UAPROF_MODEL);
    if (0==strcmp(name,temp))/*prf:Model*/
    {
        pCtx->isModel=XML_FALSE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss5,PSS5_PROPERTY_PSSACCEPT);
    if (0==strcmp(name,temp))/*pss5:PssAccept*/
    {
        pCtx->isPss5PssAcept=XML_FALSE;
        return;
    }
    if (NULL!=strstr(name,PSS_PROPERTY_SCREENSIZE))/*pss5:RenderingScreenSize或者pss6:RenderingScreenSize*/
    {
        pCtx->isScreenSize=XML_FALSE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss6,PSS6_PROPERTY_STREAMING_ACCEPT);
    if (0==strcmp(name,temp))/*pss6:StreamingAccept*/
    {
        pCtx->isPss6StreamingAccept=XML_FALSE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss6,PSS6_PROPERTY_BRANDS);
    if (0==strcmp(name,temp))/*pss6:Brands*/
    {
        pCtx->isPss6Brands=XML_FALSE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsPss6,PSS6_PROPERTY_3GP_ACCEPT);
    if (0==strcmp(name,temp))/*pss6:ThreeGPAccept*/
    {
        pCtx->isPss63GPAccept=XML_FALSE;
        return;
    }
    if (NULL!=strstr(name,PSS_PROPERTY_PSSVERSION))/*pss5:PssVersion 或者 pss6:PssVersion*/
    {
        pCtx->isPssVersion=XML_FALSE;
        return;
    }
    sprintf(temp,"%s:%s",pCtx->xmlnsRdf,"li");
    if (0==strcmp(name,temp))/*rdf:li*/
    {
        pCtx->isBagLi=XML_FALSE;
        return;
    }
}

#define MAX_CHAR_DATA_LEN        255

/*
處理UaProf文件中元素的文本內(nèi)容
*/
static void XMLCALL
UaprofCharDataHandler(void *userData, const char *name, int len)
{
    pss_uaprof_parser_context_t *pCtx=(pss_uaprof_parser_context_t*)userData;
    char charData[MAX_CHAR_DATA_LEN];        /*保存文本內(nèi)容*/
    char width[8];                           /*屏幕寬度字符串*/
    char hight[8];                           /*屏幕高度字符串*/
    char *p;
    int nPos;

    if (len>MAX_CHAR_DATA_LEN)
    {
        /*當(dāng)數(shù)據(jù)長(zhǎng)度過(guò)大時(shí),溢出*/
        pCtx->parserStatus=UAPROF_PARSER_OVERFLOW;
        XML_StopParser(pCtx->parser,XML_FALSE);
        return;
    }
    memset(charData,'\0',MAX_CHAR_DATA_LEN);
    memcpy(charData,name,len);

    /*不同的元素進(jìn)行不同的處理*/
    if (XML_TRUE==pCtx->isBagLi)
    {
        /*rdf:li元素處理*/
        if (XML_TRUE==pCtx->isPss5PssAcept || XML_TRUE==pCtx->isPss6StreamingAccept)
        {
            /*當(dāng)前元素是pss5:PssAccept或者pss6:StreamingAccept元素的子元素*/
            if (strlen(pCtx->pPssUaProf->pssStreaming.streamingAccept)+len+1>MAX_PSS_STREAMING_ACCEPT_LEN-1)
            {
                pCtx->parserStatus=UAPROF_PARSER_OVERFLOW;
                XML_StopParser(pCtx->parser,XML_FALSE);
                return;
            }
            if (strlen(pCtx->pPssUaProf->pssStreaming.streamingAccept)>0)
            {
                strcat(pCtx->pPssUaProf->pssStreaming.streamingAccept,",");
            }
            strcat(pCtx->pPssUaProf->pssStreaming.streamingAccept,charData);
            return;
        }
        if (XML_TRUE==pCtx->isPss63GPAccept)
        {
            /*當(dāng)前元素是pss6:3GPAccept的子元素*/
            if (strlen(pCtx->pPssUaProf->pssThreeGPFileFormat.threeGPAccept)+len+1>MAX_PSS_STREAMING_ACCEPT_LEN-1)
            {
                pCtx->parserStatus=UAPROF_PARSER_OVERFLOW;
                XML_StopParser(pCtx->parser,XML_FALSE);
                return;
            }
            if (strlen(pCtx->pPssUaProf->pssThreeGPFileFormat.threeGPAccept)>0)
            {
                strcat(pCtx->pPssUaProf->pssThreeGPFileFormat.threeGPAccept,",");
            }
            strcat(pCtx->pPssUaProf->pssThreeGPFileFormat.threeGPAccept,charData);
            return;
        }
        if (XML_TRUE==pCtx->isPss6Brands)
        {
            /*當(dāng)前元素是pss6:Brands的子元素*/
            if (strlen(pCtx->pPssUaProf->pssThreeGPFileFormat.brands)+len+1>MAX_PSS_BRANDS_LEN-1)
            {
                pCtx->parserStatus=UAPROF_PARSER_OVERFLOW;
                XML_StopParser(pCtx->parser,XML_FALSE);
                return;
            }
            if (strlen(pCtx->pPssUaProf->pssThreeGPFileFormat.brands)>0)
            {
                strcat(pCtx->pPssUaProf->pssThreeGPFileFormat.brands,",");
            }
            strcat(pCtx->pPssUaProf->pssThreeGPFileFormat.brands,charData);
            return;
        }
        return;
    }
    if (XML_TRUE==pCtx->isModel)
    {
        /*當(dāng)前元素是prf:Model*/
        if (len>MAX_MT_MODEL_LEN-1)
        {
            pCtx->parserStatus=UAPROF_PARSER_OVERFLOW;
            XML_StopParser(pCtx->parser,XML_FALSE);
            return;
        }

        strcpy(pCtx->pPssUaProf->model,charData);

        return;
    }
    if (XML_TRUE==pCtx->isPssVersion)
    {
        if (0==strcmp(charData,THREEGP_R5))
        {
            pCtx->pssVersion=PSS_VERSION_5;
            return;
        }
        if (0==strcmp(charData,THREEGP_R6))
        {
            pCtx->pssVersion=PSS_VERSION_6;
            return;
        }
        pCtx->pssVersion=PSS_VERSION_UNKNOWN;
        return;
    }

    if (XML_TRUE==pCtx->isScreenSize)
    {
        /*當(dāng)前元素為pss5:RenderingScreenSize或者pss6:RenderingScreenSize*/
        memset(width,'\0',8);
        memset(hight,'\0',8);

        p=strchr(charData,'x');
        nPos=p-charData+1;
        memcpy(width,charData,nPos-1);
        pCtx->pPssUaProf->pssCommon.RenderingScreenSize.width=atoi(width);

        strcpy(hight,charData+nPos);
        pCtx->pPssUaProf->pssCommon.RenderingScreenSize.height=atoi(hight);

        return;
    }
}

#define BUFFER_SIZE 1024

unsigned int parsePssUaProf(pss_uaprof_t *pPssUaProf,FILE *pFileUaProf)
{
    XML_Parser parser;
    int dataLen;
    int isFinal;
    unsigned int parserStatus;
    char buffer[BUFFER_SIZE];
    pss_uaprof_parser_context_t userData;

    parser=XML_ParserCreate(NULL);

    if (NULL==parser)
    {
        return UAPROF_PARSER_INIT_FAILED;
    }
    memset(pPssUaProf,0,sizeof(pss_uaprof_t));
    userData.pPssUaProf=pPssUaProf;
    strcpy(userData.xmlnsPrf,"prf");
    strcpy(userData.xmlnsPss5,"pss5");
    strcpy(userData.xmlnsPss6,"pss6");
    strcpy(userData.xmlnsRdf,"rdf");
    userData.parserStatus=UAPROF_PARSER_OK;
    userData.isBagLi=XML_FALSE;
    userData.isPss5PssAcept=XML_FALSE;
    userData.isPss63GPAccept=XML_FALSE;
    userData.isModel=XML_FALSE;
    userData.isPss6Brands=XML_FALSE;
    userData.isPss6StreamingAccept=XML_FALSE;
    userData.isPssVersion=XML_FALSE;
    userData.isScreenSize=XML_FALSE;
    userData.isRootElement=XML_TRUE;
    userData.parser=parser;

    XML_SetUserData(parser,(void*)&userData);
    XML_SetElementHandler(parser,startUaprofElement,endUaprofElement);
    XML_SetCharacterDataHandler(parser,UaprofCharDataHandler);

    dataLen=0;
    isFinal=0;

    while (0==isFinal)
    {
        dataLen=fread(buffer,1,BUFFER_SIZE,pFileUaProf);

        if (ferror(pFileUaProf))
        {
            userData.parserStatus=UAPROF_PARSER_FERROR;
            break;
        }

        isFinal=feof(pFileUaProf);
        if (XML_STATUS_ERROR==XML_Parse(parser,buffer,dataLen,isFinal))
        {
            userData.parserStatus=UAPROF_PARSER_BADFORM;
            break;
        }

    }
    parserStatus=userData.parserStatus;
    XML_ParserFree(parser);
    return parserStatus;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品77777| 国产欧美一区二区精品久导航| 91免费观看在线| 不卡影院免费观看| av电影在线观看一区| 国产精品综合久久| 成人教育av在线| 99r精品视频| 日本道色综合久久| 欧美在线观看视频一区二区三区| 欧美视频日韩视频| 欧美精品日日鲁夜夜添| 欧美一区二视频| 日韩免费性生活视频播放| 精品国产一区二区三区av性色| 久久综合色鬼综合色| 国产精品热久久久久夜色精品三区| 国产精品乱码妇女bbbb| 亚洲欧美乱综合| 五月激情丁香一区二区三区| 日本不卡视频一二三区| 国内成+人亚洲+欧美+综合在线 | 国产精品亚洲成人| 成人视屏免费看| 91麻豆精东视频| 欧美日韩国产影片| 欧美成人aa大片| 国产精品乱人伦中文| 亚洲制服丝袜一区| 秋霞午夜av一区二区三区| 国内外成人在线| 色悠悠久久综合| 欧美一级视频精品观看| 国产精品私人影院| 一区二区三区欧美久久| 日日摸夜夜添夜夜添国产精品| 韩国精品在线观看| 91网上在线视频| 91精品国产全国免费观看| 国产亚洲综合在线| 亚洲va欧美va天堂v国产综合| 美女精品一区二区| av在线不卡免费看| 日韩亚洲欧美综合| 1000精品久久久久久久久| 日韩高清不卡在线| 99精品桃花视频在线观看| 欧美精品丝袜中出| 中文字幕亚洲一区二区va在线| 午夜精品久久久久久久99水蜜桃 | 激情都市一区二区| 色天使色偷偷av一区二区| 日韩精品一区二区三区swag| 国产精品护士白丝一区av| 蜜桃视频一区二区三区| 99re热这里只有精品视频| 欧美一区二区三区在线| 中文字幕一区二区三区在线播放 | 亚洲一区二三区| 国产一区欧美日韩| 欧美三级日韩三级国产三级| 日本一区二区综合亚洲| 免费av成人在线| 91极品视觉盛宴| 中文字幕乱码亚洲精品一区| 麻豆久久久久久久| 欧美特级限制片免费在线观看| 欧美国产日韩亚洲一区| 六月丁香婷婷色狠狠久久| 欧美影片第一页| 最新日韩av在线| 精品一区二区在线观看| 欧美日韩国产高清一区| 国产精品视频免费看| 免费高清在线一区| 欧美日韩卡一卡二| 椎名由奈av一区二区三区| 国产成人啪午夜精品网站男同| 欧美日韩电影在线播放| 亚洲欧美视频在线观看| 风间由美一区二区三区在线观看| 日韩亚洲欧美在线| 亚洲国产中文字幕| 色婷婷国产精品| 国产精品久久久久久久久动漫| 久久99日本精品| 日韩欧美综合在线| 日本v片在线高清不卡在线观看| 在线视频一区二区三区| 亚洲免费观看高清完整版在线观看 | 欧美高清在线视频| 国产精品一级片在线观看| 精品久久久久久久人人人人传媒| 男男视频亚洲欧美| 欧美一级日韩一级| 久久精品免费观看| 91精品国模一区二区三区| 天天亚洲美女在线视频| 91精品国产一区二区人妖| 日韩影视精彩在线| 日韩欧美一区二区视频| 美女视频一区在线观看| 欧美一区国产二区| 精品一区二区在线免费观看| 精品福利二区三区| 国产一区二区三区黄视频 | 日韩区在线观看| 久久精品国产亚洲a| 日韩午夜在线观看| 国模娜娜一区二区三区| 久久精品视频在线看| 丁香六月综合激情| 一区视频在线播放| 欧洲人成人精品| 丝袜国产日韩另类美女| 欧美成人r级一区二区三区| 国精产品一区一区三区mba视频| 国产三级欧美三级| 91首页免费视频| 亚洲不卡在线观看| 欧美一级视频精品观看| 国产伦精品一区二区三区免费迷| 国产精品三级视频| 色婷婷综合五月| 日韩精品三区四区| 精品sm在线观看| 成人动漫一区二区| 夜夜操天天操亚洲| 欧美mv和日韩mv的网站| 成人理论电影网| 一区二区三区四区av| 在线播放视频一区| 国产成人精品亚洲777人妖| 亚洲免费色视频| 日韩精品中午字幕| 99久久精品国产网站| 日韩精品电影一区亚洲| 久久免费午夜影院| 在线亚洲高清视频| 久久精品国产99久久6| 国产精品久久夜| 欧美一区中文字幕| 丰满白嫩尤物一区二区| 亚洲一区二区三区四区在线观看 | 精品久久久三级丝袜| aaa国产一区| 日本中文字幕一区二区视频| 久久精品免费在线观看| 欧美天堂一区二区三区| 国产麻豆精品久久一二三| 亚洲另类春色校园小说| 欧美成va人片在线观看| 91网址在线看| 国产在线精品一区二区夜色 | 99在线热播精品免费| 欧美96一区二区免费视频| 亚洲欧洲精品成人久久奇米网| 337p亚洲精品色噜噜狠狠| 成人精品免费视频| 青青草视频一区| 亚洲精品免费在线观看| 国产三级一区二区| 欧美日本不卡视频| 99精品久久久久久| 韩国一区二区在线观看| 亚洲综合一二区| 国产精品久久久久久户外露出 | 久久美女艺术照精彩视频福利播放| 色综合天天综合色综合av| 国产综合成人久久大片91| 亚洲第一搞黄网站| 亚洲欧洲av在线| 久久蜜桃av一区二区天堂| 欧美一区二区三区四区久久| 91色婷婷久久久久合中文| 国产精品一区二区免费不卡| 免费观看日韩av| 亚洲妇女屁股眼交7| 亚洲视频在线一区| 亚洲国产高清在线观看视频| 精品日韩99亚洲| 91超碰这里只有精品国产| 欧日韩精品视频| 91网站黄www| av资源网一区| 国产成人在线免费| 九九久久精品视频| 美女网站一区二区| 青青草精品视频| 日本不卡视频一二三区| 香蕉成人啪国产精品视频综合网| 亚洲精品欧美综合四区| 亚洲色图欧洲色图婷婷| 中文字幕乱码亚洲精品一区| 国产视频一区二区在线观看| 久久影院午夜论| 久久天堂av综合合色蜜桃网| 亚洲精品一线二线三线| 久久综合av免费| 久久精品亚洲精品国产欧美kt∨|