/*
	written by Alexander Rawass
*/

#ifdef	AR_ARP

VOID	DirName(path,dir)
STRPTR	path,dir;
{
STRPTR	base;

	base=BaseName(path);
	strncpy(dir,path,base-path);
}

#endif

VOID	VolumeName(path,volume)
STRPTR	path,volume;
{
int	i;

	i=0;

	do{
		volume[i]=path[i];
		i++;
	}while(path[i-1]!=EOS && path[i-1]!=':');
	
	volume[i]=EOS;
	if(volume[0]==':' || path[i-1]==EOS)	volume[0]=EOS;
}

VOID	StrUpper(str)
STRPTR	str;
{
	int	i;

	for(i=0;i<strlen(str);i++){
		if(str[i]>='a' && str[i]<='z')	str[i]-=32;
	}
}

VOID	UpperArgs(argc,argv)
int	argc;
STRPTR	argv[];
{
int	i;

	for(i=0;i<argc;i++){
		StrUpper(argv[i]);
	}
}

STRPTR	BSTRS(bstr)
REG	STRPTR	bstr;
{
	bstr=BADDR(bstr);
	bstr[bstr[0]+1]=EOS;
	return(bstr+1);
}

#ifdef	AR_STDIO
BOOL	fexists(name)
STRPTR	name;
{
FILE	*fh;

	fh=fopen(name,"r");
	if(fh){
		FCLOSEC(fh);
		return(TRUE);
	}
	else{
		return(FALSE);
	}
}

LONG	flength(fh)
FILE	*fh;
{
LONG	flen,opos;

	opos=ftell(fh);		/* alte position */
	fseek(fh,0,2);		/* nach hinten setzen */
	flen=ftell(fh);		/* länge holen */
	fseek(fh,opos,0);	/* alte position wieder setzen */

	return(flen);
}

#endif

#ifdef	AR_INTEL

ULONG	peekl_intel(adr)
char	*adr;
{
	UBYTE	b0,b1,b2,b3;
	ULONG	l0,l1,l2,l3;
	ULONG	erg=0;

	b3=*(adr+0);
	b2=*(adr+1);
	b1=*(adr+2);
	b0=*(adr+3);
	
	l0=b0<<24;
	l1=b1<<16;
	l2=b2<<8;
	l3=b3;
	
	erg=l3 | l2 | l1 | l0;

	return(erg);
}

UWORD	peekw_intel(adr)
char	*adr;
{
	UBYTE	b0,b1;
	UWORD	l0,l1;
	UWORD	erg=0;

	b1=*(adr+0);
	b0=*(adr+1);
	
	l0=b0<<8;
	l1=b1;
	
	erg=l1 | l0;

	return(erg);
}

ULONG	pokel_intel(adr,lword)
char	*adr;
ULONG	lword;
{

	ULONG	l0007,l0815,l1623,l2431;
	UBYTE	b0007,b0815,b1623,b2431;
	ULONG	erg;

	l0007=lword & (0xff);
	l0815=lword & (0xff00);
	l1623=lword & (0xff0000);
	l2431=lword & (0xff000000);
	
	b0007=l0007;
	b0815=l0815>>8;
	b1623=l1623>>16;
	b2431=l2431>>24;

	*(adr+0)=b0007;
	*(adr+1)=b0815;
	*(adr+2)=b1623;
	*(adr+3)=b2431;
	
	erg=peekl_intel(adr);
	
	return(erg);
}

ULONG	pokew_intel(adr,wword)
char	*adr;
UWORD	wword;
{

	UWORD	w0007,w0815;
	UBYTE	b0007,b0815;
	UWORD	erg;
	
	w0007=wword & (0xff);
	w0815=wword & (0xff00);
	
	b0007=w0007;
	b0815=w0815>>8;

	*(adr+0)=b0007;
	*(adr+1)=b0815;
	
	erg=peekw_intel(adr);
	
	return(erg);
}

#endif
