#include <rudiments/process.h>
#include <rudiments/charstring.h>
#include <rudiments/error.h>
#include <rudiments/stdio.h>

int main(int argc, const char **argv) {

	if (argc<3) {
		stdoutput.printf("usage: kill signal processid\n");
		process::exit(1);
	}

	int32_t	sig=SIGTERM;
	if (!charstring::compare(argv[1],"SIGINT")) {
		sig=SIGINT;
	} else if (!charstring::compare(argv[1],"SIGABRT")) {
		sig=SIGABRT;
	} else if (!charstring::compare(argv[1],"SIGFPE")) {
		sig=SIGFPE;
	} else if (!charstring::compare(argv[1],"SIGILL")) {
		sig=SIGILL;
	} else if (!charstring::compare(argv[1],"SIGSEGV")) {
		sig=SIGSEGV;
	} else if (!charstring::compare(argv[1],"SIGKILL")) {
		sig=SIGKILL;
	}

	pid_t	pid=charstring::toInteger(argv[2]);

	if (!process::sendSignal(pid,sig)) {
		stdoutput.printf("kill failed: %s\n",error::getErrorString());
		process::exit(1);
	}
	process::exit(0);
}
