diff options
author | trutkin <trutkin@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2003-06-13 21:21:57 +0000 |
---|---|---|
committer | trutkin <trutkin@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2003-06-13 21:21:57 +0000 |
commit | d42a874de031c75a62563130aeaed63a6cbd7dd2 (patch) | |
tree | 1726a70010ae27f018bf0dc58ff98b312caff1c9 /libjack/shm.c | |
parent | 0c5b1c05759602397b47bdf7cd06d2f4e38c5133 (diff) | |
download | jack1-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.c | 35 |
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 |