Ver código fonte

- support for db_getopt

Jan Janak 18 anos atrás
pai
commit
1a3c748009
2 arquivos alterados com 29 adições e 0 exclusões
  1. 27 0
      db/db_cmd.c
  2. 2 0
      db/db_cmd.h

+ 27 - 0
db/db_cmd.c

@@ -208,6 +208,33 @@ int db_exec(db_res_t** res, db_cmd_t* cmd)
 }
 
 
+int db_getopt(db_cmd_t* cmd, char* optname, ...)
+{
+	int i, r;
+	db_drv_func_t func;
+	db_con_t* con;
+	va_list ap;
+	
+	for(i = 0; i < cmd->ctx->con_n; i++) {
+		con = cmd->ctx->con[i];
+		
+		r = db_drv_func(&func, &con->uri->scheme, "db_getopt");
+		if (r < 0) return -1;
+		if (r > 0) func = NULL;
+		db_payload_idx = i;
+		
+		va_start(ap, optname);
+		if (func && func(cmd, optname, ap) < 0) {
+			va_end(ap);
+			return -1;
+		}
+		va_end(ap);
+	}
+	
+	return 0;
+}
+
+
 int db_setopt(db_cmd_t* cmd, char* optname, ...)
 {
        int i, r;

+ 2 - 0
db/db_cmd.h

@@ -96,6 +96,8 @@ void db_cmd_free(struct db_cmd* cmd);
 
 int db_exec(struct db_res** res, struct db_cmd* cmd);
 
+int db_getopt(db_cmd_t* cmd, char* optname, ...);
+
 int db_setopt(db_cmd_t* cmd, char* optname, ...);
 
 #ifdef __cplusplus