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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? asn_pproc.c

?? ASN.1語法解析代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*****************************************************************************
File:     asn_pproc.c
Contents: Functions to pre-process ASN.1 files as part of the ASN_GEN
          program.
System:   ASN development.
Created:
Author:   Charles W. Gardiner <gardiner@bbn.com>

Remarks:

COPYRIGHT 1995 BBN Systems and Technologies, A Division of Bolt Beranek
    and Newman Inc.
150 CambridgePark Drive
Cambridge, Ma. 02140
617-873-4000
*****************************************************************************/

const char asn_pproc_rcsid[]="$Header: /nfs/sub-rosa/u2/IOS_Project/ASN/Dev/rcs/cmd/asn_gen/asn_pproc.c,v 1.21 1995/09/25 22:10:11 gardiner Exp $";
char asn_pproc_id[] = "@(#)asn_pproc.c 282P";

#include "includes.h"
#include "asn_obj.h"
#include "asn_gen.h"

static struct import_table
    {
    char *name;
    struct import_item
	{
	struct import_item *next;
	char *module;
	} item;
    } *imtbp;   /* pointer to entry for imported file currently being read */

static struct import_table *add_import_item(struct import_table *, char *);

static void encr_xform(int, char *),
    free_imports(),
    get_exports(int),
    get_fnames(int),
    putout(FILE *, char *);

static int is_imported(char *),
    pre_proc_get_token(int, FILE *, char *),
    pre_proc_glob(int, FILE *, char *, char **, char *, int *, long *),
    pre_proc_def(int, FILE *, char *, char **, char *, int *, long),
    pre_proc_item(int, FILE *, char *, char **, char *, int *, int, long),
    was_imported(char *);

static FILE *make_substr();

static char encrypted_w[] = "ENCRYPTED", exports_w[] = "EXPORTS",
    signed_w[] = "SIGNED";

static struct name_area import_area =
    {"import_area", sizeof(struct import_table), 20, 4000 };

char tobesigned[] = "{\n    toBeSigned  %sToBeSigned,\n",
    tabledef[] =
"%sAlgorithmIdentifier ::= SEQUENCE {\n\
    algorithm OBJECT IDENTIFIER TABLE %s,\n\
    parameters ANY DEFINED BY algorithm OPTIONAL}\n\n",
    objtobesigned[] = "%sToBeSigned ::= SEQUENCE ",
    signedname[] = "Signed%s ",
    signeddef[] = "::= SEQUENCE {\n",
    tagclass[] = "    %s  SEQUENCE,\n",
    thatword[] = "    %s  %s,\n",
    algsig[] =
"    algorithm  %sAlgorithmIdentifier,\n\
    signature BIT STRING }\n\n",
    of_opener[] =  "%s ::= %s %s %s\n\n",
    sub_opener[] = "%s ::= %s {\n",
    signed_sub_opener[] = "%s ::= %s";

