Blame sysdeps/common/procargs.c

Packit Service 407539
#include <config.h>
Packit Service 407539
#include <glibtop/procargs.h>
Packit Service 407539
Packit Service 407539
#include <glib.h>
Packit Service 407539
#include <string.h>
Packit Service 407539
Packit Service 407539
/*
Packit Service 407539
  Splitting args0
Packit Service 407539
  * args0 [......0..   ....0.........0]
Packit Service 407539
  * Returned value must be free with g_strfreev
Packit Service 407539
  * args0 is g_free()d
Packit Service 407539
  */
Packit Service 407539
static char **
Packit Service 407539
split_args0(const char * const args0, size_t size)
Packit Service 407539
{
Packit Service 407539
	GPtrArray *argv = g_ptr_array_new();
Packit Service 407539
	const char *arg;
Packit Service 407539
Packit Service 407539
	/* remember that if there were no args, args0 == NULL and size == 0 */
Packit Service 407539
	for (arg = args0; arg < (args0 + size); arg += strlen(arg) + 1) {
Packit Service 407539
		g_ptr_array_add(argv, g_strdup(arg));
Packit Service 407539
	}
Packit Service 407539
Packit Service 407539
	g_ptr_array_add(argv, NULL);
Packit Service 407539
Packit Service 407539
	g_free((void* /* remove constness */) args0);
Packit Service 407539
Packit Service 407539
	return (char**) g_ptr_array_free(argv, FALSE);
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
Packit Service 407539
Packit Service 407539
Packit Service 407539
/*
Packit Service 407539
 * public functions
Packit Service 407539
 */
Packit Service 407539
Packit Service 407539
char **
Packit Service 407539
glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf,
Packit Service 407539
			 pid_t pid, unsigned max_len)
Packit Service 407539
{
Packit Service 407539
	const char * const args0 = glibtop_get_proc_args_l(server, buf, pid, max_len);
Packit Service 407539
	return split_args0(args0, buf->size);
Packit Service 407539
}