Automatically save the configuration when altering it
This commit is contained in:
parent
eafff480c9
commit
6e539efd2a
37
src/phone.c
37
src/phone.c
@ -222,6 +222,7 @@ static int _phone_call_number(Phone * phone, char const * number);
|
|||||||
|
|
||||||
static void _phone_config_foreach(Phone * phone, char const * section,
|
static void _phone_config_foreach(Phone * phone, char const * section,
|
||||||
PhoneConfigForeachCallback callback, void * priv);
|
PhoneConfigForeachCallback callback, void * priv);
|
||||||
|
static char * _phone_config_filename(void);
|
||||||
static char const * _phone_config_get(Phone * phone, char const * section,
|
static char const * _phone_config_get(Phone * phone, char const * section,
|
||||||
char const * variable);
|
char const * variable);
|
||||||
static int _phone_config_set(Phone * phone, char const * section,
|
static int _phone_config_set(Phone * phone, char const * section,
|
||||||
@ -372,18 +373,12 @@ Phone * phone_new(char const * device, unsigned int baudrate, int retry,
|
|||||||
|
|
||||||
static void _new_config(Phone * phone)
|
static void _new_config(Phone * phone)
|
||||||
{
|
{
|
||||||
char const * homedir;
|
|
||||||
size_t len;
|
|
||||||
char * filename;
|
char * filename;
|
||||||
|
|
||||||
if((phone->config = config_new()) == NULL)
|
if((phone->config = config_new()) == NULL)
|
||||||
return;
|
return;
|
||||||
if((homedir = getenv("HOME")) == NULL)
|
if((filename = _phone_config_filename()) == NULL)
|
||||||
homedir = g_get_home_dir();
|
|
||||||
len = strlen(homedir) + 1 + sizeof(PHONE_CONFIG_FILE);
|
|
||||||
if((filename = malloc(len)) == NULL)
|
|
||||||
return;
|
return;
|
||||||
snprintf(filename, len, "%s/%s", homedir, PHONE_CONFIG_FILE);
|
|
||||||
config_load(phone->config, filename); /* we can ignore errors */
|
config_load(phone->config, filename); /* we can ignore errors */
|
||||||
free(filename);
|
free(filename);
|
||||||
}
|
}
|
||||||
@ -2273,6 +2268,23 @@ static int _phone_call_number(Phone * phone, char const * number)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* phone_config_filename */
|
||||||
|
static char * _phone_config_filename(void)
|
||||||
|
{
|
||||||
|
char const * homedir;
|
||||||
|
size_t len;
|
||||||
|
char * filename;
|
||||||
|
|
||||||
|
if((homedir = getenv("HOME")) == NULL)
|
||||||
|
homedir = g_get_home_dir();
|
||||||
|
len = strlen(homedir) + 1 + sizeof(PHONE_CONFIG_FILE);
|
||||||
|
if((filename = malloc(len)) == NULL)
|
||||||
|
return NULL;
|
||||||
|
snprintf(filename, len, "%s/%s", homedir, PHONE_CONFIG_FILE);
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* phone_config_foreach */
|
/* phone_config_foreach */
|
||||||
static void _phone_config_foreach(Phone * phone, char const * section,
|
static void _phone_config_foreach(Phone * phone, char const * section,
|
||||||
PhoneConfigForeachCallback callback, void * priv)
|
PhoneConfigForeachCallback callback, void * priv)
|
||||||
@ -2293,7 +2305,16 @@ static char const * _phone_config_get(Phone * phone, char const * section,
|
|||||||
static int _phone_config_set(Phone * phone, char const * section,
|
static int _phone_config_set(Phone * phone, char const * section,
|
||||||
char const * variable, char const * value)
|
char const * variable, char const * value)
|
||||||
{
|
{
|
||||||
return config_set(phone->config, section, variable, value);
|
int ret;
|
||||||
|
char * filename;
|
||||||
|
|
||||||
|
if(config_set(phone->config, section, variable, value) != 0)
|
||||||
|
return -1;
|
||||||
|
if((filename = _phone_config_filename()) == NULL)
|
||||||
|
return -1;
|
||||||
|
ret = config_save(phone->config, filename);
|
||||||
|
free(filename);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user