
#include <stdio.h>
#include <parlib/parlib.h>
#include <unistd.h>

int main(int argc, char **argv, char **envp)
{
	char *p_argv[] = {0, 0, 0};
	char *p_envp[] = {"LD_LIBRARY_PATH=/lib", 0};
	#define FILENAME "/bin/hello"
	//#define FILENAME "/bin/hello-sym"
	char filename[] = FILENAME;
	#if 0
	/* try some bad combos */
	int pid = sys_proc_create("garbagexxx");
	printf("Garbage pid result: %d\n", pid);

	error_t err = sys_proc_run(2342);
	printf("sys_proc_run(2342) error: %e\n", err);

	err = sys_proc_run(-1);
	cprintf("sys_proc_run(-1) error: %e\n", err);
	#endif

	#define NUM_KIDS 5
	int child_pid[NUM_KIDS];
	#if 0
	printf("U: attempting to create hello(s)\n");
	for (int i = 0; i < NUM_KIDS; i++)
		child_pid[i] = sys_proc_create("roslib_hello");

	for (int i = 0; i < NUM_KIDS; i++) {
		cprintf("U: attempting to run hello (pid: %d)\n", child_pid[i]);
		sys_proc_run(child_pid[i]);
	}
	#endif
	printf("U: attempting to create and run hello\n");
	p_argv[0] = filename;
	printf("SPAWN, I'm pid %d, filename %s\n", getpid(), filename);
	child_pid[0] = sys_proc_create(FILENAME, strlen(FILENAME), p_argv, p_envp,
	                               PROC_DUP_FGRP);
	if (child_pid[0] <= 0)
		printf("Failed to create the child\n");
	else
		if (sys_proc_run(child_pid[0]) < 0)
			printf("Failed to run the child (pid %d)\n", child_pid[0]);

	#if 0
	printf("U: attempting to create and run another hello\n");
	child_pid[1] = sys_proc_create(FILENAME, strlen(FILENAME), 0, 0);
	if (child_pid[1] <= 0)
		perror("");
	else
		if (sys_proc_run(child_pid[1]) < 0)
			perror("");
	#endif
	return 0;
}
