jack1 codebase
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.

76 lines
1.6KB

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