JACK tools
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
1.9KB

  1. #include <string.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <jack/jack.h>
  5. #include <jack/intclient.h>
  6. int
  7. main (int argc, char *argv[])
  8. {
  9. char *my_name;
  10. char *client_name;
  11. jack_client_t *client;
  12. jack_status_t status;
  13. jack_intclient_t intclient;
  14. /* validate args */
  15. if ((argc < 2) || (argc > 3)) {
  16. fprintf (stderr, "usage: %s client-name [ server-name ]]\n",
  17. argv[0]);
  18. return 1;
  19. }
  20. /* use `basename $0` for my own client name */
  21. my_name = strrchr(argv[0], '/');
  22. if (my_name == 0) {
  23. my_name = argv[0];
  24. } else {
  25. my_name++;
  26. }
  27. /* first, become a JACK client */
  28. if (argc > 2) {
  29. client = jack_client_open (my_name,
  30. (JackServerName|JackNoStartServer),
  31. &status, argv[2]);
  32. } else {
  33. client = jack_client_open (my_name, JackNoStartServer, &status);
  34. }
  35. if (client == NULL) {
  36. if (status & JackServerFailed) {
  37. fprintf (stderr, "JACK server not running.\n");
  38. } else {
  39. fprintf (stderr, "JACK open failed, "
  40. "status = 0x%2.0x\n", status);
  41. }
  42. exit (1);
  43. }
  44. /* then, get the internal client handle */
  45. client_name = argv[1];
  46. if (jack_internal_client_handle (client, client_name, &status, intclient) != 0) {
  47. if (status & JackFailure) {
  48. fprintf (stderr, "client %s not found.\n", client_name);
  49. }
  50. exit (2);
  51. }
  52. /* now, unload the internal client */
  53. status = jack_internal_client_unload (client, intclient);
  54. if (status & JackFailure) {
  55. if (status & JackInvalidOption) {
  56. fprintf (stderr, "I'm sorry Dave, I can't do that\n");
  57. } else if (status & JackNoSuchClient) {
  58. fprintf (stderr, "client %s is gone.\n",
  59. client_name);
  60. } else {
  61. fprintf (stderr, "could not unload %s, "
  62. "returns 0x%2.0x\n", client_name, status);
  63. }
  64. exit (3);
  65. } else {
  66. fprintf (stdout, "%s unloaded.\n", client_name);
  67. }
  68. return 0;
  69. }