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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os.c

?? sqlite源碼wince移植版
?? C
?? 第 1 頁 / 共 5 頁
字號:
#endif#if OS_MAC  FSSpec fsSpec;# ifdef _LARGE_FILE  HFSUniStr255 dfName;  FSRef fsRef;  __path2fss(zFilename, &fsSpec);  if( HCreate(fsSpec.vRefNum, fsSpec.parID, fsSpec.name, 'SQLI', cDocumentFile) != noErr )    return SQLITE_CANTOPEN;  if( FSpMakeFSRef(&fsSpec, &fsRef) != noErr )    return SQLITE_CANTOPEN;  FSGetDataForkName(&dfName);  if( FSOpenFork(&fsRef, dfName.length, dfName.unicode,                 fsRdWrPerm, &(id->refNum)) != noErr )    return SQLITE_CANTOPEN;# else  __path2fss(zFilename, &fsSpec);  if( HCreate(fsSpec.vRefNum, fsSpec.parID, fsSpec.name, 'SQLI', cDocumentFile) != noErr )    return SQLITE_CANTOPEN;  if( HOpenDF(fsSpec.vRefNum, fsSpec.parID, fsSpec.name, fsRdWrPerm, &(id->refNum)) != noErr )    return SQLITE_CANTOPEN;# endif  id->refNumRF = -1;  id->locked = 0;  id->delOnClose = delFlag;  if (delFlag)    id->pathToDel = sqliteOsFullPathname(zFilename);  OpenCounter(+1);  return SQLITE_OK;#endif}/*** Attempt to open a new file for read-only access.**** On success, write the file handle into *id and return SQLITE_OK.**** On failure, return SQLITE_CANTOPEN.*/int sqliteOsOpenReadOnly(const char *zFilename, OsFile *id){#if OS_UNIX  int rc;  id->dirfd = -1;  id->fd = open(zFilename, O_RDONLY|O_LARGEFILE|O_BINARY);  if( id->fd<0 ){    return SQLITE_CANTOPEN;  }  sqliteOsEnterMutex();  rc = findLockInfo(id->fd, &id->pLock, &id->pOpen);  sqliteOsLeaveMutex();  if( rc ){    close(id->fd);    return SQLITE_NOMEM;  }  id->locked = 0;  TRACE3("OPEN-RO %-3d %s\n", id->fd, zFilename);  OpenCounter(+1);  return SQLITE_OK;#endif#if OS_WIN# ifndef _WIN32_WCE  HANDLE h = CreateFile(zFilename,     GENERIC_READ,     0,     NULL,     OPEN_EXISTING,     FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS,     NULL  );  if( h==INVALID_HANDLE_VALUE ){    return SQLITE_CANTOPEN;  }  id->h = h;  id->locked = 0;# else  WCHAR * wFilename = wStrDup( zFilename );  HANDLE h = CreateFileW( wFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING,               FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL );  if ( h == INVALID_HANDLE_VALUE )  {    free( wFilename );    return SQLITE_CANTOPEN;  }  id->h = h;  id->delOnClose = 0;  id->filePath = wFilename;  id->hMux   = 0;	// Not shared, so no need to lock file  id->hSem   = 0;  id->locked = 0;# endif  OpenCounter(+1);  return SQLITE_OK;#endif#if OS_MAC  FSSpec fsSpec;# ifdef _LARGE_FILE  HFSUniStr255 dfName;  FSRef fsRef;  if( __path2fss(zFilename, &fsSpec) != noErr )    return SQLITE_CANTOPEN;  if( FSpMakeFSRef(&fsSpec, &fsRef) != noErr )    return SQLITE_CANTOPEN;  FSGetDataForkName(&dfName);  if( FSOpenFork(&fsRef, dfName.length, dfName.unicode,                 fsRdPerm, &(id->refNum)) != noErr )    return SQLITE_CANTOPEN;# else  __path2fss(zFilename, &fsSpec);  if( HOpenDF(fsSpec.vRefNum, fsSpec.parID, fsSpec.name, fsRdPerm, &(id->refNum)) != noErr )    return SQLITE_CANTOPEN;# endif  if( HOpenRF(fsSpec.vRefNum, fsSpec.parID, fsSpec.name, fsRdWrShPerm, &(id->refNumRF)) != noErr){    id->refNumRF = -1;  }  id->locked = 0;  id->delOnClose = 0;  OpenCounter(+1);  return SQLITE_OK;#endif}/*** Attempt to open a file descriptor for the directory that contains a** file.  This file descriptor can be used to fsync() the directory** in order to make sure the creation of a new file is actually written** to disk.**** This routine is only meaningful for Unix.  It is a no-op under** windows since windows does not support hard links.**** On success, a handle for a previously open file is at *id is** updated with the new directory file descriptor and SQLITE_OK is** returned.**** On failure, the function returns SQLITE_CANTOPEN and leaves** *id unchanged.*/int sqliteOsOpenDirectory(  const char *zDirname,  OsFile *id){#if OS_UNIX  if( id->fd<0 ){    /* Do not open the directory if the corresponding file is not already    ** open. */    return SQLITE_CANTOPEN;  }  assert( id->dirfd<0 );  id->dirfd = open(zDirname, O_RDONLY|O_BINARY, 0644);  if( id->dirfd<0 ){    return SQLITE_CANTOPEN;   }  TRACE3("OPENDIR %-3d %s\n", id->dirfd, zDirname);#endif  return SQLITE_OK;}/*** If the following global variable points to a string which is the** name of a directory, then that directory will be used to store** temporary files.*/const char *sqlite_temp_directory = 0;/*** Create a temporary file name in zBuf.  zBuf must be big enough to** hold at least SQLITE_TEMPNAME_SIZE characters.*/int sqliteOsTempFileName(char *zBuf){#if OS_UNIX  static const char *azDirs[] = {     0,     "/var/tmp",     "/usr/tmp",     "/tmp",     ".",  };  static unsigned char zChars[] =    "abcdefghijklmnopqrstuvwxyz"    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"    "0123456789";  int i, j;  struct stat buf;  const char *zDir = ".";  azDirs[0] = sqlite_temp_directory;  for(i=0; i<sizeof(azDirs)/sizeof(azDirs[0]); i++){    if( azDirs[i]==0 ) continue;    if( stat(azDirs[i], &buf) ) continue;    if( !S_ISDIR(buf.st_mode) ) continue;    if( access(azDirs[i], 07) ) continue;    zDir = azDirs[i];    break;  }  do{    sprintf(zBuf, "%s/"TEMP_FILE_PREFIX, zDir);    j = strlen(zBuf);    sqliteRandomness(15, &zBuf[j]);    for(i=0; i<15; i++, j++){      zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];    }    zBuf[j] = 0;  }while( access(zBuf,0)==0 );#endif#if OS_WIN  static char zChars[] =    "abcdefghijklmnopqrstuvwxyz"    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"    "0123456789";  int i, j;  const char *zDir;  char zTempPath[SQLITE_TEMPNAME_SIZE];  if( sqlite_temp_directory==0 ){# ifndef _WIN32_WCE    GetTempPath(SQLITE_TEMPNAME_SIZE-30, zTempPath);# else    {      wchar_t wcs[SQLITE_TEMPNAME_SIZE - 30];      GetTempPathW( SQLITE_TEMPNAME_SIZE - 30, wcs );      wcstombs( zTempPath, wcs, SQLITE_TEMPNAME_SIZE - 30 );    }# endif    for(i=strlen(zTempPath); i>0 && zTempPath[i-1]=='\\'; i--){}    zTempPath[i] = 0;    zDir = zTempPath;  }else{    zDir = sqlite_temp_directory;  }  for(;;){    sprintf(zBuf, "%s\\"TEMP_FILE_PREFIX, zDir);    j = strlen(zBuf);    sqliteRandomness(15, &zBuf[j]);    for(i=0; i<15; i++, j++){      zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];    }    zBuf[j] = 0;    if( !sqliteOsFileExists(zBuf) ) break;  }#endif#if OS_MAC  static char zChars[] =    "abcdefghijklmnopqrstuvwxyz"    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"    "0123456789";  int i, j;  char *zDir;  char zTempPath[SQLITE_TEMPNAME_SIZE];  char zdirName[32];  CInfoPBRec infoRec;  Str31 dirName;  memset(&infoRec, 0, sizeof(infoRec));  memset(zTempPath, 0, SQLITE_TEMPNAME_SIZE);  if( sqlite_temp_directory!=0 ){    zDir = sqlite_temp_directory;  }else if( FindFolder(kOnSystemDisk, kTemporaryFolderType,  kCreateFolder,       &(infoRec.dirInfo.ioVRefNum), &(infoRec.dirInfo.ioDrParID)) == noErr ){    infoRec.dirInfo.ioNamePtr = dirName;    do{      infoRec.dirInfo.ioFDirIndex = -1;      infoRec.dirInfo.ioDrDirID = infoRec.dirInfo.ioDrParID;      if( PBGetCatInfoSync(&infoRec) == noErr ){        CopyPascalStringToC(dirName, zdirName);        i = strlen(zdirName);        memmove(&(zTempPath[i+1]), zTempPath, strlen(zTempPath));        strcpy(zTempPath, zdirName);        zTempPath[i] = ':';      }else{        *zTempPath = 0;        break;      }    } while( infoRec.dirInfo.ioDrDirID != fsRtDirID );    zDir = zTempPath;  }  if( zDir[0]==0 ){    getcwd(zTempPath, SQLITE_TEMPNAME_SIZE-24);    zDir = zTempPath;  }  for(;;){    sprintf(zBuf, "%s"TEMP_FILE_PREFIX, zDir);    j = strlen(zBuf);    sqliteRandomness(15, &zBuf[j]);    for(i=0; i<15; i++, j++){      zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];    }    zBuf[j] = 0;    if( !sqliteOsFileExists(zBuf) ) break;  }#endif  return SQLITE_OK; }/*** Close a file.*/int sqliteOsClose(OsFile *id){#if OS_UNIX  sqliteOsUnlock(id);  if( id->dirfd>=0 ) close(id->dirfd);  id->dirfd = -1;  sqliteOsEnterMutex();  if( id->pOpen->nLock ){    /* If there are outstanding locks, do not actually close the file just    ** yet because that would clear those locks.  Instead, add the file    ** descriptor to pOpen->aPending.  It will be automatically closed when    ** the last lock is cleared.    */    int *aNew;    struct openCnt *pOpen = id->pOpen;    pOpen->nPending++;    aNew = sqliteRealloc( pOpen->aPending, pOpen->nPending*sizeof(int) );    if( aNew==0 ){      /* If a malloc fails, just leak the file descriptor */    }else{      pOpen->aPending = aNew;      pOpen->aPending[pOpen->nPending-1] = id->fd;    }  }else{    /* There are no outstanding locks so we can close the file immediately */    close(id->fd);  }  releaseLockInfo(id->pLock);  releaseOpenCnt(id->pOpen);  sqliteOsLeaveMutex();  TRACE2("CLOSE   %-3d\n", id->fd);  OpenCounter(-1);  return SQLITE_OK;#endif#if OS_WIN# ifndef _WIN32_WCE  CloseHandle(id->h);# else  sqliteOsUnlock( id );  CloseHandle( id->h );#  ifndef SQLITE_WCE_OMIT_FILELOCK  wceport_CloseFileLock( id );#  endif // SQLITE_OMIT_FILELOCK  if ( id->delOnClose )  {    DeleteFileW( id->filePath );  }  free( id->filePath );# endif  OpenCounter(-1);  return SQLITE_OK;#endif#if OS_MAC  if( id->refNumRF!=-1 )    FSClose(id->refNumRF);# ifdef _LARGE_FILE  FSCloseFork(id->refNum);# else  FSClose(id->refNum);# endif  if( id->delOnClose ){    unlink(id->pathToDel);    sqliteFree(id->pathToDel);  }  OpenCounter(-1);  return SQLITE_OK;#endif}/*** Read data from a file into a buffer.  Return SQLITE_OK if all** bytes were read successfully and SQLITE_IOERR if anything goes** wrong.*/int sqliteOsRead(OsFile *id, void *pBuf, int amt){#if OS_UNIX  int got;  SimulateIOError(SQLITE_IOERR);  TIMER_START;  got = read(id->fd, pBuf, amt);  TIMER_END;  TRACE4("READ    %-3d %7d %d\n", id->fd, last_page, elapse);  SEEK(0);  /* if( got<0 ) got = 0; */  if( got==amt ){    return SQLITE_OK;  }else{    return SQLITE_IOERR;  }#endif#if OS_WIN  DWORD got;  SimulateIOError(SQLITE_IOERR);  TRACE2("READ %d\n", last_page);  if( !ReadFile(id->h, pBuf, amt, &got, 0) ){    got = 0;  }  if( got==(DWORD)amt ){    return SQLITE_OK;  }else{    return SQLITE_IOERR;  }#endif#if OS_MAC  int got;  SimulateIOError(SQLITE_IOERR);  TRACE2("READ %d\n", last_page);# ifdef _LARGE_FILE  FSReadFork(id->refNum, fsAtMark, 0, (ByteCount)amt, pBuf, (ByteCount*)&got);# else  got = amt;  FSRead(id->refNum, &got, pBuf);# endif  if( got==amt ){    return SQLITE_OK;  }else{    return SQLITE_IOERR;  }#endif}/*** Write data from a buffer into a file.  Return SQLITE_OK on success** or some other error code on failure.*/int sqliteOsWrite(OsFile *id, const void *pBuf, int amt){#if OS_UNIX  int wrote = 0;  SimulateIOError(SQLITE_IOERR);  TIMER_START;  while( amt>0 && (wrote = write(id->fd, pBuf, amt))>0 ){    amt -= wrote;    pBuf = &((char*)pBuf)[wrote];  }  TIMER_END;  TRACE4("WRITE   %-3d %7d %d\n", id->fd, last_page, elapse);  SEEK(0);  if( amt>0 ){    return SQLITE_FULL;  }  return SQLITE_OK;#endif#if OS_WIN  int rc;  DWORD wrote;  SimulateIOError(SQLITE_IOERR);  TRACE2("WRITE %d\n", last_page);  while( amt>0 && (rc = WriteFile(id->h, pBuf, amt, &wrote, 0))!=0 && wrote>0 ){    amt -= wrote;    pBuf = &((char*)pBuf)[wrote];  }  if( !rc || amt>(int)wrote ){    return SQLITE_FULL;  }  return SQLITE_OK;#endif#if OS_MAC  OSErr oserr;  int wrote = 0;  SimulateIOError(SQLITE_IOERR);  TRACE2("WRITE %d\n", last_page);  while( amt>0 ){# ifdef _LARGE_FILE    oserr = FSWriteFork(id->refNum, fsAtMark, 0,                        (ByteCount)amt, pBuf, (ByteCount*)&wrote);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲毛片av在线| 免费在线观看精品| 麻豆精品一区二区av白丝在线| 欧美aaaaaa午夜精品| 91精品国产综合久久蜜臀| 色网站国产精品| 欧美国产日韩一二三区| 欧美一区永久视频免费观看| av电影一区二区| 狠狠色丁香婷婷综合久久片| 一区二区三区不卡视频| 国产性做久久久久久| 日韩一二三区不卡| 欧美色老头old∨ideo| a在线播放不卡| 国产v综合v亚洲欧| 精品一区二区三区的国产在线播放| 亚洲一区二区三区四区在线免费观看 | 中文字幕一区二区三区蜜月| 日韩丝袜美女视频| 欧美日韩aaa| 91久久精品网| 99国产精品久久久久久久久久| 国产精品中文字幕欧美| 美国十次综合导航| 日韩av一区二| 日韩电影免费一区| 丝袜脚交一区二区| 亚洲一级在线观看| 一区二区三区久久| 亚洲成国产人片在线观看| 亚洲免费观看高清完整| 中文字幕一区二区三区视频| 中文字幕欧美区| 中文字幕在线观看一区二区| 中文字幕av一区二区三区| 亚洲国产精品ⅴa在线观看| 国产女人aaa级久久久级| 中文字幕乱码一区二区免费| 午夜精品久久久久久久99水蜜桃 | 91精品中文字幕一区二区三区| 91福利在线看| 在线亚洲精品福利网址导航| 一本色道久久加勒比精品| 97久久超碰国产精品| 成人av动漫在线| 色婷婷亚洲综合| 91官网在线免费观看| 欧美视频在线观看一区二区| 欧美午夜寂寞影院| 3d成人h动漫网站入口| 日韩欧美一级片| 久久久精品国产99久久精品芒果| 久久久久久久久久看片| 久久久99久久精品欧美| 亚洲国产高清不卡| 一区二区三区不卡视频| 青青草原综合久久大伊人精品优势| 蜜臂av日日欢夜夜爽一区| 国产高清不卡一区二区| 99国产精品久久久久久久久久| 色婷婷亚洲婷婷| 5858s免费视频成人| 久久久久久久精| 亚洲美女淫视频| 麻豆成人综合网| 成人av一区二区三区| 欧美在线不卡视频| 欧美大片日本大片免费观看| 欧美国产精品久久| 一区二区在线观看不卡| 日韩电影在线免费观看| 国产精品99久久久久久宅男| 色综合中文综合网| 蜜臀精品久久久久久蜜臀| 国产精品影视在线观看| 91国在线观看| 欧美刺激午夜性久久久久久久| 中文字幕欧美激情一区| 亚洲成人自拍一区| 欧美肥妇bbw| 久久综合精品国产一区二区三区| ...中文天堂在线一区| 免费人成精品欧美精品| 风间由美一区二区av101| 色婷婷综合视频在线观看| 精品福利二区三区| 一区二区三区在线观看网站| 蜜臀a∨国产成人精品| 色综合激情五月| 久久噜噜亚洲综合| 偷偷要91色婷婷| a级精品国产片在线观看| 日韩欧美一级片| 亚洲综合另类小说| 成人黄色大片在线观看| 欧美一级xxx| 一区二区三区四区五区视频在线观看| 狠狠色丁香久久婷婷综合丁香| 在线视频欧美区| 国产精品毛片大码女人| 美女视频一区二区| 欧美在线免费观看视频| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美色国产精品| 久久免费午夜影院| 日本在线不卡一区| 欧美午夜精品一区二区蜜桃| 国产区在线观看成人精品| 免费成人av在线| 欧美日韩国产乱码电影| 亚洲色大成网站www久久九九| 国产美女一区二区三区| 欧美一卡二卡三卡四卡| 一区二区三区四区不卡在线| 99久久精品费精品国产一区二区| 精品国产亚洲在线| 日本成人在线网站| 91麻豆精品国产自产在线观看一区| 亚洲裸体在线观看| 欧美电视剧免费全集观看| 亚洲成人先锋电影| 欧美色窝79yyyycom| 亚洲精品欧美综合四区| 99久久婷婷国产| 中文字幕一区不卡| 91视视频在线直接观看在线看网页在线看| 久久久不卡网国产精品一区| 麻豆极品一区二区三区| 欧美mv日韩mv国产网站app| 免费久久精品视频| 欧美mv日韩mv| 国产乱码精品一区二区三区忘忧草 | 精品国产一区二区三区久久影院| 日韩不卡一区二区| 欧美一区二区在线不卡| 日本人妖一区二区| 欧美一级黄色片| 国产美女久久久久| 国产欧美日韩在线观看| av网站一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 91麻豆福利精品推荐| 亚洲精品欧美激情| 欧美丰满一区二区免费视频| 视频一区二区不卡| 精品欧美一区二区久久| 国产成人午夜视频| 亚洲色欲色欲www| 色婷婷综合久久久久中文| 亚洲第一成人在线| 69堂国产成人免费视频| 韩国在线一区二区| 国产精品国产三级国产普通话99| 成人精品国产一区二区4080| 亚洲人午夜精品天堂一二香蕉| 欧美性xxxxxx少妇| 裸体歌舞表演一区二区| 国产欧美综合色| 在线观看日韩电影| 久久精品国产精品亚洲综合| 国产无人区一区二区三区| 97aⅴ精品视频一二三区| 亚洲成人久久影院| 欧美精品一区二区三| 成人激情动漫在线观看| 成人网在线播放| 亚洲一区二区三区中文字幕在线| 337p亚洲精品色噜噜| 国产福利一区二区三区视频在线| 中文字幕一区av| 日韩一级黄色片| 成人动漫一区二区在线| 亚洲第一在线综合网站| 久久久久久久久久久久电影 | 国产乱一区二区| 一区二区视频免费在线观看| 欧美一级专区免费大片| 成人久久久精品乱码一区二区三区| 午夜视黄欧洲亚洲| 久久久久久久久久看片| 欧美色图免费看| 国产suv精品一区二区883| 日韩影院在线观看| 国产精品丝袜一区| 日韩一级黄色片| 色婷婷综合久久| 丁香啪啪综合成人亚洲小说 | 国产精品成人在线观看| 777午夜精品免费视频| 成人免费高清视频| 蜜桃av噜噜一区二区三区小说| 亚洲欧美日韩国产中文在线| 日韩精品在线看片z| 欧美在线观看视频一区二区三区| 国产揄拍国内精品对白| 五月婷婷久久丁香| 国产精品美女久久久久aⅴ国产馆| 日韩欧美国产一区二区三区| 欧美在线999|