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

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

?? os_os2.c

?? 嵌入式數據系統軟件!
?? C
?? 第 1 頁 / 共 3 頁
字號:
      return SQLITE_CANTOPEN;    }  }  if( pOutFlags ){    *pOutFlags = flags & SQLITE_OPEN_READWRITE ? SQLITE_OPEN_READWRITE : SQLITE_OPEN_READONLY;  }  pFile->pMethod = &os2IoMethod;  pFile->h = h;  OpenCounter(+1);  OSTRACE3( "OPEN %d pOutFlags=%d\n", pFile->h, pOutFlags );  return SQLITE_OK;}/*** Delete the named file.*/int os2Delete(  sqlite3_vfs *pVfs,                     /* Not used on os2 */  const char *zFilename,                 /* Name of file to delete */  int syncDir                            /* Not used on os2 */){  APIRET rc = NO_ERROR;  SimulateIOError(return SQLITE_IOERR_DELETE);  rc = DosDelete( (PSZ)zFilename );  OSTRACE2( "DELETE \"%s\"\n", zFilename );  return rc == NO_ERROR ? SQLITE_OK : SQLITE_IOERR;}/*** Check the existance and status of a file.*/static int os2Access(  sqlite3_vfs *pVfs,        /* Not used on os2 */  const char *zFilename,    /* Name of file to check */  int flags                 /* Type of test to make on this file */){  FILESTATUS3 fsts3ConfigInfo;  APIRET rc = NO_ERROR;  memset(&fsts3ConfigInfo, 0, sizeof(fsts3ConfigInfo));  rc = DosQueryPathInfo( (PSZ)zFilename, FIL_STANDARD,                         &fsts3ConfigInfo, sizeof(FILESTATUS3) );  OSTRACE4( "ACCESS fsts3ConfigInfo.attrFile=%d flags=%d rc=%d\n",            fsts3ConfigInfo.attrFile, flags, rc );  switch( flags ){    case SQLITE_ACCESS_READ:    case SQLITE_ACCESS_EXISTS:      rc = (rc == NO_ERROR);      OSTRACE3( "ACCESS %s access of read and exists  rc=%d\n", zFilename, rc );      break;    case SQLITE_ACCESS_READWRITE:      rc = (fsts3ConfigInfo.attrFile & FILE_READONLY) == 0;      OSTRACE3( "ACCESS %s access of read/write  rc=%d\n", zFilename, rc );      break;    default:      assert( !"Invalid flags argument" );  }  return rc;}/*** Create a temporary file name in zBuf.  zBuf must be big enough to** hold at pVfs->mxPathname characters.*/static int os2GetTempname( sqlite3_vfs *pVfs, int nBuf, char *zBuf ){  static const unsigned char zChars[] =    "abcdefghijklmnopqrstuvwxyz"    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"    "0123456789";  int i, j;  PSZ zTempPath = "";  if( DosScanEnv( (PSZ)"TEMP", &zTempPath ) ){    if( DosScanEnv( (PSZ)"TMP", &zTempPath ) ){      if( DosScanEnv( (PSZ)"TMPDIR", &zTempPath ) ){           ULONG ulDriveNum = 0, ulDriveMap = 0;           DosQueryCurrentDisk( &ulDriveNum, &ulDriveMap );           sprintf( (char*)zTempPath, "%c:", (char)( 'A' + ulDriveNum - 1 ) );      }    }  }  /* strip off a trailing slashes or backslashes, otherwise we would get *   * multiple (back)slashes which causes DosOpen() to fail               */  j = strlen(zTempPath);  while( j > 0 && ( zTempPath[j-1] == '\\' || zTempPath[j-1] == '/' ) ){    j--;  }  zTempPath[j] = '\0';  assert( nBuf>=pVfs->mxPathname );  sqlite3_snprintf( pVfs->mxPathname-30, zBuf,                    "%s\\"SQLITE_TEMP_FILE_PREFIX, zTempPath );  j = strlen( zBuf );  sqlite3Randomness( 20, &zBuf[j] );  for( i = 0; i < 20; i++, j++ ){    zBuf[j] = (char)zChars[ ((unsigned char)zBuf[j])%(sizeof(zChars)-1) ];  }  zBuf[j] = 0;  OSTRACE2( "TEMP FILENAME: %s\n", zBuf );  return SQLITE_OK;}/*** Turn a relative pathname into a full pathname.  Write the full** pathname into zFull[].  zFull[] will be at least pVfs->mxPathname** bytes in size.*/static int os2FullPathname(  sqlite3_vfs *pVfs,          /* Pointer to vfs object */  const char *zRelative,      /* Possibly relative input path */  int nFull,                  /* Size of output buffer in bytes */  char *zFull                 /* Output buffer */){  if( strchr(zRelative, ':') ){    sqlite3SetString( &zFull, zRelative, (char*)0 );  }else{    ULONG ulDriveNum = 0;    ULONG ulDriveMap = 0;    ULONG cbzBufLen = SQLITE_TEMPNAME_SIZE;    char zDrive[2];    char *zBuff = (char*)malloc( cbzBufLen );    if( zBuff == 0 ){      return SQLITE_NOMEM;    }    DosQueryCurrentDisk( &ulDriveNum, &ulDriveMap );    if( DosQueryCurrentDir( ulDriveNum, (PBYTE)zBuff, &cbzBufLen ) == NO_ERROR ){      sprintf( zDrive, "%c", (char)('A' + ulDriveNum - 1) );      sqlite3SetString( &zFull, zDrive, ":\\", zBuff,                        "\\", zRelative, (char*)0 );    }    free( zBuff );  }  return SQLITE_OK;}#ifndef SQLITE_OMIT_LOAD_EXTENSION/*** Interfaces for opening a shared library, finding entry points** within the shared library, and closing the shared library.*//*** Interfaces for opening a shared library, finding entry points** within the shared library, and closing the shared library.*/static void *os2DlOpen(sqlite3_vfs *pVfs, const char *zFilename){  UCHAR loadErr[256];  HMODULE hmod;  APIRET rc;  rc = DosLoadModule((PSZ)loadErr, sizeof(loadErr), zFilename, &hmod);  return rc != NO_ERROR ? 0 : (void*)hmod;}/*** A no-op since the error code is returned on the DosLoadModule call.** os2Dlopen returns zero if DosLoadModule is not successful.*/static void os2DlError(sqlite3_vfs *pVfs, int nBuf, char *zBufOut){/* no-op */}void *os2DlSym(sqlite3_vfs *pVfs, void *pHandle, const char *zSymbol){  PFN pfn;  APIRET rc;  rc = DosQueryProcAddr((HMODULE)pHandle, 0L, zSymbol, &pfn);  if( rc != NO_ERROR ){    /* if the symbol itself was not found, search again for the same     * symbol with an extra underscore, that might be needed depending     * on the calling convention */    char _zSymbol[256] = "_";    strncat(_zSymbol, zSymbol, 255);    rc = DosQueryProcAddr((HMODULE)pHandle, 0L, _zSymbol, &pfn);  }  return rc != NO_ERROR ? 0 : (void*)pfn;}void os2DlClose(sqlite3_vfs *pVfs, void *pHandle){  DosFreeModule((HMODULE)pHandle);}#else /* if SQLITE_OMIT_LOAD_EXTENSION is defined: */  #define os2DlOpen 0  #define os2DlError 0  #define os2DlSym 0  #define os2DlClose 0#endif/*** Write up to nBuf bytes of randomness into zBuf.*/static int os2Randomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf ){  ULONG sizeofULong = sizeof(ULONG);  int n = 0;  if( sizeof(DATETIME) <= nBuf - n ){    DATETIME x;    DosGetDateTime(&x);    memcpy(&zBuf[n], &x, sizeof(x));    n += sizeof(x);  }  if( sizeofULong <= nBuf - n ){    PPIB ppib;    DosGetInfoBlocks(NULL, &ppib);    memcpy(&zBuf[n], &ppib->pib_ulpid, sizeofULong);    n += sizeofULong;  }  if( sizeofULong <= nBuf - n ){    PTIB ptib;    DosGetInfoBlocks(&ptib, NULL);    memcpy(&zBuf[n], &ptib->tib_ptib2->tib2_ultid, sizeofULong);    n += sizeofULong;  }  /* if we still haven't filled the buffer yet the following will */  /* grab everything once instead of making several calls for a single item */  if( sizeofULong <= nBuf - n ){    ULONG ulSysInfo[QSV_MAX];    DosQuerySysInfo(1L, QSV_MAX, ulSysInfo, sizeofULong * QSV_MAX);    memcpy(&zBuf[n], &ulSysInfo[QSV_MS_COUNT - 1], sizeofULong);    n += sizeofULong;    if( sizeofULong <= nBuf - n ){      memcpy(&zBuf[n], &ulSysInfo[QSV_TIMER_INTERVAL - 1], sizeofULong);      n += sizeofULong;    }    if( sizeofULong <= nBuf - n ){      memcpy(&zBuf[n], &ulSysInfo[QSV_TIME_LOW - 1], sizeofULong);      n += sizeofULong;    }    if( sizeofULong <= nBuf - n ){      memcpy(&zBuf[n], &ulSysInfo[QSV_TIME_HIGH - 1], sizeofULong);      n += sizeofULong;    }    if( sizeofULong <= nBuf - n ){      memcpy(&zBuf[n], &ulSysInfo[QSV_TOTAVAILMEM - 1], sizeofULong);      n += sizeofULong;    }  }  return n;}/*** Sleep for a little while.  Return the amount of time slept.** The argument is the number of microseconds we want to sleep.** The return value is the number of microseconds of sleep actually** requested from the underlying operating system, a number which** might be greater than or equal to the argument, but not less** than the argument.*/static int os2Sleep( sqlite3_vfs *pVfs, int microsec ){  DosSleep( (microsec/1000) );  return microsec;}/*** The following variable, if set to a non-zero value, becomes the result** returned from sqlite3OsCurrentTime().  This is used for testing.*/#ifdef SQLITE_TESTint sqlite3_current_time = 0;#endif/*** Find the current time (in Universal Coordinated Time).  Write the** current time and date as a Julian Day number into *prNow and** return 0.  Return 1 if the time and date cannot be found.*/int os2CurrentTime( sqlite3_vfs *pVfs, double *prNow ){  double now;  SHORT minute; /* needs to be able to cope with negative timezone offset */  USHORT second, hour,         day, month, year;  DATETIME dt;  DosGetDateTime( &dt );  second = (USHORT)dt.seconds;  minute = (SHORT)dt.minutes + dt.timezone;  hour = (USHORT)dt.hours;  day = (USHORT)dt.day;  month = (USHORT)dt.month;  year = (USHORT)dt.year;  /* Calculations from http://www.astro.keele.ac.uk/~rno/Astronomy/hjd.html     http://www.astro.keele.ac.uk/~rno/Astronomy/hjd-0.1.c */  /* Calculate the Julian days */  now = day - 32076 +    1461*(year + 4800 + (month - 14)/12)/4 +    367*(month - 2 - (month - 14)/12*12)/12 -    3*((year + 4900 + (month - 14)/12)/100)/4;  /* Add the fractional hours, mins and seconds */  now += (hour + 12.0)/24.0;  now += minute/1440.0;  now += second/86400.0;  *prNow = now;#ifdef SQLITE_TEST  if( sqlite3_current_time ){    *prNow = sqlite3_current_time/86400.0 + 2440587.5;  }#endif  return 0;}/*** Return a pointer to the sqlite3DefaultVfs structure.   We use** a function rather than give the structure global scope because** some compilers (MSVC) do not allow forward declarations of** initialized structures.*/sqlite3_vfs *sqlite3OsDefaultVfs(void){  static sqlite3_vfs os2Vfs = {    1,                 /* iVersion */    sizeof(os2File),   /* szOsFile */    CCHMAXPATH,        /* mxPathname */    0,                 /* pNext */    "os2",             /* zName */    0,                 /* pAppData */    os2Open,           /* xOpen */    os2Delete,         /* xDelete */    os2Access,         /* xAccess */    os2GetTempname,    /* xGetTempname */    os2FullPathname,   /* xFullPathname */    os2DlOpen,         /* xDlOpen */    os2DlError,        /* xDlError */    os2DlSym,          /* xDlSym */    os2DlClose,        /* xDlClose */    os2Randomness,     /* xRandomness */    os2Sleep,          /* xSleep */    os2CurrentTime     /* xCurrentTime */  };  return &os2Vfs;}#endif /* OS_OS2 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美sm美女调教| 国产精品免费视频观看| 日本黄色一区二区| 日本高清免费不卡视频| 色先锋资源久久综合| 91蝌蚪porny| 欧美亚州韩日在线看免费版国语版| 91尤物视频在线观看| 日本道色综合久久| 欧美精品丝袜中出| 精品国产99国产精品| 国产日韩精品一区| 中文字幕日韩一区二区| 亚洲一卡二卡三卡四卡无卡久久 | 91福利社在线观看| 欧美性色黄大片| 欧美成人精品3d动漫h| 国产午夜亚洲精品理论片色戒| 久久精品一区蜜桃臀影院| 综合色天天鬼久久鬼色| 亚洲国产日韩一区二区| 蜜臀av国产精品久久久久| 国产成人免费高清| 在线视频一区二区三区| 亚洲免费观看高清完整版在线观看| 亚洲成人综合视频| 国产精品一区二区在线看| 色婷婷亚洲精品| 精品日韩在线观看| 自拍偷拍国产精品| 美女精品自拍一二三四| 成人精品国产一区二区4080| 欧美高清你懂得| 国产亚洲成年网址在线观看| 亚洲午夜精品网| 国产91在线看| 91麻豆精品国产无毒不卡在线观看| 久久久久久久久久看片| 亚洲综合色视频| 国产成人在线观看| 中文字幕va一区二区三区| 一区二区视频在线看| 久久av中文字幕片| 欧美唯美清纯偷拍| 国产精品你懂的在线欣赏| 日韩不卡手机在线v区| 成人性生交大片免费看视频在线| 欧美肥妇bbw| 综合分类小说区另类春色亚洲小说欧美| 日日骚欧美日韩| 欧洲亚洲国产日韩| 亚洲欧洲日韩在线| 国产精品99久久久久| 欧美一区二区大片| 亚洲一区二区在线播放相泽 | 国产亚洲人成网站| 亚洲国产精品久久人人爱| 成人免费av在线| 精品嫩草影院久久| 日韩av一区二区三区| 日本大香伊一区二区三区| 国产精品久久久久久久久免费桃花| 日韩成人av影视| 欧美精品三级在线观看| 一区二区三区中文字幕电影| 成人av资源在线观看| 久久久一区二区| 国产精品66部| 久久久99免费| 国产a视频精品免费观看| 欧美大片在线观看一区| 免费在线观看一区二区三区| 欧美日韩一区在线| 亚洲成人你懂的| 欧美日韩国产首页| 五月婷婷激情综合| 亚洲欧美国产毛片在线| 99国产一区二区三精品乱码| 欧美国产1区2区| 成年人午夜久久久| 亚洲色图制服诱惑 | 欧美另类高清zo欧美| 亚洲国产精品一区二区www在线| 99在线精品观看| 玉足女爽爽91| 欧美日韩国产影片| 免费观看成人av| 久久免费午夜影院| 不卡的av网站| 亚洲狠狠丁香婷婷综合久久久| 精品视频色一区| 免费国产亚洲视频| 久久久久久久久久久99999| 成人精品视频网站| 一区二区三区四区亚洲| 3atv在线一区二区三区| 精品在线观看视频| 成人欧美一区二区三区1314| 色综合久久综合网| 日本成人中文字幕在线视频| 久久久久久久网| 欧美在线free| 精彩视频一区二区三区| 中文字幕一区二区三区不卡| 欧美日韩国产系列| 精品福利一二区| 99久久久无码国产精品| 日韩一区欧美二区| 久久久久久9999| 欧美日韩一区二区三区在线看 | 国产成人丝袜美腿| 国产精品成人网| 91精品国产色综合久久不卡电影| 国产主播一区二区三区| 亚洲精品日韩综合观看成人91| 欧美日韩一区久久| 99久久婷婷国产| 国产一区日韩二区欧美三区| 一区二区三区四区在线| 国产亚洲综合色| 日韩三级中文字幕| 一本一道综合狠狠老| 国产老妇另类xxxxx| 日韩主播视频在线| 亚洲精品免费电影| 国产精品乱人伦一区二区| 欧美一二三区精品| 欧美伊人精品成人久久综合97| 国产.欧美.日韩| 精品无人码麻豆乱码1区2区| 爽好久久久欧美精品| 一二三四社区欧美黄| 国产精品久久久一本精品| 精品国内二区三区| 欧美一区二区三区日韩| 91久久一区二区| 一本到一区二区三区| 不卡在线观看av| 国产成人亚洲综合a∨婷婷| 美女在线观看视频一区二区| 亚洲成人1区2区| 亚洲国产另类av| 亚洲永久免费视频| 亚洲精品国产第一综合99久久 | 中文字幕亚洲一区二区av在线| 久久综合久久综合久久| 日韩一二三四区| 在线播放/欧美激情| 欧美日本一区二区| 欧美一区二区三区日韩视频| 欧美日韩在线播| 91.麻豆视频| 日韩视频在线观看一区二区| 日韩精品综合一本久道在线视频| 欧美一区二区不卡视频| 91精品国产免费| 日韩欧美成人午夜| 26uuu成人网一区二区三区| 精品国产乱码久久久久久久 | 亚洲三级视频在线观看| 中文字幕一区三区| 亚洲欧美另类久久久精品2019| 亚洲私人影院在线观看| 亚洲激情图片qvod| 亚洲国产成人91porn| 日本午夜精品视频在线观看| 久久69国产一区二区蜜臀| 国内精品伊人久久久久av影院| 国产黑丝在线一区二区三区| 99精品视频一区| 欧美日韩久久一区二区| 精品剧情在线观看| 国产精品福利一区二区| 一区二区三区影院| 男女视频一区二区| 成人免费黄色大片| 欧美日韩一区二区三区在线看| 91精品国产综合久久婷婷香蕉| 精品国产髙清在线看国产毛片| 欧美国产乱子伦| 午夜精品视频一区| 狠狠狠色丁香婷婷综合激情| 99国产精品久久| 91精品国产美女浴室洗澡无遮挡| 欧美国产综合色视频| 成人97人人超碰人人99| 欧美日韩成人一区| 亚洲国产精品高清| 日本中文字幕不卡| av综合在线播放| 欧美一区二区三区视频免费| 国产精品福利一区二区三区| 欧美aaaaaa午夜精品| 91论坛在线播放| 国产亚洲欧美日韩日本| 午夜亚洲国产au精品一区二区| 国产成人免费高清| 日韩欧美一二三区| 亚洲图片欧美一区| 成人免费视频app|