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

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

?? bootlib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
** This routine displays the current value of each boot parameter and prompts* the user for a new value.  Typing a RETURN leaves the parameter unchanged.* Typing a period (.) clears the parameter.** The parameter <string> holds the initial values.  The new boot line is* copied over <string>.  If there are no initial values, <string> is* empty on entry.** RETURNS: N/A*/void bootParamsPrompt    (    char *string        /* default boot line */    )    {    BOOT_PARAMS bp;    FAST int n = 0;    FAST int i;    /* interpret the boot parameters */	    (void) bootStringToStruct (string, &bp);    printf ("\n'.' = clear field;  '-' = go to previous field;  ^D = quit\n\n");    /* prompt the user for each item;     *   i:  0 = same field, 1 = next field, -1 = previous field,     *     -98 = error, -99 = quit     */    FOREVER	{	switch (n)	    {	    case 0:  i = promptParamBootDevice (strBootDevice, bp.bootDev,                                 &bp.unitNum, sizeof (bp.bootDev));  break; 	    case 1:  i = promptParamNum (strProcNum, &bp.procNum, FALSE);break;	    case 2:  i = promptParamString (strHostName, bp.hostName,				sizeof (bp.hostName));	break;	    case 3:  i = promptParamString (strFileName, bp.bootFile,				sizeof (bp.bootFile));	break;	    case 4:  i = promptParamString (strInetOnEthernet, bp.ead,				sizeof (bp.ead));	break;	    case 5:  i = promptParamString (strInetOnBackplane, bp.bad,				sizeof (bp.bad));break;	    case 6:  i = promptParamString (strHostInet, bp.had,				sizeof (bp.had));	break;	    case 7:  i = promptParamString (strGatewayInet, bp.gad,				sizeof (bp.gad));	break;	    case 8:  i = promptParamString (strUser, bp.usr,				sizeof (bp.usr));		break;	    case 9:  i = promptParamString (strFtpPwLong, bp.passwd,				sizeof (bp.passwd));	break;	    case 10: i = promptParamNum (strFlags, &bp.flags, TRUE);	break;	    case 11: i = promptParamString (strTargetName, bp.targetName,				sizeof (bp.targetName));break;	    case 12: i = promptParamString (strStartup, bp.startupScript,				sizeof (bp.startupScript));break;	    case 13: i = promptParamString (strOther, bp.other,				sizeof (bp.other));	break;	    default: i = -99; break;	    }	/* check for QUIT */	if (i == -99)	    {	    printf ("\n");	    break;	    }	/* move to new field */	if (i != -98)	    n += i;	}    (void) bootStructToString (string, &bp);    }/******************************************************************************** bootParamsErrorPrint - print boot string error indicator** print error msg with '^' where parse failed** NOMANUAL*/void bootParamsErrorPrint    (    char *bootString,    char *pError    )    {    printf ("Error in boot line:\n%s\n%*c\n", bootString,	    (int) (pError - bootString + 1), '^');    }/********************************************************************************* bootLeaseExtract - extract the lease information from an Internet address** This routine extracts the optional lease duration and lease origin fields * from an Internet address field for use with DHCP.  The lease duration can be * specified by appending a colon and the lease duration to the netmask field.* For example, the "inet on ethernet" field of the boot parameters could be * specified as:* .CS*     inet on ethernet: 90.1.0.1:ffff0000:1000* .CE** If no netmask is specified, the contents of the field could be:* .CS*     inet on ethernet: 90.1.0.1::ffffffff* .CE** In the first case, the lease duration for the address is 1000 seconds. The * second case indicates an infinite lease, and does not specify a netmask for* the address. At the beginning of the boot process, the value of the lease* duration field is used to specify the requested lease duration. If the field * not included, the value of DHCP_DEFAULT_LEASE is used* instead.* * The lease origin is specified with the same format as the lease duration,* but is added during the boot process. The presence of the lease origin* field distinguishes addresses assigned by a DHCP server from addresses* entered manually. Addresses assigned by a DHCP server may be replaced* if the bootstrap loader uses DHCP to obtain configuration parameters.* The value of the lease origin field at the beginning of the boot process* is ignored.** This routine extracts the optional lease duration by replacing the preceding * colon in the specified string with an EOS and then scanning the remainder as * a number.  The lease duration and lease origin values are returned via* the <pLeaseLen> and <pLeaseStart> pointers, if those parameters are not NULL.** RETURNS:*   2 if both lease values are specified correctly in <string>, or *  -2 if one of the two values is specified incorrectly.* If only the lease duration is found, it returns:*   1 if the lease duration in <string> is specified correctly,*   0 if the lease duration is not specified in <string>, or*  -1 if an invalid lease duration is specified in <string>.*/int bootLeaseExtract    (    char *string,       /* string containing addr field */    u_long *pLeaseLen,  /* pointer to storage for lease duration */    u_long *pLeaseStart /* pointer to storage for lease origin */    )    {    FAST char *pDelim;    FAST char *offset;    int result;    int status = 0;    int start;    int length;    /* find delimeter for netmask */    offset = index (string, ':');    if (offset == NULL)	return (0);		/* no subfield specified */    /* Start search after netmask field. */    pDelim = offset + 1;    /* Search for lease duration field. */    offset = index (pDelim, ':');    if (offset == NULL)         /* No lease duration tag. */        return (0);    /* Start search after duration. */    pDelim = offset + 1;    status = bootSubfieldExtract (pDelim, &start, ':');    if (status == 1 && pLeaseStart != NULL)        *pLeaseStart = start;    /* Reset search pointer to obtain lease duration. */    offset = index (string, ':');    if (offset == NULL)      /* Sanity check - should not occur. */        return (0);   /* Lease duration follows netmask. */    pDelim = offset + 1;    /* Store lease duration if found. */    result = bootSubfieldExtract (pDelim, &length, ':');    if (result == 1 && pLeaseLen != NULL)        *pLeaseLen = length;    if (status != 0)    /* Both lease values were present. */        {        if (status < 0 || result < 0)    /* Error reading one of the values. */            return (-2);        else            return (2);     /* Both lease values read successfully. */        }    return (result);    }/********************************************************************************* bootNetmaskExtract - extract the net mask field from an Internet address** This routine extracts the optional subnet mask field from an Internet address* field.  Subnet masks can be specified for an Internet interface by appending* to the Internet address a colon and the net mask in hexadecimal.  * For example, the "inet on ethernet" field of the boot parameters could * be specified as:* .CS*     inet on ethernet: 90.1.0.1:ffff0000* .CE* In this case, the network portion of the address (normally just 90)* is extended by the subnet mask (to 90.1).  This routine extracts the* optional trailing subnet mask by replacing the colon in the specified* string with an EOS and then scanning the remainder as a hex number.* This number, the net mask, is returned via the <pNetmask> pointer.* * This routine also handles an empty netmask field used as a placeholder* for the lease duration field (see bootLeaseExtract() ). In that case,* the colon separator is replaced with an EOS and the value of netmask is* set to 0. ** RETURNS:*   1 if the subnet mask in <string> is specified correctly,*   0 if the subnet mask in <string> is not specified, or*  -1 if an invalid subnet mask is specified in <string>.*/STATUS bootNetmaskExtract    (    char *string,       /* string containing addr field */    int *pNetmask       /* pointer where to return net mask */    )    {    FAST char *pDelim;    char *offset;    /* find delimeter */    pDelim = index (string, ':');    if (pDelim == NULL)	return (0);		/* no subfield specified */    /* Check if netmask field precedes timeout field. */    offset = pDelim + 1;    skipSpace(&offset);    if (*offset == ':' || *offset == EOS)  /* Netmask field is placeholder. */        {         *pDelim = EOS;         *pNetmask = 0;         return (1);        }             return (bootSubfieldExtract (string, pNetmask, ':'));    }/******************************************************************************** bootBpAnchorExtract - extract a backplane address from a device field** This routine extracts the optional backplane anchor address field from a* boot device field.  The anchor can be specified for the backplane* driver by appending to the device name (i.e., "bp") an equal sign (=) and the* address in hexadecimal.  For example, the "boot device" field of the boot* parameters could be specified as:* .CS*     boot device: bp=800000* .CE* In this case, the backplane anchor address would be at address 0x800000,* instead of the default specified in config.h.** This routine picks off the optional trailing anchor address by replacing* the equal sign (=) in the specified string with an EOS and then scanning the* remainder as a hex number.* This number, the anchor address, is returned via the <pAnchorAdrs> pointer.** RETURNS:*   1 if the anchor address in <string> is specified correctly,*   0 if the anchor address in <string> is not specified, or*  -1 if an invalid anchor address is specified in <string>.*/STATUS bootBpAnchorExtract    (    char *string,       /* string containing adrs field */    char **pAnchorAdrs  /* pointer where to return anchor address */    )    {    return (bootSubfieldExtract (string, (int *) pAnchorAdrs, '='));    }/******************************************************************************** bootSubfieldExtract - extract a numeric subfield from a boot field** Extracts subfields in fields of the form "<field><delimeter><subfield>".* i.e. <inet>:<netmask> and bp=<anchor>*/LOCAL STATUS bootSubfieldExtract    (    char *string,       /* string containing field to be extracted */    int *pValue,        /* pointer where to return value */    char delimeter      /* character delimeter */    )    {    FAST char *pDelim;    int value;    /* find delimeter */    pDelim = index (string, delimeter);    if (pDelim == NULL)	return (0);		/* no subfield specified */    /* scan remainder for numeric subfield */    string = pDelim + 1;    if (bootScanNum (&string, &value, TRUE) != OK)	return (-1);		/* invalid subfield specified */    *pDelim = EOS;		/* terminate string at the delimeter */    *pValue = value;		/* return value */    return (1);			/* valid subfield specified */    }/********************************************************************************* addAssignNum - add a numeric value assignment to a string*/LOCAL void addAssignNum    (    FAST char *string,    char *code,    int value    )    {    if (value != 0)	{	string += strlen (string);	sprintf (string, (value <= 7) ? " %s=%d" : " %s=0x%x", code, value);	}    }/********************************************************************************* addAssignString - add a string assignment to a string*/LOCAL void addAssignString    (    FAST char *string,    char *code,    char *value    )    {    if (value[0] != EOS)	{	string += strlen (string);	sprintf (string, " %s=%s", code, value);	}    }/********************************************************************************* getWord - get a word out of a string** Words longer than the specified max length are truncated.** RETURNS: TRUE if word is successfully extracted from string, FALSE otherwise;* Also updates ppString to point to next character following extracted word.*/LOCAL BOOL getWord    (    char **ppString,    /* ptr to ptr to string from which to get word */    FAST char *pWord,   /* where to return word */    int length,         /* max length of word to get including EOS */    char *delim         /* string of delimiters that can terminate word */    )    {    FAST char *pStr;    skipSpace (ppString);    /* copy up to any specified delimeter, EOS, or max length */    pStr = *ppString;    while ((--length > 0) && (*pStr != EOS) && (index (delim, *pStr) == 0))	*(pWord++) = *(pStr++);    *pWord = EOS;    /* if we copied anything at all, update pointer and return TRUE */    if (pStr != *ppString)	{	*ppString = pStr;	return (TRUE);	}    /* no word to get */    return (FALSE);    }/********************************************************************************* getConst - get a constant string out of a string** case insensitive compare for identical strings*/LOCAL BOOL getConst    (    char **ppString,    FAST char *pConst    )    {    FAST int ch1;    FAST int ch2;    FAST char *pString;    skipSpace (ppString);    for (pString = *ppString; *pConst != EOS; ++pString, ++pConst)	{	ch1 = *pString;	ch1 = (isascii (ch1) && isupper (ch1)) ? tolower (ch1) : ch1;	ch2 = *pConst;	ch2 = (isascii (ch2) && isupper (ch2)) ? tolower (ch2) : ch2;	if (ch1 != ch2)	    return (FALSE);	}    /* strings match */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本成人在线不卡视频| 在线看不卡av| 91麻豆国产福利精品| 欧美美女一区二区| 中文在线免费一区三区高中清不卡| 一区二区三区av电影| 国产精品99久久久久久久vr| 91福利资源站| 亚洲欧洲美洲综合色网| 精品综合免费视频观看| 欧美日韩国产另类不卡| 国产精品久久三| 麻豆国产精品官网| 欧美日本一区二区三区四区| 亚洲欧美日韩国产手机在线| 国产在线播放一区三区四| 欧美日韩国产另类不卡| 一区二区三区高清在线| 成人影视亚洲图片在线| 久久毛片高清国产| 久久国产精品99久久久久久老狼| 欧美日韩国产在线观看| 最新国产成人在线观看| 成人免费高清在线| 中文字幕免费不卡| 国产寡妇亲子伦一区二区| 日韩三级电影网址| 日韩电影在线观看网站| 欧美日韩1区2区| 首页国产欧美久久| 欧美福利视频导航| 五月激情丁香一区二区三区| 欧美精品在欧美一区二区少妇| 亚洲综合精品自拍| 欧美三区在线视频| 亚洲成在人线在线播放| 在线电影欧美成精品| 日韩国产在线一| 欧美一区二区啪啪| 国产精品综合二区| 国产精品久久久久久亚洲伦| av在线一区二区三区| 亚洲欧美中日韩| 亚洲国产毛片aaaaa无费看 | 91啪九色porn原创视频在线观看| 久久久夜色精品亚洲| 风间由美中文字幕在线看视频国产欧美 | 欧美精品乱码久久久久久按摩 | 九一九一国产精品| 久久综合网色—综合色88| 国产精品亚洲第一| 中文字幕一区免费在线观看| 色视频成人在线观看免| 香蕉乱码成人久久天堂爱免费| 91精品在线麻豆| 国产在线精品视频| 亚洲欧洲国产日本综合| 欧美系列亚洲系列| 极品尤物av久久免费看| 国产精品久久久久永久免费观看 | 成人深夜在线观看| 亚洲精品乱码久久久久久久久| 9191成人精品久久| 国产乱码精品一区二区三区五月婷| 国产三级欧美三级日产三级99| 91在线视频18| 免费观看30秒视频久久| 国产精品美女久久久久av爽李琼| 日本大香伊一区二区三区| 精品一区二区三区久久| 亚洲三级在线观看| 欧美精品一区二区三区蜜桃视频 | 亚洲日本在线天堂| 91精品婷婷国产综合久久性色 | 国产一区二区三区免费观看| 亚洲视频小说图片| 日韩欧美国产高清| 在线观看日韩高清av| 国产一区二区三区四区五区美女 | 亚洲欧洲综合另类| 欧美一级高清片| 91行情网站电视在线观看高清版| 奇米精品一区二区三区在线观看 | 国产精品国产精品国产专区不蜜| 精品视频在线看| 成人免费毛片a| 国产在线不卡一区| 日韩av电影免费观看高清完整版| 中文字幕在线观看一区| 久久一夜天堂av一区二区三区| 欧洲一区在线观看| 成人动漫一区二区在线| 国产一区二区成人久久免费影院| 日韩精品国产精品| 亚洲激情男女视频| 18欧美亚洲精品| 国产精品网曝门| 久久午夜羞羞影院免费观看| 日韩一区二区视频| 欧美日韩一级片网站| 在线免费观看成人短视频| 国产91在线观看| 国产麻豆视频精品| 国产麻豆一精品一av一免费| 久久不见久久见免费视频7| 日本中文字幕不卡| 天天色天天操综合| 亚洲444eee在线观看| 一区二区三区四区乱视频| 中文字幕日韩一区| 中文字幕一区不卡| 国产精品久久久久aaaa樱花 | 综合激情网...| 国产天堂亚洲国产碰碰| 精品sm捆绑视频| 日韩三级视频在线看| 欧美电影免费观看高清完整版在线观看 | 精品久久久久久久久久久久久久久| 777奇米四色成人影色区| 欧美另类久久久品| 欧美一区二区在线观看| 91精品国产免费| 欧美tk—视频vk| 国产欧美一区二区精品性| 国产亚洲一区字幕| 亚洲欧洲日韩在线| 亚洲免费电影在线| 一区二区三区成人在线视频| 亚洲18色成人| 激情亚洲综合在线| 国产福利一区二区三区视频在线 | 国产曰批免费观看久久久| 国产一区二区免费在线| 成人黄动漫网站免费app| 99久久精品国产一区二区三区| 欧美怡红院视频| 日韩亚洲欧美一区| 久久精品这里都是精品| 亚洲天天做日日做天天谢日日欢 | 91精品国产综合久久久久久漫画| 欧美一区二区三区视频在线观看 | 懂色av一区二区三区免费观看| 北条麻妃一区二区三区| 欧美日韩国产免费| 2021久久国产精品不只是精品 | 精品久久久久香蕉网| 国产精品久久久久一区二区三区 | 欧美成人国产一区二区| 亚洲国产高清不卡| 亚洲国产精品欧美一二99| 久久精品国产免费| 色综合久久88色综合天天免费| 欧美日韩一区二区三区不卡| 久久久精品综合| 香蕉乱码成人久久天堂爱免费| 国产一区二区在线观看免费 | 亚洲午夜日本在线观看| 国产综合色视频| 97精品久久久久中文字幕| 91精品国产91久久久久久一区二区| 国产欧美一区二区精品忘忧草| 一区二区三区国产豹纹内裤在线| 开心九九激情九九欧美日韩精美视频电影 | 污片在线观看一区二区| 国产成人在线视频免费播放| 欧美久久久久久久久中文字幕| 久久久久国产精品麻豆| 偷拍一区二区三区四区| 99久久久久免费精品国产| 日韩欧美精品在线视频| 亚洲卡通动漫在线| 国产乱一区二区| 日韩一级片网站| 亚洲男同1069视频| 国产乱子伦视频一区二区三区| 911精品国产一区二区在线| √…a在线天堂一区| 国产乱码一区二区三区| 欧美一级淫片007| 亚洲h精品动漫在线观看| 色伊人久久综合中文字幕| 国产农村妇女精品| 国产精品自拍av| 欧美成人福利视频| 看片网站欧美日韩| 日韩午夜精品视频| 天天av天天翘天天综合网 | www.日韩大片| 国产日韩欧美高清| 国产成人无遮挡在线视频| 欧美tk丨vk视频| 久久99精品一区二区三区三区| 欧美巨大另类极品videosbest | 国产一区二区在线看| 日韩精品一区二区三区中文不卡| 亚洲一线二线三线久久久| 91性感美女视频| 亚洲黄色性网站| 欧美视频一区二区三区四区| 亚洲成在线观看|