@@ -49,8 +49,8 @@ get_value(char *line, const char *key)
49
49
return value ? value : NULL ;
50
50
}
51
51
52
- static char *
53
- environment_get (const char * key )
52
+ static void
53
+ environment_get (char * buffer , size_t size , const char * key )
54
54
{
55
55
char filename [4096 ];
56
56
snprintf (filename , sizeof (filename ), "%s/%s" , getenv ("HOME" ), ".config/labwc/environment" );
@@ -60,7 +60,7 @@ environment_get(const char *key)
60
60
size_t len = 0 ;
61
61
FILE * stream = fopen (filename , "r" );
62
62
if (!stream ) {
63
- goto out ;
63
+ return ;
64
64
}
65
65
66
66
while (getline (& line , & len , stream ) != -1 ) {
@@ -70,13 +70,12 @@ environment_get(const char *key)
70
70
}
71
71
value = get_value (line , key );
72
72
if (value ) {
73
- goto out ;
73
+ snprintf (buffer , size , "%s" , value );
74
+ break ;
74
75
}
75
76
}
76
- out :
77
77
free (line );
78
78
fclose (stream );
79
- return value ? value : "" ;
80
79
}
81
80
82
81
void
@@ -103,14 +102,15 @@ stack_lang_init(struct state *state, GtkWidget *stack)
103
102
gtk_grid_attach (GTK_GRID (grid ), widget , 0 , row , 1 , 1 );
104
103
state -> widgets .keyboard_layout = gtk_combo_box_text_new ();
105
104
106
- char * active_id = environment_get ("XKB_DEFAULT_LAYOUT" );
105
+ char xkb_default_layout [1024 ];
106
+ environment_get (xkb_default_layout , sizeof (xkb_default_layout ), "XKB_DEFAULT_LAYOUT" );
107
107
int active = -1 ;
108
108
109
109
GList * iter ;
110
110
int i = 0 ;
111
111
for (iter = keyboard_layouts ; iter ; iter = iter -> next ) {
112
112
struct layout * layout = (struct layout * )iter -> data ;
113
- if (!strcmp (layout -> lang , active_id )) {
113
+ if (!strcmp (layout -> lang , xkb_default_layout )) {
114
114
active = i ;
115
115
}
116
116
char buf [256 ];
0 commit comments