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

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

?? tmpfile.c

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***
*tmpfile.c - create unique file name or file
*
*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines tmpnam() and tmpfile().
*
*******************************************************************************/


#ifdef _WIN32


#include <cruntime.h>
#include <errno.h>
#include <process.h>
#include <fcntl.h>
#include <io.h>
#include <mtdll.h>
#include <share.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <file2.h>
#include <internal.h>
#include <tchar.h>
#include <dbgint.h>

/*
 * Buffers used by tmpnam() and tmpfile() to build filenames.
 */
static _TSCHAR namebuf0[L_tmpnam] = { 0 };      /* used by tmpnam()  */
static _TSCHAR namebuf1[L_tmpnam] = { 0 };      /* used by tmpfile() */

/*
 * Initializing function for namebuf0 and namebuf1.
 */
#ifdef _UNICODE
static void __cdecl winit_namebuf(int);
#else  /* _UNICODE */
static void __cdecl init_namebuf(int);
#endif  /* _UNICODE */

/*
 * Generator function that produces temporary filenames
 */
#ifdef _UNICODE
static int __cdecl wgenfname(wchar_t *);
#else  /* _UNICODE */
static int __cdecl genfname(char *);
#endif  /* _UNICODE */


/***
*_TSCHAR *tmpnam(_TSCHAR *s) - generate temp file name
*
*Purpose:
*       Creates a file name that is unique in the directory specified by
*       _P_tmpdir in stdio.h.  Places file name in string passed by user or
*       in static mem if pass NULL.
*
*Entry:
*       _TSCHAR *s - ptr to place to put temp name
*
*Exit:
*       returns pointer to constructed file name (s or address of static mem)
*       returns NULL if fails
*
*Exceptions:
*
*******************************************************************************/

_TSCHAR * __cdecl _ttmpnam (
        _TSCHAR *s
        )
{
#ifdef _MT
        _ptiddata ptd;
#endif  /* _MT */
        _mlock(_TMPNAM_LOCK);

        /*
         * Initialize namebuf0, if needed. Otherwise, call genfname() to
         * generate the next filename.
         */
        if ( *namebuf0 == 0 ) {
#ifdef _UNICODE
                winit_namebuf(0);
#else  /* _UNICODE */
                init_namebuf(0);
#endif  /* _UNICODE */
        }
#ifdef _UNICODE
        else if ( wgenfname(namebuf0) )
#else  /* _UNICODE */
        else if ( genfname(namebuf0) )
#endif  /* _UNICODE */
                goto tmpnam_err;

        /*
         * Generate a filename that doesn't already exist.
         */
        while ( _taccess(namebuf0, 0) == 0 )
#ifdef _UNICODE
                if ( wgenfname(namebuf0) )
#else  /* _UNICODE */
                if ( genfname(namebuf0) )
#endif  /* _UNICODE */
                        goto tmpnam_err;

        /*
         * Filename has successfully been generated.
         */
        if ( s == NULL )
#ifdef _MT
        {
                /*
                 * Use a per-thread buffer to hold the generated file name.
                 * If there isn't one, and one cannot be created, just use
                 * namebuf0.
                 */
                ptd = _getptd();
#ifdef _UNICODE
                if ( (ptd->_wnamebuf0 != NULL) || ((ptd->_wnamebuf0 =
                      _malloc_crt(L_tmpnam * sizeof(wchar_t))) != NULL) )
                {
                        s = ptd->_wnamebuf0;
                        wcscpy(s, namebuf0);
                }
#else  /* _UNICODE */
                if ( (ptd->_namebuf0 != NULL) || ((ptd->_namebuf0 =
                      _malloc_crt(L_tmpnam)) != NULL) )
                {
                        s = ptd->_namebuf0;
                        strcpy(s, namebuf0);
                }
#endif  /* _UNICODE */
                else
                        s = namebuf0;
        }
#else  /* _MT */
                s = namebuf0;
#endif  /* _MT */
        else
                _tcscpy(s, namebuf0);

        _munlock(_TMPNAM_LOCK);
        return s;

        /*
         * Error return path. All errors exit through here.
         */
tmpnam_err:
        _munlock(_TMPNAM_LOCK);
        return NULL;
}

#ifndef _UNICODE

/***
*FILE *tmpfile() - create a temporary file
*
*Purpose:
*       Creates a temporary file with the file mode "w+b".  The file
*       will be automatically deleted when closed or the program terminates
*       normally.
*
*Entry:
*       None.
*
*Exit:
*       Returns stream pointer to opened file.
*       Returns NULL if fails
*
*Exceptions:
*
*******************************************************************************/

