diff options
Diffstat (limited to 'gprofng/src/DbeFile.h')
-rw-r--r-- | gprofng/src/DbeFile.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/gprofng/src/DbeFile.h b/gprofng/src/DbeFile.h new file mode 100644 index 00000000000..abd7180dc75 --- /dev/null +++ b/gprofng/src/DbeFile.h @@ -0,0 +1,103 @@ +/* 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. */ + +#ifndef _DBE_FILE_H +#define _DBE_FILE_H + +#include <fcntl.h> + +class DbeJarFile; +class Experiment; +template <class ITEM> class Vector; + +class DbeFile +{ +public: + + enum + { + F_NOT_FOUND = 0, + F_FICTION = 1, + F_LOADOBJ = 2, + F_SOURCE = 4, + F_JAVACLASS = 8, + F_JAVA_SOURCE = 16, + F_DOT_O = 32, + F_DEBUG_FILE = 64, + F_DOT_A_LIB = 128, + F_DIR_OR_JAR = 256, + F_DIRECTORY = 512, + F_FILE = 1024, + F_JAR_FILE = 2048, + F_UNKNOWN = 65536 + }; + + DbeFile (const char *filename); + ~DbeFile (); + + char * + get_name () + { + return name; + }; + + bool + get_need_refind () + { + return need_refind; + }; + + char *get_location (bool find_needed = true); + char *getResolvedPath (); + char *get_location_info (); + struct stat64 *get_stat (); + bool compare (DbeFile *df); + void set_need_refind (bool val); + void set_location (const char *filename); + int check_access (const char *filename); + char *find_file (const char *filename); + DbeFile *getJarDbeFile (char *fnm, int sym); + char *find_in_jar_file (const char *filename, DbeJarFile *jfile); + DbeJarFile *get_jar_file (); + + bool inArchive; + int filetype; + struct stat64 sbuf; + DbeFile *container; + char *orig_location; + Experiment *experiment; + +protected: + static bool isJarOrZip (const char *fnm); + char *find_package_name (const char *filename, const char *dirname); + char *find_in_directory (const char *filename, const char *dirname); + bool find_in_pathmap (char *filename); + void find_in_archives (char *filename); + void find_in_setpath (char *filename, Vector<char*> *searchPath); + void find_in_classpath (char *filename, Vector<DbeFile*> *classPath); + + char *name; + char *location; + char *location_info; + bool need_refind; + DbeJarFile *jarFile; +}; + +#endif /* _DBE_FILE_H */ |