improve "const" keyword usage.

functions that do not modify their parameters get them as const pointers.

special cases:
 * kmod_get_userdata/kmod_set_userdata: return as void* for user convenience.
 * kmod_list_append/kmod_list_prepend: take const void* for user convenience.
diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
index 66d8372..656db77 100644
--- a/libkmod/libkmod-config.c
+++ b/libkmod/libkmod-config.c
@@ -44,12 +44,12 @@
 };
 
 const char *kmod_alias_get_name(const struct kmod_list *l) {
-	struct kmod_alias *alias = l->data;
+	const struct kmod_alias *alias = l->data;
 	return alias->name;
 }
 
 const char *kmod_alias_get_modname(const struct kmod_list *l) {
-	struct kmod_alias *alias = l->data;
+	const struct kmod_alias *alias = l->data;
 	return alias->modname;
 }
 
@@ -261,7 +261,7 @@
 {
 
 	size_t i, n = 0;
-	char **files = NULL;
+	const char **files;
 	int err = 0;
 	struct kmod_list *list = NULL, *l;
 
diff --git a/libkmod/libkmod-list.c b/libkmod/libkmod-list.c
index d9caba0..333a54c 100644
--- a/libkmod/libkmod-list.c
+++ b/libkmod/libkmod-list.c
@@ -30,7 +30,7 @@
 	return node;
 }
 
-static inline struct list_node *list_node_next(struct list_node *node)
+static inline struct list_node *list_node_next(const struct list_node *node)
 {
 	if (node == NULL)
 		return NULL;
@@ -38,7 +38,7 @@
 	return node->next;
 }
 
-static inline struct list_node *list_node_prev(struct list_node *node)
+static inline struct list_node *list_node_prev(const struct list_node *node)
 {
 	if (node == NULL)
 		return NULL;
@@ -71,7 +71,7 @@
 	return node->prev;
 }
 
-struct kmod_list *kmod_list_append(struct kmod_list *list, void *data)
+struct kmod_list *kmod_list_append(struct kmod_list *list, const void *data)
 {
 	struct kmod_list *new;
 
@@ -79,13 +79,13 @@
 	if (new == NULL)
 		return NULL;
 
-	new->data = data;
+	new->data = (void *)data;
 	list_node_append(list ? &list->node : NULL, &new->node);
 
 	return list ? list : new;
 }
 
-struct kmod_list *kmod_list_prepend(struct kmod_list *list, void *data)
+struct kmod_list *kmod_list_prepend(struct kmod_list *list, const void *data)
 {
 	struct kmod_list *new;
 
@@ -93,7 +93,7 @@
 	if (new == NULL)
 		return NULL;
 
-	new->data = data;
+	new->data = (void *)data;
 	list_node_append(list ? &list->node : NULL, &new->node);
 
 	return new;
@@ -166,8 +166,8 @@
 	return list;
 }
 
-KMOD_EXPORT struct kmod_list *kmod_list_prev(struct kmod_list *list,
-							struct kmod_list *curr)
+KMOD_EXPORT struct kmod_list *kmod_list_prev(const struct kmod_list *list,
+							const struct kmod_list *curr)
 {
 	if (list == NULL || curr == NULL)
 		return NULL;
@@ -178,8 +178,8 @@
 	return container_of(curr->node.prev, struct kmod_list, node);
 }
 
