#include <sys/wait.h>
#include <sys/time.h>
#include <libxml/xmlreader.h>
+#include <sqlite3.h>
#include <package-manager-types.h>
#include <package-manager.h>
struct timeval tv;
gettimeofday(&tv, NULL);
starttime = tv.tv_sec * 1000l + tv.tv_usec / 1000l;
- char buf[BUF_SIZE];
+ char *query;
char backend_cmd[BUF_SIZE];
const char *new_pkgtype;
const char tpk_pkgtype[] = "tpk";
ret = __xsystem(uninstall_ro);
break;
case PKG_NEED_UPDATE_TO_RW:
- snprintf(buf, sizeof(buf),
+ query = sqlite3_mprintf(
"UPDATE package_info SET " \
"package_preload='false', " \
"package_system='false' "\
- "WHERE package='%s'", pkgid);
+ "WHERE package=%Q", pkgid);
db_cmd[1] = strdup(DBPATH);
- db_cmd[2] = strdup(buf);
+ db_cmd[2] = query;
ret = __xsystem(db_cmd);
FREE_AND_NULL(db_cmd[1]);
- FREE_AND_NULL(db_cmd[2]);
+ sqlite3_free(query);
break;
case PKG_NEED_RWUNINSTALL:
case PKG_NEED_UPDATE_TO_RO:
ret = __xsystem(uninstall_ro_update);
break;
case PKG_NEED_RO_DBREMOVE:
- snprintf(buf, sizeof(buf),
+ query = sqlite3_mprintf(
"PRAGMA foreign_keys=on; " \
"DELETE FROM package_info " \
- "WHERE package='%s'", pkgid);
+ "WHERE package=%Q", pkgid);
db_cmd[1] = strdup(DBPATH);
- db_cmd[2] = strdup(buf);
+ db_cmd[2] = query;
ret = __xsystem(db_cmd);
FREE_AND_NULL(db_cmd[1]);
- FREE_AND_NULL(db_cmd[2]);
+ sqlite3_free(query);
break;
case PKG_NEED_PRELOADRW_INSTALL:
ret = __xsystem(preload_rw);
pkgtype = __getvalue(buf, TOKEN_TYPE_STR, 1);
__install_preload_rw(pkgid, pkgtype);
+ free(pkgtype);
if (handle)
pkgmgrinfo_pkginfo_destroy_pkginfo(handle);