diff options
Diffstat (limited to 'src/sms_utils.c')
-rw-r--r-- | src/sms_utils.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/sms_utils.c b/src/sms_utils.c new file mode 100644 index 0000000..b4228d0 --- /dev/null +++ b/src/sms_utils.c @@ -0,0 +1,91 @@ +/* + * SMS Utilities + * + * Copyright (C) 2010 by Multi-Tech Systems + * + * Author: James Maki <jmaki@multitech.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#define _GNU_SOURCE +#define __SMS_UTILS_C 1 + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <getopt.h> +#include <errno.h> +#include <ctype.h> +#include <sys/types.h> +#include <sys/stat.h> + +#include "global.h" +#include "utils.h" +#include "sms_utils.h" + +static const struct { + const char *name; + int value; +} __msg_status_map[] = { + {"REC UNREAD", SMS_MSG_REC_UNREAD}, + {"REC READ", SMS_MSG_REC_READ}, + {"STO UNSENT", SMS_MSG_STO_UNSENT}, + {"STO SENT", SMS_MSG_STO_SENT}, + {"ALL", SMS_MSG_ALL}, +}; + +int msg_status_name_to_value(const char *name) +{ + int n = ARRAY_SIZE(__msg_status_map); + int i; + + for (i = 0; i < n; ++i) { + if (!strcmp(__msg_status_map[i].name, name)) { + return __msg_status_map[i].value; + } + } + + log_warning("message status is not valid: %s", name); + + return -1; +} + +const char *msg_status_value_to_name(int value) +{ + int n = ARRAY_SIZE(__msg_status_map); + int i; + + for (i = 0; i < n; ++i) { + if (value == __msg_status_map[i].value) { + return __msg_status_map[i].name; + } + } + + log_warning("message status is not valid: %d", value); + + return NULL; +} + +void sms_msg_free(struct sms_msg *msg) +{ + free(msg); +} + +struct sms_msg *sms_msg_alloc(void) +{ + return malloc(sizeof(struct sms_msg)); +} |