[alsa-devel] Anyone using alsactl preinit / postinit scripts?

Takashi Iwai tiwai at suse.de
Thu Jun 14 14:10:20 CEST 2012


Hi,

is anyone already using preinit / postinit scripts of alsactl init?
I'm thinking of appliny the patch below, but before that, I'd like to
make sure that *.conf is the appropriate extension.


thanks,

Takashi

---
From: Takashi Iwai <tiwai at suse.de>
Subject: [PATCH] alsactl: Read only *.conf files when a directory is passed via INCLUDE

When alsactl init is invoked and a directory path is passed to INCLUDE
command in the config file, read only *.conf files in that directory.
This will avoid reading backup files or invalid files that have been
created accidentally.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 alsactl/init_parse.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c
index 51b515c..83d12ba 100644
--- a/alsactl/init_parse.c
+++ b/alsactl/init_parse.c
@@ -1502,12 +1502,16 @@ static int parse_line(struct space *space, char *line, size_t linesize)
 			if (dir) {
 				count = strlen(string);
 				while ((dirent = readdir(dir)) != NULL) {
-					if (strcmp(dirent->d_name, ".") == 0 ||
-					    strcmp(dirent->d_name, "..") == 0)
+					const char *name = dirent->d_name;
+					const char *ext;
+					if (*name == '.')
+						continue;
+					ext = strrchr(name, ',');
+					if (!ext || strcmp(ext, ".conf"))
 						continue;
 					string[count] = '\0';
 					strlcat(string, "/", sizeof(string));
-					strlcat(string, dirent->d_name, sizeof(string));
+					strlcat(string, name, sizeof(string));
 					space->go_to = NULL;
 					space->rootdir = new_root_dir(string);
 					if (space->rootdir) {
-- 
1.7.10.3



More information about the Alsa-devel mailing list