/[projects]/misc/mysql_splitter/splitter.cpp
ViewVC logotype

Diff of /misc/mysql_splitter/splitter.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1231 by torben, Sun Mar 13 18:16:34 2011 UTC revision 1283 by torben, Sun Apr 10 21:15:14 2011 UTC
# Line 4  Line 4 
4  #include <string>  #include <string>
5  #include <vector>  #include <vector>
6    
7    
8  #include <boost/algorithm/string.hpp>  #include <boost/algorithm/string.hpp>
9  #include <boost/filesystem.hpp>  #include <boost/filesystem.hpp>
10    #include <boost/program_options.hpp>
11    
12    namespace po = boost::program_options;
13    
14  using namespace std;  using namespace std;
15    
16  const int BUFSIZE = 1024*1024;  const int BUFSIZE = 1024*1024;
17    
18    string remove_comments(string in) {
19            bool isComment = false;
20            ostringstream out;
21            for (int i=0; i<in.length() -1; i++) {
22                    if (in.at(i) == '/' && in.at(i+1) == '*')  
23                            isComment = true;
24                    
25                    if (in.at(i) == '*' && in.at(i+1) == '/') {
26                            i++;
27                            isComment = false;
28                            continue;
29                    }
30    
31                    if (isComment == false)
32                            out << in.at(i) ;
33            }
34    
35            return out.str();
36    }
37    
38  string getLastWord(string input) {  string getLastWord(string input) {
39            input = remove_comments(input);
40    
41            boost::erase_all(input,"`");
42            boost::trim(input);
43          vector<string> words;          vector<string> words;
44          words = boost::split(words, input, boost::is_any_of(" ") );          words = boost::split(words, input, boost::is_any_of(" ") );
45    
# Line 21  string getLastWord(string input) { Line 49  string getLastWord(string input) {
49          boost::trim(last);          boost::trim(last);
50    
51    
   
52          return last;          return last;
53  }  }
54    
55    
56  int main(int argc, char** argv) {  int main(int argc, char** argv) {
57          if (argc != 2) {  
58                  cout << "Usage: splitter <file>" << endl;          po::options_description desc("Mysql dump file splitter:\nAllowed options");
59            desc.add_options()
60            ("help", "produce help message")
61            ("data", "ignore ceate tablestatements")
62                    ("input-file", po::value< string >(), "input file")
63            ;
64    
65            po::positional_options_description p;
66            p.add("input-file", -1);
67    
68    
69            po::variables_map vm;
70            po::store( po::command_line_parser(argc, argv).options(desc).positional(p).run(), vm);
71            po::notify(vm);
72    
73            if (vm.count("help")) {
74            cout << desc << "\n";
75            return 1;
76            }
77    
78    
79    
80            if ( vm.count("input-file") == 0) {
81                    cout << desc << endl;
82                  return 1;                  return 1;
83          }          }
84    
85    
86          char linebuf[BUFSIZE];          char linebuf[BUFSIZE];
87    
88          ifstream in(argv[1]);          string inputfile = vm["input-file"].as< string >();
89            if (! boost::filesystem::exists(inputfile) ) {
90                    cout << "No file named " << inputfile << endl;
91                    return 1;
92            }
93            
94    
95            ifstream in( inputfile.c_str() );
96          ofstream out;          ofstream out;
97    
98          ostringstream header;          ostringstream header;

Legend:
Removed from v.1231  
changed lines
  Added in v.1283

  ViewVC Help
Powered by ViewVC 1.1.20