+
+download_dbinfo *download_provider_db_history_get_info(int requestid)
+{
+ if (requestid <= 0)
+ return NULL;
+
+ int errorcode;
+ int buffer_length = 0;
+ sqlite3_stmt *stmt = NULL;
+ char *buffer = NULL;
+ download_dbinfo *dbinfo = NULL;
+
+ if (_download_provider_sql_open() < 0) {
+ TRACE_DEBUG_MSG("db_util_open is failed [%s]",
+ sqlite3_errmsg(g_download_provider_db));
+ return NULL;
+ }
+
+ errorcode =
+ sqlite3_prepare_v2(g_download_provider_db,
+ "SELECT uniqueid, packagename, notification, installpath, filename, creationdate, state, url, mimetype, savedpath FROM history WHERE uniqueid = ?",
+ -1, &stmt, NULL);
+ if (errorcode != SQLITE_OK) {
+ TRACE_DEBUG_MSG("sqlite3_prepare_v2 is failed. [%s]",
+ sqlite3_errmsg(g_download_provider_db));
+ _download_provider_sql_close(stmt);
+ return NULL;
+ }
+ if (sqlite3_bind_int(stmt, 1, requestid) != SQLITE_OK) {
+ TRACE_DEBUG_MSG("sqlite3_bind_int is failed. [%s]",
+ sqlite3_errmsg(g_download_provider_db));
+ _download_provider_sql_close(stmt);
+ return NULL;
+ }
+
+ if ((errorcode = sqlite3_step(stmt)) == SQLITE_ROW) {
+ dbinfo = (download_dbinfo *) calloc(1, sizeof(download_dbinfo));
+ dbinfo->requestid = sqlite3_column_int(stmt, 0);
+ buffer = (char *)(sqlite3_column_text(stmt, 1));
+ dbinfo->packagename = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->packagename
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->packagename, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->packagename[buffer_length] = '\0';
+ }
+ dbinfo->notification = sqlite3_column_int(stmt, 2);
+ buffer = (char *)(sqlite3_column_text(stmt, 3));
+ dbinfo->installpath = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->installpath
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->installpath, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->installpath[buffer_length] = '\0';
+ }
+ buffer = (char *)(sqlite3_column_text(stmt, 4));
+ dbinfo->filename = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->filename
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->filename, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->filename[buffer_length] = '\0';
+ }
+ buffer = (char *)(sqlite3_column_text(stmt, 5));
+ dbinfo->createdate = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->createdate
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->createdate, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->createdate[buffer_length] = '\0';
+ }
+ dbinfo->state = sqlite3_column_int(stmt, 6);
+ buffer = (char *)(sqlite3_column_text(stmt, 7));
+ dbinfo->url = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->url
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->url, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->url[buffer_length] = '\0';
+ }
+ buffer = (char *)(sqlite3_column_text(stmt, 8));
+ dbinfo->mimetype = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->mimetype
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->mimetype, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->mimetype[buffer_length] = '\0';
+ }
+ buffer = (char *)(sqlite3_column_text(stmt, 9));
+ dbinfo->saved_path = NULL;
+ if (buffer) {
+ buffer_length = strlen(buffer);
+ dbinfo->saved_path
+ = (char *)calloc(buffer_length + 1, sizeof(char));
+ memcpy(dbinfo->saved_path, buffer,
+ buffer_length * sizeof(char));
+ dbinfo->saved_path[buffer_length] = '\0';
+ }
+ } else {
+ TRACE_DEBUG_MSG("sqlite3_step is failed. [%s] errorcode[%d]",
+ sqlite3_errmsg(g_download_provider_db), errorcode);
+ __download_provider_db_close();
+ download_provider_db_info_free(dbinfo);
+ return NULL;
+ }
+ _download_provider_sql_close(stmt);
+ return dbinfo;
+}