-KMOD_EXPORT struct kmod_list *kmod_list_next(struct kmod_list *list,
-							struct kmod_list *curr)
+KMOD_EXPORT struct kmod_list *kmod_list_next(const struct kmod_list *list,
+							const struct kmod_list *curr)
 {
 	if (list == NULL || curr == NULL)
 		return NULL;
diff --git a/libkmod/libkmod-loaded.c b/libkmod/libkmod-loaded.c
index b149765..cda9012 100644
--- a/libkmod/libkmod-loaded.c
+++ b/libkmod/libkmod-loaded.c
@@ -210,7 +210,7 @@
 						const char **deps,
 						uintptr_t *addr)
 {
-	struct kmod_loaded_module *m;
+	const struct kmod_loaded_module *m;
 
 	if (entry == NULL)
 		return -ENOENT;
diff --git a/libkmod/libkmod-module.c b/libkmod/libkmod-module.c
index 552d9ea..969d304 100644
--- a/libkmod/libkmod-module.c
+++ b/libkmod/libkmod-module.c
@@ -263,25 +263,25 @@
 /*
  * We don't increase the refcount. Maybe we should.
  */
-KMOD_EXPORT struct kmod_list *kmod_module_get_dependency(struct kmod_module *mod)
+KMOD_EXPORT struct kmod_list *kmod_module_get_dependency(const struct kmod_module *mod)
 {
 	// FIXME calculate dependency if it's not initialized
 	return mod->dep;
 }
 
-KMOD_EXPORT struct kmod_module *kmod_module_get_module(struct kmod_list *l)
+KMOD_EXPORT struct kmod_module *kmod_module_get_module(const struct kmod_list *l)
 {
 	struct kmod_module *mod = l->data;
 	return kmod_module_ref(mod);
 }
 
-KMOD_EXPORT const char *kmod_module_get_name(struct kmod_module *mod)
+KMOD_EXPORT const char *kmod_module_get_name(const struct kmod_module *mod)
 {
 	// FIXME calculate name if name == NULL
 	return mod->name;
 }
 
-KMOD_EXPORT const char *kmod_module_get_path(struct kmod_module *mod)
+KMOD_EXPORT const char *kmod_module_get_path(const struct kmod_module *mod)
 {
 	// FIXME calculate path if path == NULL
 	return mod->path;
diff --git a/libkmod/libkmod-private.h b/libkmod/libkmod-private.h
index 1d32e8b..34b09ef 100644
--- a/libkmod/libkmod-private.h
+++ b/libkmod/libkmod-private.h
@@ -46,8 +46,8 @@
 	void *data;
 };
 
-struct kmod_list *kmod_list_append(struct kmod_list *list, void *data) __must_check;
-struct kmod_list *kmod_list_prepend(struct kmod_list *list, void *data) __must_check;
+struct kmod_list *kmod_list_append(struct kmod_list *list, const void *data) __must_check;
+struct kmod_list *kmod_list_prepend(struct kmod_list *list, const void *data) __must_check;
 struct kmod_list *kmod_list_remove(struct kmod_list *list);
 struct kmod_list *kmod_list_remove_data(struct kmod_list *list,
 					const void *data) __must_check;
@@ -55,7 +55,7 @@
 						unsigned int n) __must_check;
 
 /* libkmod.c */
-const char *kmod_get_dirname(struct kmod_ctx *ctx) __attribute__((nonnull(1)));
+const char *kmod_get_dirname(const struct kmod_ctx *ctx) __attribute__((nonnull(1)));
 int kmod_lookup_alias_from_config(struct kmod_ctx *ctx, const char *name, struct kmod_list **list);
 int kmod_lookup_alias_from_symbols_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list);
 int kmod_lookup_alias_from_aliases_file(struct kmod_ctx *ctx, const char *name, struct kmod_list **list);
diff --git a/libkmod/libkmod.c b/libkmod/libkmod.c
index 7dd4579..c9966e0 100644
--- a/libkmod/libkmod.c
+++ b/libkmod/libkmod.c
@@ -50,8 +50,8 @@
 	void (*log_fn)(struct kmod_ctx *ctx,
 			int priority, const char *file, int line,
 			const char *fn, const char *format, va_list args);
-	void *userdata;
-	const char *dirname;
+	const void *userdata;
+	char *dirname;
 	int log_priority;
 	struct kmod_config config;
 };
@@ -75,7 +75,7 @@
 	vfprintf(stderr, format, args);
 }
 
