X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tools%2Fctsimtext.cpp;h=4c632a3e9cce0ce45e5f9819abe39d0ba60ca5a5;hb=065c60e43bbd0649f42fde5351dc073f59b3aa28;hp=83d75b0d39d49f33ebe0a366d31dd33d3c200636;hpb=c04ed309e5f8ad29d194b52c0f82f0be53ed56f3;p=ctsim.git diff --git a/tools/ctsimtext.cpp b/tools/ctsimtext.cpp index 83d75b0..4c632a3 100644 --- a/tools/ctsimtext.cpp +++ b/tools/ctsimtext.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ctsimtext.cpp,v 1.7 2001/01/10 21:02:41 kevin Exp $ +** $Id: ctsimtext.cpp,v 1.15 2001/01/16 20:55:29 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -45,8 +45,9 @@ extern "C" { // If linked to ctsimtext, but executed as another name, eg pjrec, then program will use that // linked name as name of function. -static const char* const g_szIdStr = "$Id: ctsimtext.cpp,v 1.7 2001/01/10 21:02:41 kevin Exp $"; +static const char* const g_szIdStr = "$Id: ctsimtext.cpp,v 1.15 2001/01/16 20:55:29 kevin Exp $"; static const char* const s_szProgramName = "ctsimtext"; +static const char* const s_szProgramName2 = "ctsimtext.exe"; extern int if1_main (int argc, char* const argv[]); extern int if2_main (int argc, char* const argv[]); @@ -98,17 +99,13 @@ interactive_usage () static bool s_bInteractive = false; - -#define DEBUG 1 - int ctsimtext_main (int argc, char * argv[]) { - int iReturn = 0; - + int iReturn = 0; - if (argc > 1 && strcmp(argv[0], fileBasename (s_szProgramName)) == 0) { - argv = &argv[1]; + if (argc > 1 && (strcmp(s_szProgramName, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName2, fileBasename (argv[0])) == 0)) { + argv++; argc--; iReturn = processCommand (argc, argv); } else if (argc > 1){ @@ -150,7 +147,7 @@ ctsimtext_main (int argc, char * argv[]) std::cout << "Token " << i << ": " << argv[i] << "\n"; #endif iReturn = processCommand (argc, argv); - + delete pszInputLine; } } @@ -216,42 +213,54 @@ convertStringToArgcv (char* pszLine, int* piArgc, char*** pppArgv) } *piArgc = nTokens; - *pppArgv = new char* [nTokens]; - for (unsigned int iToken = 0; iToken < vecpszToken.size(); iToken++) - (*pppArgv)[iToken] = vecpszToken[iToken]; + if (nTokens > 0) { + *pppArgv = new char* [nTokens]; + for (unsigned int iToken = 0; iToken < vecpszToken.size(); iToken++) + (*pppArgv)[iToken] = vecpszToken[iToken]; + } else + *pppArgv = NULL; } static int processCommand (int argc, char* const argv[]) { + if (argc < 1) + return 1; + const char* const pszFunction = fileBasename (argv[0]); - if (strcasecmp (pszFunction, "if1") == 0) - return if1_main (argc, argv); - else if (strcasecmp (pszFunction, "if2") == 0) - return if2_main (argc, argv); - else if (strcasecmp (pszFunction, "ifexport") == 0) - return ifexport_main (argc, argv); - else if (strcasecmp (pszFunction, "ifinfo") == 0) - return ifinfo_main (argc, argv); - else if (strcasecmp (pszFunction, "phm2if") == 0) - return phm2if_main (argc, argv); - else if (strcasecmp (pszFunction, "phm2pj") == 0) - return phm2pj_main (argc, argv); - else if (strcasecmp (pszFunction, "pj2if") == 0) - return pj2if_main (argc, argv); - else if (strcasecmp (pszFunction, "pjinfo") == 0) - return pjinfo_main (argc, argv); - else if (strcasecmp (pszFunction, "pjrec") == 0) - return pjrec_main (argc, argv); - else { - std::cout << "Unknown function name: " << pszFunction << "\n"; - if (s_bInteractive) - interactive_usage(); - else - ctsimtext_usage (s_szProgramName); - return 1; - } + try { + if (strcasecmp (pszFunction, "if1") == 0) + return if1_main (argc, argv); + else if (strcasecmp (pszFunction, "if2") == 0) + return if2_main (argc, argv); + else if (strcasecmp (pszFunction, "ifexport") == 0) + return ifexport_main (argc, argv); + else if (strcasecmp (pszFunction, "ifinfo") == 0) + return ifinfo_main (argc, argv); + else if (strcasecmp (pszFunction, "phm2if") == 0) + return phm2if_main (argc, argv); + else if (strcasecmp (pszFunction, "phm2pj") == 0) + return phm2pj_main (argc, argv); + else if (strcasecmp (pszFunction, "pj2if") == 0) + return pj2if_main (argc, argv); + else if (strcasecmp (pszFunction, "pjinfo") == 0) + return pjinfo_main (argc, argv); + else if (strcasecmp (pszFunction, "pjrec") == 0) + return pjrec_main (argc, argv); + else { + std::cout << "Unknown function name: " << pszFunction << "\n"; + if (s_bInteractive) + interactive_usage(); + else + ctsimtext_usage (s_szProgramName); + return 1; + } + } catch (exception e) { + std::cerr << "Exception: " << e.what() << std::endl; + } catch (...) { +std:cerr << "Unknown exception caught\n"; + } } int @@ -259,14 +268,8 @@ main (int argc, char* argv[]) { int retval = 1; - try { - retval = ctsimtext_main(argc, argv); - } catch (exception e) { - std::cerr << "Exception: " << e.what() << std::endl; - } catch (...) { - std::cerr << "Unknown exception\n"; - } + retval = ctsimtext_main(argc, argv); - return (retval); + return retval; }