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

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

?? _open.c

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? C
字號:
/***
*_open.c - open a stream, with string mode
*
*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines _openfile() - opens a stream, with string arguments for mode
*
*******************************************************************************/

#ifdef _WIN32


#include <cruntime.h>
#include <stdio.h>
#include <fcntl.h>
#include <file2.h>
#include <io.h>
#include <dbgint.h>
#include <internal.h>
#include <tchar.h>

#define CMASK   0644    /* rw-r--r-- */
#define P_CMASK 0666    /* different for Posix */

/***
*FILE *_openfile(filename, mode, shflag, stream) - open a file with string
*       mode and file sharing flag.
*
*Purpose:
*       parse the string, looking for exactly one of {rwa}, at most one '+',
*       at most one of {tb}, at most one of {cn}, at most one of {SR}, at most
*       one 'T', and at most one 'D'. pass the result on as an int containing
*       flags of what was found. open a file with proper mode if permissions
*       allow. buffer not allocated until first i/o call is issued. intended
*       for use inside library only
*
*Entry:
*       char *filename - file to open
*       char *mode - mode to use (see above)
*       int shflag - file sharing flag
*       FILE *stream - stream to use for file
*
*Exit:
*       set stream's fields, and causes system file management by system calls
*       returns stream or NULL if fails
*
*Exceptions:
*
*******************************************************************************/

