// integer assignment static void intOption (int& cmdCount, int argc, char* argv[], int &result ) { if (++cmdCount <= (argc-1)) { result = atoi (argv[cmdCount]); } else { warning ("Expected Another Integer Parameter For Command Directive %s\n", argv[cmdCount]); PrintProgramHelp (); } }
// string assignment static void strOption (int& cmdCount, int argc, char* argv[], char * &result) { if (cmdCount++ <= (argc-1)) { result = argv[cmdCount]; } else { warning ("Expected Another String Parameter For Command Directive %s\n", argv[cmdCount]); PrintProgramHelp (); } }
// Function processes command line parameters int ProcessCommandLine (int argc, char* argv[], Config& settings, char*& pInFile, char*& pOutFile, char*& pConfig) { int cmdCount = 0; char* cmdRead; while (cmdCount < argc-1) { // command line error if (cmdCount < 0) return cmdCount; // next command to process! cmdCount++; cmdRead = argv[cmdCount]; // this is a command directive if (cmdRead[0] == '-') { // upcase the command parameter StrUpr (cmdRead); cmdRead++; // miscellaneous flags, "sort +1" DecodeFlg ("BCL", settings.braceLoc, False); DecodeFlg ("BNL", settings.braceLoc, True); DecodeInt ("CC", settings.posOfCommentsWC); DecodeInt ("F", settings.numOfLineFunc); DecodeStr ("FI", pInFile); DecodeStr ("FNC", pConfig); DecodeStr ("FO", pOutFile); DecodeInt ("I", settings.tabSpaceSize); DecodeFlg ("LG", settings.deleteHighChars, 3); DecodeInt ("NC", settings.posOfCommentsNC); DecodeInt ("QB", settings.queueBuffer); DecodeFlg ("S", settings.useTabs, False); DecodeFlg ("T", settings.useTabs, True); DecodeFlg ("TBCL", settings.topBraceLoc, False); DecodeFlg ("TBNL", settings.topBraceLoc, True); // "No" flags DecodeFlg ("NA", settings.deleteHighChars, 0); DecodeFlg ("NB", settings.backUp, False); DecodeFlg ("NBBI", settings.braceIndent2, False); DecodeFlg ("NBI", settings.braceIndent, False); DecodeFlg ("NLCNC", settings.leaveCommentsNC, False); DecodeFlg ("NO", settings.output, False); DecodeFlg ("NQ", settings.quoteChars, False); // "Yes" flags DecodeFlg ("YA", settings.deleteHighChars, 1); DecodeFlg ("YB", settings.backUp, True); DecodeFlg ("YBBI", settings.braceIndent2, True); DecodeFlg ("YBI", settings.braceIndent, True); DecodeFlg ("YLCNC", settings.leaveCommentsNC, True); DecodeFlg ("YO", settings.output, True); DecodeFlg ("YQ", settings.quoteChars, True); // ### display help ### if( (strcmp ("?", cmdRead) == 0) || (strcmp ("H", cmdRead) == 0) ) { verbose ("*** Displaying Brief Help ***\n"); PrintProgramHelp (); return -1; } warning ("Unknown Command Directive %s \n", cmdRead); PrintProgramHelp (); return -1; } else if (pInFile == NULL) pInFile = argv [cmdCount]; else if (pOutFile == NULL) pOutFile = argv [cmdCount]; else { warning ("Command Line Error : Expected Command Directive, Not %s\n", argv[cmdCount]); PrintProgramHelp (); return -1; } } if (settings.queueBuffer < 2) settings.queueBuffer = 2; return 0; }