aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libcommon
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2011-06-09 21:48:49 +0200
committerHolger Hans Peter Freyther <zecke@selfish.org>2011-08-25 23:02:53 +0200
commitd7ff30eb6240a8de3e6b07c73a9146f63fa8d961 (patch)
treea6f80d048b349fb4e332ba8d68b5457473a6955d /openbsc/src/libcommon
parentc4cc3aab64f373101960cd0cbf56e088f5470f06 (diff)
misc: Move the bsc_parse_reg to libcommom and name it gsm_parse_reg
Move the regexp parsing code from the NAT to libcommon as it will be used by the NAT and BSC code. This also adds the #include <regex.h> include to gsm_data. This header should be split up.
Diffstat (limited to 'openbsc/src/libcommon')
-rw-r--r--openbsc/src/libcommon/gsm_data.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c
index 3df69d69c..3cc0c13bc 100644
--- a/openbsc/src/libcommon/gsm_data.c
+++ b/openbsc/src/libcommon/gsm_data.c
@@ -420,3 +420,29 @@ int gsm48_ra_id_by_bts(uint8_t *buf, struct gsm_bts *bts)
return gsm48_construct_ra(buf, &raid);
}
+
+int gsm_parse_reg(void *ctx, regex_t *reg, char **str, int argc, const char **argv)
+{
+ int ret;
+
+ ret = 0;
+ if (*str) {
+ talloc_free(*str);
+ *str = NULL;
+ }
+ regfree(reg);
+
+ if (argc > 0) {
+ *str = talloc_strdup(ctx, argv[0]);
+ ret = regcomp(reg, argv[0], 0);
+
+ /* handle compilation failures */
+ if (ret != 0) {
+ talloc_free(*str);
+ *str = NULL;
+ }
+ }
+
+ return ret;
+}
+