snprintf(new_patch_path, MAX_FILE_PATH, "%s%s", ua_dataSS->parti_info->ua_subject_name, SS_COMPRESSED_FILE);
if (tar_get_item_size(ua_dataSS->update_data->ua_delta_path, new_patch_path) <= 0) {
SS_SetUpgradeState(E_SS_FSFAILEDTOPARSEDELTAINFO);
- LOGE("New files not present in Patch\n");
+ LOGE("New files not present in Patch and they should be\n");
+ retval = E_SS_FAILURE;
goto CleanUp;
}
}
{
LOGL(LOG_SSENGINE, "NEWFILES mode start\n");
LOGL(LOG_SSENGINE, "Starting New file upgrade for [%s]\n", patch_path);
- if (tar_extract_file(ua_dataSS->update_data->ua_delta_path, (char *)patch_path, new_compressed_path) >=
- 0)
+ if (tar_extract_file(ua_dataSS->update_data->ua_delta_path, (char *)patch_path, new_compressed_path) >= 0) {
if (_7zdecompress(new_compressed_path) == 0)
LOGL(LOG_SSENGINE, "7zip extracted successfully %s\n", ua_dataSS->parti_info->ua_parti_name);
else
LOGL(LOG_SSENGINE, "7zip extraction error for %s\n", ua_dataSS->parti_info->ua_parti_name);
- else
- LOGL(LOG_SSENGINE, "tar extraction error for %s\n", ua_dataSS->parti_info->ua_parti_name);
- SS_DeleteFile(new_compressed_path);
+ SS_DeleteFile(new_compressed_path);
+ } else {
+ LOGL(LOG_SSENGINE, "No %s in %s, becouse there are no new files\n", SS_COMPRESSED_FILE, ua_dataSS->parti_info->ua_parti_name);
+ }
LOGL(LOG_SSENGINE, "NEWFILES mode end\n");
}
break;
if (ulResult == S_SS_SUCCESS) {
//new file extraction start
snprintf(new_patch_path, SS_MAX_FILE_PATH, "%s%s", ua_dataSS->parti_info->ua_subject_name, SS_COMPRESSED_FILE); // subject name wil have fw slash as part of cfg file
- LOGL(LOG_SSENGINE, "File path created to extract new files : [%s]\n", new_patch_path);
+ LOGL(LOG_SSENGINE, "File path to extract new files : [%s]\n", new_patch_path);
ulResult =
SS_FSUpdateFile(NEWFILES, ua_dataSS, head_ptr_node->ulPatchCount, head_ptr_node->new_ref, new_patch_path);
//new file extraction end
#define SECTOR_SIZE 512F
#define SS_KERNEL_DELTA_HEADER 128
-#define SS_BACKUP_SOURCE "/saved.file" //How to make sure there is SPACE
-#define SS_PATCHFILE_SOURCE "/patchfile.file" //define in common place
-#define SS_PATCHLIST_BKUPLOC "/patchlist.txt"
-#define SS_NEW_COMPRESSED_FILE "/system.7z"
+#define SS_BACKUP_SOURCE "saved.file" //How to make sure there is SPACE
+#define SS_PATCHFILE_SOURCE "patchfile.file" //define in common place
+#define SS_PATCHLIST_BKUPLOC "patchlist.txt"
+#define SS_NEW_COMPRESSED_FILE "system.7z"
#define SS_PATCHLISTFORMAT ".txt"
#define SS_PATCH_ATTR_FORMAT "_attr.txt"
static char result_folder[MAX_FOLDER_PATH];
static char temp_folder[MAX_FOLDER_PATH];
static char log_path[MAX_FILE_PATH];
+static char mnt_point[MAX_FILE_PATH];
static ua_part_info_t s_part_info;
if (msg) {
printf("%s\n", msg);
}
- printf("print_usage: upgrade-apply-deltafs --archive delta_dir --dest label --archive-file label.img\n"
+ printf("print_usage: upgrade-apply-deltafs --archive delta_dir --dest directory --archive-file label.img\n"
"delta_dir: directory path where delta.tar file is located\n"
- "label: label of the partition to be updated\n"
- "label.img: name of the file inside of delta that is to be used during upgrade\n"
+ "directory: directory where partition to be upgraded is mounted\n"
+ "label.img: name of the directory inside of delta that is to be used during upgrade\n"
);
}
int ret = OK;
int cause = 0, item_size = 0;
unsigned long ui32Operation = UI_OP_SCOUT;
+ char * org_dir = getcwd(NULL, 0);
+
+ if ((ret = chdir(mnt_point)) < 0) {
+ cause = ret;
+ goto CleanUp;
+ }
item_size = tar_get_item_size(s_update_data.ua_delta_path, s_part_info.ua_subject_name);
if (item_size > 0)
}
}
+ if ((ret = chdir(org_dir)) < 0) {
+ cause = ret;
+ goto CleanUp;
+ }
+
get_time_stamp();
LOG("[%s] Update End ..............................................................\n", ts);
CleanUp:
if (ret != OK)
save_cause(cause);
+ free(org_dir);
return ret;
}
{
char ver_str[MAX_PATH];
int ret = FAIL;
+ char *dot_pos;
+ int len;
temp_opt my_opt;
log_init();
if(arg_parse(argc, argv, &my_opt) < 0) {
snprintf(delta_path, sizeof(delta_path)-1, "%s/%s", delta_folder, DEFAULT_DELTA_NAME);
s_update_data.ua_delta_folder = strdup(delta_folder);
+ snprintf(mnt_point, sizeof(mnt_point)-1, "%s", my_opt.dest);
snprintf(temp_folder, sizeof(temp_folder)-1, "%s", TEMP_FOLDER);
snprintf(log_folder, sizeof(log_folder)-1, "%s", SYSTEM_LOG_DIR);
snprintf(fota_result, sizeof(fota_result), "%s/%s", result_folder, "result");
goto Results;
}
- s_part_info.ua_parti_name = my_opt.dest;
+ dot_pos = strchr(my_opt.archive_file, '.');
+ len = (dot_pos - my_opt.archive_file);
+ s_part_info.ua_parti_name = (char*)malloc(sizeof(char) * (len + 1));
+ strncpy(s_part_info.ua_parti_name, my_opt.archive_file, len);
+ s_part_info.ua_parti_name[len] = '\0';
+
s_part_info.ua_subject_name = my_opt.archive_file;
s_update_cfg.source_img_size = 0; // TODO lets see if 0 will work