FILE * __cdecl tmpfile (
        void
        )
{
        FILE *stream;
        int fh;

        _mlock(_TMPNAM_LOCK);

        /*
         * Initialize namebuf1, if needed. Otherwise, call genfname() to
         * generate the next filename.
         */
        if ( *namebuf1 == 0 ) {
                init_namebuf(1);
        }
        else if ( genfname(namebuf1) )
                goto tmpfile_err0;

        /*
         * Get a free stream.
         *
         * Note: In multi-thread models, the stream obtained below is locked!
         */
        if ( (stream = _getstream()) == NULL )
                goto tmpfile_err0;

        /*
         * Create a temporary file.
         *
         * Note: The loop below will only create a new file. It will NOT
         * open and truncate an existing file. Either behavior is probably
         * legal under ANSI (4.9.4.3 says tmpfile "creates" the file, but
         * also says it is opened with mode "wb+"). However, the behavior
         * implemented below is compatible with prior versions of MS-C and
         * makes error checking easier.
         */
        while ( ((fh = _sopen(namebuf1,
                              _O_CREAT | _O_EXCL | _O_RDWR | _O_BINARY |
                                _O_TEMPORARY,
                              _SH_DENYNO,
                              _S_IREAD | _S_IWRITE
                             ))
            == -1) && (errno == EEXIST) )
                if ( genfname(namebuf1) )
                        break;

        /*
         * Check that the loop above did indeed create a temporary
         * file.
         */
        if ( fh == -1 )
                goto tmpfile_err1;

        /*
         * Initialize stream
         */
#ifdef _DEBUG
        if ( (stream->_tmpfname = _malloc_crt( (_tcslen( namebuf1 ) + 1) *
               sizeof(_TSCHAR) )) == NULL )
#else  /* _DEBUG */
        if ( (stream->_tmpfname = _tcsdup( namebuf1 )) == NULL )
#endif  /* _DEBUG */
        {
                /* close the file, then branch to error handling */
                _close(fh);
                goto tmpfile_err1;
        }
#ifdef _DEBUG
        _tcscpy( stream->_tmpfname, namebuf1 );
#endif  /* _DEBUG */
        stream->_cnt = 0;
        stream->_base = stream->_ptr = NULL;
        stream->_flag = _commode | _IORW;
        stream->_file = fh;

        _unlock_str(stream);
        _munlock(_TMPNAM_LOCK);
        return stream;

        /*
         * Error return. All errors paths branch to one of the two
         * labels below.
         */
tmpfile_err1:
        _unlock_str(stream);
tmpfile_err0:
        _munlock(_TMPNAM_LOCK);
        return NULL;
}

#endif  /* _UNICODE */

/***
*static void init_namebuf(flag) - initializes the namebuf arrays
*
*Purpose:
*       Called once each for namebuf0 and namebuf1, to initialize
*       them.
*
*Entry:
*       int flag            - flag set to 0 if namebuf0 is to be initialized,
*                             non-zero (1) if namebuf1 is to be initialized.
*Exit:
*
*Exceptions:
*
*******************************************************************************/

