int main( int argc, char * argv[] ) { // Variables locales int return_function; // Inicializacion de las variables locales return_function = _SUCCESS__; // Mostramos la cabecera del programa ShowProgramHeader( VERSION ); // Controlamos los argumentos if ( argc < MIN_ARGUMENTS ) { ShowSyntax( argv[0] ); return_function = _ERROR__; } // Lanzamos la funcion principal if ( return_function == _SUCCESS__ ) { if ( !strcmp( argv[2], "-p" ) ) return_function = InjectorDll ( argv[ARG_NR_DLL_TO_INJ], argv[ARG_NR_TYPE_APP], NULL, (DWORD) atoi( argv[ARG_NR_PROC_PID] ) ); else return_function = InjectorDll ( argv[ARG_NR_DLL_TO_INJ], argv[ARG_NR_TYPE_APP], argv[ARG_NR_PROG_NAME], 0 ); } // Espera de pulsacion de ENTER getchar(); return return_function; }
/*** ParseArgs - Parse command-line arguments * * Entry * argc - count of arguments * argv - array of arguments * * Exit-Success * GLOBAL structure (g) fields filled in * * Exit-Failure * Prints message and exits program. */ void ParseArgs(int argc, char **argv) { char ch; int i; char *pch; // Save command line pointers for later g.argc = argc; g.argv = argv; g.cFiles = 0; // No files seen, yet // Parse each argument for (i=1; i<argc; i++) { if ( (argv[i][0] == chSWITCH) || (argv[i][0] == chSWITCH2) ) { pch = &argv[i][1]; // Start with first character while (*pch) { ch = (char)toupper((int)*pch); switch (ch) { case '?': ShowSyntax(1); break; default: g.ach[0] = *pch; g.ach[1] = '\0'; Error("Unknown switch: %s",g.ach); } pch++; } } else { // Must be a file spec g.apszFile[g.cFiles++] = argv[i]; } } // ** If no file name, give error if (g.cFiles == 0) Error("Must specify a file name.",NULL); }
int main(int argc, char **argv) { int rcRet = 0; /* * Parse arguments. */ int fArgsDone = 0; for (int i = 1; i < argc; i++) { const char *psz = argv[i]; if (!fArgsDone && psz[0] == '-' && psz[1]) { /* convert long option to short. */ if (*++psz == '-') { psz++; if (!*psz) /* -- */ { fArgsDone = 1; continue; } if (!strcmp(psz, "line-numbers")) psz = "l"; else if (!strcmp(psz, "no-line-numbers")) psz = "L"; else if (!strcmp(psz, "global-syms") || !strcmp(psz, "public-syms")) psz = "g"; else if (!strcmp(psz, "no-global-syms") || !strcmp(psz, "no-public-syms")) psz = "G"; else if (!strcmp(psz, "privat-syms") || !strcmp(psz, "local-syms")) psz = "p"; else if (!strcmp(psz, "no-privat-syms") || !strcmp(psz, "no-local-syms")) psz = "P"; else if (!strcmp(psz, "version")) psz = "v"; else if (!strcmp(psz, "help")) psz = "h"; else { fprintf(stderr, "%s: syntax error: unknown option '--%s'\n", argv[0], psz); return 1; } } /* eat short options. */ while (*psz) switch (*psz++) { case 'l': g_fLineNumbers = 1; break; case 'L': g_fLineNumbers = 0; break; case 'p': g_fPrivateSyms = 1; break; case 'P': g_fPrivateSyms = 0; break; case 'g': g_fGlobalSyms = 1; break; case 'G': g_fGlobalSyms = 0; break; case '?': case 'H': case 'h': return ShowSyntax(argv[0]); case 'v': return ShowVersion(); default: fprintf(stderr, "%s: syntax error: unknown option '-%c'.\n", argv[0], psz[-1]); return 1; } } else { /* Dump does it's own bitching if something goes wrong. */ int rc = DumpFile(psz); if (rc && !rcRet) rc = rcRet; } } return rcRet; }