void pre_proc(int fd, FILE *str, int in_sub)
{
/**
Function: Preprocesses file fd to translate SIGNED macro and produce file str
Inputs: fd is file descriptor for ASN.1 file.  IF this is non-zero, we are in
	    an imported file
	str is the stream descriptor for the output
	locstate is used for recursiveness
Outputs: ASN.1 code written to 'str'
Procedure:
1. Starting with lots of things cleared, DO forever
        IF no token AND no more tokens, break out of DO
        Switch on locstate
2.    Case GLOBAL
	IF processing global state returns GLOBAL state, return
      Case IN_DEFINITION
	    IF processing the definition returns GLOBAL state
		Clean up a few variables
      Case IN_ITEM
	    IF in a sub-item AND pre-processing the items returns GLOBAL
		state, return
**/
char linebuf[2*BSIZE], *linend = linebuf, *elinebuf = &linebuf[sizeof(linebuf)];
int signflag,
    active;     /* -1= in main file, 0= in imported file but not imported class
		  1= in imported file in an imported class, no details needed
		  2=  "   "        "  "   "    "      " , but details needed */
ulong loctag;
long loctype, glob_type;
if (!in_sub) *classname = 0;
for (signflag = loctag = 0, active = glob_type = loctype = -1,
    *token = *linebuf = *itemname = 0; pre_proc_get_token(fd, str, linebuf); )
    {
    switch (state)
    	{
    case PRE_GLOBAL:
	if (!strcmp(token, equals)) syntax(definitions_w);
	if (!strcmp(token, definitions_w)) state = GLOBAL;
	else *token = 0;   /* discard up to DEFINITIONS */
	break;

    case GLOBAL:			
	if ((state = pre_proc_glob(fd, str, linebuf, &linend, elinebuf,
            &active, &glob_type)) == GLOBAL) return;
	break;

    case IN_DEFINITION:                                     /* got ::= */
	if ((state = pre_proc_def(fd, str, linebuf, &linend, elinebuf,
            &active, glob_type)) == GLOBAL)
	    {
            active = glob_type = loctype = -1;
	    fflush(str);
    	    *subclass = *classname = *(linend = linebuf) = 0;
	    }
	break;

    case IN_ITEM:
    case SUB_ITEM:
	if ((state = pre_proc_item(fd, str, linebuf, &linend, elinebuf,
            &active, in_sub, glob_type)) == GLOBAL && in_sub) return;
	glob_type = -1;
	break;

    default:
	fatal(4, (char *)state);
	}
    }
if (linend > linebuf) fprintf(str, "%s\n", linebuf);
if (!fd) free_imports();
}

static int pre_proc_get_token(int fd, FILE *str, char *linebuf)
{
static int loopcount;
if (!*token) loopcount = 0;
else if (loopcount++ > 20)
    {
    putout(str, linebuf);
    fflush(str);
    fatal(22, token);
    }
if (!*token && !get_token(fd, token, (char)0)) return 0;
return 1;
}

