index.c

来自「直接存取Access97数据库文件(MDB)的工具库源码」· C语言 代码 · 共 70 行

C
70
字号
/* MDB Tools - A library for reading MS Access database file * Copyright (C) 2000 Brian Bruns * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#include "mdbtools.h"GPtrArray *mdb_read_indices(MdbTableDef *table){MdbHandle *mdb = table->entry->mdb;MdbIndex idx, *pidx;int len, i;int cur_pos;int name_sz;/* FIX ME -- doesn't handle multipage table headers */        table->indices = g_ptr_array_new();        cur_pos = table->index_start;	for (i=0;i<table->num_real_idxs;i++) {		memset(&idx, '\0', sizeof(MdbIndex));		idx.index_num = i;		cur_pos += 34;		idx.first_pg = mdb_get_int32(mdb, cur_pos);		cur_pos += 5;		mdb_append_index(table->indices, &idx);	}	for (i=0;i<table->num_idxs;i++) {		pidx = g_ptr_array_index (table->indices, i);		cur_pos += 19;		if (mdb->pg_buf[cur_pos++]==0x01) 			pidx->primary_key=1;	}	for (i=0;i<table->num_idxs;i++) {		pidx = g_ptr_array_index (table->indices, i);		name_sz=mdb->pg_buf[cur_pos++];		memcpy(pidx->name, &mdb->pg_buf[cur_pos], name_sz);		pidx->name[name_sz]='\0';				//fprintf(stderr, "index name %s\n", pidx->name);		cur_pos += name_sz;	}}void mdb_index_dump(MdbIndex *idx){int i;	fprintf(stdout,"index number     %d\n", idx->index_num);	fprintf(stdout,"index name       %s\n", idx->name);	fprintf(stdout,"index first page %d\n", idx->first_pg);	if (idx->primary_key) fprintf(stdout,"index is a primary key\n");}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?