//	ggstd.c		gg630504 hg9ieg linux.ubuntu.gcc
//	2011-09-07 - 2025-10-24

#include <stdlib.h>
#include <string.h>

#include "ggstd.h"

SZ	szEmpty = "";
LAN	lanCur = lanHun;

//$ DSqrD
//----------------------------------------------------------------------
D		DSqrD( d_ )
D		d_;
{
return( d_*d_ );
}

//$ SaMallocPsasS
//----------------------------------------------------------------------
// memóriát foglal le
// de csak akkor bővít, ha hosszabbra van szükség
SA	SaMallocPsasS( psas_, s_ )
PSAS	psas_;
SS	s_;
{
if( psas_->sa == NULL )
	return( psas_->sa = malloc( psas_->s = s_ ) );
else	{
	if( s_ > psas_->s )
		{
		free( psas_->sa );
		return( psas_->sa = malloc( psas_->s = s_ ) );
		}
	return( psas_->sa );
	}
}

//$ SaMallocSz
//----------------------------------------------------------------------
// sz-t malloccal duplikál
SA	SaMallocSz( sz_ )
SZ	sz_;	// be:	szöveg
		// vissza:	lefoglalt szöveg
		//		NULL: hiba
{
SA	sa;

if( sz_ != NULL )
	{
	if( (sa=malloc( strlen( sz_ )+1 )) != NULL )
		strcpy( sa, sz_ );
	}
else	{
	if( (sa=malloc( 1 )) != NULL )
		*sa = chEos;
	}
return( sa );
}

//$ SzErrorR
//----------------------------------------------------------------------
SZ	SzErrorR( r_ )
R	r_;
{
switch( r_ ) {
case rSucceed:	return( "Succeed" ); break;
case rEof:	return( "End of file" ); break;





case rClose:	return( "Close" ); break;
case rFail:	return( "Fail" ); break;
case rFound:	return( "Found" ); break;
case rMkdir:	return( "Mkdir" ); break;
case rNotDir:	return( "NotDir" ); break;
case rNotFound:	return( "NotFound" ); break;
case rNotMemo:	return( "NotMemo" ); break;
case rNotRx:	return( "NotRx" ); break;
case rNotTx:	return( "NotTx" ); break;
case rNull:	return( "NULL" ); break;
case rOpen:	return( "Open" ); break;
case rParam:	return( "Param" ); break;
case rRead:	return( "Read" ); break;
case rRecursive:	return( "Recursive" ); break;
case rRename:	return( "Rename" ); break;
case rSeek:	return( "Seek" ); break;
case rTimeOut:	return( "TimeOut" ); break;
case rType:	return( "Type" ); break;
case rWrite:	return( "Write" ); break;


default:	if( r_<0 ) r_ = -r_;
		return( strerror( r_ ) ); break;
	}
}

//$ U2HomePu2host
//----------------------------------------------------------------------
U2	U2HomePu2host( p_ )
PU1	p_;	
{
U2	u2;

EndianPh2Pb2( &u2, p_ );
return( u2 );
}

//$ U4HomePu3host
//----------------------------------------------------------------------
U4	U4HomePu3host( p_ )
PU1	p_;	
{
U4	u4;

u4 = 0;
EndianPh3Pb3( &u4, p_ );
return( u4 );
}

//$ U4HomePu4host
//----------------------------------------------------------------------
U4	U4HomePu4host( p_ )
PU1	p_;	
{
U4	u4;

EndianPh4Pb4( &u4, p_ );
return( u4 );
}


//$ RInitPraSs
//----------------------------------------------------------------------
R	RInitPraSs( pra_, ss_ )
PRA	pra_;
SS	ss_;
{
#if NullPtrChk
if( pra_ == NULL )	return( rNull );
#endif
pra_->pv	= NULL;
pra_->ss	= ss_;
pra_->ixMax	= 0;
pra_->ixLim	= 0;
return( rSucceed );
}


//$ RFreePra
//----------------------------------------------------------------------
R	RFreePra( pra_ )
PRA	pra_;
{
#if NullPtrChk
if( pra_ == NULL )	return( rNull );
#endif
iffree( pra_->pv );
pra_->ss	= 1;
pra_->ixMax	= 0;
pra_->ixLim	= 0;
return( rSucceed );
}


//$ RPushPraPv
//----------------------------------------------------------------------
R	RPushPraPv( pra_, pv_ )
PRA	pra_;
PV	pv_;
{
PV	pvNew;
IX	ixNew;

#if NullPtrChk
if( pra_ == NULL )	return( rNull );
if( pv_ == NULL )	return( rNull );
#endif

if( pra_->ixMax >= pra_->ixLim )
	{
	ixNew = pra_->ixLim != 0 ? 2*pra_->ixLim : 64;
	pvNew = realloc( pra_->pv, ixNew * pra_->ss );
	if( pvNew == NULL )
		return( rNotMemo );
	pra_->pv	= pvNew;
	pra_->ixLim	= ixNew;
	}

memcpy( (char *)pra_->pv+( pra_->ixMax*pra_->ss ), pv_, pra_->ss );
pra_->ixMax++;

return( rSucceed );
}

//@

