⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create.h

📁 it is about embeded system
💻 H
字号:
#ifndef _CREATE_H#define _CREATE_H#include <db.h> #include<fcntl.h>#include<unistd.h>#include<string.h>#include "t2s.h"#define  DEFAULT_HOMEDIR  "./db/"   #define  WORDS_INDEXDB    "words_index.db"#define  WORDSDB           "words.db"#define  KEYBOARDDB       "keyboard.db"#define  STADB  			"sta.db"/*错误提示函数*/void print_error(int ret){  char array[10]="查询无结果";    if(ret!=0)    {        printf("ERROR;%s\n",db_strerror(ret));   //     T2S_option( FEMALE, 2, 1 );           //调用语音函数读出汉字  //     T2S_t2s( array );    }}/*此程序定义了一个STOCK_DBS结构体,包含了可以进行操作的所有数据库*/typedef struct stock_dbs {    DB *keyboard_dbp;                  /*  keyboard 数据库句柄  */    DB *words_index_dbp;               /*   words_index 数据库句柄 */    DB *words_dbp;                    /*    words    数据库句柄    */      DB *sta_dbp;                        /*sta 数据库句柄*/    char *db_home_dir;                  /*  包含数据库文件的目录 */    char *keyboard_db_name;             /* keyboard数据库名 */    char *words_index_db_name;          /* words_index 数据库名 */    char *words_db_name;               /* words  数据库名 */    char *sta_db_name;                  /*sta 数据库名*/} STOCK_DBS;/* 定义处理结构体中的数据库的函数 */int  databases_setup(STOCK_DBS *, const char *, FILE *);int  databases_close(STOCK_DBS *);void  initialize_stockdbs(STOCK_DBS *);int  open_database(DB **, const char *, const char *, FILE * );void  set_db_filenames(STOCK_DBS *my_stock); /* 初始化 STOCK_DBS 结构体.*/void  initialize_stockdbs(STOCK_DBS *my_stock){    my_stock->db_home_dir = DEFAULT_HOMEDIR;    my_stock->keyboard_dbp = NULL;    my_stock->words_index_dbp = NULL;    my_stock->words_dbp = NULL;    my_stock->sta_dbp = NULL;	    my_stock->keyboard_db_name = NULL;    my_stock->words_index_db_name = NULL;    my_stock->words_db_name = NULL;    my_stock->sta_db_name = NULL;}/* 定义所有的数据库文件 */void  set_db_filenames(STOCK_DBS *my_stock){    size_t size;/* 定义 keyboard  数据库文件名  */    size = strlen(my_stock->db_home_dir) + strlen(KEYBOARDDB) + 1;    my_stock->keyboard_db_name = malloc(size);    snprintf(my_stock->keyboard_db_name, size, "%s%s", my_stock->db_home_dir, KEYBOARDDB); //   printf("keyboard_db_name: %s\n",my_stock->keyboard_db_name);/* 定义 words_index 数据库文件名 */   size = strlen(my_stock->db_home_dir) + strlen(WORDS_INDEXDB) + 1;   my_stock->words_index_db_name = malloc(size);   snprintf(my_stock->words_index_db_name, size, "%s%s", my_stock->db_home_dir, WORDS_INDEXDB);//   printf("words_index_db_name: %s\n",my_stock->words_index_db_name);/* 定义 words 数据库文件名*/   size = strlen(my_stock->db_home_dir) + strlen(WORDSDB) + 1;   my_stock->words_db_name = malloc(size);   snprintf(my_stock->words_db_name, size, "%s%s", my_stock->db_home_dir, WORDSDB);//   printf("words_db_name: %s\n",my_stock->words_db_name);/*定义sta 数据库文件名*/   size = strlen(my_stock->db_home_dir) + strlen(STADB) + 1;   my_stock->sta_db_name = malloc(size);   snprintf(my_stock->sta_db_name, size, "%s%s", my_stock->db_home_dir, STADB);//   printf("sta_db_name: %s\n",my_stock->sta_db_name);}/* 创建数据库 */int open_database( DB **dbpp, const char *file_name, const char *program_name,        FILE *error_file_pointer  )     {   DB *dbp;        /* For convenience */   u_int32_t open_flags;   int ret;       ret = db_create(&dbp, NULL, 0);   if (ret != 0) {     fprintf(error_file_pointer, "%s: %s\n", program_name, db_strerror(ret));     return(ret);    }  *dbpp = dbp;                               dbp->set_errfile(dbp, error_file_pointer);          dbp->set_errpfx(dbp, program_name);   open_flags = DB_CREATE;                 ret = dbp->open( dbp, NULL, file_name, NULL, DB_BTREE, open_flags, 0);                 if (ret != 0) {    dbp->err(dbp, ret, "Database '%s' open failed.", file_name);    return(ret);   }  return (ret);}  /* 打开所有数据库  */int databases_setup(STOCK_DBS *my_stock, const char *program_name, FILE *error_file_pointer){  int ret;/* 打开 words 数据库 */  ret = open_database(&(my_stock->words_dbp), my_stock->words_db_name, program_name,  error_file_pointer );  if (ret != 0)    return (ret);/* 打开 words_index 数据库 */  ret = open_database(&(my_stock->words_index_dbp), my_stock->words_index_db_name, program_name, error_file_pointer );  if (ret != 0)    return (ret);/* 打开 keyboard 数据库 */  ret = open_database(&(my_stock->keyboard_dbp), my_stock->keyboard_db_name, program_name, error_file_pointer );  if (ret != 0)    return (ret);/*打开sta 数据库*/  ret = open_database(&(my_stock->sta_dbp), my_stock->sta_db_name, program_name, error_file_pointer );  if (ret != 0)    return (ret);  return (0);} /* 关闭所有数据库 */intdatabases_close(STOCK_DBS *my_stock){  int ret;  /* 关闭 words 数据库 */  if (my_stock->words_dbp != NULL) {  ret = my_stock->words_dbp->close(my_stock->words_dbp, 0);  if (ret != 0)    fprintf(stderr, "words database close failed: %s\n",    db_strerror(ret));  }  /* 关闭 words_index 数据库 */  if (my_stock->words_index_dbp != NULL) {  ret = my_stock->words_index_dbp->close(my_stock->words_index_dbp, 0);    if (ret != 0)      fprintf(stderr, "words_index database close failed: %s\n",      db_strerror(ret));  }/* 关闭 keyboard 数据库 */ if (my_stock->keyboard_dbp != NULL) {  ret = my_stock->keyboard_dbp->close(my_stock->keyboard_dbp, 0);    if (ret != 0)      fprintf(stderr, "keyboard database close failed: %s\n",      db_strerror(ret));  }/*关闭sta 数据库*/if (my_stock->sta_dbp != NULL) {  ret = my_stock->sta_dbp->close(my_stock->sta_dbp, 0);    if (ret != 0)      fprintf(stderr, "sta database close failed: %s\n",      db_strerror(ret));  }  return (0);} #endif

⌨️ 快捷键说明

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