Charset conversions.
More...
#include "asterisk.h"
#include <ctype.h>
#include <iconv.h>
#include "asterisk/module.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/app.h"
Go to the source code of this file.
Charset conversions.
- Author
- Sven Slezak sunny.nosp@m.@mez.nosp@m.zo.ne.nosp@m.t
Definition in file func_iconv.c.
◆ AST_ICONV_CAST
| #define AST_ICONV_CAST void * |
Some systems define the second arg to iconv() as (const char *), while others define it as (char *). Cast it to a (void *) to suppress compiler warnings about it.
Definition at line 77 of file func_iconv.c.
◆ __reg_module()
| static void __reg_module |
( |
void |
| ) |
|
|
static |
◆ __unreg_module()
| static void __unreg_module |
( |
void |
| ) |
|
|
static |
◆ AST_MODULE_SELF_SYM()
◆ iconv_read()
| static int iconv_read |
( |
struct ast_channel * |
chan, |
|
|
const char * |
cmd, |
|
|
char * |
arguments, |
|
|
char * |
buf, |
|
|
size_t |
len |
|
) |
| |
|
static |
Definition at line 79 of file func_iconv.c.
80{
85 );
86 iconv_t cd;
87 size_t incount, outcount =
len - 1;
88 char *parse;
89
91 ast_log(
LOG_WARNING,
"Syntax: ICONV(<in-charset>,<out-charset>,<text>) - missing arguments!\n");
92 return -1;
93 }
94
97
100 return -1;
101 }
102
103 incount = strlen(
args.text);
104
106
107 cd = iconv_open(
args.out_charset,
args.in_charset);
108
109 if (cd == (iconv_t) -1) {
110 ast_log(
LOG_ERROR,
"conversion from '%s' to '%s' not available. type 'iconv -l' in a shell to list the supported charsets.\n",
args.in_charset,
args.out_charset);
111 return -1;
112 }
113
117 else if (
errno == EILSEQ)
119 else if (
errno == EINVAL)
121 else
123 }
125 iconv_close(cd);
126
127 return 0;
128}
#define ast_strdupa(s)
duplicate a string in memory from the stack
static int len(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t buflen)
#define AST_APP_ARG(name)
Define an application argument.
#define AST_DECLARE_APP_ARGS(name, arglist)
Declare a structure to hold an application's arguments.
#define AST_STANDARD_APP_ARGS(args, parse)
Performs the 'standard' argument separation process for an application.
#define ast_debug(level,...)
Log a DEBUG message.
static force_inline int attribute_pure ast_strlen_zero(const char *s)
References args, AST_APP_ARG, ast_debug, AST_DECLARE_APP_ARGS, AST_ICONV_CAST, ast_log, AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), buf, errno, len(), LOG_ERROR, LOG_WARNING, and text.
◆ load_module()
| static int load_module |
( |
void |
| ) |
|
|
static |
◆ unload_module()
| static int unload_module |
( |
void |
| ) |
|
|
static |
◆ __mod_info
◆ ast_module_info
◆ iconv_function
Initial value:= {
.name = "ICONV",
}
static int iconv_read(struct ast_channel *chan, const char *cmd, char *arguments, char *buf, size_t len)
Definition at line 131 of file func_iconv.c.
131 {
132 .name = "ICONV",
134};
Referenced by load_module(), and unload_module().