/* * Baltisot * Copyright (C) 1999-2007 Nicolas "Pixel" Noble * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* $Id: luac.cc,v 1.4 2007-07-27 10:05:55 pixel Exp $ */ #include #include #include #include #include struct option long_options[] = { {"help", 0, NULL, 'h'}, {"verbose", 0, NULL, 'v'}, {"output", 1, NULL, 'o'}, {"debug", 0, NULL, 'd'}, {0, 0, NULL, 0 } }; CODE_BEGINS void showhelp() { printm(M_BARE, "Usage:\n" "%s [options] [lua-script1] [lua-script2] ...\n" "\n" "Options:\n" " -v sets verbosity.\n" " -d sets debug mode.\n" " -o set output filename.\n" " -l displays listing.\n" , argv[0]); } virtual int startup() throw (GeneralException) { char c; Lua * L = new Lua(); bool strip = true; bool listing = false; char * output = "a.clua"; bool todo; while ((c = getopt_long(argc, argv, "Hhvo:dl", long_options, NULL)) != EOF) { switch (c) { case 'h': case 'H': case '?': showhelp(); return 0; case 'v': verbosity = M_INFO; break; case 'o': output = strdup(optarg); break; case 'd': strip = false; break; case 'l': listing = true; break; } } /* Loading all the scripts */ while (optind < argc) { todo = true; L->load(&Input(argv[optind++]), false); } /* Doh... */ if (!todo) { showhelp(); return 0; } L->dump(&Output(output), strip, listing && verbosity == M_INFO ? 2 : listing ? 1 : 0); return 0; } CODE_ENDS