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

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

?? io.c

?? Open DMT Client C Source code
?? C
?? 第 1 頁 / 共 2 頁
字號:
// ----------------------------------------------------------------------------// Copyright 2006-2007, Martin D. Flynn// All rights reserved// ----------------------------------------------------------------------------//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at// // http://www.apache.org/licenses/LICENSE-2.0// // Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.//// ----------------------------------------------------------------------------// Description://  File I/O utilities //  Utilities for reading/writing files.// ---// Change History://  2006/01/04  Martin D. Flynn//     -Initial release//  2006/01/18  Martin D. Flynn//     -Added 'ioAppendFile'//  2007/01/28  Martin D. Flynn//     -WindowsCE port//     -Added 'ioCreateFile'//     -Added 'ioOpenStream', 'ioCloseStream', 'ioReadStream', 'ioWriteStream'//     -Added option for locking file i/o// ----------------------------------------------------------------------------#include "stdafx.h" // TARGET_WINCE#define SKIP_TRANSPORT_MEDIA_CHECK // only if TRANSPORT_MEDIA not used in this file #include "custom/defaults.h"#include <stdio.h>#include <string.h>#include <stdarg.h>#include <stdlib.h>#if defined(TARGET_WINCE)// already included#else#  include <unistd.h>#  include <fcntl.h>#  include <dirent.h>#  include <errno.h>#  include <termios.h>#  include <sys/stat.h>#  include <sys/types.h>#  include <sys/select.h>#  include <sys/errno.h>#endif#include "custom/log.h"#include "tools/stdtypes.h"#include "tools/strtools.h"#include "tools/io.h"// ----------------------------------------------------------------------------#if defined(TARGET_WINCE)// 'mkdir' not yet implemented on WinCE#else#  ifndef IO_mkdir//   define 'mkdir' if not defined elsewhere#    define IO_mkdir(DIR, PERM)     mkdir((DIR),(PERM))#  endif#endif// ----------------------------------------------------------------------------// uncomment to enable file access thread locking // this is only needed if the platform 'fread'/'fwrite' functions// are not thread-safe. (not fully implemented)//#define IO_THREAD_LOCK#ifdef IO_THREAD_LOCK#  include "tools/threads.h"static threadMutex_t                ioMutex;#  define IO_LOCK                   MUTEX_LOCK(&ioMutex);#  define IO_UNLOCK                 MUTEX_UNLOCK(&ioMutex);#else#  define IO_LOCK#  define IO_UNLOCK#endif// ----------------------------------------------------------------------------/* initialization */void ioInitialize(){#if defined(IO_THREAD_LOCK)    /* create mutex */    threadMutexInit(&ioMutex);#endif}// ----------------------------------------------------------------------------#if defined(TARGET_WINCE)// not supported#else/* turn off buffering on stdin */void ioResetSTDIN(){    // turn off buffering    struct termios options;    //setvbuf(stdin, 0/*(char*)malloc(200)*/, _IONBF, 0); // [MALLOC]    fcntl(STDIN_FILENO, F_SETFL, 0);    tcgetattr(STDIN_FILENO, &options);    options.c_lflag &= ~ECHO;    options.c_lflag &= ~ICANON;    tcsetattr(STDIN_FILENO, TCSANOW, &options);}#endif// ----------------------------------------------------------------------------#if defined(TARGET_WINCE)// not supported#else/* turn off buffering on stdout */void ioResetSTDOUT(){    // turn off buffering    struct termios options;    //setvbuf(stdout, (char*)malloc(1), _IOFBF, 1); // [MALLOC]    setvbuf(stdout, 0, _IONBF, 0);    fcntl(STDOUT_FILENO, F_SETFL, 0);    tcgetattr(STDOUT_FILENO, &options);    options.c_lflag &= ~ICANON;    tcsetattr(STDOUT_FILENO, TCSANOW, &options);}#endif// ----------------------------------------------------------------------------/* return true if specified name exists */utBool ioExists(const char *fn){    if (fn && *fn) {#if defined(TARGET_WINCE)        wchar_t wfn[512];        strWideCopy(wfn, sizeof(wfn)/sizeof(wfn[0]), fn, -1);        //MultiByteToWideChar(CP_UTF8, 0, fn, -1, wfn, sizeof(wfn)/sizeof(wchar_t));        DWORD attr = GetFileAttributes(wfn);        return (attr != 0xFFFFFFFFL)? utTrue : utFalse;#else        struct stat buf;        int rtn = stat(fn, &buf);        return (rtn == 0)? utTrue : utFalse;#endif    } else {        return utFalse;    }}/* return true if specified name is a file */utBool ioIsFile(const char *fn){    if (fn && *fn) {#if defined(TARGET_WINCE)        wchar_t wfn[512];        strWideCopy(wfn, sizeof(wfn)/sizeof(wfn[0]), fn, -1);        //MultiByteToWideChar(CP_UTF8, 0, fn, -1, wfn, sizeof(wfn)/sizeof(wchar_t));        DWORD attr = GetFileAttributes(wfn);        return ((attr != 0xFFFFFFFFL) && ((attr & FILE_ATTRIBUTE_DIRECTORY) == 0x0))? utTrue : utFalse;#else        struct stat buf;        int rtn = stat(fn, &buf);        return (rtn == 0)? S_ISREG(buf.st_mode) : utFalse;#endif    } else {        return utFalse;    }}/* return true if specified name is a file */utBool ioIsDirectory(const char *fn){    if (fn && *fn) {#if defined(TARGET_WINCE)        wchar_t wfn[512];        strWideCopy(wfn, sizeof(wfn)/sizeof(wfn[0]), fn, -1);        DWORD attr = GetFileAttributes(wfn);        return ((attr != 0xFFFFFFFFL) && ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0x0))? utTrue : utFalse;#else        struct stat buf;        int rtn = stat(fn, &buf);        return (rtn == 0)? S_ISDIR(buf.st_mode) : utFalse;#endif    } else {        return utFalse;    }}// ----------------------------------------------------------------------------/* read file list from directory */int ioReadDir(const char *dirName, char *buf, int bufLen, char *file[], int fileLen){        /* no place to store the list of files? */    if (!buf || (bufLen < 5) || !file || (fileLen < 1)) {        logERROR(LOGSRC,"Invalid parameters ...");        return 0;    }        /* file count */    int fileNdx = 0, bufNdx = 0;#if defined(TARGET_LINUX) || defined(TARGET_CYGWIN)    // open directory     DIR *dir = opendir(dirName);    if (!dir) {        logERROR(LOGSRC,"Unable to open dir %s", dirName);        return -1;    }        // read directory contents    while (utTrue) {        struct dirent *de = readdir(dir);        if (!de) {            // no more directory entries?            break;         }        char *name = de->d_name;        if (!strEquals(name,".") && !strEquals(name,"..")) {            //logINFO(LOGSRC,"Found: %s", de->d_name);            int nameLen = strlen(name);            if ((bufNdx + nameLen + 1) >= bufLen) {                break; // buffer overflow            }            strcpy(&buf[bufNdx], name);            file[fileNdx++] = &buf[bufNdx];            bufNdx += (nameLen + 1);            if (fileNdx >= fileLen) {                break; // file list overflow            }        }    }        // close directory    if (closedir(dir)) {        logERROR(LOGSRC,"I/O closedir");    }    #elif defined(TARGET_WINCE)    // open directory     WIN32_FIND_DATA FileData;    TCHAR wszDir[MAX_PATH + 1];    strWideCopy(wszDir, sizeof(wszDir)-3, dirName, -1);    wcscat(wszDir, L"\\*");    HANDLE hList = FindFirstFile(wszDir, &FileData);    if (hList == INVALID_HANDLE_VALUE) {        logERROR(LOGSRC,"Unable to open dir %s", dirName);        return -1;    }        // read directory contents    while (utTrue) {        TCHAR *name = FileData.cFileName;        if ((wcscmp(name,L".")==0) && (wcscmp(name,L"..")==0)) {            logINFO(LOGSRC,"Found: %ls", name);            int nameLen = wcslen(name);            if ((bufNdx + nameLen + 1) >= bufLen) {                break; // buffer overflow            }            sprintf(&buf[bufNdx], "%ls", name); // wide to narrow copy            file[fileNdx++] = &buf[bufNdx];            bufNdx += (nameLen + 1);            if (fileNdx >= fileLen) {                break; // file list overflow            }        }        if (!FindNextFile(hList, &FileData)) {            break;        }    }        // close directory    FindClose(hList); // ignore any returned errors#else#   warning 'ioReadDir' not supported on this platform#endif    /* return count */    return fileNdx;}// ----------------------------------------------------------------------------/* return size of file name */long ioGetFileSize(const char *fn, int fd){#if defined(TARGET_WINCE)    if (fn && *fn) {        wchar_t wfn[512];        strWideCopy(wfn, sizeof(wfn)/sizeof(wfn[0]), fn, -1);        HANDLE fh = CreateFile(wfn, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,             NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);        if (fh != INVALID_HANDLE_VALUE) {            DWORD fileSize = GetFileSize(fh, NULL);            CloseHandle(fh);            if (fileSize != INVALID_FILE_SIZE) {                return (long)fileSize;            } else {                DWORD err = GetLastError();                logWARNING(LOGSRC,"Unable to get file size: %ls [%lu]", wfn, err);                return -1L;            }        } else {            return -1L;        }    } else    if (fd >= 0) {        // not yet supported        logERROR(LOGSRC,"'ioGetFileSize' (with fd) not yet implemented");        return -1L;    } else {        return -1L;    }#else    struct stat buf;    int rtn = -1; // ERROR    if (fn && *fn) {        rtn = stat(fn, &buf);    } else    if (fd >= 0) {        rtn = fstat(fd, &buf);    }    return (rtn == 0)? buf.st_size : -1L;#endif}// ----------------------------------------------------------------------------utBool ioDeleteFile(const char *fn){    if (fn && *fn) {#if defined(TARGET_WINCE)        wchar_t wfn[512];        strWideCopy(wfn, sizeof(wfn)/sizeof(wfn[0]), fn, -1);        BOOL ok = DeleteFile(wfn);        return ok? utTrue : utFalse;#else        return (unlink(fn) == 0)? utTrue : utFalse;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞国产午夜精品免费视频| 91免费看片在线观看| 国产老女人精品毛片久久| 欧美怡红院视频| 久久精品人人做人人爽97| 亚洲一区二区三区四区在线免费观看| 久久国产婷婷国产香蕉| 欧美日韩激情一区二区三区| 国产精品免费aⅴ片在线观看| 青青青伊人色综合久久| 欧美午夜电影网| 日韩毛片一二三区| 国产精品原创巨作av| 欧美一卡在线观看| 亚洲成人一区在线| 在线看国产一区二区| 国产精品卡一卡二| 国产麻豆午夜三级精品| 欧美大片在线观看| 轻轻草成人在线| 欧美丰满嫩嫩电影| 香港成人在线视频| 欧美三级电影网站| 亚洲一区二区三区小说| 91成人在线精品| 亚洲精品国产a久久久久久| 成人av网站大全| 国产精品久久久久四虎| 成人在线综合网| 欧美国产日本视频| 丁香网亚洲国际| 欧美激情在线看| 成人黄色小视频在线观看| 国产欧美一区二区精品仙草咪| 国产曰批免费观看久久久| 精品久久久久久最新网址| 亚洲影视在线观看| 欧美曰成人黄网| 亚洲444eee在线观看| 欧美日高清视频| 日产国产欧美视频一区精品| 91精品国产色综合久久不卡蜜臀| 免费成人av资源网| 久久亚区不卡日本| www.成人网.com| 综合久久久久综合| 一区二区三区四区视频精品免费| 欧美老肥妇做.爰bbww视频| 国产日韩欧美电影| 国产一区二区中文字幕| 久久久亚洲高清| 波多野结衣在线一区| 亚洲私人影院在线观看| 在线观看视频一区| 日韩一区精品视频| 26uuu欧美日本| 成人精品一区二区三区四区| 一区二区视频在线看| 欧美精品国产精品| 国产成人一区在线| 一区二区三区精密机械公司| 91精品婷婷国产综合久久| 激情综合网av| 成人免费小视频| 91精品免费观看| 国产成人精品免费看| 一区二区三区小说| 欧美不卡一二三| 成人一道本在线| 亚洲一区二区三区爽爽爽爽爽| 88在线观看91蜜桃国自产| 国产xxx精品视频大全| 亚洲综合一二区| 久久综合九色综合欧美就去吻| 99精品视频在线观看免费| 日本伊人精品一区二区三区观看方式| 久久久久九九视频| 欧美人牲a欧美精品| 成人国产电影网| 蜜乳av一区二区| 亚洲高清在线视频| 国产欧美中文在线| 91精品黄色片免费大全| proumb性欧美在线观看| 精品一区二区三区免费| 一区二区三区成人| 国产欧美日韩亚州综合| 91精品婷婷国产综合久久性色| 91在线看国产| 国产麻豆精品在线观看| 日本色综合中文字幕| 午夜精品久久久久| 欧美日韩成人在线| 欧美综合一区二区| 老司机免费视频一区二区 | 国产成人综合在线观看| 亚洲综合视频在线观看| 欧美国产一区视频在线观看| 精品剧情v国产在线观看在线| 欧美色欧美亚洲另类二区| 粗大黑人巨茎大战欧美成人| 精品一区二区三区久久| 喷水一区二区三区| 亚洲成a人片综合在线| 亚洲免费视频中文字幕| 国产精品不卡在线| 国产免费久久精品| 精品国产麻豆免费人成网站| 制服丝袜亚洲播放| 7777精品伊人久久久大香线蕉 | 亚洲美女视频在线| 26uuu国产日韩综合| 日韩午夜电影在线观看| 欧美日韩中文字幕精品| 91福利视频网站| 欧美性生活大片视频| 欧美中文字幕不卡| 欧美在线free| 欧美肥胖老妇做爰| 日韩片之四级片| 精品1区2区在线观看| 26uuu亚洲综合色欧美| 国产欧美一区二区三区在线看蜜臀| 久久久99久久| 精品国产91乱码一区二区三区 | 一区二区激情视频| 亚洲精品伦理在线| 日韩在线观看一区二区| 美女久久久精品| 国产美女精品在线| 成人h动漫精品| 欧美在线视频全部完| 欧美肥妇bbw| wwwwxxxxx欧美| 中文字幕在线一区| 亚洲精品视频观看| 蜜臀久久久99精品久久久久久| 激情综合色丁香一区二区| 成人深夜视频在线观看| 色婷婷综合久色| 91精品国产丝袜白色高跟鞋| 久久精品欧美一区二区三区不卡| 1000部国产精品成人观看| 亚洲午夜久久久久久久久电影院| 看片的网站亚洲| 成人免费av网站| 在线综合视频播放| 久久九九影视网| 亚洲一区二区3| 黄一区二区三区| 在线免费亚洲电影| 精品久久久影院| 亚洲一区欧美一区| 韩国av一区二区三区在线观看| 91在线精品秘密一区二区| 欧美一区二区三区视频在线 | 国产亚洲福利社区一区| 一区av在线播放| 国产精品一区二区不卡| 欧美系列在线观看| 欧美激情综合在线| 青草av.久久免费一区| caoporm超碰国产精品| 欧美一区二区日韩一区二区| 亚洲色图一区二区| 国产美女娇喘av呻吟久久| 欧美精品黑人性xxxx| 最新国产精品久久精品| 国内精品久久久久影院薰衣草| 日本道在线观看一区二区| 国产午夜精品美女毛片视频| 亚洲777理论| 在线亚洲一区二区| 国产欧美日韩中文久久| 九九**精品视频免费播放| 欧美特级限制片免费在线观看| 亚洲国产高清在线观看视频| 久久国产精品免费| 欧美日韩免费一区二区三区| 国产精品天美传媒沈樵| 国产在线精品免费av| 91精品在线观看入口| 香蕉成人啪国产精品视频综合网| 成人国产精品免费| 国产欧美精品一区| 加勒比av一区二区| 日韩午夜三级在线| 日本欧美在线看| 538在线一区二区精品国产| 亚洲在线成人精品| 91福利视频网站| 一区二区高清视频在线观看| 97精品国产97久久久久久久久久久久| 久久免费美女视频| 韩国女主播成人在线| 精品免费日韩av| 老鸭窝一区二区久久精品| 欧美大片顶级少妇| 精品一区二区三区免费观看 | 欧美一区二区精品在线|