/*######################### print_data_button() #########################*/ void print_data_button(Widget w, XtPointer client_data, XtPointer call_data) { char message[MAX_MESSAGE_LENGTH], sum_sep_line[MAX_OUTPUT_LINE_LENGTH + SHOW_LONG_FORMAT + 1]; /* Prepare separator line. */ (void)memset(sum_sep_line, '=', sum_line_length); sum_sep_line[sum_line_length] = '\0'; if (range_type == SELECTION_TOGGLE) { int no_selected, *select_list; if (XmListGetSelectedPos(listbox_w, &select_list, &no_selected) == False) { show_message(statusbox_w, "No data selected for printing!"); XtPopdown(printshell); return; } else { int fd, prepare_status; char *line, line_buffer[256]; XmStringTable all_items; if (device_type == PRINTER_TOGGLE) { prepare_status = prepare_printer(&fd); } else { prepare_status = prepare_file(&fd, (device_type == MAIL_TOGGLE) ? 0 : 1); if ((prepare_status != SUCCESS) && (device_type == MAIL_TOGGLE)) { prepare_tmp_name(); prepare_status = prepare_file(&fd, 1); } } if (prepare_status == SUCCESS) { register int i, length; write_header(fd, sum_sep_line); XtVaGetValues(listbox_w, XmNitems, &all_items, NULL); for (i = 0; i < no_selected; i++) { XmStringGetLtoR(all_items[select_list[i] - 1], XmFONTLIST_DEFAULT_TAG, &line); length = sprintf(line_buffer, "%s\n", line); if (write(fd, line_buffer, length) != length) { (void)fprintf(stderr, "write() error : %s (%s %d)\n", strerror(errno), __FILE__, __LINE__); XtFree(line); exit(INCORRECT); } XtFree(line); XmListDeselectPos(listbox_w, select_list[i]); } write_summary(fd, sum_sep_line); /* * Remember to insert the correct summary, since all files * have now been deselected. */ (void)strcpy(summary_str, total_summary_str); SHOW_SUMMARY_DATA(); if (device_type == PRINTER_TOGGLE) { int status; char buf; /* Send Control-D to printer queue. */ buf = CONTROL_D; if (write(fd, &buf, 1) != 1) { (void)fprintf(stderr, "write() error : %s (%s %d)\n", strerror(errno), __FILE__, __LINE__); XtFree(line); exit(INCORRECT); } if ((status = pclose(fp)) < 0) { (void)sprintf(message, "Failed to send printer command (%d) : %s", status, strerror(errno)); } else { (void)sprintf(message, "Send job to printer (%d)", status); } } else { if (close(fd) < 0) { (void)fprintf(stderr, "close() error : %s (%s %d)\n", strerror(errno), __FILE__, __LINE__); } if (device_type == MAIL_TOGGLE) { send_mail_cmd(message); } else { (void)sprintf(message, "Send job to file %s.", file_name); } } } XtFree((char *)select_list); } } else /* Print everything! */ { int fd, no_of_items, prepare_status; char *line, line_buffer[256]; XmStringTable all_items; if (device_type == PRINTER_TOGGLE) { prepare_status = prepare_printer(&fd); } else { prepare_status = prepare_file(&fd, (device_type == MAIL_TOGGLE) ? 0 : 1); if ((prepare_status != SUCCESS) && (device_type == MAIL_TOGGLE)) { prepare_tmp_name(); prepare_status = prepare_file(&fd, 1); } } if (prepare_status == SUCCESS) { register int i, length; write_header(fd, sum_sep_line); XtVaGetValues(listbox_w, XmNitemCount, &no_of_items, XmNitems, &all_items, NULL); for (i = 0; i < no_of_items; i++) { XmStringGetLtoR(all_items[i], XmFONTLIST_DEFAULT_TAG, &line); length = sprintf(line_buffer, "%s\n", line); if (write(fd, line_buffer, length) != length) { (void)fprintf(stderr, "write() error : %s (%s %d)\n", strerror(errno), __FILE__, __LINE__); XtFree(line); exit(INCORRECT); } XtFree(line); } write_summary(fd, sum_sep_line); if (device_type == PRINTER_TOGGLE) { int status; char buf; /* Send Control-D to printer queue. */ buf = CONTROL_D; if (write(fd, &buf, 1) != 1) { (void)fprintf(stderr, "write() error : %s (%s %d)\n", strerror(errno), __FILE__, __LINE__); XtFree(line); exit(INCORRECT); } if ((status = pclose(fp)) < 0) { (void)sprintf(message, "Failed to send printer command (%d) : %s", status, strerror(errno)); } else { (void)sprintf(message, "Send job to printer (%d)", status); } } else { if (close(fd) < 0) { (void)fprintf(stderr, "close() error : %s (%s %d)\n", strerror(errno), __FILE__, __LINE__); } if (device_type == MAIL_TOGGLE) { send_mail_cmd(message); } else { (void)sprintf(message, "Send job to file %s.", file_name); } } } } show_message(statusbox_w, message); XtPopdown(printshell); return; }
int est_load_cacerts(struct hs20_osu_client *ctx, const char *url) { char *buf, *resp; size_t buflen; unsigned char *pkcs7; size_t pkcs7_len, resp_len; int res; buflen = os_strlen(url) + 100; buf = os_malloc(buflen); if (buf == NULL) return -1; os_snprintf(buf, buflen, "%s/cacerts", url); wpa_printf(MSG_INFO, "Download EST cacerts from %s", buf); write_summary(ctx, "Download EST cacerts from %s", buf); ctx->no_osu_cert_validation = 1; http_ocsp_set(ctx->http, 1); res = http_download_file(ctx->http, buf, "Cert/est-cacerts.txt", ctx->ca_fname); http_ocsp_set(ctx->http, (ctx->workarounds & WORKAROUND_OCSP_OPTIONAL) ? 1 : 2); ctx->no_osu_cert_validation = 0; if (res < 0) { wpa_printf(MSG_INFO, "Failed to download EST cacerts from %s", buf); write_result(ctx, "Failed to download EST cacerts from %s", buf); os_free(buf); return -1; } os_free(buf); resp = os_readfile("Cert/est-cacerts.txt", &resp_len); if (resp == NULL) { wpa_printf(MSG_INFO, "Could not read Cert/est-cacerts.txt"); write_result(ctx, "Could not read EST cacerts"); return -1; } pkcs7 = base64_decode((unsigned char *) resp, resp_len, &pkcs7_len); if (pkcs7 && pkcs7_len < resp_len / 2) { wpa_printf(MSG_INFO, "Too short base64 decode (%u bytes; downloaded %u bytes) - assume this was binary", (unsigned int) pkcs7_len, (unsigned int) resp_len); os_free(pkcs7); pkcs7 = NULL; } if (pkcs7 == NULL) { wpa_printf(MSG_INFO, "EST workaround - Could not decode base64, assume this is DER encoded PKCS7"); pkcs7 = os_malloc(resp_len); if (pkcs7) { os_memcpy(pkcs7, resp, resp_len); pkcs7_len = resp_len; } } os_free(resp); if (pkcs7 == NULL) { wpa_printf(MSG_INFO, "Could not fetch PKCS7 cacerts"); write_result(ctx, "Could not fetch EST PKCS#7 cacerts"); return -1; } res = pkcs7_to_cert(ctx, pkcs7, pkcs7_len, "Cert/est-cacerts.pem", NULL); os_free(pkcs7); if (res < 0) { wpa_printf(MSG_INFO, "Could not parse CA certs from PKCS#7 cacerts response"); write_result(ctx, "Could not parse CA certs from EST PKCS#7 cacerts response"); return -1; } unlink("Cert/est-cacerts.txt"); return 0; }
void digest_input(string filename) { // Print basic information and advance read cursor past author line. // (Author line must always exist and must be the first line.) cout << "Processing started..." << endl << endl; cout << "Input: " << filename << endl << endl; string filename_input = "Texts/" + filename; ifstream file_text(filename_input); print_data_size(file_text); string author_name; getline(file_text, author_name); string filename_author = "Authors/" + author_name + ".csv"; string filename_summary = create_file_and_name("Digests/", filename, "-SUM.txt"); string filename_words = create_file_and_name("Digests/", filename, "-WORD.csv"); string filename_sentences = create_file_and_name("Digests/", filename, "-SENT.csv"); cout << "Author: " << author_name << endl << endl; cout << "Output: " << filename + "-SUM.txt" << endl << " " << filename + "-WORD.csv" << endl << " " << filename + "-SENT.csv" << endl << endl; Memory RAM; string raw_input; cout << "Parsing text: |"; const int bar_width = 50; for (int i = 0; i<bar_width; ++i) { cout << " "; } cout << "| 0.00%"; for (int i = 0; getline(file_text, raw_input); ++i) { add_data_from_line(RAM, raw_input); // TODO: Make constants settable via command-line options (i.e. 10000, 3000) if (RAM.word_list.size() > 10000) { cout << endl << endl << "Flushing buffer..." << endl << endl; combine_list_file( RAM.word_list, filename_words, RAM.word_list.begin() + 3000, RAM.word_list.end() ); cout << "Parsing text: |"; for (int i = 0; i<bar_width; ++i) { cout << " "; } cout << "| 0.00%"; } // Progress bar stuff: if (i % 120 == 0) { cout << "\b\b\b\b\b\b\b\b"; // "| ##.##%" for (int i = 0; i < bar_width; ++i) { cout << "\b"; } ifstream file_sizer(filename_input); file_sizer.seekg(0, ios::end); float size = static_cast<float>(file_sizer.tellg()); file_sizer.close(); float current = static_cast<float>(file_text.tellg()); float percentage = current / size * 100; int chars_filled = static_cast<int>(floor(percentage/100.0*bar_width)); for (int i = 0; i < bar_width; ++i) { if (i < chars_filled) { cout << "#"; } else { cout << " "; } } std::streamsize precision_init = cout.precision(); int correct_precision = get_precision(5, percentage); cout.precision(correct_precision); std::streamsize width_init = cout.width(); cout << "| " << std::setw(5) << percentage << "%"; cout.precision(precision_init); cout << std::setw(width_init); } } cout << "\b\b\b\b\b\b\b\b"; // "| ##.##%" for (int i = 0; i < bar_width; ++i) { cout << "\b"; } for (int i = 0; i < bar_width; ++i) { cout << "#"; } cout << "| -DONE-" << endl << endl; // Final write: cout << "Writing frequency files..." << endl << endl; std::sort(RAM.word_list.begin(), RAM.word_list.end(), word_compare()); combine_list_file(RAM.word_list, filename_words); get_list_from_file(RAM.word_list, filename_words); ofstream file_sentences(filename_sentences); file_sentences << "WORDS" << endl; for (unsigned int i = 0; i < RAM.sentence_len.size(); ++i) { file_sentences << RAM.sentence_len[i] << endl; } file_sentences.close(); cout << "Writing summary file..." << endl << endl; write_summary(filename_summary, &RAM, author_name); cout << endl << "Done!" << endl; }