Changes in uspace/app/disp/disp.c [c0757e1f:b3eeae5] in mainline
- File:
-
- 1 edited
-
uspace/app/disp/disp.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/disp/disp.c
rc0757e1f rb3eeae5 56 56 printf(" %s assign-dev <device> <seat>\n", NAME); 57 57 printf(" %s unassign-dev <device>\n", NAME); 58 printf(" %s list-dev <seat>\n", NAME);59 58 } 60 59 … … 394 393 } 395 394 396 /** List dev subcommand.397 *398 * @param dcfg_svc Display configuration service name399 * @param argc Number of arguments400 * @param argv Arguments401 * @return EOK on success or an erro code402 */403 static errno_t list_dev(const char *dcfg_svc, int argc, char *argv[])404 {405 dispcfg_t *dispcfg;406 char *seat_name;407 sysarg_t seat_id;408 dispcfg_dev_list_t *dev_list;409 size_t i;410 char *svc_name;411 table_t *table = NULL;412 errno_t rc;413 414 if (argc < 1) {415 printf(NAME ": Missing arguments.\n");416 print_syntax();417 return EINVAL;418 }419 420 if (argc > 1) {421 printf(NAME ": Too many arguments.\n");422 print_syntax();423 return EINVAL;424 }425 426 seat_name = argv[0];427 428 rc = dispcfg_open(dcfg_svc, NULL, NULL, &dispcfg);429 if (rc != EOK) {430 printf(NAME ": Failed connecting to display configuration "431 "service: %s.\n", str_error(rc));432 return rc;433 }434 435 rc = seat_find_by_name(dispcfg, seat_name, &seat_id);436 if (rc != EOK) {437 printf(NAME ": Seat '%s' not found.\n", seat_name);438 dispcfg_close(dispcfg);439 return ENOENT;440 }441 442 rc = dispcfg_get_asgn_dev_list(dispcfg, seat_id, &dev_list);443 if (rc != EOK) {444 printf(NAME ": Failed getting seat list.\n");445 dispcfg_close(dispcfg);446 return rc;447 }448 449 rc = table_create(&table);450 if (rc != EOK) {451 printf("Memory allocation failed.\n");452 dispcfg_free_dev_list(dev_list);453 dispcfg_close(dispcfg);454 return rc;455 }456 457 table_header_row(table);458 table_printf(table, "Device Name\n");459 460 for (i = 0; i < dev_list->ndevs; i++) {461 rc = loc_service_get_name(dev_list->devs[i], &svc_name);462 if (rc != EOK) {463 printf("Failed getting name of service %zu\n",464 (size_t)dev_list->devs[i]);465 continue;466 }467 468 table_printf(table, "%s\n", svc_name);469 free(svc_name);470 }471 472 if (dev_list->ndevs != 0) {473 rc = table_print_out(table, stdout);474 if (rc != EOK) {475 printf("Error printing table.\n");476 table_destroy(table);477 dispcfg_free_dev_list(dev_list);478 dispcfg_close(dispcfg);479 return rc;480 }481 }482 483 dispcfg_close(dispcfg);484 return EOK;485 }486 487 395 int main(int argc, char *argv[]) 488 396 { … … 515 423 if (rc != EOK) 516 424 return 1; 517 } else if (str_cmp(argv[1], "list-dev") == 0) {518 rc = list_dev(dispcfg_svc, argc - 2, argv + 2);519 if (rc != EOK)520 return 1;521 425 } else { 522 426 printf(NAME ": Unknown command '%s'.\n", argv[1]);
Note:
See TracChangeset
for help on using the changeset viewer.
