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" */