Admin Panel

#include <exec/execbase.h>
#include <exec/tasks.h>
#include <proto/exec.h>
#include <dos/dos.h>
#include <dos/dosextens.h>
#include <string.h>


int GetProgramName(char * to, unsigned len) {
	struct Process * process = (struct Process *) SysBase->ThisTask;
	struct CommandLineInterface * cli = (struct CommandLineInterface *) BADDR(process->pr_CLI);
	if (cli) {
		unsigned char * bname = (unsigned char *) BADDR(cli->cli_CommandName);
		if (*bname < len - 1) {
			strncpy(to, bname + 1, *bname);
			to[*bname] = 0;
			process->pr_Result2 = 0;
			return DOSTRUE;
		}
	}
	process->pr_Result2 = ERROR_LINE_TOO_LONG;
	if (to && len)
		*to = 0;
	return DOSFALSE;
}