diff options
| -rw-r--r-- | hardinfo/util.c | 92 | ||||
| -rw-r--r-- | includes/hardinfo.h | 10 | ||||
| -rw-r--r-- | modules/devices/arm/processor.c | 14 | ||||
| -rw-r--r-- | modules/devices/x86/processor.c | 14 | 
4 files changed, 63 insertions, 67 deletions
diff --git a/hardinfo/util.c b/hardinfo/util.c index a2e69073..40566eac 100644 --- a/hardinfo/util.c +++ b/hardinfo/util.c @@ -60,25 +60,25 @@ gchar *find_program(gchar *program_name)  		                   "/usr/bin", "/usr/sbin",  		                   "/bin", "/sbin",  		                   NULL }; -     +      /* we don't need to call stat() every time: cache the results */      if (!cache) {      	cache = g_hash_table_new(g_str_hash, g_str_equal);      } else if ((temp = g_hash_table_lookup(cache, program_name))) {      	return g_strdup(temp);      } -     +      for (i = 0; path[i]; i++) {      	temp = g_build_filename(path[i], program_name, NULL); -    	 +      	if (g_file_test(temp, G_FILE_TEST_IS_EXECUTABLE)) {      		g_hash_table_insert(cache, program_name, g_strdup(temp));  		return temp;      	} -    	 +      	g_free(temp);      } -     +      /* our search has failed; use GLib's search (which uses $PATH env var) */      if ((temp = g_find_program_in_path(program_name))) {      	g_hash_table_insert(cache, program_name, g_strdup(temp)); @@ -97,7 +97,7 @@ gchar *seconds_to_string(unsigned int seconds)      minutes %= 60;      days = hours / 24;      hours %= 24; -     +      gchar *wminutes;      gchar *whours;      gchar *wdays; @@ -487,11 +487,11 @@ void open_url(gchar * url)      };      gint i = 0;      gchar *browser = (gchar *)g_getenv("BROWSER"); -     +      if (!browser || *browser == '\0') {      	browser = (gchar *)browsers[i++];      } -     +      do {  	gchar *cmdline = g_strdup_printf("%s '%s'", browser, url); @@ -501,7 +501,7 @@ void open_url(gchar * url)  	}  	g_free(cmdline); -    	 +      	browser = (gchar *)browsers[i++];      } while (browser); @@ -522,11 +522,11 @@ gchar *strreplacechr(gchar * string, gchar * replace, gchar new_char)  gchar *strreplace(gchar *string, gchar *replace, gchar *replacement)  {      gchar **tmp, *ret; -     +      tmp = g_strsplit(string, replace, 0);      ret = g_strjoinv(replacement, tmp);      g_strfreev(tmp); -     +      return ret;  } @@ -544,12 +544,12 @@ static void module_register_methods(ShellModule * module)      if (g_module_symbol  	(module->dll, "hi_exported_methods", (gpointer) & get_methods)) {  	ShellModuleMethod *methods; -	 +  	for (methods = get_methods(); methods->name; methods++) {  	    ShellModuleMethod method = *methods;  	    gchar *name = g_path_get_basename(g_module_name(module->dll));  	    gchar *simple_name = strreplace(name, "lib", ""); -	     +  	    strend(simple_name, '.');  	    method_name = g_strdup_printf("%s::%s", simple_name, method.name); @@ -595,34 +595,34 @@ static gboolean remove_module_methods(gpointer key, gpointer value, gpointer dat  static void module_unload(ShellModule * module)  {      GSList *entry; -     +      if (module->dll) {          gchar *name; -         +          if (module->deinit) {          	DEBUG("cleaning up module \"%s\"", module->name);  		module->deinit();  	} else {  		DEBUG("module \"%s\" does not need cleanup", module->name);  	} -         +          name = g_path_get_basename(g_module_name(module->dll));          g_hash_table_foreach_remove(__module_methods, remove_module_methods, name); -         +      	g_module_close(module->dll);      	g_free(name);      } -     +      g_free(module->name);      g_object_unref(module->icon); -     +      for (entry = module->entries; entry; entry = entry->next) {  	ShellModuleEntry *e = (ShellModuleEntry *)entry->data; -	 +  	g_source_remove_by_user_data(e);      	g_free(e);      } -     +      g_slist_free(module->entries);      g_free(module);  } @@ -634,13 +634,13 @@ void module_unload_all(void)      GSList *module, *merge_id;      shell = shell_get_main_shell(); -     +      sync_manager_clear_entries();      shell_clear_timeouts(shell);      shell_clear_tree_models(shell);      shell_clear_field_updates();      shell_set_title(shell, NULL); -     +      for (module = shell->tree->modules; module; module = module->next) {      	module_unload((ShellModule *)module->data);      } @@ -651,7 +651,7 @@ void module_unload_all(void)      }      g_slist_free(shell->tree->modules);      g_slist_free(shell->merge_ids); -     +      shell->merge_ids = NULL;      shell->tree->modules = NULL;      shell->selected = NULL; @@ -718,7 +718,7 @@ static ShellModule *module_load(gchar * filename)     	 	        (gpointer) & (module->deinit));          g_module_symbol(module->dll, "hi_module_get_summary",     	 	        (gpointer) & (module->summaryfunc)); -   	 	         +  	entries = get_module_entries();  	while (entries[i].name) {  	    ShellModuleEntry *entry = g_new0(ShellModuleEntry, 1); @@ -1138,7 +1138,7 @@ gchar *module_entry_get_field(ShellModuleEntry * module_entry, gchar * field)     if (module_entry->fieldfunc) {     	return module_entry->fieldfunc(field);     } -    +     return NULL;  } @@ -1244,14 +1244,14 @@ h_sysfs_read_float(gchar *endpoint, gchar *entry)  {  	gchar *tmp, *buffer;  	gfloat return_value = 0.0f; -	 +  	tmp = g_build_filename(endpoint, entry, NULL);  	if (g_file_get_contents(tmp, &buffer, NULL, NULL))  		return_value = atof(buffer); -	 +  	g_free(tmp);  	g_free(buffer); -	 +  	return return_value;  } @@ -1260,14 +1260,14 @@ h_sysfs_read_int(gchar *endpoint, gchar *entry)  {  	gchar *tmp, *buffer;  	gint return_value = 0; -	 +  	tmp = g_build_filename(endpoint, entry, NULL);  	if (g_file_get_contents(tmp, &buffer, NULL, NULL))  		return_value = atoi(buffer); -	 +  	g_free(tmp);  	g_free(buffer); -	 +  	return return_value;  } @@ -1275,18 +1275,18 @@ gchar *  h_sysfs_read_string(gchar *endpoint, gchar *entry)  {  	gchar *tmp, *return_value; -	 +  	tmp = g_build_filename(endpoint, entry, NULL);  	if (!g_file_get_contents(tmp, &return_value, NULL, NULL)) {  		g_free(return_value); -		 +  		return_value = NULL;  	} else {  		return_value = g_strstrip(return_value);  	} -	 +  	g_free(tmp); -	 +  	return return_value;  } @@ -1322,7 +1322,7 @@ moreinfo_add_with_prefix(gchar *prefix, gchar *key, gchar *value)  		DEBUG("moreinfo not initialized");  		return;  	} -	 +  	if (prefix) {  		gchar *hashkey = g_strconcat(prefix, ":", key, NULL);  		g_hash_table_insert(_moreinfo, hashkey, value); @@ -1351,7 +1351,7 @@ moreinfo_del_with_prefix(gchar *prefix)  		DEBUG("moreinfo not initialized");  		return;  	} -	 +  	g_hash_table_foreach_remove(_moreinfo, _moreinfo_del_cb, prefix);  } @@ -1372,7 +1372,7 @@ moreinfo_lookup_with_prefix(gchar *prefix, gchar *key)  		DEBUG("moreinfo not initialized");  		return 0;  	} -	 +  	if (prefix) {  		gchar *lookup_key = g_strconcat(prefix, ":", key, NULL);  		gchar *result = g_hash_table_lookup(_moreinfo, lookup_key); @@ -1388,3 +1388,17 @@ moreinfo_lookup(gchar *key)  {  	return moreinfo_lookup_with_prefix(NULL, key);  } + +#if !GLIB_CHECK_VERSION(2,44,0) +gboolean g_strv_contains(const gchar * const * strv, const gchar *str) { +    /* g_strv_contains() requires glib>2.44 +     * fallback for older versions */ +    gint i = 0; +    while(strv[i] != NULL) { +        if (g_strcmp0(strv[i], str) == 0) +            return 1; +        i++; +    } +    return 0; +} +#endif diff --git a/includes/hardinfo.h b/includes/hardinfo.h index 20d87ef8..70329ac7 100644 --- a/includes/hardinfo.h +++ b/includes/hardinfo.h @@ -46,9 +46,9 @@ struct _ProgramParameters {    gboolean list_modules;    gboolean autoload_deps;    gboolean run_xmlrpc_server; -   +    gint     report_format; -   +    gchar  **use_modules;    gchar   *run_benchmark;    gchar   *path_lib; @@ -161,4 +161,10 @@ 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 +  #endif				/* __HARDINFO_H__ */ diff --git a/modules/devices/arm/processor.c b/modules/devices/arm/processor.c index 1a324dd9..c94f41e5 100644 --- a/modules/devices/arm/processor.c +++ b/modules/devices/arm/processor.c @@ -66,18 +66,6 @@ static gint get_cpu_int(const gchar* file, gint cpuid) {      return ret;  } -static gboolean _g_strv_contains(const gchar * const * strv, const gchar *str) { -    /* g_strv_contains() requires glib>2.44 */ -    //return g_strv_contains(strv, str); -    gint i = 0; -    while(strv[i] != NULL) { -        if (g_strcmp0(strv[i], str) == 0) -            return 1; -        i++; -    } -    return 0; -} -  int processor_has_flag(gchar * strflags, gchar * strflag)  {      gchar **flags; @@ -85,7 +73,7 @@ int processor_has_flag(gchar * strflags, gchar * strflag)      if (strflags == NULL || strflag == NULL)          return 0;      flags = g_strsplit(strflags, " ", 0); -    ret = _g_strv_contains((const gchar * const *)flags, strflag); +    ret = g_strv_contains((const gchar * const *)flags, strflag);      g_strfreev(flags);      return ret;  } diff --git a/modules/devices/x86/processor.c b/modules/devices/x86/processor.c index 445ca716..7935a83d 100644 --- a/modules/devices/x86/processor.c +++ b/modules/devices/x86/processor.c @@ -214,18 +214,6 @@ fail:      g_free(endpoint);  } -static gboolean _g_strv_contains(const gchar * const * strv, const gchar *str) { -    /* g_strv_contains() requires glib>2.44 */ -    //return g_strv_contains(strv, str); -    gint i = 0; -    while(strv[i] != NULL) { -        if (g_strcmp0(strv[i], str) == 0) -            return 1; -        i++; -    } -    return 0; -} -  int processor_has_flag(gchar * strflags, gchar * strflag)  {      gchar **flags; @@ -233,7 +221,7 @@ int processor_has_flag(gchar * strflags, gchar * strflag)      if (strflags == NULL || strflag == NULL)          return 0;      flags = g_strsplit(strflags, " ", 0); -    ret = _g_strv_contains((const gchar * const *)flags, strflag); +    ret = g_strv_contains((const gchar * const *)flags, strflag);      g_strfreev(flags);      return ret;  }  | 
