@ -185,7 +185,11 @@ static struct vmstate *vmstates = NULL;
# define BASEMAXINLINE 256
# define BASELINELEN 72
# define BASEMAXINLINE 256
# define eol "\r\n"
# ifdef IMAP_STORAGE
# define ENDL "\r\n"
# else
# define ENDL "\n"
# endif
# define MAX_DATETIME_FORMAT 512
# define MAX_NUM_CID_CONTEXTS 10
@ -2980,15 +2984,17 @@ static int inchar(struct baseio *bio, FILE *fi)
static int ochar ( struct baseio * bio , int c , FILE * so )
{
if ( bio - > linelength > = BASELINELEN ) {
if ( fputs ( eol, so ) = = EOF )
if ( bio - > linelength > = BASELINELEN ) {
if ( fputs ( ENDL, so ) = = EOF ) {
return - 1 ;
}
bio - > linelength = 0 ;
bio - > linelength = 0 ;
}
if ( putc ( ( ( unsigned char ) c ) , so ) = = EOF )
if ( putc ( ( ( unsigned char ) c ) , so ) = = EOF ) {
return - 1 ;
}
bio - > linelength + + ;
@ -3061,8 +3067,9 @@ static int base_encode(char *filename, FILE *so)
fclose ( fi ) ;
if ( fputs ( eol, so ) = = EOF )
if ( fputs ( ENDL, so ) = = EOF ) {
return 0 ;
}
return 1 ;
}
@ -3236,11 +3243,6 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in
struct tm tm ;
char * passdata = NULL , * passdata2 ;
size_t len_passdata = 0 , len_passdata2 , tmplen ;
# ifdef IMAP_STORAGE
# define ENDL "\r\n"
# else
# define ENDL "\n"
# endif
/* One alloca for multiple fields */
len_passdata2 = strlen ( vmu - > fullname ) ;
@ -3404,7 +3406,22 @@ static void make_email_file(FILE *p, char *srcemail, struct ast_vm_user *vmu, in
memset ( passdata , 0 , vmlen ) ;
prep_email_sub_vars ( ast , vmu , msgnum + 1 , context , mailbox , fromfolder , cidnum , cidname , dur , date , passdata , vmlen , category ) ;
pbx_substitute_variables_helper ( ast , emailbody , passdata , vmlen ) ;
# ifdef IMAP_STORAGE
{
/* Convert body to native line terminators for IMAP backend */
char * line = passdata , * next ;
do {
/* Terminate line before outputting it to the file */
if ( ( next = strchr ( line , ' \n ' ) ) ) {
* next + + = ' \0 ' ;
}
fprintf ( p , " %s " ENDL , line ) ;
line = next ;
} while ( ! ast_strlen_zero ( line ) ) ;
}
# else
fprintf ( p , " %s " ENDL , passdata ) ;
# endif
} else
ast_log ( LOG_WARNING , " Cannot allocate workspace for variable substitution \n " ) ;
ast_channel_free ( ast ) ;
@ -3497,8 +3514,8 @@ plain_message:
unlink ( newtmp ) ;
}
}
# undef ENDL
}
static int sendmail ( char * srcemail , struct ast_vm_user * vmu , int msgnum , char * context , char * mailbox , char * fromfolder , char * cidnum , char * cidname , char * attach , char * format , int duration , int attach_user_voicemail , struct ast_channel * chan , const char * category )
{
FILE * p = NULL ;