mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-04 05:15:22 +00:00 
			
		
		
		
	Add a new API function, written at least twice in app_voicemail.c
and likely in other places too.
This is quite useful when placing mail/html stuff in config files.
 /*!
   \brief Convert some C escape sequences (\b\f\n\r\t) into the
        equivalent characters.
   \brief s The string to be converted (will be modified).
   \return The converted string.
  */
 char *ast_unescape_c(char *s);
 
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@93950 65c4cc65-6c06-0410-ace0-fbb531ad65f3
			
			
This commit is contained in:
		@@ -154,6 +154,14 @@ char *ast_strip_quoted(char *s, const char *beg_quotes, const char *end_quotes);
 | 
			
		||||
 */
 | 
			
		||||
char *ast_unescape_semicolon(char *s);
 | 
			
		||||
 | 
			
		||||
/*!
 | 
			
		||||
  \brief Convert some C escape sequences (\b\f\n\r\t) into the
 | 
			
		||||
	equivalent characters.
 | 
			
		||||
  \brief s The string to be converted (will be modified).
 | 
			
		||||
  \return The converted string.
 | 
			
		||||
 */
 | 
			
		||||
char *ast_unescape_c(char *s);
 | 
			
		||||
 | 
			
		||||
/*!
 | 
			
		||||
  \brief Size-limited null-terminating string copy.
 | 
			
		||||
  \arg dst The destination buffer.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										37
									
								
								main/utils.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								main/utils.c
									
									
									
									
									
								
							@@ -1020,6 +1020,43 @@ char *ast_unescape_semicolon(char *s)
 | 
			
		||||
	return s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* !\brief unescape some C sequences in place, return pointer to the original string.
 | 
			
		||||
 */
 | 
			
		||||
char *ast_unescape_c(char *src)
 | 
			
		||||
{
 | 
			
		||||
	char c, *ret, *dst;
 | 
			
		||||
 | 
			
		||||
	if (src == NULL)
 | 
			
		||||
		return NULL;
 | 
			
		||||
	for (ret = dst = src; (c = *src++); *dst++ = c ) {
 | 
			
		||||
		if (c != '\\')
 | 
			
		||||
			continue;	/* copy char at the end of the loop */
 | 
			
		||||
		switch ((c = *src++)) {
 | 
			
		||||
		case '\0':	/* special, trailing '\' */
 | 
			
		||||
			c = '\\';
 | 
			
		||||
			break;
 | 
			
		||||
		case 'b':	/* backspace */
 | 
			
		||||
			c = '\b';
 | 
			
		||||
			break;
 | 
			
		||||
		case 'f':	/* form feed */
 | 
			
		||||
			c = '\f';
 | 
			
		||||
			break;
 | 
			
		||||
		case 'n':
 | 
			
		||||
			c = '\n';
 | 
			
		||||
			break;
 | 
			
		||||
		case 'r':
 | 
			
		||||
			c = '\r';
 | 
			
		||||
			break;
 | 
			
		||||
		case 't':
 | 
			
		||||
			c = '\t';
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		/* default, use the char literally */
 | 
			
		||||
	}
 | 
			
		||||
	*dst = '\0';
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ast_build_string_va(char **buffer, size_t *space, const char *fmt, va_list ap)
 | 
			
		||||
{
 | 
			
		||||
	int result;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user