lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: #include lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: usage(char *program_name) lbajardsilogic@0: { lbajardsilogic@0: char *base_name = strrchr(program_name, '/'); lbajardsilogic@0: lbajardsilogic@0: if (base_name && *(base_name + 1) != 0) { lbajardsilogic@0: base_name += 1; lbajardsilogic@0: } else { lbajardsilogic@0: base_name = program_name; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: fprintf(stderr, "\nusage: %s []\n\n", program_name); lbajardsilogic@0: fprintf(stderr, "example OSC URLs:\n\n" lbajardsilogic@0: " osc.udp://localhost:19383/path/test 1.0 4.2\n" lbajardsilogic@0: " osc.udp://my.host.org:10886/3/13/load file\n\n"); lbajardsilogic@0: fprintf(stderr, "numeric arguments will be treated as OSC 'f' floating point types.\n\n"); lbajardsilogic@0: exit(1); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: int main(int argc, char *argv[]) lbajardsilogic@0: { lbajardsilogic@0: lo_address a; lbajardsilogic@0: char *url, *host, *port, *path; lbajardsilogic@0: lo_message message; lbajardsilogic@0: unsigned int i; lbajardsilogic@0: lbajardsilogic@0: if (argc < 2) { lbajardsilogic@0: usage(argv[0]); lbajardsilogic@0: /* does not return */ lbajardsilogic@0: } lbajardsilogic@0: url = argv[1]; lbajardsilogic@0: lbajardsilogic@0: host = lo_url_get_hostname(url); lbajardsilogic@0: port = lo_url_get_port(url); lbajardsilogic@0: path = lo_url_get_path(url); lbajardsilogic@0: a = lo_address_new(host, port); lbajardsilogic@0: lbajardsilogic@0: message = lo_message_new(); lbajardsilogic@0: lbajardsilogic@0: for (i = 0; i + 2 < argc; ++i) { lbajardsilogic@0: lbajardsilogic@0: int index = i + 2; lbajardsilogic@0: char *param; lbajardsilogic@0: lbajardsilogic@0: param = argv[index]; lbajardsilogic@0: if (!isdigit(param[0])) { lbajardsilogic@0: lo_message_add_string(message, argv[index]); lbajardsilogic@0: } else { lbajardsilogic@0: lo_message_add_float(message, atof(argv[index])); lbajardsilogic@0: } lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: lo_send_message(a, path, message); lbajardsilogic@0: lbajardsilogic@0: if (lo_address_errno(a)) { lbajardsilogic@0: printf("liblo error: %s\n", lo_address_errstr(a)); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: free(host); lbajardsilogic@0: free(port); lbajardsilogic@0: free(path); lbajardsilogic@0: lbajardsilogic@0: return 0; lbajardsilogic@0: } lbajardsilogic@0: