Пример #1
0
Файл: roar.c Проект: Brijen/cmus
static int op_roar_init(void)
{
#if DEBUG > 1
    roar_debug_set_stderr_mode(ROAR_DEBUG_MODE_VIO);
    roar_debug_set_stderr_vio(&op_roar_debug_cbs);
#else
    roar_debug_set_stderr_mode(ROAR_DEBUG_MODE_SYSLOG);
#endif
    return 0;
}
Пример #2
0
int main (int argc, char * argv[]) {
 struct roar_connection    con;
 struct roar_client        client;
 char * server    = NULL;
 char * k;
 int    i;
 int    clientfh  = -1;
 int    cflags    = 0;
 int    flags     = 0;
 int    proto     = ROAR_PROTO_ROARAUDIO;
 int    byteorder = ROAR_BYTEORDER_NETWORK;
 int    mode      = ROAR_SOCKET_MODE_NONE;
 int    type      = ROAR_SOCKET_TYPE_UNKNOWN;
 char * host      = NULL;
 int    port      = -1;

 for (i = 1; i < argc; i++) {
  k = argv[i];

  if ( !strcmp(k, "--server") || !strcmp(k, "-s") ) {
   server = argv[++i];
  } else if ( !strcmp(k, "--stdin") ) {
   cflags |= F_STDIN;
  } else if ( !strcmp(k, "--stdout") ) {
   cflags |= F_STDOUT;
  } else if ( !strcmp(k, "--stderr") ) {
   cflags |= F_STDERR;
  } else if ( !strcmp(k, "--stdio") ) {
   cflags |= F_STDIN|F_STDOUT;
  } else if ( !strcmp(k, "--client-fh") ) {
   clientfh = atoi(argv[++i]);
  } else if ( !strcmp(k, "--proto") ) {
   proto = roar_str2proto(argv[++i]);
  } else if ( !strcmp(k, "--byteorder") ) {
   byteorder = roar_str2byteorder(argv[++i]);
  } else if ( !strcmp(k, "--listen") ) {
   flags |= ROAR_CLIENTPASS_FLAG_LISTEN;
  } else if ( !strcmp(k, "--mode") ) {
   k = argv[++i];
   if ( !strcasecmp(k, "none") ) {
    mode = ROAR_SOCKET_MODE_NONE;
   } else if ( !strcasecmp(k, "listen") ) {
    mode = ROAR_SOCKET_MODE_LISTEN;
    flags |= ROAR_CLIENTPASS_FLAG_LISTEN;
   } else if ( !strcasecmp(k, "connect") ) {
    mode = ROAR_SOCKET_MODE_CONNECT;
    flags -= ROAR_CLIENTPASS_FLAG_LISTEN;
   } else {
    ROAR_ERR("unknown mode: %s", k);
    return 1;
   }
  } else if ( !strcmp(k, "--bind") ) {
   host = argv[++i];
  } else if ( !strcmp(k, "--port") ) {
   port = atoi(argv[++i]);
  } else if ( !strcmp(k, "--help") || !strcmp(k, "-h") ) {
   usage();
   return 0;
  } else {
   ROAR_ERR("unknown argument: %s", k);
   usage();
   return 1;
  }
 }

 if ( cflags & F_STDERR ) {
#ifdef ROAR_HAVE_SYSLOG
  roar_debug_set_stderr_mode(ROAR_DEBUG_MODE_SYSLOG);
#else
  roar_debug_set_stderr_fh(-1);
#endif
 } else {
  roar_debug_set_stderr_fh(ROAR_STDERR);
 }

 if ( mode != ROAR_SOCKET_MODE_NONE ) {
  if ( clientfh != -1 ) {
   ROAR_ERR("Too may socket types given");
   return 30;
  }

  clientfh = roar_socket_open(mode, type, host, port);

  if ( clientfh == -1 ) {
   ROAR_ERR("Unabled to open socket");
   return 31;
  }
 }

 if ( clientfh == -1 ) {
  if ( cflags & F_STDIN ) {
   clientfh = ROAR_STDIN;
  } else if ( cflags & F_STDOUT ) {
   clientfh = ROAR_STDOUT;
  } else if ( cflags & F_STDERR ) {
   clientfh = ROAR_STDERR;
  } else {
   ROAR_ERR("No client socket given");
   return 32;
  }
 }

 roar_client_new(&client);
 roar_client_set_fh(&client, clientfh);
 roar_client_set_proto(&client, proto, byteorder);

 if ( roar_simple_connect(&con, server, "roarclientpass") == -1 ) {
  ROAR_ERR("Can not connect to server");
  return 10;
 }

 if ( roar_client_pass(&con, &client, flags) == -1 ) {
  ROAR_ERR("Can not pass client fh to server");
  roar_disconnect(&con);
  return 20;
 }

 roar_disconnect(&con);

 return 0;
}