00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <stdlib.h>
00015 #include <string.h>
00016
00017 #include <asterisk/chanvars.h>
00018 #include <asterisk/logger.h>
00019
00020 struct ast_var_t *ast_var_assign(char *name, char *value)
00021 {
00022 int i;
00023 struct ast_var_t *var;
00024
00025 var = malloc(sizeof(struct ast_var_t));
00026
00027 if (var == NULL)
00028 {
00029 ast_log(LOG_WARNING, "Out of memory\n");
00030 return NULL;
00031 }
00032
00033 i = strlen(value);
00034 var->value = malloc(i + 1);
00035 if (var->value == NULL)
00036 {
00037 ast_log(LOG_WARNING, "Out of memory\n");
00038 free(var);
00039 return NULL;
00040 }
00041
00042 strncpy(var->value, value, i);
00043 var->value[i] = '\0';
00044
00045 i = strlen(name);
00046 var->name = malloc(i + 1);
00047 if (var->name == NULL)
00048 {
00049 ast_log(LOG_WARNING, "Out of memory\n");
00050 free(var->value);
00051 free(var);
00052 return NULL;
00053 }
00054
00055 strncpy(var->name, name, i);
00056 var->name[i] = '\0';
00057
00058 return var;
00059 }
00060
00061 void ast_var_delete(struct ast_var_t *var)
00062 {
00063 if (var == NULL) return;
00064
00065 if (var->name != NULL) free(var->name);
00066 if (var->value != NULL) free(var->value);
00067
00068 free(var);
00069 }
00070
00071 char *ast_var_name(struct ast_var_t *var)
00072 {
00073 return (var != NULL ? var->name : NULL);
00074 }
00075
00076 char *ast_var_value(struct ast_var_t *var)
00077 {
00078 return (var != NULL ? var->value : NULL);
00079 }
00080
00081