diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2002-10-22 15:31:47 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2002-10-22 15:31:47 +0000 |
commit | 8e69d5d172a93ecd4051e6ca504cea0a7fe1cab3 (patch) | |
tree | 5c88a6fcedc2c50be79e22d06ee1fc5d61b607f0 /chanvars.c | |
parent | f84fd20f0f307b388a22ec7be9f054224745b548 (diff) |
Version 0.3.0 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@539 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'chanvars.c')
-rwxr-xr-x | chanvars.c | 88 |
1 files changed, 65 insertions, 23 deletions
diff --git a/chanvars.c b/chanvars.c index 70324b161..6f8e8475e 100755 --- a/chanvars.c +++ b/chanvars.c @@ -1,39 +1,81 @@ -#include <asterisk/chanvars.h> +/* + * Asterisk -- A telephony toolkit for Linux. + * + * Channel Variables + * + * Copyright (C) 2002, Mark Spencer + * + * Mark Spencer <markster@linux-support.net> + * + * This program is free software, distributed under the terms of + * the GNU General Public License + */ + #include <malloc.h> #include <string.h> -struct ast_var_t *ast_var_assign(char *name,char *value) { +#include <asterisk/chanvars.h> +#include <asterisk/logger.h> + +struct ast_var_t *ast_var_assign(char *name, char *value) +{ int i; struct ast_var_t *var; - var=malloc(sizeof(struct ast_var_t)); - - i=strlen(value); - var->value=malloc(i+1); - strncpy(var->value,value,i); - var->value[i]='\0'; + var = malloc(sizeof(struct ast_var_t)); + + if (var == NULL) + { + ast_log(LOG_WARNING, "Out of memory\n"); + return NULL; + } - i=strlen(name); - var->name=malloc(i+1); - strncpy(var->name,name,i); - var->name[i]='\0'; - return(var); -} + i = strlen(value); + var->value = malloc(i + 1); + if (var->value == NULL) + { + ast_log(LOG_WARNING, "Out of memory\n"); + free(var); + return NULL; + } + + strncpy(var->value, value, i); + var->value[i] = '\0'; -void ast_var_delete(struct ast_var_t *var) { - if (var!=NULL) { - if (var->name!=NULL) free(var->name); - if (var->value!=NULL) free(var->value); + i = strlen(name); + var->name = malloc(i + 1); + if (var->name == NULL) + { + ast_log(LOG_WARNING, "Out of memory\n"); + free(var->value); free(var); + return NULL; } + + strncpy(var->name, name, i); + var->name[i] = '\0'; + + return var; +} + +void ast_var_delete(struct ast_var_t *var) +{ + if (var == NULL) return; + + if (var->name != NULL) free(var->name); + if (var->value != NULL) free(var->value); + + free(var); } -char *ast_var_name(struct ast_var_t *var) { - return(var->name); +char *ast_var_name(struct ast_var_t *var) +{ + return (var != NULL ? var->name : NULL); } -char *ast_var_value(struct ast_var_t *var) { - return(var->value); +char *ast_var_value(struct ast_var_t *var) +{ + return (var != NULL ? var->value : NULL); } -
\ No newline at end of file + |