aboutsummaryrefslogtreecommitdiff
path: root/includes/hardinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/hardinfo.h')
-rw-r--r--includes/hardinfo.h234
1 files changed, 234 insertions, 0 deletions
diff --git a/includes/hardinfo.h b/includes/hardinfo.h
new file mode 100644
index 00000000..872a29fc
--- /dev/null
+++ b/includes/hardinfo.h
@@ -0,0 +1,234 @@
+/*
+ * HardInfo - Displays System Information
+ * Copyright (C) 2003-2007 L. A. F. Pereira <l@tia.mat.br>
+ *
+ * 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, version 2 or later.
+ *
+ * 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, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef __HARDINFO_H__
+#define __HARDINFO_H__
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <gtk/gtk.h>
+#include "config.h"
+#include "shell.h"
+#include "vendor.h"
+#include "gettext.h"
+#include "info.h"
+#include "format_early.h"
+
+#define HARDINFO2_COPYRIGHT_LATEST_YEAR 2024
+
+#ifndef LOCALEDIR
+#define LOCALEDIR "/usr/share/locale"
+#endif
+
+typedef enum {
+ MODULE_FLAG_NONE = 0,
+ MODULE_FLAG_NO_REMOTE = 1<<0,
+ MODULE_FLAG_HAS_HELP = 1<<1,
+ MODULE_FLAG_HIDE = 1<<2,
+} ModuleEntryFlags;
+
+typedef struct _ModuleEntry ModuleEntry;
+typedef struct _ModuleAbout ModuleAbout;
+typedef struct _FileTypes FileTypes;
+typedef struct _ProgramParameters ProgramParameters;
+
+struct _ProgramParameters {
+ gboolean create_report;
+ gboolean force_all_details; /* for create_report, include any "moreinfo" that exists for any item */
+ gboolean show_version;
+ gboolean gui_running;
+ gboolean list_modules;
+ gboolean autoload_deps;
+ gboolean skip_benchmarks;
+ gboolean quiet;
+
+ /*
+ * OK to use the common parts of HTML(4.0) and Pango Markup
+ * in the value part of a key/value.
+ * Including the (b,big,i,s,sub,sup,small,tt,u) tags.
+ * https://developer.gnome.org/pango/stable/PangoMarkupFormat.html
+ */
+ gboolean markup_ok;
+ int fmt_opts;
+
+ gint report_format;
+ gint max_bench_results;
+
+ gchar **use_modules;
+ gchar *run_benchmark;
+ gchar *bench_user_note;
+ gchar *result_format;
+ gchar *path_lib;
+ gchar *path_data;
+ gchar *argv0;
+};
+
+struct _FileTypes {
+ gchar *name;
+ gchar *mime_type;
+ gchar *extension;
+ gpointer data;
+};
+
+struct _ModuleEntry {
+ gchar *name;
+ gchar *icon;
+ gpointer callback;
+ gpointer scan_callback;
+ guint32 flags;
+};
+
+struct _ModuleAbout {
+ const gchar *description;
+ const gchar *author;
+ const gchar *version;
+ const gchar *license;
+};
+
+/* String utility functions */
+void remove_quotes(gchar *str);
+char *strend(gchar *str, gchar chr);
+void remove_linefeed(gchar *str);
+gchar *strreplacechr(gchar *string, gchar *replace, gchar new_char);
+gchar *strreplace(gchar *string, gchar *replace, gchar *replacement);
+
+/* Widget utility functions */
+void widget_set_cursor(GtkWidget *widget, GdkCursorType cursor_type);
+gint tree_view_get_visible_height(GtkTreeView *tv);
+
+/* File Chooser utility functions */
+void file_chooser_open_expander(GtkWidget *chooser);
+void file_chooser_add_filters(GtkWidget *chooser, FileTypes *filters);
+gchar *file_chooser_get_extension(GtkWidget *chooser, FileTypes *filters);
+gchar *file_chooser_build_filename(GtkWidget *chooser, gchar *extension);
+gpointer file_types_get_data_by_name(FileTypes *file_types, gchar *name);
+
+/* Misc utility functions */
+#if !(RELEASE == 1)
+#define DEBUG_AUTO_FREE 2
+#endif
+#include "auto_free.h"
+#define idle_free(ptr) auto_free(ptr)
+
+gchar *find_program(gchar *program_name);
+gchar *size_human_readable(gfloat size);
+void nonblock_sleep(guint msec);
+GSList *modules_get_list(void);
+GSList *modules_load_selected(void);
+GSList *modules_load_all(void);
+void module_unload_all(void);
+const ModuleAbout *module_get_about(ShellModule *module);
+gchar *seconds_to_string(unsigned int seconds);
+
+gchar *h_strdup_cprintf(const gchar *format, gchar *source, ...)
+ __attribute__((format(gnu_printf, 1, 3)));
+gchar *h_strconcat(gchar *string1, ...);
+void h_hash_table_remove_all (GHashTable *hash_table);
+
+void module_entry_scan_all_except(ModuleEntry *entries, gint except_entry);
+void module_entry_scan_all(ModuleEntry *entries);
+void module_entry_reload(ShellModuleEntry *module_entry);
+void module_entry_scan(ShellModuleEntry *module_entry);
+gchar *module_entry_function(ShellModuleEntry *module_entry);
+const gchar *module_entry_get_note(ShellModuleEntry *module_entry);
+gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field);
+gchar *module_entry_get_moreinfo(ShellModuleEntry * module_entry, gchar * field);
+
+/* BinReloc stuff */
+gboolean binreloc_init(gboolean try_hardcoded);
+
+/* GTK UI stuff */
+gboolean ui_init(int *argc, char ***argv);
+void parameters_init(int *argc, char ***argv, ProgramParameters *params);
+extern ProgramParameters params;
+
+/* Module stuff */
+gchar *module_call_method(gchar *method);
+gchar *module_call_method_param(gchar * method, gchar * parameter);
+
+/* Sysfs stuff */
+gfloat h_sysfs_read_float(const gchar *endpoint, const gchar *entry);
+gint h_sysfs_read_int(const gchar *endpoint, const gchar *entry);
+gint h_sysfs_read_hex(const gchar *endpoint, const gchar *entry);
+gchar *h_sysfs_read_string(const gchar *endpoint, const gchar *entry);
+
+#define SCAN_START() static gboolean scanned = FALSE; if (reload) scanned = FALSE; if (scanned) return;
+#define SCAN_END() scanned = TRUE;
+
+#define _CONCAT(a,b) a ## b
+#define CONCAT(a,b) _CONCAT(a,b)
+
+void moreinfo_init(void);
+void moreinfo_shutdown(void);
+void moreinfo_add_with_prefix(gchar *prefix, gchar *key, gchar *value);
+void moreinfo_add(gchar *key, gchar *value);
+void moreinfo_del_with_prefix(gchar *prefix);
+void moreinfo_clear(void);
+gchar *moreinfo_lookup_with_prefix(gchar *prefix, gchar *key);
+gchar *moreinfo_lookup(gchar *key);
+
+#if !GLIB_CHECK_VERSION(2,44,0)
+ /* g_strv_contains() requires glib>2.44
+ * fallback for older versions in hardinfo/util.c */
+gboolean g_strv_contains(const gchar * const * strv, const gchar *str);
+#endif
+
+/* in gg_key_file_parse_string_as_value.c */
+gchar *
+gg_key_file_parse_string_as_value (const gchar *string, const gchar list_separator);
+
+gchar *hardinfo_clean_grpname(const gchar *v, int replacing);
+/* Hardinfo labels that have # are truncated and/or hidden.
+ * Labels can't have $ because that is the delimiter in
+ * moreinfo.
+ * replacing = true will free v */
+gchar *hardinfo_clean_label(const gchar *v, int replacing);
+/* hardinfo uses the values as {ht,x}ml, apparently */
+gchar *hardinfo_clean_value(const gchar *v, int replacing);
+
+/* Same as hardinfo_spawn_command_line_sync(), but calls shell_status_pulse()
+ * before. */
+gboolean hardinfo_spawn_command_line_sync(const gchar *command_line,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+
+/* a marker in text to point out problems, using markup where possible */
+const char *problem_marker();
+
+/* a version of g_strescape() that allows escaping extra characters.
+ * use with g_strcompress() as normal. */
+gchar *
+gg_strescape (const gchar *source,
+ const gchar *exceptions,
+ const gchar *extra);
+
+/* hinote helpers */
+#define note_max_len 512
+#define note_printf(note_buff, fmt, ...) \
+ snprintf((note_buff) + strlen(note_buff), note_max_len - strlen(note_buff) - 1, \
+ fmt, ##__VA_ARGS__)
+#define note_print(note_buff, str) note_printf((note_buff), "%s", str)
+gboolean note_cond_bullet(gboolean cond, gchar *note_buff, const gchar *desc_str);
+gboolean note_require_tool(const gchar *tool, gchar *note_buff, const gchar *desc_str);
+int cpu_procs_cores_threads(int *p, int *c, int *t);
+
+#endif /* __HARDINFO_H__ */