Changeset a2f95ce in mainline for uspace/app/sysinst/sysinst.c
- Timestamp:
- 2026-04-11T12:47:58Z (32 hours ago)
- Branches:
- master
- Parents:
- 6d06bbc
- File:
-
- 1 edited
-
uspace/app/sysinst/sysinst.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sysinst/sysinst.c
r6d06bbc ra2f95ce 143 143 }; 144 144 145 static void sysinst_upgrade_confirm_button(ui_msg_dialog_t *, void *, unsigned); 146 static void sysinst_upgrade_confirm_close(ui_msg_dialog_t *, void *); 147 148 static ui_msg_dialog_cb_t sysinst_upgrade_confirm_cb = { 149 .button = sysinst_upgrade_confirm_button, 150 .close = sysinst_upgrade_confirm_close 151 }; 152 145 153 static errno_t sysinst_restart_dlg_create(sysinst_t *); 146 154 static void sysinst_restart_dlg_button(ui_msg_dialog_t *, void *, unsigned); … … 163 171 static errno_t sysinst_eject_dev(sysinst_t *, service_id_t); 164 172 static errno_t sysinst_eject_phys_by_mp(sysinst_t *, const char *); 173 static errno_t sysinst_upgrade_confirm_create(sysinst_t *); 165 174 166 175 static futil_cb_t sysinst_futil_cb = { … … 251 260 */ 252 261 static void sysinst_confirm_close(ui_msg_dialog_t *dialog, void *arg) 262 { 263 sysinst_t *sysinst = (sysinst_t *) arg; 264 265 ui_msg_dialog_destroy(dialog); 266 ui_quit(sysinst->ui); 267 } 268 269 /** Upgrade confirm dialog OK button press. 270 * 271 * @param dialog Message dialog 272 * @param arg Argument (sysinst_t *) 273 * @param btn Button number 274 * @param earg Entry argument 275 */ 276 static void sysinst_upgrade_confirm_button(ui_msg_dialog_t *dialog, void *arg, 277 unsigned btn) 278 { 279 sysinst_t *sysinst = (sysinst_t *) arg; 280 281 ui_msg_dialog_destroy(dialog); 282 283 switch (btn) { 284 case 0: 285 /* OK */ 286 fibril_mutex_lock(&sysinst->responded_lock); 287 sysinst->responded = true; 288 sysinst->quit = false; 289 fibril_mutex_unlock(&sysinst->responded_lock); 290 fibril_condvar_signal(&sysinst->responded_cv); 291 break; 292 default: 293 /* Cancel */ 294 fibril_mutex_lock(&sysinst->responded_lock); 295 sysinst->responded = true; 296 sysinst->quit = true; 297 fibril_mutex_unlock(&sysinst->responded_lock); 298 fibril_condvar_signal(&sysinst->responded_cv); 299 break; 300 } 301 } 302 303 /** Upgrade confirm dialog close request. 304 * 305 * @param dialog Message dialog 306 * @param arg Argument (sysinst_t *) 307 */ 308 static void sysinst_upgrade_confirm_close(ui_msg_dialog_t *dialog, void *arg) 253 309 { 254 310 sysinst_t *sysinst = (sysinst_t *) arg; … … 622 678 rc = sysinst_existing_os_part_find(sysinst, fdev, &part); 623 679 if (rc == EOK) { 680 /* Open dialog to confirm that user wants to upgrade. */ 681 rc = sysinst_upgrade_confirm_create(sysinst); 682 if (rc != EOK) { 683 sysinst_error(sysinst, "Cannot create window."); 684 goto error; 685 } 686 687 fibril_mutex_lock(&sysinst->responded_lock); 688 while (!sysinst->responded) 689 fibril_condvar_wait(&sysinst->responded_cv, 690 &sysinst->responded_lock); 691 fibril_mutex_unlock(&sysinst->responded_lock); 692 693 /* User decided not to upgrade existing installation? */ 694 if (sysinst->quit) { 695 (void)vfs_unlink_path(MOUNT_POINT); 696 return EOK; 697 } 698 624 699 /* Set mount point for installation partition. */ 625 700 rc = fdisk_part_set_mountp(part, MOUNT_POINT); … … 1130 1205 if (rc != EOK) 1131 1206 goto error; 1207 if (sysinst->quit) 1208 return EOK; 1132 1209 1133 1210 clean_dev = true; … … 1200 1277 sysinst_progress_destroy(sysinst->progress); 1201 1278 sysinst->progress = NULL; 1279 1280 /* User decided not to upgrade system? */ 1281 if (sysinst->quit) { 1282 ui_quit(sysinst->ui); 1283 return EOK; 1284 } 1202 1285 1203 1286 rc = sysinst_restart_dlg_create(sysinst); … … 1458 1541 } 1459 1542 1543 /** Create upgrade confirmation dialog. 1544 * 1545 * @param sysinst System installer 1546 * @return EOK on success or an error code 1547 */ 1548 static errno_t sysinst_upgrade_confirm_create(sysinst_t *sysinst) 1549 { 1550 ui_msg_dialog_params_t params; 1551 ui_msg_dialog_t *dialog; 1552 errno_t rc; 1553 1554 ui_msg_dialog_params_init(¶ms); 1555 params.caption = "System upgrade"; 1556 params.text = "Existing installation found. " 1557 "Do you want to upgrade it?"; 1558 params.choice = umdc_ok_cancel; 1559 params.flags |= umdf_topmost | umdf_center; 1560 1561 rc = ui_msg_dialog_create(sysinst->ui, ¶ms, &dialog); 1562 if (rc != EOK) 1563 return rc; 1564 1565 ui_msg_dialog_set_cb(dialog, &sysinst_upgrade_confirm_cb, sysinst); 1566 return EOK; 1567 } 1568 1460 1569 /** Create restart dialog. 1461 1570 * … … 1503 1612 if (sysinst == NULL) 1504 1613 return ENOMEM; 1614 1615 fibril_condvar_initialize(&sysinst->responded_cv); 1616 fibril_mutex_initialize(&sysinst->responded_lock); 1505 1617 1506 1618 rc = futil_create(&sysinst_futil_cb, (void *)sysinst, &sysinst->futil); … … 1552 1664 } 1553 1665 1554 (void)sysinst_confirm_create(sysinst); 1666 rc = sysinst_confirm_create(sysinst); 1667 if (rc != EOK) { 1668 printf("Error creating window.\n"); 1669 goto error; 1670 } 1555 1671 1556 1672 ui_run(ui);
Note:
See TracChangeset
for help on using the changeset viewer.
