Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 45 additions & 9 deletions skeleton/SYSTEM/common/update-functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -50,22 +50,58 @@ atomic_system_update() {
fi
fi

# Move old .tmp_update out of the way (original approach)
mv "$_sdcard/.tmp_update" "$_sdcard/.tmp_update-old" 2>/dev/null
# Move old .tmp_update out of the way (using consistent -prev suffix)
mv "$_sdcard/.tmp_update" "$_sdcard/.tmp_update-prev" 2>/dev/null

# Determine which unzip to use
# Some platforms bundle unzip (tg5040, trimuismart, my282, rg35xxplus)
# Others rely on stock firmware's unzip in PATH (miyoomini, rg35xx, etc.)
if [ -x "./unzip" ]; then
_unzip_cmd="./unzip"
else
_unzip_cmd="unzip"
fi

# Extract update
if unzip -o "$_update_zip" -d "$_sdcard" >> "$_log" 2>&1; then
if "$_unzip_cmd" -o "$_update_zip" -d "$_sdcard" >> "$_log" 2>&1; then
# SUCCESS: Unzip completed successfully
log_info "Unzip complete"
rm -f "$_update_zip"
rm -rf "$_sdcard/.tmp_update-prev"
rm -rf "$_system_dir-prev"
return 0
else
# FAILURE: Unzip failed - restore backups
_exit_code=$?
log_error "Unzip failed with exit code $_exit_code"
fi
rm -f "$_update_zip"
rm -rf "$_sdcard/.tmp_update-old"

# Success - remove .system backup
rm -rf "$_system_dir-prev"
return 0
# Restore .system backup
if [ -d "$_system_dir-prev" ]; then
log_info "Restoring .system from backup..."
rm -rf "$_system_dir"
if mv "$_system_dir-prev" "$_system_dir"; then
log_info ".system backup restored successfully"
else
log_error "CRITICAL: Failed to restore .system backup!"
fi
fi

# Restore .tmp_update backup
if [ -d "$_sdcard/.tmp_update-prev" ]; then
log_info "Restoring .tmp_update from backup..."
rm -rf "$_sdcard/.tmp_update"
if mv "$_sdcard/.tmp_update-prev" "$_sdcard/.tmp_update"; then
log_info ".tmp_update backup restored successfully"
else
log_error "CRITICAL: Failed to restore .tmp_update backup!"
fi
fi

# Delete failed ZIP to prevent update loop
rm -f "$_update_zip"
log_info "Deleted failed update file"
return 1
fi
}

#######################################
Expand Down