]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
tools: use correct runtime path for lxc-ls 1126/head
authorChristian Brauner <cbrauner@suse.de>
Fri, 12 Aug 2016 22:56:33 +0000 (00:56 +0200)
committerChristian Brauner <cbrauner@suse.de>
Fri, 12 Aug 2016 22:56:33 +0000 (00:56 +0200)
So far we've simply been using RUNTIME_PATH for the privileged and unprivileged
case. We should actually use XDG_RUNTIME_DIR for the unprivileged case.

Signed-off-by: Christian Brauner <cbrauner@suse.de>
src/lxc/tools/lxc_ls.c

index e2a4c34fb2520a85c049f8915a44b2703f70afac..0575277ca0622b0cf6a2a94d00136a28644fe1a1 100644 (file)
@@ -986,25 +986,40 @@ out:
 static int ls_remove_lock(const char *path, const char *name,
                char **lockpath, size_t *len_lockpath, bool recalc)
 {
+       int ret = -1;
+       char *rundir;
+
+       /* lockfile will be:
+        * "/run" + "/lxc/lock/$lxcpath/$lxcname + '\0' if root
+        * or
+        * $XDG_RUNTIME_DIR + "/lxc/lock/$lxcpath/$lxcname + '\0' if non-root
+        */
+       rundir = get_rundir();
+       if (!rundir)
+               goto out;
+
        /* Avoid doing unnecessary work if we can. */
        if (recalc) {
-               size_t newlen = strlen(path) + strlen(name) + strlen(RUNTIME_PATH) + /* / + lxc + / + lock + / + / = */ 11 + 1;
+               size_t newlen = strlen(path) + strlen(name) + strlen(rundir) + /* / + lxc + / + lock + / + / = */ 11 + 1;
                if (newlen > *len_lockpath) {
                        char *tmp = realloc(*lockpath, newlen * 2);
                        if (!tmp)
-                               return -1;
+                               goto out;
                        *lockpath = tmp;
                        *len_lockpath = newlen * 2;
                }
        }
 
-       int check = snprintf(*lockpath, *len_lockpath, "%s/lxc/lock/%s/%s", RUNTIME_PATH, path, name);
+       int check = snprintf(*lockpath, *len_lockpath, "%s/lxc/lock/%s/%s", rundir, path, name);
        if (check < 0 || (size_t)check >= *len_lockpath)
-               return -1;
+               goto out;
 
        lxc_rmdir_onedev(*lockpath, NULL);
+       ret = 0;
 
-       return 0;
+out:
+       free(rundir);
+       return ret;
 }
 
 static int ls_send_str(int fd, const char *buf)