summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2015-12-01 11:26:35 -0600
committerDenis Kenzior <denkenz@gmail.com>2015-12-01 11:26:35 -0600
commitf98d2aa2823d318cb4a26a8cd8010e5bd0381695 (patch)
tree59cfe090ecd63216a63225320f9839f51239a722
parent82f72d288bb5689343b3718b72d42399edabe8f9 (diff)
downloadofono-f98d2aa2823d318cb4a26a8cd8010e5bd0381695.tar.bz2
gril: Add parcel_r_strv
-rw-r--r--gril/parcel.c22
-rw-r--r--gril/parcel.h1
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