Changeset 47d060d in mainline for uspace/srv/hid/remcons/remcons.c
- Timestamp:
- 2024-10-04T19:23:16Z (9 months ago)
- Branches:
- master
- Children:
- c7ecd290
- Parents:
- 5132379
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hid/remcons/remcons.c
r5132379 r47d060d 144 144 }; 145 145 146 static void remcons_telnet_ws_update(void *, unsigned, unsigned); 147 148 static telnet_cb_t remcons_telnet_cb = { 149 .ws_update = remcons_telnet_ws_update 150 }; 151 146 152 static loc_srv_t *remcons_srv; 147 153 static bool no_ctl; … … 260 266 261 267 if (remcons->enable_ctl) { 262 *cols = 80;263 *rows = 25;268 *cols = remcons->vt->cols; 269 *rows = remcons->vt->rows; 264 270 } else { 265 271 *cols = 100; … … 352 358 { 353 359 remcons_event_t *event = malloc(sizeof(remcons_event_t)); 354 assert(event); 360 if (event == NULL) { 361 fprintf(stderr, "Out of memory.\n"); 362 return NULL; 363 } 355 364 356 365 link_initialize(&event->link); 357 event->kbd.type = type; 358 event->kbd.mods = mods; 359 event->kbd.key = key; 360 event->kbd.c = c; 366 event->cev.type = CEV_KEY; 367 event->cev.ev.key.type = type; 368 event->cev.ev.key.mods = mods; 369 event->cev.ev.key.key = key; 370 event->cev.ev.key.c = c; 371 372 return event; 373 } 374 375 /** Creates new console resize event. 376 */ 377 static remcons_event_t *new_resize_event(void) 378 { 379 remcons_event_t *event = malloc(sizeof(remcons_event_t)); 380 if (event == NULL) { 381 fprintf(stderr, "Out of memory.\n"); 382 return NULL; 383 } 384 385 link_initialize(&event->link); 386 event->cev.type = CEV_RESIZE; 361 387 362 388 return event; … … 385 411 remcons_event_t *tmp = list_get_instance(link, remcons_event_t, link); 386 412 387 event->type = CEV_KEY; 388 event->ev.key = tmp->kbd; 389 413 *event = tmp->cev; 390 414 free(tmp); 391 415 … … 590 614 591 615 remcons_event_t *down = new_kbd_event(KEY_PRESS, mods, key, c); 616 if (down == NULL) 617 return; 618 592 619 remcons_event_t *up = new_kbd_event(KEY_RELEASE, mods, key, c); 593 assert(down); 594 assert(up); 620 if (up == NULL) { 621 free(down); 622 return; 623 } 624 595 625 list_append(&down->link, &remcons->in_events); 596 626 list_append(&up->link, &remcons->in_events); 627 } 628 629 /** Window size update callback. 630 * 631 * @param arg Argument (remcons_t *) 632 * @param cols New number of columns 633 * @param rows New number of rows 634 */ 635 static void remcons_telnet_ws_update(void *arg, unsigned cols, unsigned rows) 636 { 637 remcons_t *remcons = (remcons_t *)arg; 638 639 vt100_resize(remcons->vt, cols, rows); 640 telnet_user_resize(remcons->user, cols, rows); 641 642 remcons_event_t *resize = new_resize_event(); 643 if (resize == NULL) 644 return; 645 646 list_append(&resize->link, &remcons->in_events); 597 647 } 598 648 … … 605 655 { 606 656 char_attrs_t attrs; 607 remcons_t *remcons = calloc(1, sizeof(remcons_t)); 608 assert(remcons != NULL); // XXX 609 telnet_user_t *user = telnet_user_create(conn); 610 assert(user); 657 remcons_t *remcons = NULL; 658 telnet_user_t *user = NULL; 659 660 remcons = calloc(1, sizeof(remcons_t)); 661 if (remcons == NULL) { 662 fprintf(stderr, "Out of memory.\n"); 663 goto error; 664 } 665 666 user = telnet_user_create(conn, &remcons_telnet_cb, 667 (void *)remcons); 668 if (user == NULL) { 669 fprintf(stderr, "Out of memory.\n"); 670 goto error; 671 } 611 672 612 673 remcons->enable_ctl = !no_ctl; … … 626 687 627 688 remcons->vt = vt100_create((void *)remcons, 80, 25, &remcons_vt_cb); 628 assert(remcons->vt != NULL); // XXX 689 if (remcons->vt == NULL) { 690 fprintf(stderr, "Error creating VT100 driver instance.\n"); 691 goto error; 692 } 693 629 694 remcons->vt->enable_rgb = remcons->enable_rgb; 630 695 … … 649 714 telnet_user_error(user, "Unable to register %s with loc: %s.", 650 715 user->service_name, str_error(rc)); 651 return;716 goto error; 652 717 } 653 718 … … 656 721 657 722 fid_t spawn_fibril = fibril_create(spawn_task_fibril, user); 658 assert(spawn_fibril); 723 if (spawn_fibril == 0) { 724 fprintf(stderr, "Failed creating fibril.\n"); 725 goto error; 726 } 659 727 fibril_add_ready(spawn_fibril); 660 728 … … 685 753 telnet_user_log(user, "Destroying..."); 686 754 telnet_user_destroy(user); 755 return; 756 error: 757 if (user != NULL && user->service_id != 0) 758 loc_service_unregister(remcons_srv, user->service_id); 759 if (user != NULL) 760 free(user); 761 if (remcons != NULL && remcons->vt != NULL) 762 vt100_destroy(remcons->vt); 763 if (remcons != NULL) 764 free(remcons); 687 765 } 688 766
Note:
See TracChangeset
for help on using the changeset viewer.