comparison data/osc/sv-osc-send.c @ 320:32e50b620a6c

* Move some things around to facilitate plundering libraries for other applications without needing to duplicate so much code. sv/osc -> data/osc sv/audioio -> audioio sv/transform -> plugin/transform sv/document -> document (will rename to framework in next commit)
author Chris Cannam
date Wed, 24 Oct 2007 16:34:31 +0000
parents
children
comparison
equal deleted inserted replaced
319:3ff8f571da09 320:32e50b620a6c
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3 #include <stdlib.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <ctype.h>
7 #include <lo/lo.h>
8
9 void
10 usage(char *program_name)
11 {
12 char *base_name = strrchr(program_name, '/');
13
14 if (base_name && *(base_name + 1) != 0) {
15 base_name += 1;
16 } else {
17 base_name = program_name;
18 }
19
20 fprintf(stderr, "\nusage: %s <OSC URL> [<values>]\n\n", program_name);
21 fprintf(stderr, "example OSC URLs:\n\n"
22 " osc.udp://localhost:19383/path/test 1.0 4.2\n"
23 " osc.udp://my.host.org:10886/3/13/load file\n\n");
24 fprintf(stderr, "numeric arguments will be treated as OSC 'f' floating point types.\n\n");
25 exit(1);
26 }
27
28 int main(int argc, char *argv[])
29 {
30 lo_address a;
31 char *url, *host, *port, *path;
32 lo_message message;
33 unsigned int i;
34
35 if (argc < 2) {
36 usage(argv[0]);
37 /* does not return */
38 }
39 url = argv[1];
40
41 host = lo_url_get_hostname(url);
42 port = lo_url_get_port(url);
43 path = lo_url_get_path(url);
44 a = lo_address_new(host, port);
45
46 message = lo_message_new();
47
48 for (i = 0; i + 2 < argc; ++i) {
49
50 int index = i + 2;
51 char *param;
52
53 param = argv[index];
54 if (!isdigit(param[0])) {
55 lo_message_add_string(message, argv[index]);
56 } else {
57 lo_message_add_float(message, atof(argv[index]));
58 }
59 }
60
61 lo_send_message(a, path, message);
62
63 if (lo_address_errno(a)) {
64 printf("liblo error: %s\n", lo_address_errstr(a));
65 }
66
67 free(host);
68 free(port);
69 free(path);
70
71 return 0;
72 }
73