[CRIU] [PATCH 2/2] c-lib: converted `char *`-args to `const char *`
Andrei Vagin
avagin at gmail.com
Thu Jan 24 20:10:51 MSK 2019
On Fri, Dec 21, 2018 at 08:00:21AM +0100, Martin Wührer wrote:
> As most of the `criu_(local_)*` functions already call `strdup()`,
> it is possible, to change the function signature to `const char *`.
>
> As the struct `criu_opts` already contains a `const char *
> service_binary`, also the member `service_address` is changed to
> `const char`.
>
> Additonally, also the function `criu_local_set_freeze_cgroup()` now
> calls `strdup()`.
This patch changes the public API, will it break existing users?
>
> Signed-off-by: Martin Wührer <martin.wuehrer at artech.at>
> ---
> lib/c/criu.c | 65 ++++++++++++++++++++++++++--------------------------
> lib/c/criu.h | 58 +++++++++++++++++++++++-----------------------
> 2 files changed, 62 insertions(+), 61 deletions(-)
>
> diff --git a/lib/c/criu.c b/lib/c/criu.c
> index 5318fc17..b11f3236 100644
> --- a/lib/c/criu.c
> +++ b/lib/c/criu.c
> @@ -25,7 +25,7 @@ struct criu_opts {
> int (*notify)(char *action, criu_notify_arg_t na);
> enum criu_service_comm service_comm;
> union {
> - char *service_address;
> + const char *service_address;
> int service_fd;
> const char *service_binary;
> };
> @@ -45,7 +45,7 @@ void criu_set_service_comm(enum criu_service_comm comm)
> criu_local_set_service_comm(global_opts, comm);
> }
>
> -void criu_local_set_service_address(criu_opts *opts, char *path)
> +void criu_local_set_service_address(criu_opts *opts, const char *path)
> {
> if (path)
> opts->service_address = path;
> @@ -53,7 +53,7 @@ void criu_local_set_service_address(criu_opts *opts, char *path)
> opts->service_address = CR_DEFAULT_SERVICE_ADDRESS;
> }
>
> -void criu_set_service_address(char *path)
> +void criu_set_service_address(const char *path)
> {
> criu_local_set_service_address(global_opts, path);
> }
> @@ -221,6 +221,7 @@ void criu_local_free_opts(criu_opts *opts)
> free(opts->rpc->cgroup_props);
> free(opts->rpc->parent_img);
> free(opts->rpc->root);
> + free(opts->rpc->freeze_cgroup);
> free(opts->rpc->log_file);
> free(opts->rpc);
> }
> @@ -312,12 +313,12 @@ void criu_set_images_dir_fd(int fd)
> criu_local_set_images_dir_fd(global_opts, fd);
> }
>
> -void criu_local_set_parent_images(criu_opts *opts, char *path)
> +void criu_local_set_parent_images(criu_opts *opts, const char *path)
> {
> opts->rpc->parent_img = strdup(path);
> }
>
> -void criu_set_parent_images(char *path)
> +void criu_set_parent_images(const char *path)
> {
> criu_local_set_parent_images(global_opts, path);
> }
> @@ -523,12 +524,12 @@ void criu_set_log_level(int log_level)
> criu_local_set_log_level(global_opts, log_level);
> }
>
> -void criu_local_set_root(criu_opts *opts, char *root)
> +void criu_local_set_root(criu_opts *opts, const char *root)
> {
> opts->rpc->root = strdup(root);
> }
>
> -void criu_set_root(char *root)
> +void criu_set_root(const char *root)
> {
> criu_local_set_root(global_opts, root);
> }
> @@ -555,12 +556,12 @@ void criu_set_manage_cgroups_mode(enum criu_cg_mode mode)
> criu_local_set_manage_cgroups_mode(global_opts, mode);
> }
>
> -void criu_local_set_freeze_cgroup(criu_opts *opts, char *name)
> +void criu_local_set_freeze_cgroup(criu_opts *opts, const char *name)
> {
> - opts->rpc->freeze_cgroup = name;
> + opts->rpc->freeze_cgroup = strdup(name);
> }
>
> -void criu_set_freeze_cgroup(char *name)
> +void criu_set_freeze_cgroup(const char *name)
> {
> criu_local_set_freeze_cgroup(global_opts, name);
> }
> @@ -608,12 +609,12 @@ void criu_set_ext_masters(bool val)
> criu_local_set_ext_masters(global_opts, val);
> }
>
> -void criu_local_set_log_file(criu_opts *opts, char *log_file)
> +void criu_local_set_log_file(criu_opts *opts, const char *log_file)
> {
> opts->rpc->log_file = strdup(log_file);
> }
>
> -void criu_set_log_file(char *log_file)
> +void criu_set_log_file(const char *log_file)
> {
> criu_local_set_log_file(global_opts, log_file);
> }
> @@ -660,7 +661,7 @@ int criu_set_exec_cmd(int argc, char *argv[])
> return criu_local_set_exec_cmd(global_opts, argc, argv);
> }
>
> -int criu_local_add_ext_mount(criu_opts *opts, char *key, char *val)
> +int criu_local_add_ext_mount(criu_opts *opts, const char *key, const char *val)
> {
> int nr;
> ExtMountMap **a, *m;
> @@ -697,12 +698,12 @@ er:
> return -ENOMEM;
> }
>
> -int criu_add_ext_mount(char *key, char *val)
> +int criu_add_ext_mount(const char *key, const char *val)
> {
> return criu_local_add_ext_mount(global_opts, key, val);
> }
>
> -int criu_local_add_cg_root(criu_opts *opts, char *ctrl, char *path)
> +int criu_local_add_cg_root(criu_opts *opts, const char *ctrl, const char *path)
> {
> int nr;
> CgroupRoot **a, *root;
> @@ -743,12 +744,12 @@ er:
> return -ENOMEM;
> }
>
> -int criu_add_cg_root(char *ctrl, char *path)
> +int criu_add_cg_root(const char *ctrl, const char *path)
> {
> return criu_local_add_cg_root(global_opts, ctrl, path);
> }
>
> -int criu_local_add_veth_pair(criu_opts *opts, char *in, char *out)
> +int criu_local_add_veth_pair(criu_opts *opts, const char *in, const char *out)
> {
> int nr;
> CriuVethPair **a, *p;
> @@ -785,12 +786,12 @@ er:
> return -ENOMEM;
> }
>
> -int criu_add_veth_pair(char *in, char *out)
> +int criu_add_veth_pair(const char *in, const char *out)
> {
> return criu_local_add_veth_pair(global_opts, in, out);
> }
>
> -int criu_local_add_enable_fs(criu_opts *opts, char *fs)
> +int criu_local_add_enable_fs(criu_opts *opts, const char *fs)
> {
> int nr;
> char *str = NULL;
> @@ -821,13 +822,13 @@ err:
> return -ENOMEM;
> }
>
> -int criu_add_enable_fs(char *fs)
> +int criu_add_enable_fs(const char *fs)
> {
> return criu_local_add_enable_fs(global_opts, fs);
> }
>
>
> -int criu_local_add_skip_mnt(criu_opts *opts, char *mnt)
> +int criu_local_add_skip_mnt(criu_opts *opts, const char *mnt)
> {
> int nr;
> char *str = NULL;
> @@ -858,7 +859,7 @@ err:
> return -ENOMEM;
> }
>
> -int criu_local_add_irmap_path(criu_opts *opts, char *path)
> +int criu_local_add_irmap_path(criu_opts *opts, const char *path)
> {
> int nr;
> char *my_path;
> @@ -890,7 +891,7 @@ err:
> return -ENOMEM;
> }
>
> -int criu_local_add_cg_props(criu_opts *opts, char *stream)
> +int criu_local_add_cg_props(criu_opts *opts, const char *stream)
> {
> char *new;
>
> @@ -903,7 +904,7 @@ int criu_local_add_cg_props(criu_opts *opts, char *stream)
> return 0;
> }
>
> -int criu_local_add_cg_props_file(criu_opts *opts, char *path)
> +int criu_local_add_cg_props_file(criu_opts *opts, const char *path)
> {
> char *new;
>
> @@ -916,7 +917,7 @@ int criu_local_add_cg_props_file(criu_opts *opts, char *path)
> return 0;
> }
>
> -int criu_local_add_cg_dump_controller(criu_opts *opts, char *name)
> +int criu_local_add_cg_dump_controller(criu_opts *opts, const char *name)
> {
> char **new, *ctrl_name;
> size_t nr;
> @@ -940,7 +941,7 @@ int criu_local_add_cg_dump_controller(criu_opts *opts, char *name)
> return 0;
> }
>
> -int criu_add_skip_mnt(char *mnt)
> +int criu_add_skip_mnt(const char *mnt)
> {
> return criu_local_add_skip_mnt(global_opts, mnt);
> }
> @@ -956,12 +957,12 @@ void criu_set_ghost_limit(unsigned int limit)
> criu_local_set_ghost_limit(global_opts, limit);
> }
>
> -int criu_add_irmap_path(char *path)
> +int criu_add_irmap_path(const char *path)
> {
> return criu_local_add_irmap_path(global_opts, path);
> }
>
> -int criu_local_add_inherit_fd(criu_opts *opts, int fd, char *key)
> +int criu_local_add_inherit_fd(criu_opts *opts, int fd, const char *key)
> {
> int nr;
> InheritFd **a, *f;
> @@ -997,12 +998,12 @@ er:
> return -ENOMEM;
> }
>
> -int criu_add_inherit_fd(int fd, char *key)
> +int criu_add_inherit_fd(int fd, const char *key)
> {
> return criu_local_add_inherit_fd(global_opts, fd, key);
> }
>
> -int criu_local_add_external(criu_opts *opts, char *key)
> +int criu_local_add_external(criu_opts *opts, const char *key)
> {
> int nr;
> char **a, *e = NULL;
> @@ -1026,7 +1027,7 @@ err:
> return -ENOMEM;
> }
>
> -int criu_add_external(char *key)
> +int criu_add_external(const char *key)
> {
> return criu_local_add_external(global_opts, key);
> }
> @@ -1498,7 +1499,7 @@ int criu_local_restore_child(criu_opts *opts)
> {
> int sk, ret = -1;
> enum criu_service_comm saved_comm;
> - char *saved_comm_data;
> + const char *saved_comm_data;
> bool save_comm;
> CriuReq req = CRIU_REQ__INIT;
> CriuResp *resp = NULL;
> diff --git a/lib/c/criu.h b/lib/c/criu.h
> index e244be85..12508c81 100644
> --- a/lib/c/criu.h
> +++ b/lib/c/criu.h
> @@ -41,7 +41,7 @@ enum criu_cg_mode {
> CRIU_CG_MODE_DEFAULT,
> };
>
> -void criu_set_service_address(char *path);
> +void criu_set_service_address(const char *path);
> void criu_set_service_fd(int fd);
> void criu_set_service_binary(const char *path);
>
> @@ -60,7 +60,7 @@ void criu_free_opts(void);
>
> void criu_set_pid(int pid);
> void criu_set_images_dir_fd(int fd); /* must be set for dump/restore */
> -void criu_set_parent_images(char *path);
> +void criu_set_parent_images(const char *path);
> void criu_set_work_dir_fd(int fd);
> void criu_set_leave_running(bool leave_running);
> void criu_set_ext_unix_sk(bool ext_unix_sk);
> @@ -76,26 +76,26 @@ void criu_set_auto_dedup(bool auto_dedup);
> void criu_set_force_irmap(bool force_irmap);
> void criu_set_link_remap(bool link_remap);
> void criu_set_log_level(int log_level);
> -void criu_set_log_file(char *log_file);
> +void criu_set_log_file(const char *log_file);
> void criu_set_cpu_cap(unsigned int cap);
> -void criu_set_root(char *root);
> +void criu_set_root(const char *root);
> void criu_set_manage_cgroups(bool manage);
> void criu_set_manage_cgroups_mode(enum criu_cg_mode mode);
> -void criu_set_freeze_cgroup(char *name);
> +void criu_set_freeze_cgroup(const char *name);
> void criu_set_timeout(unsigned int timeout);
> void criu_set_auto_ext_mnt(bool val);
> void criu_set_ext_sharing(bool val);
> void criu_set_ext_masters(bool val);
> int criu_set_exec_cmd(int argc, char *argv[]);
> -int criu_add_ext_mount(char *key, char *val);
> -int criu_add_veth_pair(char *in, char *out);
> -int criu_add_cg_root(char *ctrl, char *path);
> -int criu_add_enable_fs(char *fs);
> -int criu_add_skip_mnt(char *mnt);
> +int criu_add_ext_mount(const char *key, const char *val);
> +int criu_add_veth_pair(const char *in, const char *out);
> +int criu_add_cg_root(const char *ctrl, const char *path);
> +int criu_add_enable_fs(const char *fs);
> +int criu_add_skip_mnt(const char *mnt);
> void criu_set_ghost_limit(unsigned int limit);
> -int criu_add_irmap_path(char *path);
> -int criu_add_inherit_fd(int fd, char *key);
> -int criu_add_external(char *key);
> +int criu_add_irmap_path(const char *path);
> +int criu_add_inherit_fd(int fd, const char *key);
> +int criu_add_external(const char *key);
>
> /*
> * The criu_notify_arg_t na argument is an opaque
> @@ -161,7 +161,7 @@ typedef struct criu_opts criu_opts;
> int criu_local_init_opts(criu_opts **opts);
> void criu_local_free_opts(criu_opts *opts);
>
> -void criu_local_set_service_address(criu_opts *opts, char *path);
> +void criu_local_set_service_address(criu_opts *opts, const char *path);
> void criu_local_set_service_fd(criu_opts *opts, int fd);
> void criu_local_set_service_comm(criu_opts *opts, enum criu_service_comm);
>
> @@ -169,7 +169,7 @@ void criu_local_set_service_fd(criu_opts *opts, int fd);
>
> void criu_local_set_pid(criu_opts *opts, int pid);
> void criu_local_set_images_dir_fd(criu_opts *opts, int fd); /* must be set for dump/restore */
> -void criu_local_set_parent_images(criu_opts *opts, char *path);
> +void criu_local_set_parent_images(criu_opts *opts, const char *path);
> void criu_local_set_service_binary(criu_opts *opts, const char *path);
> void criu_local_set_work_dir_fd(criu_opts *opts, int fd);
> void criu_local_set_leave_running(criu_opts *opts, bool leave_running);
> @@ -186,29 +186,29 @@ void criu_local_set_auto_dedup(criu_opts *opts, bool auto_dedup);
> void criu_local_set_force_irmap(criu_opts *opts, bool force_irmap);
> void criu_local_set_link_remap(criu_opts *opts, bool link_remap);
> void criu_local_set_log_level(criu_opts *opts, int log_level);
> -void criu_local_set_log_file(criu_opts *opts, char *log_file);
> +void criu_local_set_log_file(criu_opts *opts, const char *log_file);
> void criu_local_set_cpu_cap(criu_opts *opts, unsigned int cap);
> -void criu_local_set_root(criu_opts *opts, char *root);
> +void criu_local_set_root(criu_opts *opts, const char *root);
> void criu_local_set_manage_cgroups(criu_opts *opts, bool manage);
> void criu_local_set_manage_cgroups_mode(criu_opts *opts, enum criu_cg_mode mode);
> -void criu_local_set_freeze_cgroup(criu_opts *opts, char *name);
> +void criu_local_set_freeze_cgroup(criu_opts *opts, const char *name);
> void criu_local_set_timeout(criu_opts *opts, unsigned int timeout);
> void criu_local_set_auto_ext_mnt(criu_opts *opts, bool val);
> void criu_local_set_ext_sharing(criu_opts *opts, bool val);
> void criu_local_set_ext_masters(criu_opts *opts, bool val);
> int criu_local_set_exec_cmd(criu_opts *opts, int argc, char *argv[]);
> -int criu_local_add_ext_mount(criu_opts *opts, char *key, char *val);
> -int criu_local_add_veth_pair(criu_opts *opts, char *in, char *out);
> -int criu_local_add_cg_root(criu_opts *opts, char *ctrl, char *path);
> -int criu_local_add_enable_fs(criu_opts *opts, char *fs);
> -int criu_local_add_skip_mnt(criu_opts *opts, char *mnt);
> +int criu_local_add_ext_mount(criu_opts *opts, const char *key, const char *val);
> +int criu_local_add_veth_pair(criu_opts *opts, const char *in, const char *out);
> +int criu_local_add_cg_root(criu_opts *opts, const char *ctrl, const char *path);
> +int criu_local_add_enable_fs(criu_opts *opts, const char *fs);
> +int criu_local_add_skip_mnt(criu_opts *opts, const char *mnt);
> void criu_local_set_ghost_limit(criu_opts *opts, unsigned int limit);
> -int criu_local_add_irmap_path(criu_opts *opts, char *path);
> -int criu_local_add_cg_props(criu_opts *opts, char *stream);
> -int criu_local_add_cg_props_file(criu_opts *opts, char *path);
> -int criu_local_add_cg_dump_controller(criu_opts *opts, char *name);
> -int criu_local_add_inherit_fd(criu_opts *opts, int fd, char *key);
> -int criu_local_add_external(criu_opts *opts, char *key);
> +int criu_local_add_irmap_path(criu_opts *opts, const char *path);
> +int criu_local_add_cg_props(criu_opts *opts, const char *stream);
> +int criu_local_add_cg_props_file(criu_opts *opts, const char *path);
> +int criu_local_add_cg_dump_controller(criu_opts *opts, const char *name);
> +int criu_local_add_inherit_fd(criu_opts *opts, int fd, const char *key);
> +int criu_local_add_external(criu_opts *opts, const char *key);
>
> void criu_local_set_notify_cb(criu_opts *opts, int (*cb)(char *action, criu_notify_arg_t na));
>
> --
> 2.19.2
>
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu
More information about the CRIU
mailing list