-const char *kmod_get_dirname(struct kmod_ctx *ctx)
+const char *kmod_get_dirname(const struct kmod_ctx *ctx)
 {
 	return ctx->dirname;
 }
@@ -93,7 +93,7 @@
 {
 	if (ctx == NULL)
 		return NULL;
-	return ctx->userdata;
+	return (void *)ctx->userdata;
 }
 
 /**
@@ -103,7 +103,7 @@
  *
  * Store custom @userdata in the library context.
  **/
-KMOD_EXPORT void kmod_set_userdata(struct kmod_ctx *ctx, void *userdata)
+KMOD_EXPORT void kmod_set_userdata(struct kmod_ctx *ctx, const void *userdata)
 {
 	if (ctx == NULL)
 		return;
@@ -129,7 +129,7 @@
 
 static const char *dirname_default_prefix = "/lib/modules";
 
-static const char *get_kernel_release(const char *dirname)
+static char *get_kernel_release(const char *dirname)
 {
 	struct utsname u;
 	char *p;
@@ -217,7 +217,7 @@
 	if (--ctx->refcount > 0)
 		return ctx;
 	INFO(ctx, "context %p released\n", ctx);
-	free((char *)ctx->dirname);
+	free(ctx->dirname);
 	kmod_free_config(ctx, &ctx->config);
 	free(ctx);
 	return NULL;
diff --git a/libkmod/libkmod.h b/libkmod/libkmod.h
index 923f7ab..d7687be 100644
--- a/libkmod/libkmod.h
+++ b/libkmod/libkmod.h
@@ -46,7 +46,7 @@
 int kmod_get_log_priority(const struct kmod_ctx *ctx);
 void kmod_set_log_priority(struct kmod_ctx *ctx, int priority);
 void *kmod_get_userdata(const struct kmod_ctx *ctx);
-void kmod_set_userdata(struct kmod_ctx *ctx, void *userdata);
+void kmod_set_userdata(struct kmod_ctx *ctx, const void *userdata);
 
 /*
  * kmod_list
@@ -54,10 +54,10 @@
  * access to kmod generated lists
  */
 struct kmod_list;
-struct kmod_list *kmod_list_next(struct kmod_list *first_entry,
-						struct kmod_list *list_entry);
-struct kmod_list *kmod_list_prev(struct kmod_list *first_entry,
-						struct kmod_list *list_entry);
+struct kmod_list *kmod_list_next(const struct kmod_list *first_entry,
+						const struct kmod_list *list_entry);
+struct kmod_list *kmod_list_prev(const struct kmod_list *first_entry,
+						const struct kmod_list *list_entry);
 #define kmod_list_foreach(list_entry, first_entry) \
 	for (list_entry = first_entry; \
 		list_entry != NULL; \
@@ -108,14 +108,14 @@
 struct kmod_module *kmod_module_ref(struct kmod_module *mod);
 struct kmod_module *kmod_module_unref(struct kmod_module *mod);
 int kmod_module_unref_list(struct kmod_list *list);
-struct kmod_module *kmod_module_get_module(struct kmod_list *l);
-struct kmod_list *kmod_module_get_dependency(struct kmod_module *mod);
+struct kmod_module *kmod_module_get_module(const struct kmod_list *l);
+struct kmod_list *kmod_module_get_dependency(const struct kmod_module *mod);
 
 int kmod_module_remove_module(struct kmod_module *mod, unsigned int flags);
 int kmod_module_insert_module(struct kmod_module *mod, unsigned int flags);
 
-const char *kmod_module_get_name(struct kmod_module *mod);
-const char *kmod_module_get_path(struct kmod_module *mod);
+const char *kmod_module_get_name(const struct kmod_module *mod);
+const char *kmod_module_get_path(const struct kmod_module *mod);
 
 #ifdef __cplusplus
 } /* extern "C" */