]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/tex2lyx.cpp
Remove dummy gettext.cpp from tex2lyx source and use a dummy message
[lyx.git] / src / tex2lyx / tex2lyx.cpp
index 6a44f9bf9790eef4dcf61bb44b3d3e31bb0fe5b4..c27f0c0886e8217e8b29973e441adf2d5c9147ff 100644 (file)
@@ -25,6 +25,7 @@
 #include "support/filetools.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
+#include "support/Messages.h"
 #include "support/os.h"
 #include "support/Package.h"
 
@@ -41,6 +42,20 @@ using namespace lyx::support::os;
 
 namespace lyx {
 
+// Dummy translation support
+Messages messages_;
+Messages & getMessages(std::string const &)
+{
+       return messages_;
+}
+
+
+Messages & getGuiMessages()
+{
+       return messages_;
+}
+
+
 string const trim(string const & a, char const * p)
 {
        // LASSERT(p, /**/);
@@ -236,9 +251,10 @@ void read_syntaxfile(FileName const & file_name)
 
 
 string documentclass;
+string default_encoding;
 string syntaxfile;
 bool overwrite_files = false;
-
+int error_code = 0;
 
 /// return the number of arguments consumed
 typedef int (*cmd_helper)(string const &, string const &);
@@ -246,36 +262,51 @@ typedef int (*cmd_helper)(string const &, string const &);
 
 int parse_help(string const &, string const &)
 {
-       cerr << "Usage: tex2lyx [ command line switches ] <infile.tex> [<outfile.lyx>]\n"
-               "Command line switches (case sensitive):\n"
-               "\t-help              summarize tex2lyx usage\n"
-               "\t-f                 Force creation of .lyx files even if they exist already\n"
-               "\t-userdir dir       try to set user directory to dir\n"
-               "\t-sysdir dir        try to set system directory to dir\n"
-               "\t-c textclass       declare the textclass\n"
+       cerr << "Usage: tex2lyx [options] infile.tex [outfile.lyx]\n"
+               "Options:\n"
+               "\t-c textclass       Declare the textclass.\n"
+               "\t-e encoding        Set the default encoding (latex name).\n"
+               "\t-f                 Force overwrite of .lyx files.\n"
+               "\t-help              Print this message and quit.\n"
                "\t-n                 translate a noweb (aka literate programming) file.\n"
-               "\t-s syntaxfile      read additional syntax file" << endl;
-       exit(0);
+               "\t-s syntaxfile      read additional syntax file.\n" 
+               "\t-sysdir dir        Set system directory to DIR.\n"
+               "\t-userdir DIR       Set user directory to DIR."
+            << endl;
+       exit(error_code);
+}
+
+
+void error_message(string const & message)
+{
+       cerr << "tex2lyx: " << message << "\n\n";
+       error_code = 1;
+       parse_help(string(), string());
 }
 
 
 int parse_class(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing textclass string after -c switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing textclass string after -c switch");
        documentclass = arg;
        return 1;
 }
 
 
+int parse_encoding(string const & arg, string const &)
+{
+       if (arg.empty())
+               error_message("Missing encoding string after -e switch");
+       default_encoding = arg;
+       return 1;
+}
+
+
 int parse_syntaxfile(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing syntaxfile string after -s switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing syntaxfile string after -s switch");
        syntaxfile = internal_path(arg);
        return 1;
 }
@@ -289,10 +320,8 @@ string cl_user_support;
 
 int parse_sysdir(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing directory for -sysdir switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing directory for -sysdir switch");
        cl_system_support = internal_path(arg);
        return 1;
 }
@@ -300,10 +329,8 @@ int parse_sysdir(string const & arg, string const &)
 
 int parse_userdir(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing directory for -userdir switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing directory for -userdir switch");
        cl_user_support = internal_path(arg);
        return 1;
 }
@@ -328,6 +355,7 @@ void easyParse(int & argc, char * argv[])
        map<string, cmd_helper> cmdmap;
 
        cmdmap["-c"] = parse_class;
+       cmdmap["-e"] = parse_encoding;
        cmdmap["-f"] = parse_force;
        cmdmap["-s"] = parse_syntaxfile;
        cmdmap["-help"] = parse_help;
@@ -341,8 +369,12 @@ void easyParse(int & argc, char * argv[])
                        = cmdmap.find(argv[i]);
 
                // don't complain if not found - may be parsed later
-               if (it == cmdmap.end())
-                       continue;
+               if (it == cmdmap.end()) {
+                       if (argv[i][0] == '-')
+                               error_message(string("Unknown option `") + argv[i] + "'.");
+                       else
+                               continue;
+               }
 
                string arg(to_utf8(from_local8bit((i + 1 < argc) ? argv[i + 1] : "")));
                string arg2(to_utf8(from_local8bit((i + 2 < argc) ? argv[i + 2] : "")));
@@ -389,9 +421,11 @@ namespace {
  *  You must ensure that \p parentFilePath is properly set before calling
  *  this function!
  */
-void tex2lyx(idocstream & is, ostream & os)
+void tex2lyx(idocstream & is, ostream & os, string const & encoding)
 {
        Parser p(is);
+       if (!encoding.empty())
+               p.setEncoding(encoding);
        //p.dump();
 
        stringstream ss;
@@ -420,7 +454,7 @@ void tex2lyx(idocstream & is, ostream & os)
 
 
 /// convert TeX from \p infilename to LyX and write it to \p os
-bool tex2lyx(FileName const & infilename, ostream & os)
+bool tex2lyx(FileName const & infilename, ostream & os, string const & encoding)
 {
        ifdocstream is;
        // forbid buffering on this stream
@@ -433,7 +467,7 @@ bool tex2lyx(FileName const & infilename, ostream & os)
        }
        string const oldParentFilePath = parentFilePath;
        parentFilePath = onlyPath(infilename.absFilename());
-       tex2lyx(is, os);
+       tex2lyx(is, os, encoding);
        parentFilePath = oldParentFilePath;
        return true;
 }
@@ -441,7 +475,8 @@ bool tex2lyx(FileName const & infilename, ostream & os)
 } // anonymous namespace
 
 
-bool tex2lyx(string const & infilename, FileName const & outfilename)
+bool tex2lyx(string const & infilename, FileName const & outfilename, 
+            string const & encoding)
 {
        if (outfilename.isReadableFile()) {
                if (overwrite_files) {
@@ -465,7 +500,7 @@ bool tex2lyx(string const & infilename, FileName const & outfilename)
        cerr << "Input file: " << infilename << "\n";
        cerr << "Output file: " << outfilename << "\n";
 #endif
-       return tex2lyx(FileName(infilename), os);
+       return tex2lyx(FileName(infilename), os, encoding);
 }
 
 } // namespace lyx
@@ -481,12 +516,8 @@ int main(int argc, char * argv[])
 
        easyParse(argc, argv);
 
-       if (argc <= 1) {
-               cerr << "Usage: tex2lyx [ command line switches ] <infile.tex> [<outfile.lyx>]\n"
-                         "See tex2lyx -help." << endl;
-               return 2;
-       }
-
+       if (argc <= 1) 
+               error_message("Not enough arguments.");
        os::init(argc, argv);
 
        try {
@@ -537,17 +568,19 @@ int main(int argc, char * argv[])
                exit(1);
        }
        encodings.read(enc_path, symbols_path);
+       if (!default_encoding.empty() && !encodings.fromLaTeXName(default_encoding))
+               error_message("Unknown LaTeX encoding `" + default_encoding + "'");
 
        // The real work now.
        masterFilePath = onlyPath(infilename);
        parentFilePath = masterFilePath;
        if (outfilename == "-") {
-               if (tex2lyx(FileName(infilename), cout))
+               if (tex2lyx(FileName(infilename), cout, default_encoding))
                        return EXIT_SUCCESS;
                else
                        return EXIT_FAILURE;
        } else {
-               if (tex2lyx(infilename, FileName(outfilename)))
+               if (tex2lyx(infilename, FileName(outfilename), default_encoding))
                        return EXIT_SUCCESS;
                else
                        return EXIT_FAILURE;