#ifdef _UNICODE
FILE * __cdecl _wopenfile (
#else  /* _UNICODE */
FILE * __cdecl _openfile (
#endif  /* _UNICODE */
        const _TSCHAR *filename,
        REG3 const _TSCHAR *mode,
        int shflag,
        FILE *str
        )
{
        REG2 int modeflag;
        int streamflag = _commode;
        int commodeset = 0;
        int scanset    = 0;
        int whileflag;
        int filedes;
        REG1 FILE *stream;

        _ASSERTE(filename != NULL);
        _ASSERTE(mode != NULL);
        _ASSERTE(str != NULL);

        /* Parse the user's specification string as set flags in
               (1) modeflag - system call flags word
               (2) streamflag - stream handle flags word. */

        /* First mode character must be 'r', 'w', or 'a'. */

        switch (*mode) {
        case _T('r'):
                modeflag = _O_RDONLY;
                streamflag |= _IOREAD;
                break;
        case _T('w'):
                modeflag = _O_WRONLY | _O_CREAT | _O_TRUNC;
                streamflag |= _IOWRT;
                break;
        case _T('a'):
                modeflag = _O_WRONLY | _O_CREAT | _O_APPEND;
                streamflag |= _IOWRT;
                break;
        default:
                return(NULL);
                break;
        }

        /* There can be up to three more optional mode characters:
           (1) A single '+' character,
           (2) One of 't' and 'b' and
           (3) One of 'c' and 'n'.
        */

        whileflag=1;

        while(*++mode && whileflag)
                switch(*mode) {

                case _T('+'):
                        if (modeflag & _O_RDWR)
                                whileflag=0;
                        else {
                                modeflag |= _O_RDWR;
                                modeflag &= ~(_O_RDONLY | _O_WRONLY);
                                streamflag |= _IORW;
                                streamflag &= ~(_IOREAD | _IOWRT);
                        }
                        break;

                case _T('b'):
                        if (modeflag & (_O_TEXT | _O_BINARY))
                                whileflag=0;
                        else
                                modeflag |= _O_BINARY;
                        break;

                case _T('t'):
                        if (modeflag & (_O_TEXT | _O_BINARY))
                                whileflag=0;
                        else
                                modeflag |= _O_TEXT;
                        break;

                case _T('c'):
                        if (commodeset)
                                whileflag=0;
                        else {
                                commodeset = 1;
                                streamflag |= _IOCOMMIT;
                        }
                        break;

                case _T('n'):
                        if (commodeset)
                                whileflag=0;
                        else {
                                commodeset = 1;
                                streamflag &= ~_IOCOMMIT;
                        }
                        break;

                case _T('S'):
                        if (scanset)
                                whileflag=0;
                        else {
                                scanset = 1;
                                modeflag |= _O_SEQUENTIAL;
                        }
                        break;

                case _T('R'):
                        if (scanset)
                                whileflag=0;
                        else {
                                scanset = 1;
                                modeflag |= _O_RANDOM;
                        }
                        break;

                case _T('T'):
                        if (modeflag & _O_SHORT_LIVED)
                                whileflag=0;
                        else
                                modeflag |= _O_SHORT_LIVED;
                        break;

                case _T('D'):
                        if (modeflag & _O_TEMPORARY)
                                whileflag=0;
                        else
                                modeflag |= _O_TEMPORARY;
                        break;

                default:
                        whileflag=0;
                        break;
                }

        /* Try to open the file.  Note that if neither 't' nor 'b' is
           specified, _sopen will use the default. */

        if ((filedes = _tsopen(filename, modeflag, shflag, CMASK)) < 0)
                return(NULL);

        /* Set up the stream data base. */
#ifndef CRTDLL
        _cflush++;  /* force library pre-termination procedure */
#endif  /* CRTDLL */
        /* Init pointers */
        stream = str;

        stream->_flag = streamflag;
        stream->_cnt = 0;
        stream->_tmpfname = stream->_base = stream->_ptr = NULL;

        stream->_file = filedes;

        return(stream);
}


#else  /* _WIN32 */

#if defined (_M_MPPC) || defined (_M_M68K)


#include <cruntime.h>
#include <stdio.h>
#include <fcntl.h>
#include <file2.h>
#include <io.h>
#include <dbgint.h>
#include <internal.h>

#define CMASK   0644    /* rw-r--r-- */

/***
*FILE *_openfile(filename, mode, shflag, stream) - open a file with string
*       mode and file sharing flag.
*
*Purpose:
*       parse the string, looking for exactly one of {rwa}, at most one '+',
*       at most one of {tb} and at most one of {cn}. pass the result on as
*       an int containing flags of what was found. open a file with proper
*       mode if permissions allow. buffer not allocated until first i/o call
*       is issued. intended for use inside library only
*
*Entry:
*       char *filename - file to open
*       char *mode - mode to use (see above)
*       int shflag - file sharing flag
*       FILE *stream - stream to use for file
*
*Exit:
*       set stream's fields, and causes system file management by system calls
*       returns stream or NULL if fails
*
*Exceptions:
*
*******************************************************************************/

FILE * __cdecl _openfile (
        const char *filename,
        REG3 const char *mode,
        int shflag,
        FILE *str
        )
{
        REG2 int modeflag;
        int streamflag = _commode;
        int commodeset = 0;
        int whileflag;
        int filedes;
        REG1 FILE *stream;

        _ASSERTE(filename != NULL);
        _ASSERTE(mode != NULL);
        _ASSERTE(str != NULL);

        /* Parse the user's specification string as set flags in
               (1) modeflag - system call flags word
               (2) streamflag - stream handle flags word. */

        /* First mode character must be 'r', 'w', or 'a'. */

        switch (*mode) {
        case 'r':
                modeflag = _O_RDONLY;
                streamflag |= _IOREAD;
                break;
        case 'w':
                modeflag = _O_WRONLY | _O_CREAT | _O_TRUNC;
                streamflag |= _IOWRT;
                break;
        case 'a':
                modeflag = _O_WRONLY | _O_CREAT | _O_APPEND;
                streamflag |= _IOWRT;
                break;
        default:
                return(NULL);
                break;
        }

        /* There can be up to three more optional mode characters:
           (1) A single '+' character,
           (2) One of 't' and 'b' and
           (3) One of 'c' and 'n'.
        */

        whileflag=1;

        while(*++mode && whileflag)
                switch(*mode) {

                case '+':
                        if (modeflag & _O_RDWR)
                                whileflag=0;
                        else {
                                modeflag |= _O_RDWR;
                                modeflag &= ~(_O_RDONLY | _O_WRONLY);
                                streamflag |= _IORW;
                                streamflag &= ~(_IOREAD | _IOWRT);
                        }
                        break;
                case 't':
                        if (modeflag & (_O_TEXT | _O_BINARY))
                                whileflag=0;
                        else
                                modeflag |= _O_TEXT;
                        break;

                case 'b':
                        if (modeflag & (_O_TEXT | _O_BINARY))
                                whileflag=0;
                        else
                                modeflag |= _O_BINARY;
                        break;
                case 'c':
                        if (commodeset)
                                whileflag=0;
                        else {
                                commodeset = 1;
                                streamflag |= _IOCOMMIT;
                        }
                        break;

                case 'n':
                        if (commodeset)
                                whileflag=0;
                        else {
                                commodeset = 1;
                                streamflag &= ~_IOCOMMIT;
                        }
                        break;
                default:
                        whileflag=0;
                        break;
                }

        /* Try to open the file.  Note that if neither 't' nor 'b' is
           specified, _sopen will use the default. */

        if ((filedes = _sopen(filename, modeflag, shflag, CMASK)) < 0)
                return(NULL);

        /* Set up the stream data base. */

#ifndef CRTDLL
        /* force library pre-termination procedure */
        _cflush++;
#endif  /* CRTDLL */

        /* Init pointers */
        stream = str;

        stream->_flag = streamflag;
        stream->_cnt = 0;
        stream->_tmpfname = stream->_base = stream->_ptr = NULL;
        stream->_file = filedes;

        return(stream);
}


#endif  /* defined (_M_MPPC) || defined (_M_M68K) */

#endif  /* _WIN32 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类小说综合欧美亚洲| 欧美日韩一区不卡| 91久久久免费一区二区| 欧美女孩性生活视频| 国产精品色哟哟网站| 午夜一区二区三区视频| 国产91精品精华液一区二区三区| 色94色欧美sute亚洲线路一久| 精品国产不卡一区二区三区| 一区二区成人在线| 国产91色综合久久免费分享| 欧美一级午夜免费电影| 亚洲视频一二三区| 成人三级伦理片| 欧美电影免费观看高清完整版在 | 久久先锋影音av鲁色资源网| 国产精品国产三级国产aⅴ中文| 蜜桃精品视频在线观看| 精品视频一区二区不卡| 一区二区三区精品久久久| 国产精品一线二线三线精华| 日韩欧美专区在线| 午夜亚洲国产au精品一区二区| 91蜜桃免费观看视频| 中文字幕乱码日本亚洲一区二区| 久久精品二区亚洲w码| 欧美日韩一区在线| 精品中文字幕一区二区小辣椒| 欧美日韩一区中文字幕| 亚洲电影第三页| 欧洲激情一区二区| 一级日本不卡的影视| 97aⅴ精品视频一二三区| 国产精品国产三级国产aⅴ原创| 国产激情一区二区三区| 国产午夜三级一区二区三| 激情综合色丁香一区二区| 精品美女一区二区| 国内一区二区在线| 国产无遮挡一区二区三区毛片日本| 久久精品久久精品| 2020国产成人综合网| 国产一区二区在线观看免费| 亚洲精品一区二区三区福利| 国模无码大尺度一区二区三区| 欧美一区二区视频免费观看| 日韩精品五月天| 欧美一区二区黄| 精品一区中文字幕| 欧美国产日韩精品免费观看| 99久久99精品久久久久久| 亚洲精品网站在线观看| 欧美人体做爰大胆视频| 美国毛片一区二区| 亚洲国产高清在线观看视频| 91视频你懂的| 天天亚洲美女在线视频| 欧美一级黄色片| 国产精品原创巨作av| 国产精品久久久久久亚洲伦| 欧美影院一区二区| 久久精品国产亚洲a| 国产欧美一区二区三区网站| 色哟哟一区二区三区| 免费高清视频精品| 亚洲欧洲日产国产综合网| 在线观看视频一区| 国产一区啦啦啦在线观看| 亚洲视频香蕉人妖| 精品国产免费一区二区三区香蕉| 91亚洲精品久久久蜜桃| 日韩va欧美va亚洲va久久| 国产欧美精品一区| 欧美美女视频在线观看| 粉嫩13p一区二区三区| 亚洲国产精品一区二区www在线| 精品日本一线二线三线不卡| 在线亚洲高清视频| 国产成人免费视频精品含羞草妖精| 亚洲女爱视频在线| 精品日韩99亚洲| 欧美亚洲国产一区二区三区va | 老司机免费视频一区二区| 国产精品乱人伦| 欧美一区二区三区四区五区 | 在线视频亚洲一区| 国产一区二区三区免费播放| 亚洲成人手机在线| 国产精品欧美极品| 欧美va亚洲va| 欧美日韩一二三| 99视频精品全部免费在线| 韩国视频一区二区| 香蕉久久一区二区不卡无毒影院| 中文字幕不卡在线观看| 欧美va亚洲va香蕉在线| 欧美美女网站色| 欧美羞羞免费网站| 97aⅴ精品视频一二三区| 国产精品538一区二区在线| 五月激情综合色| 亚洲美女精品一区| 国产精品美女久久久久aⅴ | 欧美一级搡bbbb搡bbbb| 在线观看国产一区二区| 91色婷婷久久久久合中文| 国产99久久久国产精品| 国内成人免费视频| 国内精品久久久久影院薰衣草 | 激情图片小说一区| 久久国产乱子精品免费女| 丝袜亚洲另类丝袜在线| 午夜精品久久久久久不卡8050| 亚洲欧美综合另类在线卡通| 国产精品视频你懂的| 国产欧美日本一区二区三区| 欧美精品一区二区三区一线天视频 | 九色|91porny| 美女任你摸久久| 另类人妖一区二区av| 美女一区二区三区在线观看| 日韩精品电影在线| 美女视频黄久久| 国内精品久久久久影院薰衣草| 精品亚洲欧美一区| 麻豆精品久久久| 国产乱码字幕精品高清av| 国产一区二区网址| av在线不卡免费看| 色呦呦一区二区三区| 欧美日韩高清一区二区不卡| 欧美日韩国产影片| 日韩视频免费观看高清完整版在线观看| 7777精品伊人久久久大香线蕉的| 欧美一区二区成人| www精品美女久久久tv| 中文一区一区三区高中清不卡| 中文字幕亚洲在| 亚洲成人一区二区在线观看| 激情综合网av| 成人av第一页| 欧美日韩精品是欧美日韩精品| 日韩午夜在线播放| 国产精品视频第一区| 亚洲韩国一区二区三区| 美女性感视频久久| 波多野结衣一区二区三区 | 国产成人综合精品三级| 色综合久久久久久久久久久| 欧美精品丝袜中出| 国产亚洲精品aa午夜观看| 一区二区三区不卡在线观看| 免费观看久久久4p| av在线一区二区| 日韩视频在线永久播放| 日本一区二区成人| 日韩高清不卡一区二区| 99在线精品免费| 日韩午夜在线影院| 一区二区三区不卡在线观看| 国产呦精品一区二区三区网站| 欧美性生活一区| 久久久久久久性| 婷婷丁香久久五月婷婷| 成人黄色av电影| 欧美一区二区三区在| 一区二区三区中文字幕| 国产福利电影一区二区三区| 欧美日韩国产欧美日美国产精品| 国产欧美日韩不卡| 久久精品久久综合| 欧美日韩的一区二区| 中文字幕不卡在线| 国内精品在线播放| 欧美精品丝袜中出| 亚洲最大成人网4388xx| 高清不卡一二三区| 欧美成人艳星乳罩| 亚洲高清三级视频| 91精品福利视频| 中文字幕国产一区二区| 精品一区在线看| 日韩色视频在线观看| 日日夜夜精品视频天天综合网| 色综合网色综合| 亚洲精选免费视频| 久久精品国产99| 日韩一区二区三区四区 | 欧洲精品一区二区三区在线观看| 久久精品视频一区| 狠狠色狠狠色综合系列| 69久久夜色精品国产69蝌蚪网| 最新欧美精品一区二区三区| 国产美女视频一区| 久久午夜国产精品| 国内精品久久久久影院一蜜桃| 欧美xxxxx裸体时装秀| 蜜桃一区二区三区四区| 欧美日韩一区不卡| 日韩av一级片|