-extern if1_main (int argc, char* const argv[]);
-extern if2_main (int argc, char* const argv[]);
-extern ifexport_main (int argc, char* const argv[]);
-extern ifinfo_main (int argc, char* const argv[]);
-extern phm2if_main (int argc, char* const argv[]);
-extern phm2pj_main (int argc, char* const argv[]);
-extern pj2if_main (int argc, char* const argv[]);
-extern pjinfo_main (int argc, char* const argv[]);
-extern pjrec_main (int argc, char* const argv[]);
+
+// Master shell for all command-line tools
+// If called as ctsimtext, program will look to next token on command-line as the function name
+// 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.9 2001/01/13 03:51:35 kevin Exp $";
+static const char* const s_szProgramName = "ctsimtext";
+
+extern int if1_main (int argc, char* const argv[]);
+extern int if2_main (int argc, char* const argv[]);
+extern int ifexport_main (int argc, char* const argv[]);
+extern int ifinfo_main (int argc, char* const argv[]);
+extern int phm2if_main (int argc, char* const argv[]);
+extern int phm2pj_main (int argc, char* const argv[]);
+extern int pj2if_main (int argc, char* const argv[]);
+extern int pjinfo_main (int argc, char* const argv[]);
+extern int pjrec_main (int argc, char* const argv[]);
+
+static int processCommand (int argc, char* const argv[]);
+static void convertStringToArgcv (char* szLine, int* piArgc, char*** pppArgv);