| /* 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 <stdio.h> | |
| #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<char*> * | |
| PreviewExp::preview_info () | |
| { | |
| Vector<char*> *info = new Vector<char*>; | |
| 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<char*> *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; | |
| } |