summaryrefslogtreecommitdiff
path: root/libjack/shm.c
diff options
context:
space:
mode:
authortrutkin <trutkin@0c269be4-1314-0410-8aa9-9f06e86f4224>2003-06-13 21:21:57 +0000
committertrutkin <trutkin@0c269be4-1314-0410-8aa9-9f06e86f4224>2003-06-13 21:21:57 +0000
commitd42a874de031c75a62563130aeaed63a6cbd7dd2 (patch)
tree1726a70010ae27f018bf0dc58ff98b312caff1c9 /libjack/shm.c
parent0c5b1c05759602397b47bdf7cd06d2f4e38c5133 (diff)
downloadjack1-d42a874de031c75a62563130aeaed63a6cbd7dd2.tar.gz
Added /tmp cleanup from Fernando
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@417 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'libjack/shm.c')
-rw-r--r--libjack/shm.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/libjack/shm.c b/libjack/shm.c
index cddbdce..ec2512b 100644
--- a/libjack/shm.c
+++ b/libjack/shm.c
@@ -27,6 +27,7 @@
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/types.h>
+#include <dirent.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <config.h>
@@ -105,11 +106,45 @@ jack_initialize_shm ()
void
jack_cleanup_shm ()
{
+#if ! USE_POSIX_SHM
+ char path[PATH_MAX+1];
+ DIR *dir;
+ struct dirent *dirent;
+#endif
int i;
for (i = 0; i < jack_shm_id_cnt; i++) {
jack_destroy_shm (jack_shm_registry[i].name);
}
+#if ! USE_POSIX_SHM
+
+ snprintf (path, sizeof(path), "%s/jack/shm", jack_server_dir);
+ if ((dir = opendir (path)) == NULL) {
+ if (errno != ENOENT) {
+ jack_error ("cannot open jack shm directory (%s)", strerror (errno));
+ }
+ } else {
+ while ((dirent = readdir (dir)) != NULL) {
+ char fullpath[PATH_MAX+1];
+ snprintf (fullpath, sizeof (fullpath), "%s/jack/shm/%s", jack_server_dir, dirent->d_name);
+ unlink (fullpath);
+ }
+ }
+ closedir (dir);
+
+ snprintf (path, sizeof(path), "%s/jack/shm", jack_server_dir);
+ if (rmdir (path)) {
+ if (errno != ENOENT) {
+ jack_error ("cannot remove JACK shm directory (%s)", strerror (errno));
+ }
+ }
+ snprintf (path, sizeof(path), "%s/jack", jack_server_dir);
+ if (rmdir (path)) {
+ if (errno != ENOENT) {
+ jack_error ("cannot remove JACK directory (%s)", strerror (errno));
+ }
+ }
+#endif
}
#if USE_POSIX_SHM