mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	added snd_user_file() function
alisp extensions - added nth, include, path commands - added auto-exec functionality - added helpers for C<->lisp interoperability
This commit is contained in:
		
							parent
							
								
									95418afc67
								
							
						
					
					
						commit
						6ad93ac892
					
				
					 13 changed files with 668 additions and 93 deletions
				
			
		
							
								
								
									
										41
									
								
								src/conf.c
									
										
									
									
									
								
							
							
						
						
									
										41
									
								
								src/conf.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2780,30 +2780,12 @@ int snd_config_hook_load(snd_config_t *root, snd_config_t *config, snd_config_t
 | 
			
		|||
				goto _err;
 | 
			
		||||
			}
 | 
			
		||||
			if (i == idx) {
 | 
			
		||||
				wordexp_t we;
 | 
			
		||||
				char *name;
 | 
			
		||||
				if ((err = snd_config_get_ascii(n, &name)) < 0)
 | 
			
		||||
					goto _err;
 | 
			
		||||
				err = wordexp(name, &we, WRDE_NOCMD);
 | 
			
		||||
				switch (err) {
 | 
			
		||||
				case WRDE_NOSPACE:
 | 
			
		||||
					err = -ENOMEM;
 | 
			
		||||
				if ((err = snd_user_file(name, &fi[idx].name)) < 0)
 | 
			
		||||
					goto _err;
 | 
			
		||||
				case 0:
 | 
			
		||||
					if (we.we_wordc == 1)
 | 
			
		||||
						break;
 | 
			
		||||
					/* Fall through */
 | 
			
		||||
				default:
 | 
			
		||||
					err = -EINVAL;
 | 
			
		||||
					goto _err;
 | 
			
		||||
				}
 | 
			
		||||
				fi[idx].name = strdup(we.we_wordv[0]);
 | 
			
		||||
				wordfree(&we);
 | 
			
		||||
				free(name);
 | 
			
		||||
				if (fi[idx].name == NULL) {
 | 
			
		||||
					err = -ENOMEM;
 | 
			
		||||
					goto _err;
 | 
			
		||||
				}
 | 
			
		||||
				idx++;
 | 
			
		||||
				hit = 1;
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			@ -2924,7 +2906,6 @@ int snd_config_update_r(snd_config_t **_top, snd_config_update_t **_update, cons
 | 
			
		|||
	int err;
 | 
			
		||||
	const char *configs, *c;
 | 
			
		||||
	unsigned int k;
 | 
			
		||||
	wordexp_t we;
 | 
			
		||||
	size_t l;
 | 
			
		||||
	snd_config_update_t *local;
 | 
			
		||||
	snd_config_update_t *update;
 | 
			
		||||
| 
						 | 
				
			
			@ -2963,25 +2944,9 @@ int snd_config_update_r(snd_config_t **_top, snd_config_update_t **_update, cons
 | 
			
		|||
		char name[l + 1];
 | 
			
		||||
		memcpy(name, c, l);
 | 
			
		||||
		name[l] = 0;
 | 
			
		||||
		err = wordexp(name, &we, WRDE_NOCMD);
 | 
			
		||||
		switch (err) {
 | 
			
		||||
		case WRDE_NOSPACE:
 | 
			
		||||
			err = -ENOMEM;
 | 
			
		||||
		err = snd_user_file(name, &local->finfo[k].name);
 | 
			
		||||
		if (err < 0)
 | 
			
		||||
			goto _end;
 | 
			
		||||
		case 0:
 | 
			
		||||
			if (we.we_wordc == 1)
 | 
			
		||||
				break;
 | 
			
		||||
			/* Fall through */
 | 
			
		||||
		default:
 | 
			
		||||
			err = -EINVAL;
 | 
			
		||||
			goto _end;
 | 
			
		||||
		}
 | 
			
		||||
		local->finfo[k].name = strdup(we.we_wordv[0]);
 | 
			
		||||
		wordfree(&we);
 | 
			
		||||
		if (!local->finfo[k].name) {
 | 
			
		||||
			err = -ENOMEM;
 | 
			
		||||
			goto _end;
 | 
			
		||||
		}
 | 
			
		||||
		c += l;
 | 
			
		||||
		k++;
 | 
			
		||||
		if (!*c)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue