summaryrefslogtreecommitdiff
path: root/src/modules/module-udev-detect.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/module-udev-detect.c')
-rw-r--r--src/modules/module-udev-detect.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
index bb41a962..3d7064f1 100644
--- a/src/modules/module-udev-detect.c
+++ b/src/modules/module-udev-detect.c
@@ -177,10 +177,8 @@ static bool is_card_busy(const char *id) {
char *card_path = NULL, *pcm_path = NULL, *sub_status = NULL;
DIR *card_dir = NULL, *pcm_dir = NULL;
FILE *status_file = NULL;
- size_t len;
- struct dirent *space = NULL, *de;
+ struct dirent *de;
bool busy = false;
- int r;
pa_assert(id);
@@ -194,14 +192,11 @@ static bool is_card_busy(const char *id) {
goto fail;
}
- len = offsetof(struct dirent, d_name) + fpathconf(dirfd(card_dir), _PC_NAME_MAX) + 1;
- space = pa_xmalloc(len);
-
for (;;) {
- de = NULL;
-
- if ((r = readdir_r(card_dir, space, &de)) != 0) {
- pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r));
+ errno = 0;
+ de = readdir(card_dir);
+ if (!de && errno) {
+ pa_log_warn("readdir() failed: %s", pa_cstrerror(errno));
goto fail;
}
@@ -228,8 +223,10 @@ static bool is_card_busy(const char *id) {
for (;;) {
char line[32];
- if ((r = readdir_r(pcm_dir, space, &de)) != 0) {
- pa_log_warn("readdir_r() failed: %s", pa_cstrerror(r));
+ errno = 0;
+ de = readdir(pcm_dir);
+ if (!de && errno) {
+ pa_log_warn("readdir() failed: %s", pa_cstrerror(errno));
goto fail;
}
@@ -267,7 +264,6 @@ fail:
pa_xfree(card_path);
pa_xfree(pcm_path);
pa_xfree(sub_status);
- pa_xfree(space);
if (card_dir)
closedir(card_dir);