/*	KILL Befehl fuer AMIGA	*/
/*	----------------------	*/

/*	Benutzung :  kill taskadresse	*/

/*	von: Peter Mackenthun	*/

#include <exec/execbase.h>

extern struct ExecBase *SysBase;

main(argc,argv)
int argc;
char *argv[];
{
long adr;
char gef='n';
struct Task *task;

if(argc!=2||strcmp(argv[1],"?")==0)		/* Wurde Argument uebergeben ? */
   {
   printf("Taskkiller by P.Mackenthun\n");
   printf("Usage: %s Hex-Adress\n",argv[0]);
   return(0);
   }

sscanf(argv[1],"%lx",&adr);		/* Hex-Zahl wandeln */

Disable();			/* Keine Taskswitches */

task=(struct Task *)SysBase->TaskReady.lh_Head;	/* Suchen in Task-Ready Liste */
while(task!=0L&&gef=='n')
	{
	if(adr==task) gef='j';
	task=task->tc_Node.ln_Succ;
	}

task=(struct Task *)SysBase->TaskWait.lh_Head; /* Suchen in Task-Wait Liste */
while(task!=0L&&gef!='n')
	{
	if(adr==task) gef='j';
	task=task->tc_Node.ln_Succ;
	}

Enable();

if(gef=='n'||adr==0L)	/* Nicht gefunden ? */ 
   {
   printf("ERROR: Task not in List\n");
   return(0);
   }
RemTask(adr);		/* Task entfernen */
}
