/* Copyright (C) 2021 Free Software Foundation, Inc. Contributed by Oracle. This file is part of GNU Binutils. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "config.h" #include #include "PreviewExp.h" #include "Data_window.h" #include "DbeSession.h" #include "Emsg.h" #include "Print.h" #include "i18n.h" PreviewExp::PreviewExp (): Experiment () { } PreviewExp::~PreviewExp () { }//~PreviewExp Experiment::Exp_status PreviewExp::experiment_open (char *path) { // Find experiment directory if ((status = find_expdir (path)) != SUCCESS) { size_t len = strlen (path); is_group = ((len > 4) && !strcmp (&path[len - 4], NTXT (".erg"))); return status; } else is_group = 0; read_log_file (); if (status == FAILURE) return status; if (status == INCOMPLETE && resume_ts != MAX_TIME) // experiment is incomplete and "resumed" (non-paused) // PreviewExp does not process all the packets, therefore... // ... last_event does not reflect reality // ... we don't know the duration or the end. last_event = ZERO_TIME; // mark last_event as uninitialized read_notes_file (); return status; } Vector * PreviewExp::preview_info () { Vector *info = new Vector; if (is_group) info->append (GTXT ("Experiment Group")); else info->append (GTXT ("Experiment")); info->append (expt_name); if (status == FAILURE /* != SUCCESS */) { if (is_group) { Vector *grp_list = dbeSession->get_group_or_expt (expt_name); for (int i = 0, grp_sz = grp_list->size (); i < grp_sz; i++) { char *nm = grp_list->fetch (i); char *str = dbe_sprintf (GTXT ("Exp.#%d"), i + 1); info->append (str); info->append (nm); } delete grp_list; } else { info->append (GTXT ("Error message")); info->append (mqueue_str (errorq, GTXT ("No errors\n"))); } return info; } info->append (GTXT ("Experiment header")); info->append (mqueue_str (commentq, GTXT ("Empty header\n"))); info->append (GTXT ("Error message")); info->append (mqueue_str (errorq, GTXT ("No errors\n"))); info->append (GTXT ("Warning message")); info->append (mqueue_str (warnq, GTXT ("No warnings\n"))); info->append (GTXT ("Notes")); info->append (mqueue_str (notesq, GTXT ("\n"))); return info; } char * PreviewExp::mqueue_str (Emsgqueue *msgqueue, char *null_str) { char *mesgs = pr_mesgs (msgqueue->fetch (), null_str, ""); char *last = mesgs + strlen (mesgs) - 1; if (*last == '\n') *last = '\0'; return mesgs; }