MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mkconfig.cpp
1 /*
2  Copyright (C) 2003-2006 MySQL AB
3  All rights reserved. Use is subject to license terms.
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; version 2 of the License.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 
19 #include <ndb_global.h>
20 #include <ndb_version.h>
21 #include <mgmapi_configuration.hpp>
22 
23 #include <NdbMain.h>
24 #include <Properties.hpp>
25 
26 #include "InitConfigFileParser.hpp"
27 #include <Config.hpp>
28 
29 void usage(const char * prg){
30  ndbout << "Usage " << prg << ": <Init config> <Binary file>" << endl;
31 
32 }
33 
34 NDB_COMMAND(mkconfig,
35  "mkconfig", "mkconfig",
36  "Make a binary configuration from a config file", 16384){
37  ndb_init();
38  if(argc < 3){
39  usage(argv[0]);
40  return 0;
41  }
42 
43  InitConfigFileParser parser;
44  Config* _cp;
45 
46  if ((_cp = parser.parseConfig(argv[1])) == 0)
47  return false;
48 
49  ConfigValues* cp = &_cp->m_configValues->m_config;
50  Uint32 sz = cp->getPackedSize();
52  if(!cp->pack(buf))
53  return -1;
54 
55  FILE * f = fopen(argv[2], "w");
56  if(fwrite(buf.get_data(), 1, buf.length(), f) != sz){
57  fclose(f);
58  unlink(argv[2]);
59  return -1;
60  }
61  fclose(f);
62  return 0;
63 }