static int pre_proc_glob(int fd, FILE *str, char *linebuf, char **linendp,
    char *elinebuf, int *activep, long *glob_typep)
{
/**
1. DO
        IF token is '::='
    	    IF not in definitions class, set state to IN_DEFINITION
    	    ELSE IF not in an imported file
    	        Print token with RETURN
    	        Clear class name and token
2.      ELSE IF token is IMPORTS
    	    IF have already started, error
            Get all the file names
            IF at top level
                FOR each file in the import table
    	            Add the name to the i_names list
    	            Open the file for reading
    	            Call pre_proc with that fd (this may add to the import
    		        table)
    	            Close input file
            Put out an extra line end
3.      ELSE IF token is EXPORTS, put export items in export area
        ELSE IF token is BEGIN, do nothing
        ELSE IF token is a known tag, save its type
        ELSE IF token is a name defined to be a universal type
    	    IF haven't a class name, error
    	    Replace the token with the universal name
        ELSE IF token is a brace, error
        ELSE IF have no local classname AND token looks like one
    	    Copy token to local class name
        IF classname is upper case, append token to linebuf and clear token
   WHILE state is GLOBAL AND there's a next token
   Return state
**/
char *c, locclass[128];
int locstate, tmp;
struct name_table *ntbp;
do                                                          /* step 1 */
    {
    if (!strcmp(token, equals))
        {
        if (strcmp(classname, definitions_w)) state = IN_DEFINITION;
        else
            {
            if (!fd) fprintf(str, "%s ::=\n\n", linebuf);
	    *token = *classname = *(*linendp = linebuf) = 0;
	    }
        }
    else if (!strcmp(token, imports_w))                     /* step 2 */
        {
        cat(classname, token);
        if (real_start) syntax(token);
        *token = 0;
        get_fnames(fd);
        if (!fd)
	    {
            for(imtbp = (struct import_table *)import_area.area;
	        imtbp->name; imtbp++)
	        {
		if (!strcmp(imtbp->name, source)) continue;
	        if (add_include_name(imtbp->name))
		    {
    	            if ((tmp = find_file(imtbp->name)) < 0)
                        fatal(2, imtbp->name);
    	            printf("File %s\n", imtbp->name);
		    cat(locclass, classname);
		    locstate = state;
    	            pre_proc(tmp, str, 0);
    	            fflush(str);
    	            close(tmp);
		    state = locstate;
		    cat(classname, locclass);
		    *token = 0;
		    }
	        }
	    imtbp = (struct import_table *)0;
	    printf("Main file\n");
	    }
        if (*activep) putout(str, "\n");
        if (!fd) real_start = ftell(str);
        *classname = 0;
        }
    else if (!strcmp(token, exports_w))                     /* step 3 */
        {
        get_exports(fd);
        *locclass = *classname = *token = 0;
        }
    else if (!strcmp(token, begin_w)) *token = 0;
    else if ((tmp = find_type(token)) != ASN_NOTYPE)
        get_expected(fd, (*glob_typep = tmp), token);
    else if ((ntbp = find_name(token)) && ntbp->name && ntbp->type <
        ASN_APPL_SPEC)
        {
        if (!*classname)
	    {
	    cat(classname, token);
            fatal(17, token);
	    }
        c = cat(token, find_typestring(ntbp->type));
        if (ntbp->type == ASN_OBJ_ID) cat(c, " IDENTIFIER");
        else if (ntbp->type == ASN_BITSTRING || ntbp->type ==
            ASN_OCTETSTRING) cat(c, " STRING");
        ntbp->pos = -2;     /* so it won't appear in unused list */
        *glob_typep = ntbp->type;
        }
    else if (*token == '{' || *token == '}') syntax(token);
    else if (!*classname && *token >= 'A')
        {
        cat(classname, token);
        if (strcmp(token, definitions_w) && strcmp(token, implicit_w) &&
	    strcmp(token, explicit_w) && isreserved(token))
            syntax("invalid class");
        }
    if (fd && *classname > ' ') *activep = is_imported(classname);
    if (*classname <= 'Z' && *activep && *token && (*linendp > linebuf ||
        *token > ' ') &&
        (*linendp = cat(cat(*linendp, token),
        ((!token == '{')? "\n    ": " "))) >= elinebuf) syntax(linebuf);
    *token = 0;
    }
while (state == GLOBAL && pre_proc_get_token(fd, str, linebuf));
return state;
}

