diff options
author | Sergey Udaltsov <svu@gnome.org> | 2003-12-30 23:40:33 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2003-12-30 23:40:33 +0000 |
commit | b26841741f28d0cf432c3e3d03b95215fa8ca4ef (patch) | |
tree | f182114c140a52c4bfea711ab6c7904efe51a3a1 /libxklavier/xklavier_props.c | |
parent | 99c4fcc88f4c4b6ec9b199fa8624f133f3a7e079 (diff) | |
download | libxklavier-b26841741f28d0cf432c3e3d03b95215fa8ca4ef.tar.gz |
first step in separating all xkb-related things
Diffstat (limited to 'libxklavier/xklavier_props.c')
-rw-r--r-- | libxklavier/xklavier_props.c | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/libxklavier/xklavier_props.c b/libxklavier/xklavier_props.c index 79b305a..98a7338 100644 --- a/libxklavier/xklavier_props.c +++ b/libxklavier/xklavier_props.c @@ -1,14 +1,9 @@ -#include <stdio.h> #include <errno.h> #include <string.h> #include <locale.h> #include <X11/Xlib.h> -#include <X11/XKBlib.h> #include <X11/Xatom.h> -#include <X11/extensions/XKBfile.h> -#include <X11/extensions/XKBrules.h> -#include <X11/extensions/XKM.h> #include <libxml/xpath.h> @@ -83,203 +78,6 @@ Bool XklConfigGetFromBackup( XklConfigRecPtr data ) return rv; } -// taken from XFree86 maprules.c -Bool XklGetNamesProp( Atom rulesAtom, - char **rulesFileOut, XklConfigRecPtr data ) -{ - Atom realPropType; - int fmt; - unsigned long nitems, extraBytes; - char *propData, *out; - Status rtrn; - - // no such atom! - if( rulesAtom == None ) /* property cannot exist */ - { - _xklLastErrorMsg = "Could not find the atom"; - return False; - } - - rtrn = - XGetWindowProperty( _xklDpy, _xklRootWindow, rulesAtom, 0L, - _XKB_RF_NAMES_PROP_MAXLEN, False, XA_STRING, - &realPropType, &fmt, &nitems, &extraBytes, - ( unsigned char ** ) &propData ); - // property not found! - if( rtrn != Success ) - { - _xklLastErrorMsg = "Could not get the property"; - return False; - } - // set rules file to "" - if( rulesFileOut ) - *rulesFileOut = NULL; - - // has to be array of strings - if( ( extraBytes > 0 ) || ( realPropType != XA_STRING ) || ( fmt != 8 ) ) - { - if( propData ) - XFree( propData ); - _xklLastErrorMsg = "Wrong property format"; - return False; - } - // rules file - out = propData; - if( out && ( *out ) && rulesFileOut ) - *rulesFileOut = strdup( out ); - out += strlen( out ) + 1; - - if( ( out - propData ) < nitems ) - { - if( *out ) - data->model = strdup( out ); - out += strlen( out ) + 1; - } - - if( ( out - propData ) < nitems ) - { - _XklConfigRecSplitLayouts( data, out ); - out += strlen( out ) + 1; - } - - if( ( out - propData ) < nitems ) - { - int i; - char **theLayout, **theVariant; - _XklConfigRecSplitVariants( data, out ); - /* - Now have to ensure that number of variants matches the number of layouts - The 'remainder' is filled with NULLs (not ""s!) - */ - if( data->numVariants < data->numLayouts ) - { - data->variants = - realloc( data->variants, data->numLayouts * sizeof( char * ) ); - memset( data->variants + data->numVariants, 0, - ( data->numLayouts - data->numVariants ) * sizeof( char * ) ); - data->numVariants = data->numLayouts; - } - // take variants from layouts like ru(winkeys) - theLayout = data->layouts; - theVariant = data->variants; - for( i = data->numLayouts; --i >= 0; theLayout++, theVariant++ ) - { - if( *theLayout != NULL ) - { - char *varstart = strchr( *theLayout, '(' ); - if( varstart != NULL ) - { - char *varend = strchr( varstart, ')' ); - if( varend != NULL ) - { - int varlen = varend - varstart; - int laylen = varstart - *theLayout; - // I am not sure - but I assume variants in layout have priority - char *var = *theVariant = ( *theVariant != NULL ) ? - realloc( *theVariant, varlen ) : malloc( varlen ); - memcpy( var, varstart + 1, --varlen ); - var[varlen] = '\0'; - realloc( *theLayout, laylen + 1 ); - ( *theLayout )[laylen] = '\0'; - } - } - } - } - out += strlen( out ) + 1; - } - - if( ( out - propData ) < nitems ) - { - _XklConfigRecSplitOptions( data, out ); -// out += strlen( out ) + 1; - } - XFree( propData ); - return True; -} - -// taken from XFree86 maprules.c -Bool XklSetNamesProp( Atom rulesAtom, - char *rulesFile, const XklConfigRecPtr data ) -{ - int len, i, rv; - char *pval; - char *next; - char *allLayouts = _XklConfigRecMergeLayouts( data ); - char *allVariants = _XklConfigRecMergeVariants( data ); - char *allOptions = _XklConfigRecMergeOptions( data ); - - len = ( rulesFile ? strlen( rulesFile ) : 0 ); - len += ( data->model ? strlen( data->model ) : 0 ); - len += ( allLayouts ? strlen( allLayouts ) : 0 ); - len += ( allVariants ? strlen( allVariants ) : 0 ); - len += ( allOptions ? strlen( allOptions ) : 0 ); - if( len < 1 ) - return True; - - len += 5; /* trailing NULs */ - - pval = next = ( char * ) malloc( len + 1 ); - if( !pval ) - { - _xklLastErrorMsg = "Could not allocate buffer"; - return False; - } - if( rulesFile ) - { - strcpy( next, rulesFile ); - next += strlen( rulesFile ); - } - *next++ = '\0'; - if( data->model ) - { - strcpy( next, data->model ); - next += strlen( data->model ); - } - *next++ = '\0'; - if( data->layouts ) - { - strcpy( next, allLayouts ); - next += strlen( allLayouts ); - } - *next++ = '\0'; - if( data->variants ) - { - strcpy( next, allVariants ); - next += strlen( allVariants ); - } - *next++ = '\0'; - if( data->options ) - { - strcpy( next, allOptions ); - next += strlen( allOptions ); - } - *next++ = '\0'; - if( ( next - pval ) != len ) - { - XklDebug( 150, "Illegal final position: %d/%d\n", ( next - pval ), len ); - if( allOptions != NULL ) - free( allOptions ); - free( pval ); - _xklLastErrorMsg = "Internal property parsing error"; - return False; - } - - rv = XChangeProperty( _xklDpy, _xklRootWindow, rulesAtom, XA_STRING, 8, - PropModeReplace, ( unsigned char * ) pval, len ); - XSync( _xklDpy, False ); -#if 0 - for( i = len - 1; --i >= 0; ) - if( pval[i] == '\0' ) - pval[i] = '?'; - XklDebug( 150, "Stored [%s] of length %d to [%s] of %X: %d\n", pval, len, - propName, _xklRootWindow, rv ); -#endif - if( allOptions != NULL ) - free( allOptions ); - free( pval ); - return True; -} - Bool XklBackupNamesProp( ) { char *rf; |