With the exception of when trying to clean up shm files, it's useful to warn if opening them fails, regardless of reason. Signed-off-by: David Henningsson <david.henningsson at canonical.com> --- src/pulsecore/shm.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c index eefd7ba..d613168 100644 --- a/src/pulsecore/shm.c +++ b/src/pulsecore/shm.c @@ -288,7 +288,7 @@ void pa_shm_punch(pa_shm *m, size_t offset, size_t size) { #ifdef HAVE_SHM_OPEN -int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { +static int shm_attach(pa_shm *m, unsigned id, bool writable, bool for_cleanup) { char fn[32]; int fd = -1; int prot; @@ -299,7 +299,7 @@ int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { segment_name(fn, sizeof(fn), m->id = id); if ((fd = shm_open(fn, writable ? O_RDWR : O_RDONLY, 0)) < 0) { - if (errno != EACCES && errno != ENOENT) + if ((errno != EACCES && errno != ENOENT) || !for_cleanup) pa_log("shm_open() failed: %s", pa_cstrerror(errno)); goto fail; } @@ -338,6 +338,10 @@ fail: return -1; } +int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { + return shm_attach(m, id, writable, false); +} + #else /* HAVE_SHM_OPEN */ int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { @@ -375,7 +379,7 @@ int pa_shm_cleanup(void) { if (pa_atou(de->d_name + SHM_ID_LEN, &id) < 0) continue; - if (pa_shm_attach(&seg, id, false) < 0) + if (shm_attach(&seg, id, false, true) < 0) continue; if (seg.size < SHM_MARKER_SIZE) { -- 1.9.1