2005-05-23 20:25:31 +04:00
/*
* Unix SMB / CIFS implementation .
* Virtual Windows Registry Layer ( utility functions )
* Copyright ( C ) Gerald Carter 2002 - 2005
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
/* Implementation of registry frontend view functions. */
# include "includes.h"
# undef DBGC_CLASS
# define DBGC_CLASS DBGC_RPC_SRV
/***********************************************************************
Utility function for splitting the base path of a registry path off
by setting base and new_path to the apprapriate offsets withing the
path .
WARNING ! ! Does modify the original string !
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
BOOL reg_split_path ( char * path , char * * base , char * * new_path )
{
char * p ;
* new_path = * base = NULL ;
if ( ! path )
return False ;
* base = path ;
p = strchr ( path , ' \\ ' ) ;
if ( p ) {
* p = ' \0 ' ;
* new_path = p + 1 ;
}
return True ;
}
/***********************************************************************
Utility function for splitting the base path of a registry path off
by setting base and new_path to the appropriate offsets withing the
path .
WARNING ! ! Does modify the original string !
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
BOOL reg_split_key ( char * path , char * * base , char * * key )
{
char * p ;
* key = * base = NULL ;
if ( ! path )
return False ;
* base = path ;
p = strrchr ( path , ' \\ ' ) ;
if ( p ) {
* p = ' \0 ' ;
* key = p + 1 ;
}
return True ;
}
2005-06-27 07:40:03 +04:00
/**********************************************************************
The full path to the registry key is used as database after the
\ ' s are converted to / ' s . Key string is also normalized to UPPER
case .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void normalize_reg_path ( pstring keyname )
{
pstring_sub ( keyname , " \\ " , " / " ) ;
strupper_m ( keyname ) ;
}
2005-05-23 20:25:31 +04:00
2005-09-30 21:13:37 +04:00
/**********************************************************************
move to next non - delimter character
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
char * reg_remaining_path ( const char * key )
{
static pstring new_path ;
char * p ;
if ( ! key | | ! * key )
return NULL ;
pstrcpy ( new_path , key ) ;
/* normalize_reg_path( new_path ); */
if ( ! ( p = strchr ( new_path , ' \\ ' ) ) )
{
if ( ! ( p = strchr ( new_path , ' / ' ) ) )
p = new_path ;
else
p + + ;
}
else
p + + ;
return p ;
}