]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
unsubscribe: fix conversion to *at functions
authorBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 8 Dec 2021 16:57:46 +0000 (17:57 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Wed, 8 Dec 2021 16:59:24 +0000 (17:59 +0100)
src/subscriberfuncs.c

index 89198d95045d68663cfa95da63d242fc92ec4f65..a2cc50ae268b83bf050bb66294ab6540018e028c 100644 (file)
@@ -282,7 +282,6 @@ void
 unsubscribe(struct mlmmj_list *list, const char *address, enum subtype typesub,
     enum subreason reasonsub)
 {
-
        const char *subdir;
        char *sublockname;
        char *subwritename;
@@ -327,7 +326,7 @@ unsubscribe(struct mlmmj_list *list, const char *address, enum subtype typesub,
 
                /* create a .name.lock file and aquire the lock */
                myasprintf(&sublockname, ".%s.lock", dp->d_name);
-               sublockfd = open(sublockname, O_RDWR | O_CREAT | O_EXLOCK,
+               sublockfd = openat(subdirfd, sublockname, O_RDWR | O_CREAT | O_EXLOCK,
                                                S_IRUSR | S_IWUSR);
                if (sublockfd < 0) {
                        log_error(LOG_ARGS, "Error opening lock file %s/%s/%s",
@@ -354,7 +353,7 @@ unsubscribe(struct mlmmj_list *list, const char *address, enum subtype typesub,
                        close(subread);
                        close(subwrite);
                        close(sublockfd);
-                       unlink(subwritename);
+                       unlinkat(subdirfd, subwritename, 0);
                        myfree(subwritename);
                        myfree(sublockname);
                        continue;
@@ -372,6 +371,7 @@ unsubscribe(struct mlmmj_list *list, const char *address, enum subtype typesub,
                        }
                } else { /* unsubres == 0, no subscribers left */
                        unlinkat(subdirfd, subwritename, 0);
+                       unlinkat(subdirfd, dp->d_name, 0);
                }
 
                close(subread);
@@ -380,8 +380,7 @@ unsubscribe(struct mlmmj_list *list, const char *address, enum subtype typesub,
                myfree(subwritename);
                unlinkat(subdirfd, sublockname, 0);
                myfree(sublockname);
-
-        }
+       }
 
        closedir(subddir);
 }