#include <lxc/lxccontainer.h>
#include "arguments.h"
-#include "tool_utils.h"
+#include "log.h"
+
+lxc_log_define(lxc_snapshot, lxc);
static int my_parser(struct lxc_arguments *args, int c, char *arg);
if (geteuid()) {
if (access(my_args.lxcpath[0], O_RDONLY) < 0) {
- fprintf(stderr, "You lack access to %s\n",
- my_args.lxcpath[0]);
+ ERROR("You lack access to %s", my_args.lxcpath[0]);
exit(EXIT_FAILURE);
}
}
c = lxc_container_new(my_args.name, my_args.lxcpath[0]);
if (!c) {
- fprintf(stderr, "System error loading container\n");
+ ERROR("System error loading container");
exit(EXIT_FAILURE);
}
if (my_args.rcfile) {
c->clear_config(c);
+
if (!c->load_config(c, my_args.rcfile)) {
- fprintf(stderr, "Failed to load rcfile\n");
+ ERROR("Failed to load rcfile");
lxc_container_put(c);
exit(EXIT_FAILURE);
}
+
c->configfile = strdup(my_args.rcfile);
if (!c->configfile) {
- fprintf(stderr, "Out of memory setting new config filename\n");
+ ERROR("Out of memory setting new config filename");
lxc_container_put(c);
exit(EXIT_FAILURE);
}
}
if (!c->lxc_conf) {
- fprintf(stderr, "No container config specified\n");
+ ERROR("No container config specified");
lxc_container_put(c);
exit(EXIT_FAILURE);
}
if (!c->may_control(c)) {
- fprintf(stderr, "Insufficent privileges to control %s\n",
- my_args.name);
+ ERROR("Insufficent privileges to control %s", my_args.name);
lxc_container_put(c);
exit(EXIT_FAILURE);
}
if (ret == 0)
exit(EXIT_SUCCESS);
+
exit(EXIT_FAILURE);
}
ret = c->snapshot(c, commentfile);
if (ret < 0) {
- fprintf(stderr, "Error creating a snapshot\n");
+ ERROR("Error creating a snapshot");
return -1;
}
{
bool ret;
- if (strcmp(snapname, "ALL") == 0)
+ if (!strncmp(snapname, "ALL", strlen(snapname)))
ret = c->snapshot_destroy_all(c);
else
ret = c->snapshot_destroy(c, snapname);
if (!ret) {
- fprintf(stderr, "Error destroying snapshot %s\n", snapname);
+ ERROR("Error destroying snapshot %s", snapname);
return -1;
}
n = c->snapshot_list(c, &s);
if (n < 0) {
- fprintf(stderr, "Error listing snapshots\n");
+ ERROR("Error listing snapshots");
return -1;
}
+
if (n == 0) {
printf("No snapshots\n");
return 0;
for (i = 0; i < n; i++) {
printf("%s (%s) %s\n", s[i].name, s[i].lxcpath, s[i].timestamp);
+
if (print_comments)
print_file(s[i].comment_pathname);
+
s[i].free(&s[i]);
}
* original container will be destroyed and the restored container will
* take its place. */
if ((!args->newname) && (args->argc > 1)) {
- lxc_error(args, "Too many arguments");
+ ERROR("Too many arguments");
return -1;
}
bret = c->snapshot_restore(c, args->snapname, args->newname);
if (!bret) {
- fprintf(stderr, "Error restoring snapshot %s\n", args->snapname);
+ ERROR("Error restoring snapshot %s", args->snapname);
return -1;
}
static void print_file(char *path)
{
- if (!path)
- return;
-
- FILE *f = fopen(path, "r");
+ FILE *f;
char *line = NULL;
size_t sz = 0;
+ if (!path)
+ return;
+
+ f = fopen(path, "r");
if (!f)
return;
- while (getline(&line, &sz, f) != -1) {
+ while (getline(&line, &sz, f) != -1)
printf("%s", line);
- }
free(line);
fclose(f);