char pkg_old[PATH_MAX];
char pkg_new[PATH_MAX];
char delta_pkg[PATH_MAX];
- char resolved_path_pkg_old[PATH_MAX];
- char resolved_path_pkg_new[PATH_MAX];
- char resolved_path_delta_pkg[PATH_MAX];
+ char *resolved_path_pkg_old;
+ char *resolved_path_pkg_new;
+ char *resolved_path_delta_pkg;
char label[PKG_NAME_STRING_LEN_MAX];
char tep_path[PATH_MAX];
static GMainLoop *main_loop = NULL;
+static void __free_data()
+{
+ if (data.resolved_path_pkg_old)
+ free(data.resolved_path_pkg_old);
+ if (data.resolved_path_pkg_new)
+ free(data.resolved_path_pkg_new);
+ if (data.resolved_path_delta_pkg)
+ free(data.resolved_path_delta_pkg);
+}
+
static void __error_no_to_string(int errnumber, char **errstr)
{
if (errstr == NULL)
printf("pkgcmd -D -t app -n org.example.helloapp --global\n");
printf("\n");
+ __free_data();
exit(0);
}
memset(data.pkg_old, '\0', PATH_MAX);
memset(data.pkg_new, '\0', PATH_MAX);
memset(data.delta_pkg, '\0', PATH_MAX);
- memset(data.resolved_path_pkg_old, '\0', PATH_MAX);
- memset(data.resolved_path_pkg_new, '\0', PATH_MAX);
- memset(data.resolved_path_delta_pkg, '\0', PATH_MAX);
memset(data.pkg_type, '\0', PKG_TYPE_STRING_LEN_MAX);
memset(data.label, '\0', PKG_TYPE_STRING_LEN_MAX);
memset(data.tep_path, '\0', PATH_MAX);
ret = __convert_to_absolute_path(data.pkg_path);
if (ret == -1) {
printf("conversion of relative path to absolute path failed\n");
+ __free_data();
return -1;
}
printf("path is %s\n", data.pkg_path);
if (optarg)
strncpy(data.pkg_old, optarg, PATH_MAX - 1);
- if (realpath(data.pkg_old, data.resolved_path_pkg_old) == NULL) {
+ data.resolved_path_pkg_old = realpath(data.pkg_old, NULL);
+ if (data.resolved_path_pkg_old == NULL) {
printf("failed to set realpath\n");
+ __free_data();
return -1;
}
printf("pkg_old abs path is %s\n", data.resolved_path_pkg_old);
if (optarg)
strncpy(data.pkg_new, optarg, PATH_MAX - 1);
- if (realpath(data.pkg_new, data.resolved_path_pkg_new) == NULL) {
+ data.resolved_path_pkg_new = realpath(data.pkg_new, NULL);
+ if (data.resolved_path_pkg_new == NULL) {
printf("failed to set realpath\n");
+ __free_data();
return -1;
}
printf("pkg_new abs path is %s\n", data.resolved_path_pkg_new);
strncpy(data.delta_pkg, optarg, PATH_MAX - 1);
printf("delta_pkg is %s\n", data.delta_pkg);
- if (realpath(data.delta_pkg, data.resolved_path_delta_pkg) == NULL) {
+
+ data.resolved_path_delta_pkg = realpath(data.delta_pkg, NULL);
+ if (data.resolved_path_delta_pkg == NULL) {
printf("failed to set realpath\n");
+ __free_data();
return -1;
}
printf("delta_pkg abs path is %s\n", data.resolved_path_delta_pkg);
ret = __convert_to_absolute_tep_path(data.tep_path);
if (ret == -1) {
printf("conversion of relative tep path to absolute path failed\n");
+ __free_data();
return -1;
}
printf("TEP path is %s\n", data.tep_path);
uid_t uid = getuid();
if (is_root_cmd && uid != OWNER_ROOT) {
printf("This cmd is allowed for only root user\n");
+ __free_data();
return -1;
}
gettimeofday(&tv, NULL);
endtime = tv.tv_sec * 1000l + tv.tv_usec / 1000l;
printf("spend time for pkgcmd is [%d]ms\n", (int)(endtime - starttime));
+ __free_data();
return data.result;
}