]> git.proxmox.com Git - mirror_lxc.git/commitdiff
cgmanager: cgm_set: return the length we found
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Wed, 22 Jan 2014 19:53:04 +0000 (13:53 -0600)
committerStéphane Graber <stgraber@ubuntu.com>
Wed, 22 Jan 2014 20:19:59 +0000 (15:19 -0500)
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/cgmanager.c

index 033dc01b59b00fa86776bf09b9dc0681cf3e0b8d..2fa49a77b207c67dc11d6bc24ba3578fb21a785c 100644 (file)
@@ -248,6 +248,7 @@ static char *cgm_get_cgroup(struct lxc_handler *handler, const char *subsystem)
 int cgm_get(const char *filename, char *value, size_t len, const char *name, const char *lxcpath)
 {
        char *result, *controller, *key, *cgroup;
+       size_t newlen;
 
        controller = alloca(strlen(filename)+1);
        strcpy(controller, filename);
@@ -267,11 +268,18 @@ int cgm_get(const char *filename, char *value, size_t len, const char *name, con
                return -1;
        }
        free(cgroup);
+       newlen = strlen(result);
        strncpy(value, result, len);
-       if (strlen(result) >= len)
+       if (newlen >= len) {
                value[len-1] = '\0';
+               newlen = len-1;
+       } else if (newlen+1 < len) {
+               // cgmanager doesn't add eol to last entry
+               value[newlen++] = '\n';
+               value[newlen] = '\0';
+       }
        nih_free(result);
-       return len;
+       return newlen;
 }
 
 static int cgm_do_set(const char *controller, const char *file,