int main(int argc, char *argv[]) { gengetopt_args_info args; if( cmdline_parser( argc, argv, &args ) != 0 ){ exit(1); } QApplication a(argc, argv); MainWindow w; if( args.no_gui_arg > 0 ) { w.hide(); QString config_filename(args.config_arg); QString paths_filename(args.paths_arg); QString log_filename(args.log_arg); QString weight_filename(args.weight_arg); std::cout << "loading " << config_filename.toStdString() << std::endl; if(w.planPath(config_filename, paths_filename, weight_filename, log_filename )) { std::cout << "dumping weight to " << weight_filename.toStdString() << std::endl; std::cout << "saving to " << paths_filename.toStdString() << std::endl; std::cout << "logging to " << log_filename.toStdString() << std::endl; } return 0; } w.show(); return a.exec(); }
int log_start_logging(LOG_REC *log) { char *dir; g_return_val_if_fail(log != NULL, FALSE); if (log->handle != -1) return TRUE; /* Append/create log file */ g_free_not_null(log->real_fname); log->real_fname = log_filename(log); if (log->real_fname != NULL && strcmp(log->real_fname, log->fname) != 0) { /* path may contain variables (%time, $vars), make sure the directory is created */ dir = g_dirname(log->real_fname); mkpath(dir, log_dir_create_mode); g_free(dir); } log->handle = log->real_fname == NULL ? -1 : open(log->real_fname, O_WRONLY | O_APPEND | O_CREAT, log_file_create_mode); if (log->handle == -1) { signal_emit("log create failed", 1, log); log->failed = TRUE; return FALSE; } #ifdef HAVE_FCNTL memset(&lock, 0, sizeof(lock)); lock.l_type = F_WRLCK; if (fcntl(log->handle, F_SETLK, &lock) == -1 && errno == EACCES) { close(log->handle); log->handle = -1; signal_emit("log locked", 1, log); log->failed = TRUE; return FALSE; } #endif lseek(log->handle, 0, SEEK_END); log->opened = log->last = time(NULL); log_write_timestamp(log->handle, settings_get_str("log_open_string"), "\n", log->last); signal_emit("log started", 1, log); log->failed = FALSE; return TRUE; }
void log_free_remove(struct log *log) { reader_free(log->reader); int r = dir_unlink(log->log_dir, log_filename(log->log_number)); if (r == -1) { log_warn(log->db, "Can't unlink unused log file %s.", log_filename(log->log_number)); } r = dir_unlink(log->index_dir, idx_filename(log->log_number)); if (r == -1) { log_warn(log->db, "Can't unlink unused index file %s.", idx_filename(log->log_number)); } r = dir_unlink(log->index_dir, _dirty_idx_filename(log->log_number)); if (r == -1) { log_warn(log->db, "Can't unlink unused dirty index file %s.", _dirty_idx_filename(log->log_number)); } if (log->hashdir) { hashdir_free(log->hashdir); } free(log); }
LOG_REC *log_create_rec(const char *fname, int level) { LOG_REC *rec; g_return_val_if_fail(fname != NULL, NULL); rec = log_find(fname); if (rec == NULL) { rec = g_new0(LOG_REC, 1); rec->fname = g_strdup(fname); rec->real_fname = log_filename(rec); rec->handle = -1; } rec->level = level; return rec; }
static struct log *_log_new(struct db *db, uint64_t log_number, struct dir *log_dir, struct dir *index_dir) { struct reader *reader = reader_new(db, log_dir, log_filename(log_number)); if (reader == NULL) { return NULL; } struct log *log = malloc(sizeof(struct log)); memset(log, 0, sizeof(struct log)); log->db = db; log->log_dir = log_dir; log->index_dir = index_dir; log->log_number = log_number; log->reader = reader; return log; }
int base_roll(struct base *base) { uint64_t log_number = logs_new_number(base->logs); if (log_number == 0) { log_error(base->db, "I have to open a new log, but it's " "impossible - too many log files are already opened. " "%s", ""); return -2; } writer_free(base->writer); base->writer = writer_new(base->log_dir, log_filename(log_number), 1); if (base->writer == NULL) { log_error(base->db, "Unable to create a new log, no %llu", (unsigned long long)log_number); return -1; } struct log *log = log_new_replay(base->db, log_number, base->log_dir, base->index_dir); if (log == NULL) { writer_free(base->writer); base->writer = NULL; log_error(base->db, "Can open new log file %llu for writing " "bug not for reading. Weird.", (unsigned long long)log_number); return -1; } log_do_replay(log, _dummy_reply_callback, NULL); struct log *newest = logs_newest(base->logs); log_freeze(newest); log_info(base->db, "log=%llx %6.1f MB committed, %6.1f MB used, " "%10u items (freezing)", (unsigned long long)log_get_number(newest), (float)log_disk_size(newest) / (1024*1024.), (float)log_used_size(newest) / (1024*1024.), log_sets_count(newest)); /* TODO: */ /* int r = log_save(newest); */ /* if (r != 0) { */ /* log_warn(base->db, "Can't save index for log %llu.", */ /* log_get_number(newest)); */ /* } */ logs_add(base->logs, log); return 0; }
static void log_rotate_check(LOG_REC *log) { char *new_fname; g_return_if_fail(log != NULL); if (log->handle == -1 || log->real_fname == NULL) return; new_fname = log_filename(log); if (strcmp(new_fname, log->real_fname) != 0) { /* rotate log */ log_stop_logging(log); signal_emit("log rotated", 1, log); log_start_logging(log); } g_free(new_fname); }
int main(int argc, char **argv) { try { TCLAP::CmdLine cmd("Centers a mesh", ' ', "1.0"); TCLAP::ValueArg<std::string> log_filename("l","logfile", "Log file name (default is convert.log)", false, "convert.log", "string"); cmd.add( log_filename ); TCLAP::UnlabeledValueArg<std::string> input_filename( "input-filename", "Input file name", true, "", "InputFile" ); cmd.add( input_filename ); TCLAP::UnlabeledValueArg<std::string> output_filename( "output-filename", "Output file name", true, "", "OutputFile" ); cmd.add( output_filename ); cmd.parse( argc, argv ); if ( !log_filename.getValue().empty() ) viennamesh_log_add_logging_file(log_filename.getValue().c_str(), NULL); viennamesh::context_handle context; viennamesh::algorithm_handle mesh_reader = context.make_algorithm("mesh_reader"); mesh_reader.set_input( "filename", input_filename.getValue() ); mesh_reader.run(); viennamesh::algorithm_handle center_mesh = context.make_algorithm("center_mesh"); center_mesh.set_default_source(mesh_reader); center_mesh.run(); viennamesh::algorithm_handle mesh_writer = context.make_algorithm("mesh_writer"); mesh_writer.set_default_source(center_mesh); mesh_writer.set_input( "filename", output_filename.getValue() ); mesh_writer.run(); } catch (TCLAP::ArgException &e) // catch any exceptions { std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl; } return 0; }
int main(int argc, char **argv) { try { TCLAP::CmdLine cmd("Maps/Renames segments", ' ', "1.0"); TCLAP::ValueArg<std::string> log_filename("l","logfile", "Log file name (default is convert.log)", false, "convert.log", "string"); cmd.add( log_filename ); TCLAP::ValueArg<std::string> input_filetype("","inputtype", "Input file type. Can be\nauto - ViennaMesh automatically detects the file format (default)\nvtk - for VTK files\nmesh - for Netgen .mesh files\npoly - for Tetgen .poly files\ndeva - for GTS deva files", false, "auto", "string"); cmd.add( input_filetype ); TCLAP::ValueArg<std::string> output_filetype("","outputtype", "Output file type. Can be\nauto - ViennaMesh automatically detects the file format (default)\nvtk - for VTK files\nvmesh - for Vienna vmesh files", false, "auto", "string"); cmd.add( output_filetype ); TCLAP::ValueArg<std::string> segment_mapping_string("m","segment-mapping", "Segment mapping. Syntax: \"src_id,dst_id;src_id,dst_id\"", true, "", "string"); cmd.add( segment_mapping_string ); TCLAP::UnlabeledValueArg<std::string> input_filename( "input-filename", "Input file name", true, "", "InputFile" ); cmd.add( input_filename ); TCLAP::UnlabeledValueArg<std::string> output_filename( "output-filename", "Output file name", true, "", "OutputFile" ); cmd.add( output_filename ); cmd.parse( argc, argv ); viennamesh::logger().register_callback( new viennamesh::FileStreamCallback<viennamesh::FileStreamFormater>( log_filename.getValue() ) ); viennamesh::algorithm_handle reader( new viennamesh::io::mesh_reader() ); reader->set_input( "filename", input_filename.getValue() ); if (input_filetype.isSet() && (input_filetype.getValue() != "auto")) reader->set_input( "file_type", input_filetype.getValue() ); reader->run(); std::map<int, int> segment_mapping; std::list<std::string> split_mappings = stringtools::split_string( segment_mapping_string.getValue(), ";" ); for (std::list<std::string>::const_iterator mit = split_mappings.begin(); mit != split_mappings.end(); ++mit) { std::list<std::string> from_to = stringtools::split_string( *mit, "," ); std::list<std::string>::const_iterator it = from_to.begin(); if (it == from_to.end()) continue; int src_segment_id = lexical_cast<int>(*it); ++it; if (it == from_to.end()) continue; int dst_segment_id = lexical_cast<int>(*it); segment_mapping[src_segment_id] = dst_segment_id; } viennamesh::algorithm_handle map_segments( new viennamesh::map_segments() ); map_segments->set_input( "mesh", reader->get_output("mesh") ); map_segments->set_input( "segment_mapping", segment_mapping ); map_segments->run(); viennamesh::algorithm_handle writer( new viennamesh::io::mesh_writer() ); writer->set_input( "mesh", map_segments->get_output("mesh") ); writer->set_input( "quantities", reader->get_output("quantities") ); writer->set_input( "filename", output_filename.getValue() ); if (output_filetype.isSet() && (output_filetype.getValue() != "auto")) writer->set_input( "file_type", output_filetype.getValue() ); writer->run(); } catch (TCLAP::ArgException &e) // catch any exceptions { std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl; } return 0; }
int main(int argc, char **argv) { try { TCLAP::CmdLine cmd("Geometrically transforms a mesh", ' ', "1.0"); TCLAP::ValueArg<std::string> log_filename("l","logfile", "Log file name (default is convert.log)", false, "convert.log", "string"); cmd.add( log_filename ); TCLAP::ValueArg<std::string> input_filetype("","inputtype", "Input file type. Can be\nauto - ViennaMesh automatically detects the file format (default)\nvtk - for VTK files\nmesh - for Netgen .mesh files\npoly - for Tetgen .poly files\ndeva - for GTS deva files", false, "auto", "string"); cmd.add( input_filetype ); TCLAP::ValueArg<std::string> output_filetype("","outputtype", "Output file type. Can be\nauto - ViennaMesh automatically detects the file format (default)\nvtk - for VTK files\nvmesh - for Vienna vmesh files", false, "auto", "string"); cmd.add( output_filetype ); TCLAP::ValueArg<std::string> matrix_string("m","matrix", "Translate matrix", false, "", "string"); cmd.add( matrix_string ); TCLAP::ValueArg<double> scale("s","scale", "Scale the mesh", false, 0.0, "double"); cmd.add( scale ); TCLAP::ValueArg<std::string> translate_string("t","translate", "Translate the mesh", false, "", "string"); cmd.add( translate_string ); TCLAP::UnlabeledValueArg<std::string> input_filename( "input-filename", "Input file name", true, "", "InputFile" ); cmd.add( input_filename ); TCLAP::UnlabeledValueArg<std::string> output_filename( "output-filename", "Output file name", true, "", "OutputFile" ); cmd.add( output_filename ); cmd.parse( argc, argv ); viennamesh::logger().register_callback( new viennamesh::FileStreamCallback<viennamesh::FileStreamFormater>( log_filename.getValue() ) ); viennamesh::algorithm_handle reader( new viennamesh::io::mesh_reader() ); reader->set_input( "filename", input_filename.getValue() ); if (input_filetype.isSet() && (input_filetype.getValue() != "auto")) reader->set_input( "file_type", input_filetype.getValue() ); reader->run(); int dimension = lexical_cast<int>(reader->get_output("mesh")->get_property("geometric_dimension").first); viennamesh::algorithm_handle transform( new viennamesh::affine_transform() ); viennamesh::dynamic_point matrix(dimension*dimension, 0.0); for (int i = 0; i < dimension; ++i) matrix[dimension*i+i] = 1.0; if ( matrix_string.isSet() ) { matrix = stringtools::vector_from_string<double>( matrix_string.getValue() ); } else if (scale.isSet()) { for (int i = 0; i < dimension*dimension; ++i) matrix[i] *= scale.getValue(); } viennamesh::dynamic_point translate( dimension, 0.0 ); if ( translate_string.isSet() ) { translate = stringtools::vector_from_string<double>( translate_string.getValue() ); } transform->set_input( "mesh", reader->get_output("mesh") ); transform->set_output( "mesh", reader->get_output("mesh") ); transform->set_input( "matrix", matrix ); transform->set_input( "translate", translate ); transform->run(); viennamesh::algorithm_handle writer( new viennamesh::io::mesh_writer() ); writer->set_input( "mesh", transform->get_output("mesh") ); writer->set_input( "quantities", reader->get_output("quantities") ); writer->set_input( "filename", output_filename.getValue() ); if (output_filetype.isSet() && (output_filetype.getValue() != "auto")) writer->set_input( "file_type", output_filetype.getValue() ); writer->run(); } catch (TCLAP::ArgException &e) // catch any exceptions { std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl; } return 0; }
int main(int argc, char **argv) { try { TCLAP::CmdLine cmd("Clips elements based on a hyperplane", ' ', "1.0"); TCLAP::ValueArg<std::string> log_filename("l","logfile", "Log file name (default is convert.log)", false, "convert.log", "string"); cmd.add( log_filename ); TCLAP::ValueArg<std::string> input_filetype("","inputtype", "Input file type. Can be\nauto - ViennaMesh automatically detects the file format (default)\nvtk - for VTK files\nmesh - for Netgen .mesh files\npoly - for Tetgen .poly files\ndeva - for GTS deva files", false, "auto", "string"); cmd.add( input_filetype ); TCLAP::ValueArg<std::string> output_filetype("","outputtype", "Output file type. Can be\nauto - ViennaMesh automatically detects the file format (default)\nvtk - for VTK files\nvmesh - for Vienna vmesh files", false, "auto", "string"); cmd.add( output_filetype ); TCLAP::ValueArg<std::string> hyperplane_point_string("p","hyperplane_point", "Point of the clip hyperplane", true, "", "string"); cmd.add( hyperplane_point_string ); TCLAP::ValueArg<std::string> hyperplane_normal_string("n","hyperplane_normal", "Normal vector of the clip hyperplane", true, "", "string"); cmd.add( hyperplane_normal_string ); TCLAP::UnlabeledValueArg<std::string> input_filename( "input-filename", "Input file name", true, "", "InputFile" ); cmd.add( input_filename ); TCLAP::UnlabeledValueArg<std::string> output_filename( "output-filename", "Output file name", true, "", "OutputFile" ); cmd.add( output_filename ); cmd.parse( argc, argv ); viennamesh::logger().register_callback( new viennamesh::FileStreamCallback<viennamesh::FileStreamFormater>( log_filename.getValue() ) ); viennamesh::algorithm_handle reader( new viennamesh::io::mesh_reader() ); reader->set_input( "filename", input_filename.getValue() ); if (input_filetype.isSet() && (input_filetype.getValue() != "auto")) reader->set_input( "file_type", input_filetype.getValue() ); reader->run(); viennamesh::dynamic_point hyperplane_point = viennamesh::dynamic_point_from_string( hyperplane_point_string.getValue() ); viennamesh::dynamic_point hyperplane_normal = viennamesh::dynamic_point_from_string( hyperplane_normal_string.getValue() ); viennamesh::algorithm_handle clip( new viennamesh::hyperplane_clip() ); clip->set_input( "mesh", reader->get_output("mesh") ); clip->set_input( "hyperplane_point", hyperplane_point ); clip->set_input( "hyperplane_normal", hyperplane_normal ); clip->run(); viennamesh::algorithm_handle writer( new viennamesh::io::mesh_writer() ); writer->set_input( "mesh", clip->get_output("mesh") ); writer->set_input( "filename", output_filename.getValue() ); if (output_filetype.isSet() && (output_filetype.getValue() != "auto")) writer->set_input( "file_type", output_filetype.getValue() ); writer->run(); } catch (TCLAP::ArgException &e) // catch any exceptions { std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl; } return 0; }