mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	conf: print quoted string more wisely
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
		
							parent
							
								
									0ee4642a69
								
							
						
					
					
						commit
						8eaa03b7c9
					
				
					 1 changed files with 12 additions and 9 deletions
				
			
		
							
								
								
									
										21
									
								
								src/conf.c
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/conf.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1508,6 +1508,7 @@ static int parse_defs(snd_config_t *parent, input_t *input, int skip, int overri
 | 
			
		|||
 | 
			
		||||
static void string_print(char *str, int id, snd_output_t *out)
 | 
			
		||||
{
 | 
			
		||||
	int q;
 | 
			
		||||
	unsigned char *p = (unsigned char *)str;
 | 
			
		||||
	if (!p || !*p) {
 | 
			
		||||
		snd_output_puts(out, "''");
 | 
			
		||||
| 
						 | 
				
			
			@ -1549,7 +1550,8 @@ static void string_print(char *str, int id, snd_output_t *out)
 | 
			
		|||
	snd_output_puts(out, str);
 | 
			
		||||
	return;
 | 
			
		||||
 quoted:
 | 
			
		||||
	snd_output_putc(out, '\'');
 | 
			
		||||
	q = strchr(str, '\'') ? '"' : '\'';
 | 
			
		||||
	snd_output_putc(out, q);
 | 
			
		||||
	p = (unsigned char *)str;
 | 
			
		||||
	while (*p) {
 | 
			
		||||
		int c;
 | 
			
		||||
| 
						 | 
				
			
			@ -1579,20 +1581,21 @@ static void string_print(char *str, int id, snd_output_t *out)
 | 
			
		|||
			snd_output_putc(out, '\\');
 | 
			
		||||
			snd_output_putc(out, 'f');
 | 
			
		||||
			break;
 | 
			
		||||
		case '\'':
 | 
			
		||||
			snd_output_putc(out, '\\');
 | 
			
		||||
			snd_output_putc(out, c);
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			if (c >= 32 && c <= 126 && c != '\'')
 | 
			
		||||
			if (c == q) {
 | 
			
		||||
				snd_output_putc(out, '\\');
 | 
			
		||||
				snd_output_putc(out, c);
 | 
			
		||||
			else
 | 
			
		||||
				snd_output_printf(out, "\\%04o", c);
 | 
			
		||||
			} else {
 | 
			
		||||
				if (c >= 32 && c <= 126)
 | 
			
		||||
					snd_output_putc(out, c);
 | 
			
		||||
				else
 | 
			
		||||
					snd_output_printf(out, "\\%04o", c);
 | 
			
		||||
			}
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		p++;
 | 
			
		||||
	}
 | 
			
		||||
	snd_output_putc(out, '\'');
 | 
			
		||||
	snd_output_putc(out, q);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void level_print(snd_output_t *out, unsigned int level)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue