📄 kdb3demo.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <asm/errno.h>#include <linux/unistd.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include "db_int.h"#define __NR_db3_create 255#define __NR_db3_open 254#define __NR_db3_get 253#define __NR_db3_put 252#define __NR_db3_close 251//#define __NR_db3_delete 250#define __NR_db3_get_table 250//system calls_syscall2(int, db3_create, int, db, u_int32_t, flags);_syscall5(int, db3_open, int, db, char *, name, DBTYPE, type, u_int32_t, flags, int, mode);_syscall4(int, db3_put, int, db, DBT *, key, DBT *, data, u_int32_t, flags);_syscall3(int, db3_get, int, db, DBT *, key, u_int32_t, flags);//_syscall3(int, db3_delete, int, db, DBT *, key, u_int32_t, flags);_syscall2(int, db3_close, int, db, u_int32_t, flags);_syscall1(int, db3_get_table, int, db);int main(){ DBT key, data; char command [128],cmd[128], kdata[64], ddata[64]; int ret; int status=0; cmd[0] = '\0'; memset(command,0, 128); while (1) { printf("KDB3> "); fgets(cmd, 128, stdin); /*Changed gets() to fgets()*/ if (strncmp(cmd, "quit",4) == 0) break; else if (strncmp(cmd, "create",6) == 0) { if(status != 0) goto df; ret = db3_create(1, 0); printf("return from db3_create = %d\n", ret); status = 1; } else if (strncmp(cmd, "open",4) == 0) { if (status != 1) goto df; ret = db3_open(1, "demo.db", DB_HASH, DB_CREATE, 0777); printf("return from db3_open = %d\n", ret); status = 2; } else if (strncmp(cmd, "put",3) == 0) { if (status !=2) goto df; sscanf(cmd,"%s %s %s", command, kdata, ddata); memset(&key, 0, sizeof(DBT)); memset(&data, 0, sizeof(DBT)); key.data = malloc(64); data.data = malloc(64); strcpy((char *)key.data, kdata); key.size = strlen(kdata)+1; strcpy((char *)data.data, ddata); data.size = strlen(ddata)+1; ret = db3_put(1, &key, &data, 0); free(key.data); free(data.data); } else if (strncmp(cmd, "get",3) == 0) { if (status !=2) goto df; memset(&key, 0, sizeof(DBT)); key.data = malloc(64); sscanf(cmd,"%s %s",command, kdata); strcpy((char *)key.data, kdata); key.size = strlen(kdata) + 1; db3_get(1, &key, 0); } else if (strncmp(cmd, "list",4) == 0) { if (status !=2) goto df; sscanf(cmd,"%s",command); db3_get_table(1); } else if (strncmp(cmd, "delete",6) == 0) { if (status !=2) goto df; memset(&key, 0, sizeof(DBT)); key.data = malloc(64); sscanf(cmd,"%s %s",command, kdata); strcpy((char *)key.data, kdata); key.size = strlen(kdata) + 1; //db3_delete(1, &key, 0); } else if (strncmp(cmd, "close",5) == 0) { if (status !=2) goto df; ret = db3_close(1, 0); printf("return from db3_close = %d\n", ret); status = 0; } else df: printf("Bad command or Operation!\n"); continue; }/* ret = db3_create(1, 0);// printf("db3_create ret = %d\n", ret); ret = db3_open(1, "demo.db", DB_HASH, DB_CREATE, 0664);// printf("db3_open ret = %d\n", ret); memset(&key, 0, sizeof(DBT)); memset(&data, 0, sizeof(DBT)); key.data = malloc(64); data.data = malloc(64); strcpy(input, "key1"); strcpy((char *)key.data, input); key.size = strlen(input)+1; strcpy(input, "data1"); strcpy((char *)data.data, input); data.size = strlen(input)+1; ret = db3_put(1, &key, &data, 0);// printf("db3_put ret = %d\n", ret); free(key.data); free(data.data); memset(&key, 0, sizeof(DBT)); memset(&data, 0, sizeof(DBT)); key.data = malloc(64); data.data = malloc(64); strcpy(input, "key2"); strcpy((char *)key.data, input); key.size = strlen(input)+1; strcpy(input, "data2"); strcpy((char *)data.data, input); data.size = strlen(input)+1; ret = db3_put(1, &key, &data, 0);// printf("db3_put ret = %d\n", ret); free(key.data); free(data.data); ret = db3_get(1, 1, 0);// printf("db3_get ret = %d\n", ret); ret = db3_delete(1, 2, 0);// printf("db3_delete ret = %d\n", ret); ret = db3_close(1, 0);// printf("db3_close ret = %d\n", ret);*/ return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -