static void proc_args(int argc, char **argv) { int option_index; ruby_script(argv[0]); switch (eruby_parse_options(argc, argv, &option_index)) { case 1: eruby_exit(0); case 2: eruby_exit(2); } if (eruby_mode == MODE_UNKNOWN) eruby_mode = guess_mode(); if (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI) { char *path; char *tmp_qs; char *query_string; int qs_has_equal; char *path_translated; if ((path = getenv("PATH_INFO")) != NULL && strcmp(path, "/logo.png") == 0) { give_img_logo(eruby_mode); eruby_exit(0); } if ((tmp_qs = getenv("QUERY_STRING")) == NULL) { query_string = ""; } else { query_string = eruby_xmalloc(strlen(tmp_qs) + 1); strcpy(query_string, tmp_qs); } qs_has_equal = (strchr(query_string, '=') != NULL); if ((path_translated = getenv("PATH_TRANSLATED")) == NULL) path_translated = ""; if (path_translated[0] && ((option_index == argc && (!query_string[0] || qs_has_equal)) || (option_index == argc - 1 && !qs_has_equal && strcmp(argv[option_index], query_string) == 0))) { eruby_filename = path_translated; } else if ((option_index == argc - 1 && (!query_string[0] || qs_has_equal)) || (option_index == argc - 2 && !qs_has_equal && strcmp(argv[option_index + 1], query_string) == 0)) { eruby_filename = argv[option_index]; } else { fprintf(stderr, "%s: missing required file to process\n", argv[0]); eruby_exit(1); } if (tmp_qs) free(query_string); } else { if (option_index == argc) { eruby_filename = "-"; } else { eruby_filename = argv[option_index++]; ruby_set_argv(argc - option_index, argv + option_index); } } }
int main(int argc, char **argv) { char *in_name, *out_name, *s; struct umatrix *umat; struct eps_info einfo; int average = 0; int median = 0; FILE *out_fp; struct file_info *out_fi; global_options(argc, argv); if (extract_parameter(argc, argv, "-help", OPTION2)) { printhelp(); exit(0); } in_name = NULL; out_name = NULL; /* default page size is A4 */ set_paper(get_paper_by_id(PAPER_A4)); /* parse args */ if (extract_parameter(argc, argv, "-border", OPTION2)) doborder = 1; if (extract_parameter(argc, argv, "-portrait", OPTION2)) orientation = PORTRAIT; if (extract_parameter(argc, argv, "-landscape", OPTION2)) orientation = LANDSCAPE; if (extract_parameter(argc, argv, "-ps", OPTION2)) mode = OUTPUT_PS; if (extract_parameter(argc, argv, "-eps", OPTION2)) mode = OUTPUT_EPS; white_treshold = oatof(extract_parameter(argc, argv, "-W", OPTION), 1.0); black_treshold = oatof(extract_parameter(argc, argv, "-B", OPTION), 0.0); out_name = extract_parameter(argc, argv, "-o", OPTION); if (mode == 0) mode = guess_mode(out_name); if ((s = extract_parameter(argc, argv, "-font", OPTION))) fontname = s; fontsize = oatof(extract_parameter(argc, argv, "-fontsize", OPTION), -1.0); title = extract_parameter(argc, argv, "-title", OPTION); if (extract_parameter(argc, argv, "-notitle", OPTION2)) notitle = 1; if ((s = extract_parameter(argc, argv, "-paper", OPTION))) { struct paper_info *p = get_paper_by_name(s); if (p == NULL) { fprintf(stderr, "Unknown paper type: %s\n", s); exit(1); } set_paper(p); } if (extract_parameter(argc, argv, "-average", OPTION2)) average = 1; if (extract_parameter(argc, argv, "-median", OPTION2)) median = 1; if (extract_parameter(argc, argv, "-onlylabs", OPTION2)) drawblocks = 0; if (extract_parameter(argc, argv, "-nolabs", OPTION2)) drawlabels = 0; in_name = extract_parameter(argc, argv, IN_CODE_FILE, ALWAYS); if ((s = getenv("UMAT_HEADERFILE"))) headerfile = s; if ((s = extract_parameter(argc, argv, "-headerfile", OPTION))) headerfile = s; label_not_needed(1); if ((umat = read_map(in_name, 0, 0)) == NULL) { fprintf(stderr, "Can't load file\n"); exit(1); } calc_umatrix(umat, 0, 0); if (average) average_umatrix(umat); if (median) median_umatrix(umat); if (mode == 0) mode = OUTPUT_EPS; if (orientation == BEST) orientation = (umat->mxdim >= umat->mydim) ? LANDSCAPE : PORTRAIT; if ((out_fi = open_file(out_name, "w")) == NULL) { fprintf(stderr, "can't open output file\n"); free_umat(umat); exit(1); } out_fp = fi2fp(out_fi); einfo.umat = umat; einfo.title = title ? title : in_name; image_size(&einfo, 0); if (mode == OUTPUT_EPS) print_eps(out_fp, &einfo); else print_page(out_fp, &einfo); free_umat(umat); umat = NULL; if (out_fi) close_file(out_fi); return 0; }