author | Michael Krelin <hacker@klever.net> | 2006-08-11 16:01:56 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-08-11 16:01:56 (UTC) |
commit | 0c21a7a0d5b84dc6726462f0fbe51b8c32433262 (patch) (unidiff) | |
tree | 9df6334cb1a61efebe68f7bcef9aa119a823626a /tools/mididump.cc | |
parent | 9bcc235e575a95989a5903394c127accbeef2e0f (diff) | |
download | midillo-0.0.zip midillo-0.0.tar.gz midillo-0.0.tar.bz2 |
initial commit into repository0.0
-rw-r--r-- | tools/mididump.cc | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/mididump.cc b/tools/mididump.cc new file mode 100644 index 0000000..83b7086 --- a/dev/null +++ b/tools/mididump.cc | |||
@@ -0,0 +1,84 @@ | |||
1 | #include <getopt.h> | ||
2 | #include <iostream> | ||
3 | #include <fstream> | ||
4 | #include <string> | ||
5 | #include <algorithm> | ||
6 | using namespace std; | ||
7 | #include <konforka/exception.h> | ||
8 | #include <midillo/SMF.h> | ||
9 | using namespace midillo; | ||
10 | |||
11 | #include "config.h" | ||
12 | #define PHEADER PACKAGE " " VERSION " - mididump - dump midi files" | ||
13 | #define PCOPY "Copyright (c) 2006 Klever Group" | ||
14 | |||
15 | static void usage(const char *p) { | ||
16 | cerr << PHEADER << endl | ||
17 | << PCOPY << endl << endl | ||
18 | << " " << p << " [options] [<input-file>[ <output-file>]]" << endl << endl | ||
19 | << " -h, --help" << endl | ||
20 | << " --usage display this text" << endl | ||
21 | << " -V, --version display version number" << endl | ||
22 | << " -L, --license show license" << endl; | ||
23 | } | ||
24 | |||
25 | main(int argc,char **argv) { | ||
26 | try { | ||
27 | while(true) { | ||
28 | static struct option opts[] = { | ||
29 | { "help", no_argument, 0, 'h' }, | ||
30 | { "usage", no_argument, 0, 'h' }, | ||
31 | { "version", no_argument, 0, 'V' }, | ||
32 | { "license", no_argument, 0, 'L' }, | ||
33 | { NULL, 0, 0, 0 } | ||
34 | }; | ||
35 | int c = getopt_long(argc,argv,"f:hVLl",opts,NULL); | ||
36 | if(c==-1) | ||
37 | break; | ||
38 | switch(c) { | ||
39 | case 'h': | ||
40 | usage(*argv); | ||
41 | exit(0); | ||
42 | break; | ||
43 | case 'V': | ||
44 | cerr << VERSION << endl; | ||
45 | exit(0); | ||
46 | break; | ||
47 | case 'L': | ||
48 | extern const char *COPYING; | ||
49 | cerr << COPYING << endl; | ||
50 | exit(0); | ||
51 | break; | ||
52 | default: | ||
53 | cerr << "Huh??" << endl; | ||
54 | break; | ||
55 | } | ||
56 | } | ||
57 | const char *infile = "-"; | ||
58 | if(optind<argc) | ||
59 | infile = argv[optind++]; | ||
60 | const char *oufile = "-"; | ||
61 | if(optind<argc) | ||
62 | oufile = argv[optind++]; | ||
63 | if(optind<argc) { | ||
64 | usage(*argv); | ||
65 | exit(1); | ||
66 | } | ||
67 | SMF_t in(infile); | ||
68 | if(strcmp(oufile,"-")) { | ||
69 | ofstream s(oufile); s << in; | ||
70 | }else{ | ||
71 | cout << in; | ||
72 | } | ||
73 | return 0; | ||
74 | }catch(konforka::exception& e) { | ||
75 | cerr << "Oops... Konforka exception:" << endl | ||
76 | << " what: " << e.what() << endl | ||
77 | << " where: " << e.where() << endl; | ||
78 | return 1; | ||
79 | }catch(exception& e) { | ||
80 | cerr << "Oops... Exception:" << endl | ||
81 | << " what: " << e.what() << endl; | ||
82 | return 1; | ||
83 | } | ||
84 | } | ||