# HG changeset patch # User Andre Heinecke # Date 1410281342 -7200 # Node ID 317ee9dc4684b2df73807b2f11212e374e6a75d7 # Parent f638eb1f3b0f7702e95be7895e77583e2050bc44 (issue46) Make debug output optional in cinst and mozilla and propagate its setting. diff -r f638eb1f3b0f -r 317ee9dc4684 cinst/main.c --- a/cinst/main.c Tue Sep 09 18:00:37 2014 +0200 +++ b/cinst/main.c Tue Sep 09 18:49:02 2014 +0200 @@ -35,6 +35,8 @@ * to remove all certificates (Even those marked with I) that * are part of the list. * + * For more verbose debug output add --debug to the call. + * **/ #include #include @@ -199,6 +201,7 @@ return 0; } +bool g_debug = false; int main (int argc, char **argv) @@ -219,18 +222,24 @@ /* Some very static argument parsing. list= and choices= is only added to make it more transparent how this programm is called if a user looks at the detailed uac dialog. */ - if (argc != 3 || strncmp(argv[1], "list=", 5) != 0 || + if ((argc != 3 && argc != 4) || strncmp(argv[1], "list=", 5) != 0 || strncmp(argv[2], "choices=", 8) != 0) { ERRORPRINTF ("Invalid arguments.\n" "Expected arguments: list= \n" - " choices=|uninstall\n"); + " choices=|uninstall\n" + "Optional: --debug\n"); return ERR_INVALID_PARAMS; } certificate_file_name = strchr(argv[1], '=') + 1; choices_file_name = strchr(argv[2], '=') + 1; + if (argc == 4 && strncmp(argv[3], "--debug", 7) == 0) + { + g_debug = true; + } + if (!certificate_file_name || !choices_file_name) { ERRORPRINTF ("Invalid arguments.\n" diff -r f638eb1f3b0f -r 317ee9dc4684 cinst/mozilla.c --- a/cinst/mozilla.c Tue Sep 09 18:00:37 2014 +0200 +++ b/cinst/mozilla.c Tue Sep 09 18:49:02 2014 +0200 @@ -45,6 +45,9 @@ * purposes each installation / removal of a certificate will be reported * with the profile name that it modified. * + * To get more verbose output add the --debug parameter + * as the last parameter on the command line. + * */ /** @@ -142,7 +145,7 @@ return cdir; else { - DEBUGPRINTF("FATAL! No %s in environment.\n", envvar); + ERRORPRINTF("FATAL! No %s in environment.\n", envvar); exit(ERR_MOZ_HOMELESS); } } @@ -560,7 +563,7 @@ o_str = x509_parse_subject(secitemp->data, secitemp->len, CERT_OID_O); if (!cn_str || !o_str) { - DEBUGPRINTF("FATAL: Could not parse certificate!"); + ERRORPRINTF("FATAL: Could not parse certificate!"); exit(ERR_INVALID_CERT); } name_len = strlen(cn_str) + strlen(o_str) + 4; @@ -826,12 +829,14 @@ if (parserr) { - DEBUGPRINTF("FATAL: Invalid input: %s\n", inpl); + ERRORPRINTF("FATAL: Invalid input: %s\n", inpl); exit(ERR_MOZ_INVALID_INPUT); } } } +bool g_debug = false; + int main (int argc, char **argv) { @@ -847,17 +852,29 @@ input_stream = stdin; break; case 2: + if (strcmp(argv[1], "--debug") == 0) + { + g_debug = true; + DEBUGPRINTF("Opening STDIN for input...\n"); + input_stream = stdin; + break; + } + case 3: DEBUGPRINTF("Opening %s for input...\n", argv[1]); if ((input_stream = fopen(argv[1], "r")) == NULL) { - DEBUGPRINTF("FATAL: Could not open %s for reading!\n", - argv[1]); + ERRORPRINTF ("FATAL: Could not open %s for reading!\n", + argv[1]); exit_code = ERR_MOZ_FAILED_TO_OPEN_INPUT; goto exit; } + if (argc == 3 && strcmp(argv[2], "--debug") == 0) + { + g_debug = true; + } break; default: - DEBUGPRINTF("FATAL: Wrong number of arguments!\n"); + ERRORPRINTF("FATAL: Wrong number of arguments!\n"); exit_code = ERR_MOZ_WRONG_ARGC; goto exit; } diff -r f638eb1f3b0f -r 317ee9dc4684 cinst/nssstore_linux.c --- a/cinst/nssstore_linux.c Tue Sep 09 18:00:37 2014 +0200 +++ b/cinst/nssstore_linux.c Tue Sep 09 18:49:02 2014 +0200 @@ -49,7 +49,7 @@ { int pipe_fd[2]; pid_t pid = 0; - char *argv[2] = {NULL, NULL}, + char *argv[3] = {NULL, NULL, NULL}, *envp[2] = {NULL, NULL}, *inst_dir = NULL; size_t homedir_len = 0, @@ -92,6 +92,11 @@ exe_path_len = strlen(inst_dir) + strlen(NSS_PROCESS_NAME); argv[0] = xmalloc (exe_path_len + 1); + if (g_debug) + { + argv[1] = "--debug"; + } + ret = snprintf(argv[0], exe_path_len + 1, "%s%s", inst_dir, NSS_PROCESS_NAME); xfree (inst_dir); if (ret < 0 || (size_t) ret != exe_path_len) diff -r f638eb1f3b0f -r 317ee9dc4684 cinst/nssstore_win.c --- a/cinst/nssstore_win.c Tue Sep 09 18:00:37 2014 +0200 +++ b/cinst/nssstore_win.c Tue Sep 09 18:49:02 2014 +0200 @@ -415,6 +415,11 @@ + NULL */ cmd_line_len = wcslen (w_inst_dir) + 1 + 2 + wcslen (NSS_APP_NAME) + + 1 + 2 + wcslen(selection_file) + 1; + if (g_debug) + { + /* Add space for whitespace and --debug*/ + cmd_line_len += 8; + } retval = xmalloc (cmd_line_len * sizeof(wchar_t)); wcscpy_s (retval, cmd_line_len, L"\""); @@ -425,6 +430,11 @@ wcscat_s (retval, cmd_line_len, selection_file); wcscat_s (retval, cmd_line_len, L"\""); + if (g_debug) + { + wcscat_s (retval, cmd_line_len, L" --debug"); + } + return retval; } diff -r f638eb1f3b0f -r 317ee9dc4684 common/logging.h --- a/common/logging.h Tue Sep 09 18:00:37 2014 +0200 +++ b/common/logging.h Tue Sep 09 18:49:02 2014 +0200 @@ -70,9 +70,10 @@ */ #ifdef DEBUGOUTPUT # ifndef WIN32 -# define DEBUGPRINTF(fmt, ...) fprintf(stderr, DEBUGPREFIX "DEBUG: " fmt, ##__VA_ARGS__); +# define DEBUGPRINTF(fmt, ...) if (g_debug) fprintf(stderr, DEBUGPREFIX "DEBUG: " fmt, ##__VA_ARGS__); # else /* WIN32 */ # define DEBUGPRINTF(fmt, ...) \ + if (g_debug) \ { \ char buf[512]; \ snprintf(buf, 511, "DEBUG: " fmt, ##__VA_ARGS__); \ @@ -113,8 +114,8 @@ if (my_error) { \ ERRORPRINTF(msg" : %s\n", my_error); \ free (my_error); \ - } \ - ERRORPRINTF ("Failed to get error information\n"); + } else \ + ERRORPRINTF ("Failed to get error information\n"); /** diff -r f638eb1f3b0f -r 317ee9dc4684 ui/installwrapper.cpp --- a/ui/installwrapper.cpp Tue Sep 09 18:00:37 2014 +0200 +++ b/ui/installwrapper.cpp Tue Sep 09 18:49:02 2014 +0200 @@ -94,6 +94,10 @@ QString parameters = "\"list=" + mCertListFile + "\" \"choices=" + choicesFile.fileName() + "\""; + if (g_debug) { + parameters += " --debug"; + } + shExecInfo.cbSize = sizeof(SHELLEXECUTEINFOW); shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; if (!is_system_install()) { @@ -155,6 +159,10 @@ choicesFile.setAutoRemove(false); parameters << "list=" + mCertListFile << "choices=" + choicesFile.fileName(); + if (g_debug) { + parameters << "--debug"; + } + bool sudo_started = false; bool use_sudo = is_admin() && is_system_install(); if (use_sudo) { diff -r f638eb1f3b0f -r 317ee9dc4684 ui/tests/binverifytest.cpp --- a/ui/tests/binverifytest.cpp Tue Sep 09 18:00:37 2014 +0200 +++ b/ui/tests/binverifytest.cpp Tue Sep 09 18:49:02 2014 +0200 @@ -98,5 +98,6 @@ QVERIFY(VerifyValid == verify_binary (outfile.fileName().toUtf8().constData(), outfile.fileName().toUtf8().size())); } +bool g_debug = true; QTEST_MAIN (BinVerifyTest); diff -r f638eb1f3b0f -r 317ee9dc4684 ui/tests/cinstprocesstest.cpp --- a/ui/tests/cinstprocesstest.cpp Tue Sep 09 18:00:37 2014 +0200 +++ b/ui/tests/cinstprocesstest.cpp Tue Sep 09 18:49:02 2014 +0200 @@ -32,8 +32,11 @@ } } + QStringList newArgs = args; + newArgs << "--debug"; + QProcess *installerProcess = new QProcess(); - installerProcess->setArguments(args); + installerProcess->setArguments(newArgs); installerProcess->setProgram(processPath); installerProcess->start(); installerProcess->waitForStarted(); diff -r f638eb1f3b0f -r 317ee9dc4684 ui/tests/createcertlisttest.cpp --- a/ui/tests/createcertlisttest.cpp Tue Sep 09 18:00:37 2014 +0200 +++ b/ui/tests/createcertlisttest.cpp Tue Sep 09 18:49:02 2014 +0200 @@ -84,4 +84,6 @@ QVERIFY(signature.toBase64() == QByteArray("KMOni98NWbt6SWd13H0JlGA1B7hBlXWH84e883s7gMrWeCCj0fUyHmdsNCyY0rmosu+o9mo2K847S3CdnxFPPJcjbfcmILZWRw0hHMtUYta1i9jypHJbz4oznuDctgXz59L4SQzzliCNUzItNoe6UpUznkS5gja4ZHbzqIj3qDVX3H86Z+qOdLICw+LXKlTs5ghsq+SdhZRAFFpHnt+URICWHjEIQKRlmIGEUIh1NgEHInHB/teFLqNGJMu1khi0MTsWDzesAEF5LQTM7Fo3fKmVxEUSbHKupluZrX1XSfnp5w3MaxBQK/t5nFvkVVdFrdEWvb68FIkMt21XqCvjyCPG2oWNh9jjfx3/R+eQ8kFbXzgUIhlZNxbB7bOCVDe2fYNxlXhy+HAqfHsIDP8qegHU+ngLck7tJHScC5dZwTCBDL6sxAvaeGyb3m6FraqaipNI+SGLii63ou9H7PlH5xWOTY9JvJDXGpfjN9U0UrZ6X5hPutOa/llT7s0pmoQb")); } +bool g_debug = true; + QTEST_GUILESS_MAIN (CreateCertListTest); diff -r f638eb1f3b0f -r 317ee9dc4684 ui/tests/nsstest.cpp --- a/ui/tests/nsstest.cpp Tue Sep 09 18:00:37 2014 +0200 +++ b/ui/tests/nsstest.cpp Tue Sep 09 18:49:02 2014 +0200 @@ -266,4 +266,7 @@ write_stores_nss(to_install, to_remove); } } + +bool g_debug = true; + QTEST_GUILESS_MAIN (NSSTest); diff -r f638eb1f3b0f -r 317ee9dc4684 ui/tests/windowsstoretest.cpp --- a/ui/tests/windowsstoretest.cpp Tue Sep 09 18:00:37 2014 +0200 +++ b/ui/tests/windowsstoretest.cpp Tue Sep 09 18:49:02 2014 +0200 @@ -158,4 +158,7 @@ void WindowsStoreTest::cleanupTestCase() { CertCloseStore(testStore, 0); } + +bool g_debug = true; + QTEST_GUILESS_MAIN (WindowsStoreTest);