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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dbfopen.c

?? 支持各種柵格圖像和矢量圖像讀取的庫(kù)
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/****************************************************************************** * $Id: dbfopen.c,v 1.70 2006/06/17 17:47:05 fwarmerdam Exp $ * * Project:  Shapelib * Purpose:  Implementation of .dbf access API documented in dbf_api.html. * Author:   Frank Warmerdam, warmerdam@pobox.com * ****************************************************************************** * Copyright (c) 1999, Frank Warmerdam * * This software is available under the following "MIT Style" license, * or at the option of the licensee under the LGPL (see LICENSE.LGPL).  This * option is discussed in more detail in shapelib.html. * * -- *  * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. ****************************************************************************** * * $Log: dbfopen.c,v $ * Revision 1.70  2006/06/17 17:47:05  fwarmerdam * use calloc() for dbfinfo in DBFCreate * * Revision 1.69  2006/06/17 15:34:32  fwarmerdam * disallow creating fields wider than 255 * * Revision 1.68  2006/06/17 15:12:40  fwarmerdam * Fixed C++ style comments. * * Revision 1.67  2006/06/17 00:24:53  fwarmerdam * Don't treat non-zero decimals values as high order byte for length * for strings.  It causes serious corruption for some files. * http://bugzilla.remotesensing.org/show_bug.cgi?id=1202 * * Revision 1.66  2006/03/29 18:26:20  fwarmerdam * fixed bug with size of pachfieldtype in dbfcloneempty * * Revision 1.65  2006/02/15 01:14:30  fwarmerdam * added DBFAddNativeFieldType * * Revision 1.64  2006/02/09 00:29:04  fwarmerdam * Changed to put spaces into string fields that are NULL as * per http://bugzilla.maptools.org/show_bug.cgi?id=316. * * Revision 1.63  2006/01/25 15:35:43  fwarmerdam * check success on DBFFlushRecord * * Revision 1.62  2006/01/10 16:28:03  fwarmerdam * Fixed typo in CPLError. * * Revision 1.61  2006/01/10 16:26:29  fwarmerdam * Push loading record buffer into DBFLoadRecord. * Implement CPL error reporting if USE_CPL defined. * * Revision 1.60  2006/01/05 01:27:27  fwarmerdam * added dbf deletion mark/fetch * * Revision 1.59  2005/03/14 15:20:28  fwarmerdam * Fixed last change. * * Revision 1.58  2005/03/14 15:18:54  fwarmerdam * Treat very wide fields with no decimals as double.  This is * more than 32bit integer fields. * * Revision 1.57  2005/02/10 20:16:54  fwarmerdam * Make the pszStringField buffer for DBFReadAttribute() static char [256] * as per bug 306. * * Revision 1.56  2005/02/10 20:07:56  fwarmerdam * Fixed bug 305 in DBFCloneEmpty() - header length problem. * * Revision 1.55  2004/09/26 20:23:46  fwarmerdam * avoid warnings with rcsid and signed/unsigned stuff * * Revision 1.54  2004/09/15 16:26:10  fwarmerdam * Treat all blank numeric fields as null too. */#include "shapefil.h"#include <math.h>#include <stdlib.h>#include <ctype.h>#include <string.h>SHP_CVSID("$Id: dbfopen.c,v 1.70 2006/06/17 17:47:05 fwarmerdam Exp $")#ifndef FALSE#  define FALSE		0#  define TRUE		1#endif/************************************************************************//*                             SfRealloc()                              *//*                                                                      *//*      A realloc cover function that will access a NULL pointer as     *//*      a valid input.                                                  *//************************************************************************/static void * SfRealloc( void * pMem, int nNewSize ){    if( pMem == NULL )        return( (void *) malloc(nNewSize) );    else        return( (void *) realloc(pMem,nNewSize) );}/************************************************************************//*                           DBFWriteHeader()                           *//*                                                                      *//*      This is called to write out the file header, and field          *//*      descriptions before writing any actual data records.  This      *//*      also computes all the DBFDataSet field offset/size/decimals     *//*      and so forth values.                                            *//************************************************************************/static void DBFWriteHeader(DBFHandle psDBF){    unsigned char	abyHeader[XBASE_FLDHDR_SZ];    int		i;    if( !psDBF->bNoHeader )        return;    psDBF->bNoHeader = FALSE;/* -------------------------------------------------------------------- *//*	Initialize the file header information.				*//* -------------------------------------------------------------------- */    for( i = 0; i < XBASE_FLDHDR_SZ; i++ )        abyHeader[i] = 0;    abyHeader[0] = 0x03;		/* memo field? - just copying 	*/    /* write out a dummy date */    abyHeader[1] = 95;			/* YY */    abyHeader[2] = 7;			/* MM */    abyHeader[3] = 26;			/* DD */    /* record count preset at zero */    abyHeader[8] = (unsigned char) (psDBF->nHeaderLength % 256);    abyHeader[9] = (unsigned char) (psDBF->nHeaderLength / 256);        abyHeader[10] = (unsigned char) (psDBF->nRecordLength % 256);    abyHeader[11] = (unsigned char) (psDBF->nRecordLength / 256);/* -------------------------------------------------------------------- *//*      Write the initial 32 byte file header, and all the field        *//*      descriptions.                                     		*//* -------------------------------------------------------------------- */    fseek( psDBF->fp, 0, 0 );    fwrite( abyHeader, XBASE_FLDHDR_SZ, 1, psDBF->fp );    fwrite( psDBF->pszHeader, XBASE_FLDHDR_SZ, psDBF->nFields, psDBF->fp );/* -------------------------------------------------------------------- *//*      Write out the newline character if there is room for it.        *//* -------------------------------------------------------------------- */    if( psDBF->nHeaderLength > 32*psDBF->nFields + 32 )    {        char	cNewline;        cNewline = 0x0d;        fwrite( &cNewline, 1, 1, psDBF->fp );    }}/************************************************************************//*                           DBFFlushRecord()                           *//*                                                                      *//*      Write out the current record if there is one.                   *//************************************************************************/static int DBFFlushRecord( DBFHandle psDBF ){    int		nRecordOffset;    if( psDBF->bCurrentRecordModified && psDBF->nCurrentRecord > -1 )    {	psDBF->bCurrentRecordModified = FALSE;	nRecordOffset = psDBF->nRecordLength * psDBF->nCurrentRecord 	                                             + psDBF->nHeaderLength;	if( fseek( psDBF->fp, nRecordOffset, 0 ) != 0             || fwrite( psDBF->pszCurrentRecord, psDBF->nRecordLength,                        1, psDBF->fp ) != 1 )        {#ifdef USE_CPL            CPLError( CE_Failure, CPLE_FileIO,                       "Failure writing DBF record %d.",                       psDBF->nCurrentRecord );#else                       fprintf( stderr, "Failure writing DBF record %d.",                      psDBF->nCurrentRecord );#endif            return FALSE;        }    }    return TRUE;}/************************************************************************//*                           DBFLoadRecord()                            *//************************************************************************/static int DBFLoadRecord( DBFHandle psDBF, int iRecord ){    if( psDBF->nCurrentRecord != iRecord )    {        int nRecordOffset;	if( !DBFFlushRecord( psDBF ) )            return FALSE;	nRecordOffset = psDBF->nRecordLength * iRecord + psDBF->nHeaderLength;	if( fseek( psDBF->fp, nRecordOffset, 0 ) != 0 )        {#ifdef USE_CPL            CPLError( CE_Failure, CPLE_FileIO,                      "fseek(%d) failed on DBF file.\n",                      nRecordOffset );#else            fprintf( stderr, "fseek(%d) failed on DBF file.\n",                     nRecordOffset );#endif            return FALSE;        }	if( fread( psDBF->pszCurrentRecord, psDBF->nRecordLength,                    1, psDBF->fp ) != 1 )        {#ifdef USE_CPL            CPLError( CE_Failure, CPLE_FileIO,                       "fread(%d) failed on DBF file.\n",                      psDBF->nRecordLength );#else            fprintf( stderr, "fread(%d) failed on DBF file.\n",                     psDBF->nRecordLength );#endif            return FALSE;        }	psDBF->nCurrentRecord = iRecord;    }    return TRUE;}/************************************************************************//*                          DBFUpdateHeader()                           *//************************************************************************/void SHPAPI_CALLDBFUpdateHeader( DBFHandle psDBF ){    unsigned char		abyFileHeader[32];    if( psDBF->bNoHeader )        DBFWriteHeader( psDBF );    DBFFlushRecord( psDBF );    fseek( psDBF->fp, 0, 0 );    fread( abyFileHeader, 32, 1, psDBF->fp );        abyFileHeader[4] = (unsigned char) (psDBF->nRecords % 256);    abyFileHeader[5] = (unsigned char) ((psDBF->nRecords/256) % 256);    abyFileHeader[6] = (unsigned char) ((psDBF->nRecords/(256*256)) % 256);    abyFileHeader[7] = (unsigned char) ((psDBF->nRecords/(256*256*256)) % 256);        fseek( psDBF->fp, 0, 0 );    fwrite( abyFileHeader, 32, 1, psDBF->fp );    fflush( psDBF->fp );}/************************************************************************//*                              DBFOpen()                               *//*                                                                      *//*      Open a .dbf file.                                               *//************************************************************************/   DBFHandle SHPAPI_CALLDBFOpen( const char * pszFilename, const char * pszAccess ){    DBFHandle		psDBF;    unsigned char		*pabyBuf;    int			nFields, nHeadLen, iField, i;    char		*pszBasename, *pszFullname;/* -------------------------------------------------------------------- *//*      We only allow the access strings "rb" and "r+".                  *//* -------------------------------------------------------------------- */    if( strcmp(pszAccess,"r") != 0 && strcmp(pszAccess,"r+") != 0         && strcmp(pszAccess,"rb") != 0 && strcmp(pszAccess,"rb+") != 0        && strcmp(pszAccess,"r+b") != 0 )        return( NULL );    if( strcmp(pszAccess,"r") == 0 )        pszAccess = "rb";     if( strcmp(pszAccess,"r+") == 0 )        pszAccess = "rb+";/* -------------------------------------------------------------------- *//*	Compute the base (layer) name.  If there is any extension	*//*	on the passed in filename we will strip it off.			*//* -------------------------------------------------------------------- */    pszBasename = (char *) malloc(strlen(pszFilename)+5);    strcpy( pszBasename, pszFilename );    for( i = strlen(pszBasename)-1; 	 i > 0 && pszBasename[i] != '.' && pszBasename[i] != '/'	       && pszBasename[i] != '\\';	 i-- ) {}    if( pszBasename[i] == '.' )        pszBasename[i] = '\0';    pszFullname = (char *) malloc(strlen(pszBasename) + 5);    sprintf( pszFullname, "%s.dbf", pszBasename );            psDBF = (DBFHandle) calloc( 1, sizeof(DBFInfo) );    psDBF->fp = fopen( pszFullname, pszAccess );    if( psDBF->fp == NULL )    {        sprintf( pszFullname, "%s.DBF", pszBasename );        psDBF->fp = fopen(pszFullname, pszAccess );    }        free( pszBasename );    free( pszFullname );        if( psDBF->fp == NULL )    {        free( psDBF );        return( NULL );    }    psDBF->bNoHeader = FALSE;    psDBF->nCurrentRecord = -1;    psDBF->bCurrentRecordModified = FALSE;/* -------------------------------------------------------------------- *//*  Read Table Header info                                              *//* -------------------------------------------------------------------- */    pabyBuf = (unsigned char *) malloc(500);    if( fread( pabyBuf, 32, 1, psDBF->fp ) != 1 )    {        fclose( psDBF->fp );        free( pabyBuf );        free( psDBF );        return NULL;    }    psDBF->nRecords =      pabyBuf[4] + pabyBuf[5]*256 + pabyBuf[6]*256*256 + pabyBuf[7]*256*256*256;    psDBF->nHeaderLength = nHeadLen = pabyBuf[8] + pabyBuf[9]*256;    psDBF->nRecordLength = pabyBuf[10] + pabyBuf[11]*256;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清在线| 亚洲精品福利视频网站| 91亚洲精品一区二区乱码| 日韩精品91亚洲二区在线观看| 久久久五月婷婷| 欧美色涩在线第一页| 粉嫩一区二区三区性色av| 亚洲成a人v欧美综合天堂| 欧美国产日韩在线观看| 日韩午夜av电影| 91蜜桃免费观看视频| 国内久久精品视频| 日本免费新一区视频| 一区二区三区**美女毛片| 国产日韩一级二级三级| 日韩欧美国产一区二区三区| 欧洲另类一二三四区| 成人av在线一区二区三区| 狠狠色综合日日| 蜜臀久久99精品久久久久宅男 | 国产永久精品大片wwwapp| 一区二区三区免费在线观看| 亚洲国产成人自拍| 精品国产a毛片| 欧美精品乱码久久久久久| 色综合色狠狠天天综合色| 国产91高潮流白浆在线麻豆 | 欧美一级高清片在线观看| 色吊一区二区三区| 国产福利精品一区| 麻豆精品一区二区| 日韩电影在线看| 亚洲一区在线观看视频| 亚洲欧洲精品一区二区精品久久久 | 国产精品亚洲а∨天堂免在线| 日韩影院免费视频| 亚洲大片免费看| 一区二区三区中文字幕精品精品 | 成人精品视频一区二区三区| 国产精品一区二区免费不卡| 美女任你摸久久| 麻豆精品国产传媒mv男同| 婷婷六月综合亚洲| 亚洲大尺度视频在线观看| 亚洲综合色区另类av| 亚洲综合网站在线观看| 亚洲自拍偷拍九九九| 亚洲欧美偷拍三级| 亚洲影院理伦片| 亚洲国产日韩av| 亚洲国产日韩一区二区| 日韩中文字幕一区二区三区| 午夜精品视频一区| 日韩av中文在线观看| 美国毛片一区二区| 国产一区久久久| 国内精品伊人久久久久av一坑| 韩国精品在线观看| 成人一区在线观看| 白白色亚洲国产精品| 91国产丝袜在线播放| 欧美色国产精品| 欧美zozozo| 中文幕一区二区三区久久蜜桃| 中文字幕第一区第二区| 亚洲精品视频自拍| 日韩国产一二三区| 国内精品伊人久久久久av影院| 丁香另类激情小说| 在线观看视频一区| 欧美一区二区三区免费| 国产喂奶挤奶一区二区三区| 亚洲欧美国产77777| 日韩国产在线一| 国模娜娜一区二区三区| 97se亚洲国产综合在线| 欧美日韩国产综合一区二区三区| 欧美一级久久久| 国产精品无码永久免费888| 一二三四区精品视频| 久久91精品久久久久久秒播| 国产91精品露脸国语对白| 欧美三级在线播放| 久久久三级国产网站| 夜夜嗨av一区二区三区网页 | 色综合夜色一区| 日韩手机在线导航| 国产精品伦一区| 日韩国产欧美在线观看| 国产jizzjizz一区二区| 在线看国产一区| 久久精品一区蜜桃臀影院| 亚洲资源在线观看| 粉嫩一区二区三区在线看| 亚洲色图在线播放| 精品国产成人在线影院 | 国产精品天美传媒| 亚洲在线免费播放| 国产福利一区二区三区视频 | 国产精品日日摸夜夜摸av| 亚洲国产精品久久一线不卡| 国产经典欧美精品| 欧美撒尿777hd撒尿| 国产精品网站一区| 免费在线欧美视频| 在线视频亚洲一区| 国产拍揄自揄精品视频麻豆| 日韩精品福利网| 91久久国产最好的精华液| 国产欧美日韩在线看| 婷婷一区二区三区| 在线观看日产精品| 国产精品初高中害羞小美女文| 免费成人在线影院| 欧美日本在线一区| 一区二区三区在线免费播放| 国产伦理精品不卡| 日韩一区国产二区欧美三区| 一区二区三区日韩精品视频| 成人app在线观看| 久久精品日韩一区二区三区| 秋霞午夜av一区二区三区| 欧美性高清videossexo| 中文字幕不卡在线观看| 国内欧美视频一区二区| 日韩一二在线观看| 日韩综合在线视频| 在线不卡欧美精品一区二区三区| 亚洲精品欧美在线| 色悠悠亚洲一区二区| 日韩毛片一二三区| av在线不卡免费看| 国产精品福利影院| 成人成人成人在线视频| 中文无字幕一区二区三区| 国产成人精品免费网站| 欧美精品一区二区久久久| 免费三级欧美电影| 日韩欧美一区二区在线视频| 奇米亚洲午夜久久精品| 日韩西西人体444www| 精品在线一区二区三区| 日韩一区二区麻豆国产| 蜜臀久久99精品久久久久宅男| 日韩一区二区精品| 久久国产乱子精品免费女| 欧美v亚洲v综合ⅴ国产v| 国产在线观看一区二区| 26uuu亚洲综合色| 国产成人精品在线看| 中文在线资源观看网站视频免费不卡| 国产成人日日夜夜| 国产精品福利一区| 色婷婷国产精品久久包臀| 亚洲一区二区四区蜜桃| 56国语精品自产拍在线观看| 日本成人中文字幕| 精品免费国产二区三区| 国产一区二区不卡老阿姨| 国产精品视频一二三区| 91麻豆精品秘密| 一二三区精品视频| 91麻豆精品国产91久久久| 激情深爱一区二区| 国产精品免费丝袜| 在线观看成人小视频| 麻豆中文一区二区| 久久综合色之久久综合| 99久久精品免费观看| 午夜天堂影视香蕉久久| 欧美岛国在线观看| 成人小视频免费观看| 亚洲精选视频在线| 欧美一区二区三区系列电影| 国产一区不卡视频| 亚洲免费观看视频| 日韩一区二区免费视频| www.色精品| 午夜久久电影网| 国产欧美一区二区精品性色超碰| 91色在线porny| 久久国产生活片100| 亚洲人成7777| 欧美成人女星排名| 色狠狠av一区二区三区| 卡一卡二国产精品| 亚洲欧美国产毛片在线| 日韩欧美成人一区| 色综合天天性综合| 久草这里只有精品视频| 亚洲精品乱码久久久久久 | 久久久www成人免费无遮挡大片| 色吧成人激情小说| 国产一区二区日韩精品| 日韩精品一二区| 亚洲欧美国产高清| 中文字幕一区二区三区四区| 日韩欧美一级二级| 欧美三级在线看| 91在线视频免费91|