#ifdef _UNICODE
static void __cdecl winit_namebuf(
#else  /* _UNICODE */
static void __cdecl init_namebuf(
#endif  /* _UNICODE */
        int flag
        )
{
        _TSCHAR *p, *q;

        if ( flag == 0 )
            p = namebuf0;
        else
            p = namebuf1;

        /*
         * Put in the path prefix. Make sure it ends with a slash or
         * backslash character.
         */
#ifdef _UNICODE
        wcscpy(p, _wP_tmpdir);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费网站在线观看| 欧美日韩一区二区三区四区五区 | 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲一区二区美女| 4438x亚洲最大成人网| 久久精品久久99精品久久| 久久综合久久久久88| 国产麻豆成人精品| 依依成人精品视频| 精品福利二区三区| 色综合咪咪久久| 久久99久久99| 夜夜嗨av一区二区三区网页| 精品少妇一区二区| 色综合久久久久久久久久久| 色8久久精品久久久久久蜜| 蜜桃视频在线观看一区二区| 国产精品久久久久久久久动漫| 日本一区二区三区电影| 欧美日韩国产首页在线观看| 成人一区二区三区视频| 奇米精品一区二区三区四区 | 91免费看片在线观看| 美女视频黄 久久| 免费人成在线不卡| 国产成人av影院| 久久精品久久99精品久久| 国产成人精品免费| 色婷婷精品久久二区二区蜜臀av| 欧美影院精品一区| 一本久久综合亚洲鲁鲁五月天| 欧美无乱码久久久免费午夜一区| 欧美一卡2卡3卡4卡| 欧美视频第二页| 亚洲精品一区二区三区香蕉| 中文字幕在线不卡一区| 国产精品免费丝袜| 日韩中文字幕亚洲一区二区va在线| 中文字幕佐山爱一区二区免费| 中文字幕欧美国产| 国产日韩欧美亚洲| 日精品一区二区| 色悠悠久久综合| 久久夜色精品国产噜噜av| 夜夜嗨av一区二区三区中文字幕| 黄色精品一二区| 国产一区二区在线看| 91国产免费看| 国产欧美精品一区二区色综合 | 国产精品久久久久永久免费观看| 午夜私人影院久久久久| 亚洲综合视频网| 国产又黄又大久久| 欧美电影一区二区| 日韩久久精品一区| 久久久国产一区二区三区四区小说 | 91麻豆精品国产自产在线观看一区| 国产欧美一区二区精品性色超碰| 天堂成人免费av电影一区| 91麻豆成人久久精品二区三区| 久久久久久久免费视频了| 日本怡春院一区二区| 美女视频网站黄色亚洲| 欧美综合天天夜夜久久| 欧美日韩在线播放一区| 国产精品美女久久久久久| 国产成人在线影院| 久久久无码精品亚洲日韩按摩| 热久久一区二区| 欧美嫩在线观看| 香蕉久久一区二区不卡无毒影院 | 国产亚洲一本大道中文在线| 国产女同性恋一区二区| 麻豆精品一区二区av白丝在线| 欧美色网一区二区| 亚洲一区二区av在线| 在线观看亚洲一区| 亚洲综合激情另类小说区| 欧美午夜不卡视频| 亚洲伊人伊色伊影伊综合网| 欧美亚洲国产一区在线观看网站| 亚洲乱码国产乱码精品精98午夜| 91丨九色丨国产丨porny| 国产精品素人一区二区| 99久精品国产| 日韩精品影音先锋| 精一区二区三区| 精品成人a区在线观看| 国产精品一线二线三线| 欧美一区二区三区四区五区| 日本一不卡视频| 日韩免费观看高清完整版 | 中文字幕一区二区三区不卡在线 | 色婷婷狠狠综合| 亚洲综合男人的天堂| 51午夜精品国产| 国产在线视频不卡二| 日本一二三不卡| 在线亚洲+欧美+日本专区| 琪琪久久久久日韩精品| 国产亚洲精品中文字幕| www.99精品| 国产精品污www在线观看| 色综合咪咪久久| 蜜桃视频在线一区| 亚洲四区在线观看| 欧美成人三级在线| 99久久精品国产导航| 婷婷丁香激情综合| 欧美经典一区二区| 欧美日韩视频在线第一区 | 成人免费看的视频| 亚洲一区欧美一区| 久久久久久久久99精品| 欧美性做爰猛烈叫床潮| 国内精品免费在线观看| 亚洲午夜免费电影| 色8久久精品久久久久久蜜| 久久精品国产成人一区二区三区 | 亚洲美女屁股眼交| 99视频超级精品| 蜜桃精品在线观看| 樱桃视频在线观看一区| 国产拍欧美日韩视频二区| 欧美日韩一区二区欧美激情| 成人美女视频在线观看18| 男人操女人的视频在线观看欧美| 国产精品国模大尺度视频| 日韩视频一区二区三区在线播放 | 亚洲欧洲性图库| 精品91自产拍在线观看一区| 日本高清不卡视频| 懂色av一区二区三区免费看| 国产精品拍天天在线| 精品久久久久久亚洲综合网| 欧美日韩激情在线| 一本一道波多野结衣一区二区| 国产精品影视在线| 久久成人av少妇免费| 日韩高清中文字幕一区| 亚洲一区二区影院| 亚洲另类在线一区| 亚洲人成网站精品片在线观看| 国产欧美中文在线| 国产情人综合久久777777| 久久久久久久久久美女| 久久―日本道色综合久久| 精品国产欧美一区二区| 日韩精品中午字幕| 久久综合九色欧美综合狠狠| 精品乱人伦小说| 久久人人97超碰com| 欧美经典一区二区| 国产色婷婷亚洲99精品小说| 中日韩免费视频中文字幕| 中文一区一区三区高中清不卡| 国产亚洲综合在线| 国产嫩草影院久久久久| 中文字幕制服丝袜成人av| 中文字幕中文字幕一区二区| 亚洲码国产岛国毛片在线| 亚洲日本va午夜在线影院| 亚洲综合激情另类小说区| 偷拍自拍另类欧美| 国产一区 二区 三区一级| 国产成a人亚洲| 色综合一个色综合亚洲| 九色|91porny| 成人永久免费视频| 色香色香欲天天天影视综合网 | 午夜在线成人av| 日本亚洲欧美天堂免费| 国产在线精品一区二区| 国产成人在线影院| 91蝌蚪porny成人天涯| 欧美日韩成人综合在线一区二区| 在线成人av网站| 国产亚洲一区二区三区在线观看| 中文字幕在线一区免费| 天堂久久久久va久久久久| 国产精品自拍三区| 色综合色狠狠综合色| 精品国产乱码久久久久久牛牛 | 69堂成人精品免费视频| 欧美va亚洲va国产综合| 国产精品剧情在线亚洲| 日日噜噜夜夜狠狠视频欧美人| 激情久久五月天| 欧美这里有精品| 2014亚洲片线观看视频免费| 亚洲视频一区在线| 麻豆国产精品官网| 91啪亚洲精品| 精品久久久久久久久久久久包黑料 | 国产精品羞羞答答xxdd| 日本高清免费不卡视频| 久久精品人人做人人综合| 亚洲一区视频在线观看视频| 成人高清免费观看| 国产99久久久国产精品免费看|