[CRIU] [PATCH 2/2] c-lib: converted `char *`-args to `const char *`

Adrian Reber adrian at lisas.de
Thu Jan 24 22:09:18 MSK 2019


On Thu, Jan 24, 2019 at 09:10:51AM -0800, Andrei Vagin wrote:
> 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?

If it will break existing users we would need to increase the SO name of
the library.

		Adrian

> > 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
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list