diff options
author | Denis Kenzior <denkenz@gmail.com> | 2015-12-01 11:26:35 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2015-12-01 11:26:35 -0600 |
commit | f98d2aa2823d318cb4a26a8cd8010e5bd0381695 (patch) | |
tree | 59cfe090ecd63216a63225320f9839f51239a722 | |
parent | 82f72d288bb5689343b3718b72d42399edabe8f9 (diff) | |
download | ofono-f98d2aa2823d318cb4a26a8cd8010e5bd0381695.tar.bz2 |
gril: Add parcel_r_strv
-rw-r--r-- | gril/parcel.c | 22 | ||||
-rw-r--r-- | gril/parcel.h | 1 |
2 files changed, 23 insertions, 0 deletions
diff --git a/gril/parcel.c b/gril/parcel.c index 96e3fbb4..45219f15 100644 --- a/gril/parcel.c +++ b/gril/parcel.c @@ -312,3 +312,25 @@ void parcel_free_str_array(struct parcel_str_array *str_arr) g_free(str_arr); } } + +char **parcel_r_strv(struct parcel *p) +{ + int i; + int num_str = parcel_r_int32(p); + char **strv; + + if (p->malformed || num_str <= 0) + return NULL; + + strv = g_new0(char *, num_str + 1); + + for (i = 0; i < num_str; i++) + strv[i] = parcel_r_string(p); + + if (p->malformed) { + g_strfreev(strv); + strv = NULL; + } + + return strv; +} diff --git a/gril/parcel.h b/gril/parcel.h index df317c46..623dcc6c 100644 --- a/gril/parcel.h +++ b/gril/parcel.h @@ -50,5 +50,6 @@ void *parcel_r_raw(struct parcel *p, int *len); size_t parcel_data_avail(struct parcel *p); struct parcel_str_array *parcel_r_str_array(struct parcel *p); void parcel_free_str_array(struct parcel_str_array *str_arr); +char **parcel_r_strv(struct parcel *p); #endif |