Пример #1
0
BOOL CReg::RenameKey(LPCTSTR pOld, LPCTSTR pNew)
{_STTEX();
	CRKey *pRk = FindKey( pOld );
	if ( pRk == NULL ) return FALSE;

	return pRk->SetName( pNew );
}
Пример #2
0
BOOL CRKey::DeleteSubKeys(HKEY hRoot, LPCTSTR pKey)
{_STTEX();
	HKEY		hKey;
	char		szKey[ CWF_STRSIZE ];
	DWORD		dwSize = CWF_STRSIZE - 1;

	// Open The Key
	if( RegOpenKeyEx( hRoot, pKey, 0, KEY_ALL_ACCESS, &hKey ) != ERROR_SUCCESS )
		return FALSE;

	// For each sub key
	while ( RegEnumKeyEx(	hKey, 0, szKey, &dwSize, 
							NULL, NULL, NULL, NULL ) == ERROR_SUCCESS )
	{
		// A little recursion
		DeleteSubKeys( hKey, szKey );

		// Attempt to delete the key
		RegDeleteKey( hKey, szKey );

		// Reset size
		dwSize = CWF_STRSIZE - 1;

	} // end while

	// Close the key
	RegCloseKey( hKey );

	return TRUE;
}
Пример #3
0
BOOL CAutoReg::SetDefault(	LPREGENTRY pReg, DWORD dwDef, 
						void* pvoidDef, DWORD dwDefLength )
{_STTEX();
	if ( pReg == NULL ) return FALSE;
	
	pReg->dwDef = dwDef;
	if ( pvoidDef == NULL )
	{
		pReg->dwDefSource = 1;
		pReg->pvoidDef = NULL;
		pReg->dwDefLength = sizeof( DWORD );
	} // end if
	else
	{	
		if ( dwDefLength == 0 )
		{
			pReg->dwDefSource = 2;
			pReg->pvoidDef = NULL;
			strcpy( pReg->szDef, (char*)pvoidDef );
			pReg->dwDefLength = strlen( pReg->szDef ) + 1;
		} // end if
		else
		{
			pReg->dwDefSource = 0;
			pReg->dwDefLength = dwDefLength;
			pReg->pvoidDef = pvoidDef;
		} // end else
	} // end else
	return TRUE;
}
Пример #4
0
LPREGVALUE CRKey::Get( LPCTSTR pName, double *pd )
{_STTEX();
	if ( pName == NULL || pd == NULL ) return NULL;
	LPREGVALUE prv = (LPREGVALUE)Find( pName );
	if ( prv == NULL ) return NULL;
	return Get( prv, pd );
}
Пример #5
0
LPCTSTR CRKey::GetSz(LPCTSTR pName, LPCTSTR pDefault)
{_STTEX();
	// Get the reg object
	if ( pName == NULL ) pName = "";
	LPREGVALUE prv = (LPREGVALUE)Find( pName );
	return GetSz( prv, pDefault );
}
Пример #6
0
BOOL CCfgFile::Copy(HGROUP hGroup, CRKey *pRk)
{_STTEX();
	// Sanity check
	if ( hGroup == NULL || pRk == NULL ) return FALSE;

	LPREGVALUE prv = NULL;
	while ( ( prv = (LPREGVALUE)pRk->GetNext( prv ) ) != NULL )
	{
		switch ( prv->type )
		{
			case REG_DWORD :
				SetValue( hGroup, prv->cpkey, *( (LPDWORD)prv->data ) );
				break;

			case REG_SZ :
				SetValue( hGroup, prv->cpkey, (LPCTSTR)prv->pcdata );
				break;

			default :
				SetValue( hGroup, prv->cpkey, prv->data, prv->size );
				break;

		} // end switch

	} // end while

	return TRUE;
}
Пример #7
0
BOOL CRKey::GetKeyFromName(LPCTSTR pName, PHKEY phKey, LPSTR pKey)
{_STTEX();
	if ( pName == NULL ) return FALSE;

	// Get key name
	DWORD k, keys = sizeof( g_keytypes ) / sizeof( KEYTYPES );
	for (	k = 0; 
			k < keys && 
			strnicmp( pName, g_keytypes[ k ].name, strlen( g_keytypes[ k ].name ) ) != 0; 
			k++ );

	// Do they want the root key 
	if ( k < keys ) { if ( phKey != NULL ) *phKey = g_keytypes[ k ].key; }
	else if ( phKey != NULL ) phKey = NULL;

	// Do they want the key name
	if ( pKey != NULL )
	{	
		// Skip key type
		DWORD off = strlen( g_keytypes[ k ].name );

		// Find separator and skip
		while ( pName[ off ] != 0 && pName[ off ] == '/' || pName[ off ] == '\\' ) off++;
		while ( pName[ off ] == '/' || pName[ off ] == '\\' ) off++;

		// Copy the key name
		if ( k < keys && pName[ off ] != 0 ) strcpy( pKey, &pName[ off ] );
		else *pKey = 0;

	} // end if
	
	return ( k < keys );
}
Пример #8
0
CStr& CStr::operator =(int i)
{_STTEX();
	char num[ 32 ];
	wsprintf( num, "%i", i );
	copy( num );
	return *this;
}
Пример #9
0
LPCTSTR CStr::Set(double n, LPCTSTR pTemplate)
{_STTEX();
	char num[ 32 ];
	sprintf( num, pTemplate, n );
	*this = num;
	return str();
}
Пример #10
0
CStr& CStr::operator =(unsigned long ul)
{_STTEX();
	char num[ 32 ];
	wsprintf( num, "%lu", ul );
	copy( num );
	return *this;
}
Пример #11
0
CStr& CStr::operator =(unsigned int ui)
{_STTEX();
	char num[ 32 ];
	wsprintf( num, "%u", ui );
	copy( num );
	return *this;
}
Пример #12
0
CStr& CStr::operator +=(CStr &str)
{_STTEX();
	DWORD end = strlen();
	if ( grow( str.strlen() + end + 1 ) )
		strcpy( &( ptr()[ end ] ), str.ptr() );
	return *this;
}
Пример #13
0
BOOL CReg::DeleteValue(LPCTSTR pKey, LPCTSTR pValue)
{_STTEX();
	CRKey *pRk = FindKey( pKey );
	if ( pRk == NULL ) return FALSE;

	return pRk->DeleteValue( pValue );
}
Пример #14
0
DWORD CReg::ahtoul( LPCTSTR pBuffer, BYTE ucBytes )
{_STTEX();
	DWORD num, i;
                                              
	num = 0; 

	// For Each ASCII Digit
	for ( i = 0; i < ucBytes; i++ )
	{
		// Convert ASCII Digit Between 0 And 9
		if ( pBuffer[ i ] >= '0' && pBuffer[ i ] <= '9' )
			num = ( num << 4 ) + ( pBuffer[ i ] - '0' );
		
		// Convert ASCII Digit Between A And F
		else if ( pBuffer[ i ] >= 'A' && pBuffer[ i ] <= 'F' )
			num = ( num << 4 ) + ( pBuffer[ i ] - 'A' ) + 10;

		// Convert ASCII Digit Between a And f
		else if ( pBuffer[ i ] >= 'a' && pBuffer[ i ] <= 'f' )
			num = ( num << 4 ) + ( pBuffer[ i ] - 'a' ) + 10;

	} // end for
    return num;	

} // end ahtou()
Пример #15
0
void CCfgFile::Destroy()
{_STTEX();
	// For each group
	while ( m_pHead != NULL )
	{
		LPCFGGROUPINFO next = m_pHead->pNext;

		// Delete all elements
		DeleteElements( m_pHead );

		// For good measure
		m_pHead->tail = NULL;
		m_pHead->size = 0;

		// Delete this element
		delete m_pHead;
		m_pHead = next;

	} // end while

	m_pTail = NULL;
	m_dwSize = 0;

	m_dwErrors = 0;

	m_hCurGroup = NULL;

	*m_szFileName = 0;
}
Пример #16
0
CStr& CStr::operator =(long n)
{_STTEX();
	char num[ 32 ];
	wsprintf( num, "%li", n );
	copy( num );
	return *this;
}
Пример #17
0
HGROUP CCfgFile::AddGroup(LPCTSTR pGroup)
{_STTEX();
	// Does this group already exist?
	LPCFGGROUPINFO	node = FindGroup( pGroup );
	if ( node != NULL ) return node;

	// Create new group node
	node = new CFGGROUPINFO;
	if ( node == NULL ) return NULL;
	ZeroMemory( node, sizeof( CFGGROUPINFO ) );

	// Copy group name
	if ( pGroup != NULL ) { strcpy_sz( node->name, pGroup ); }
	else *node->name = 0;

	// Add this node to the list
	node->pNext = NULL;
	node->pPrev = m_pTail;
	if ( m_pTail == NULL ) m_pHead = node;
	else m_pTail->pNext = node;
	m_pTail = node;
	m_dwSize++;	

	return node;
}
Пример #18
0
CStr& CStr::operator =(double n)
{_STTEX();
	char num[ 32 ];
	sprintf( num, "%g", n );
	copy( num );
	return *this;
}
Пример #19
0
BOOL CVar::RemoveVar(LPCTSTR pVar)
{_STTEX();
	LPVAR node = FindVar( pVar );
	if ( node == NULL ) return FALSE;
	Delete( node );
	return TRUE;
}
Пример #20
0
CStr& CStr::operator +=(long n)
{_STTEX();
	char num[ 32 ];
	wsprintf( num, "%li", n );
	*this += num;
	return *this;
}
Пример #21
0
LPREGVALUE CRKey::Get( LPCTSTR pName, LPDWORD pdw )
{_STTEX();
	if ( pName == NULL || pdw == NULL ) return NULL;
	LPREGVALUE prv = (LPREGVALUE)Find( pName );
	if ( prv == NULL ) return NULL;
	return Get( prv, pdw );
}
Пример #22
0
CStr& CStr::operator +=(LPCTSTR str)
{_STTEX();
	DWORD end = strlen();
	if ( grow( ::strlen( str ) + end + 1 ) )
		strcpy( &( ptr()[ end ] ), str );
	return *this;
}
Пример #23
0
LPREGVALUE CRKey::Get(LPCTSTR pName, void *ptr, DWORD size)
{_STTEX();
	if ( pName == NULL || ptr == NULL || size == 0 ) return NULL;
	LPREGVALUE prv = (LPREGVALUE)Find( pName );
	if ( prv == NULL ) return NULL;
	return Get( prv, ptr, size );
}
Пример #24
0
CStr& CStr::operator +=(double n)
{_STTEX();
	char num[ 32 ];
	sprintf( num, "%f", n );
	*this += num;
	return *this;
}
Пример #25
0
CRKey::~CRKey()
{_STTEX();
	m_name.destroy();
	m_num.destroy();

	Destroy();
}
Пример #26
0
BOOL CCfgFile::RemoveElement(LPCTSTR pGroup, LPCTSTR pElement)
{_STTEX();
	HGROUP hGroup = FindGroup( pGroup );
	LPCFGELEMENTINFO pcei = FindElement( hGroup, pElement );

	return RemoveElement( hGroup, pcei );
}
Пример #27
0
BOOL CRKey::Replace(LPCTSTR pSrc, LPCTSTR pDst)
{_STTEX();
	// Open files
	CWinFile src, dst;
	if ( !src.OpenExisting( pSrc, GENERIC_READ ) ) return FALSE;
	if ( !dst.OpenNew( pDst, GENERIC_WRITE ) ) return FALSE;

	// Read in data
	TMem< BYTE > in;	
	if ( !in.allocate( src.Size() ) ) return FALSE;
	if ( !src.Read( in.ptr(), in.size() ) ) return FALSE;
	src.Close();

	// Run replace function
	CPipe	outpipe;
	DWORD	op = 0, i = 0;
	char	token[ 256 ];
	while ( Replace(	&outpipe, &op, in.str(), in.size(), 
						NULL, NULL, token, NULL, &i ) )
	{

	} // end while

	// Write out the data
	return dst.Write( outpipe.GetBuffer(), outpipe.GetBufferSize() );
}
Пример #28
0
BOOL CCfgFile::CanonicalizeBuffer(LPSTR str, LPBYTE buf, DWORD size)
{_STTEX();
	// Sanity check
	if ( str == NULL || buf == NULL || size == 0 )
		return FALSE;

	DWORD i = 0, p = 0;
	while ( i < size )
	{
		// Normal characters
		if ( buf[ i ] > ' ' && buf[ i ] <= '~' && buf[ i ] != '=' && 
			 buf[ i ] != '\"' && buf[ i ] != '&' && buf[ i ] != '%' && buf[ i ] != '+' )
			str[ p++ ] = buf[ i++ ];

		// Binary characters
		else
		{	wsprintf( &str[ p ], "%%%02lX", (DWORD)buf[ i++ ] );
			p += 3;
		} // end else

	} // end for

	// NULL terminate
	str[ p ] = NULL;

	return TRUE;
}
Пример #29
0
BOOL CAutoReg::DeleteSubKeys ( HKEY hRoot, LPCTSTR pKey )
{_STTEX();
	HKEY		hKey;
	char		szKey[ MAX_PATH ];
	DWORD		dwSize = MAX_PATH - 1;
	FILETIME	ft;

	ZeroMemory( (LPVOID)&ft, sizeof( FILETIME ) );

	// Open The Key
	if( RegOpenKeyEx(	hRoot, pKey, 0, KEY_ALL_ACCESS, &hKey ) != ERROR_SUCCESS )
		return FALSE;

	// For each sub key
	while ( RegEnumKeyEx(	hKey, 0, szKey, &dwSize, 
							NULL, NULL, NULL, &ft ) == ERROR_SUCCESS )
	{
		// A little recursion
		DeleteSubKeys( hKey, szKey );

		// Attempt to delete the key
		RegDeleteKey( hKey, szKey );

		dwSize = MAX_PATH - 1;

	} // end while

	// Close the key
	RegCloseKey( hKey );

	return TRUE;
}
Пример #30
0
CRKey* CReg::GetKey(LPCTSTR pKey)
{_STTEX();
	LPREGKEY prk = AddKey( pKey );
	if ( prk == NULL ) return NULL;

	return prk->key;
}