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().