static int pre_proc_def(int fd, FILE *str, char *linebuf, char **linendp,
    char *elinebuf, int *activep, long glob_type)
{
/**
1. DO
        IF token is ENCRYPTED, call encrypted transformation
        IF token is SIGNED
            Set signed flag
            Get next token to put out
        ELSE IF token is TABLE
            IF signed flag set
    	        Get table name
    	        Clear token
2.      ELSE IF token is '{' OR OF
    	    IF (it's an OF OR is imported) AND linebuf has data
                Put linebuf out
    	    IF token is OF
    	        IF active, put out OF
    	        IF next token is not a universal type
    		    IF active, put out token
    		    Clear token
    	            Set state to GLOBAL
    	        ELSE
    		    IF next token is '{'
    		        Make a synthetic name
    		        IF active
                            Print that with a line end
    		            IF details needed, print sub_opener with
    			        synthetic name and universal type name
    		        Clear token
    	            Set state to GLOBAL
    	    ELSE IF in an imported file
    	        Print token
    	        Skip to next '}'
    	    IF active AND not imported
    	        IF linebuf has data AND not a glob_type
    		    Put out the linebuf
                IF signed flag is set
                    Put out tobesigned lines
                    IF have a table, put out tabledef lines
                    Put out objtobesigned line
            IF state isn't GLOBAL, set state to IN_ITEM
3.      ELSE IF token is open parenthesis or bracket, bump count
        ELSE IF token is close parenthesis or bracket
    	    IF decrementing count goes < 0, error
        ELSE IF token is numeric
            Add object to ub table
    	    Clear linebuf
        ELSE IF token is alphabetic but not a reserved word
    	    IF have subclass OR type, i.e. definition is complete
    	        Set state to GLOBAL
    	        IF type is universal constructed, error
    	    ELSE set subclass from token
4.      IF classname is upper case
    	    IF just switched to GLOBAL state
    	        IF active
    		    IF in an imported file AND token is capital letter
    		        Add token as an imported item so it will be
    			    included as child of this 'false' item
                        Print 1 or 2 blank lines
    	        Clear assorted variables to enter global state, BUT keep
    		    token, since it starts the next definition
    	    ELSE
                IF active,
    		    Append token to linebuf
    		    IF item is a choice, set active to 2 to force getting
    		        contents of item
        ELSE throw away the token
   WHILE state is IN_DEFINITION AND there's another token
   Return state
**/
int loctype, signflag, tmp, brackets, parens;
char *c, table[128];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃精品在线观看| 99re8在线精品视频免费播放| 91精品国产一区二区三区蜜臀| 不卡在线观看av| 日韩av在线发布| 亚洲免费av观看| 中文字幕免费在线观看视频一区| 欧美xxxx老人做受| 久久久精品国产99久久精品芒果| 久久久精品国产99久久精品芒果| 中文字幕一区二| 国产精品久久久久久久第一福利| 99视频超级精品| www.亚洲在线| 色女孩综合影院| 欧美性一级生活| 欧美肥妇bbw| 日韩一级片在线观看| 日韩精品一区二区三区中文不卡| 欧美丝袜丝交足nylons| 91精品一区二区三区在线观看| 7777女厕盗摄久久久| 欧美一区二区三区性视频| 精品久久久久久久久久久久包黑料| 欧美哺乳videos| 久久久亚洲精品石原莉奈| 国产精品久久久久久久久久久免费看 | 日韩av高清在线观看| 天天av天天翘天天综合网色鬼国产| 亚洲国产一区视频| 久久国产尿小便嘘嘘| 国产成人综合在线| 99re热这里只有精品免费视频| 在线观看免费一区| 在线播放91灌醉迷j高跟美女| 日韩欧美美女一区二区三区| 国产亚洲欧美中文| 一区二区激情视频| 激情五月婷婷综合网| 99国产精品久久久久| 欧美一级日韩一级| 中文字幕国产一区| 午夜精品久久久| 成人精品在线视频观看| 欧美人与z0zoxxxx视频| 国产亚洲婷婷免费| 五月天亚洲婷婷| youjizz国产精品| 日韩精品一区二区三区蜜臀| 国产精品国产三级国产aⅴ原创 | 亚洲高清中文字幕| 国产福利一区二区三区视频在线 | 亚洲福利一区二区| 成人免费黄色在线| 日韩欧美国产午夜精品| 亚洲精品成人精品456| 黄色日韩三级电影| 欧美理论在线播放| 亚洲欧美国产77777| 国产一区二区三区高清播放| 欧美视频完全免费看| 亚洲欧美在线另类| 国产高清精品久久久久| 欧美精品一区二区三区在线播放| 一区二区三区四区不卡视频 | 亚洲国产精品av| 韩日av一区二区| 91精品国产美女浴室洗澡无遮挡| 亚洲欧美经典视频| 99久久er热在这里只有精品15| 久久久亚洲国产美女国产盗摄 | 日本午夜一本久久久综合| gogogo免费视频观看亚洲一| 精品不卡在线视频| 久久99精品国产麻豆婷婷 | 首页亚洲欧美制服丝腿| 色偷偷88欧美精品久久久| 国产精品剧情在线亚洲| 国产精品69毛片高清亚洲| 精品国产乱码久久久久久久久| 日日夜夜免费精品| 欧美一级二级三级蜜桃| 日本中文在线一区| 欧美一区永久视频免费观看| 亚洲va韩国va欧美va精品| 欧洲另类一二三四区| 一区二区三区日韩精品视频| 日本丰满少妇一区二区三区| 亚洲色图色小说| 色婷婷一区二区三区四区| 亚洲蜜臀av乱码久久精品| 91久久一区二区| 亚洲va韩国va欧美va精品| 欧美挠脚心视频网站| 日韩av在线播放中文字幕| 精品久久久网站| 国产成人午夜精品5599| 日韩毛片视频在线看| 在线观看不卡视频| 日韩福利视频网| 国产丝袜欧美中文另类| 一本色道综合亚洲| 亚洲va韩国va欧美va| 精品国产人成亚洲区| 国产福利视频一区二区三区| 亚洲乱码日产精品bd| 337p亚洲精品色噜噜噜| 九色porny丨国产精品| 久久精品视频一区| 日本精品视频一区二区| 久久超碰97人人做人人爱| 国产精品久久久久三级| 欧美视频一二三区| 国产精品一区二区x88av| 亚洲欧美色综合| 日韩视频在线一区二区| heyzo一本久久综合| 日韩精品每日更新| 国产精品亲子伦对白| 欧美日韩国产小视频| 国产东北露脸精品视频| 亚洲一区在线电影| 国产精品丝袜在线| 制服视频三区第一页精品| 成人精品在线视频观看| 日韩av一区二| 亚洲三级免费电影| 久久久不卡网国产精品一区| 欧美日韩在线三区| 成人动漫一区二区三区| 久久精品国产99久久6| 亚洲婷婷国产精品电影人久久| 91精品在线观看入口| 91猫先生在线| 国产精品一区二区在线播放| 三级亚洲高清视频| 有码一区二区三区| 国产欧美一区二区精品婷婷| 这里只有精品视频在线观看| 9i在线看片成人免费| 国产麻豆精品theporn| 六月丁香综合在线视频| 亚洲欧洲av在线| 国产精品天天摸av网| 久久婷婷色综合| 91精品国产综合久久久久| 日本久久电影网| 色婷婷综合五月| 91视频91自| 91网站在线播放| 不卡一区在线观看| 国产激情视频一区二区三区欧美| 美女精品一区二区| 免费一区二区视频| 奇米影视一区二区三区小说| 午夜不卡在线视频| 性做久久久久久免费观看| 一区二区不卡在线视频 午夜欧美不卡在| 欧美激情一区二区三区全黄| 2014亚洲片线观看视频免费| 日韩一区二区免费高清| 日韩午夜在线影院| 欧美大胆人体bbbb| 欧美电影精品一区二区| 欧美电影免费观看高清完整版在线观看 | 奇米亚洲午夜久久精品| 日本一不卡视频| 久久激情五月婷婷| 精品一区二区三区视频在线观看 | 精品国产乱码久久久久久久久 | 亚洲免费观看高清在线观看| 色综合天天综合在线视频| 色视频一区二区| 91丝袜国产在线播放| 成人午夜视频免费看| 成人免费av资源| 96av麻豆蜜桃一区二区| 色综合色狠狠天天综合色| 欧美私人免费视频| 日韩欧美不卡一区| 中文字幕免费不卡在线| 亚洲精品福利视频网站| 男女激情视频一区| 国产精品一区二区果冻传媒| 99re这里都是精品| 51精品视频一区二区三区| 久久这里只有精品视频网| 日韩一区中文字幕| 性感美女久久精品| 国产美女精品一区二区三区| 成人av免费网站| 欧美精品在线观看播放| 精品欧美乱码久久久久久1区2区| 午夜不卡在线视频| a在线欧美一区| 国产精品女同互慰在线看| 日韩欧美一区二区三区在线| 久久久久一区二区三区四区| 中文字幕精品三区| 日韩电影在线观看网站|