-
- memset(&rn, 0, sizeof(struct receiver_node));
- for (ret = 0; receivers[ret].name; ret++)
- receivers[ret].init(&receivers[ret]);
- ret = -E_RECV_SYNTAX;
- rn.conf = parse_config(argc, argv, &receiver_num);
- if (!rn.conf) {
- PARA_EMERG_LOG("%s", "parse failed\n");
- goto out;
- }
- r = &receivers[receiver_num];
- rn.receiver = r;
- ret = r->open(&rn);
- if (ret < 0)
- goto out;
- r_opened = 1;
-
- stdout_set_defaults(&sot);
- sot.buf = rn.buf;
- sot.loaded = &rn.loaded;
- sot.eof = &rn.eof;
- register_task(&sot.task);
-
- rn.task.private_data = &rn;
- rn.task.pre_select = r->pre_select;
- rn.task.post_select = r->post_select;
- rn.task.event_handler = rn_event_handler;
- rn.task.flags = 0;
- sprintf(rn.task.status, "receiver node");
- register_task(&rn.task);
-
-
- ret = sched(&s);
+ ret = schedule(&s);
+ sched_shutdown(&s);
+ r->close(&rn);
+ btr_remove_node(&sot.btrn);
+ btr_remove_node(&rn.btrn);
+free_receiver_lpr:
+ lls_free_parse_result(receiver_lpr, cmd);