[CRIU] [crtools-bot] pr_perror(): print error at the end of line

Cyrill Gorcunov gorcunov at openvz.org
Tue Jan 31 06:49:16 EST 2012


The commit is pushed to "master" and will appear on git://github.com/cyrillos/crtools.git
------>
commit 0b237ae9f2ad49499f7c9c1b3713c13267aca309
Author: Kir Kolyshkin <kir at openvz.org>
Date:   Tue Jan 31 15:13:05 2012 +0400

    pr_perror(): print error at the end of line
    
    This is a standard convention to print error message (i.e. strerror(errno))
    at the end of line, like this:
    
            Cannot remove file: Permission denied
    
    So pr_perror is fixed to follow this convention (using GNU extension
    %m helps a lot here). Unfortunately, due to this we have to make
    pr_perror() print a new line character, too, so we had to strip it
    from the all pr_perror() invocations.
    
    That (appending a newline) also makes pr_perror() a black sheep
    in the herd of pr_* helpers, but what can we do? Worst case scenario
    is an extra newline after an error message, not too harmful.
    
    An alternative approach (stripping the newline from the passed format
    string and re-adding it) was discussed thoroughly, and it was decided
    that such a hack looks a bit too dirty.
    
    Signed-off-by: Kir Kolyshkin <kir at openvz.org>
    Acked-by: Pavel Emelyanov <xemul at parallels.com>
    Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
 cr-dump.c          |   46 ++++++++++++++++++------------------
 cr-restore.c       |   66 ++++++++++++++++++++++++++--------------------------
 cr-show.c          |    6 ++--
 crtools.c          |    8 +++---
 files.c            |   22 ++++++++--------
 include/util.h     |    7 ++---
 log.c              |    2 +-
 namespaces.c       |    8 +++---
 parasite-syscall.c |    2 +-
 proc_parse.c       |    8 +++---
 ptrace.c           |    4 +-
 sockets.c          |   30 +++++++++++-----------
 util.c             |    8 +++---
 uts_ns.c           |    6 ++--
 14 files changed, 111 insertions(+), 112 deletions(-)

diff --git a/cr-dump.c b/cr-dump.c
index dbae3d6..286ff01 100644
--- a/cr-dump.c
+++ b/cr-dump.c
@@ -104,7 +104,7 @@ static int dump_one_reg_file(int type, struct fd_parms *p, int lfd,
 	snprintf(fd_str, sizeof(fd_str), "/proc/self/fd/%d", lfd);
 	len = readlink(fd_str, big_buffer, sizeof(big_buffer) - 1);
 	if (len < 0) {
-		pr_perror("Can't readlink %s\n", fd_str);
+		pr_perror("Can't readlink %s", fd_str);
 		goto err;
 	}
 
@@ -151,7 +151,7 @@ static int dump_cwd(int pid_dir, struct cr_fdset *cr_fdset)
 
 	fd = open_proc(pid_dir, "cwd");
 	if (fd < 0) {
-		pr_perror("Failed to openat cwd\n");
+		pr_perror("Failed to openat cwd");
 		return -1;
 	}
 
@@ -172,7 +172,7 @@ static int dump_pipe_and_data(int lfd, struct pipe_entry *e,
 
 	pr_info("Dumping data from pipe %x\n", e->pipeid);
 	if (pipe(steal_pipe) < 0) {
-		pr_perror("Can't create pipe for stealing data\n");
+		pr_perror("Can't create pipe for stealing data");
 		goto err;
 	}
 
@@ -185,7 +185,7 @@ static int dump_pipe_and_data(int lfd, struct pipe_entry *e,
 	has_bytes = tee(lfd, steal_pipe[1], pipe_size, SPLICE_F_NONBLOCK);
 	if (has_bytes < 0) {
 		if (errno != EAGAIN) {
-			pr_perror("Can't pick pipe data\n");
+			pr_perror("Can't pick pipe data");
 			goto err_close;
 		} else
 			has_bytes = 0;
@@ -199,7 +199,7 @@ static int dump_pipe_and_data(int lfd, struct pipe_entry *e,
 		ret = splice(steal_pipe[0], NULL, fd_pipes,
 			     NULL, has_bytes, 0);
 		if (ret < 0) {
-			pr_perror("Can't push pipe data\n");
+			pr_perror("Can't push pipe data");
 			goto err_close;
 		}
 	}
@@ -254,12 +254,12 @@ static int dump_one_fd(pid_t pid, int pid_fd_dir, int lfd,
 		if (err != 1)
 			return err;
 
-		pr_perror("Failed to open %d/%d\n", pid_fd_dir, p->fd_name);
+		pr_perror("Failed to open %d/%d", pid_fd_dir, p->fd_name);
 		return -1;
 	}
 
 	if (fstat(lfd, &st_buf) < 0) {
-		pr_perror("Can't get stat on %d\n", p->fd_name);
+		pr_perror("Can't get stat on %d", p->fd_name);
 		goto out_close;
 	}
 
@@ -283,7 +283,7 @@ static int dump_one_fd(pid_t pid, int pid_fd_dir, int lfd,
 
 	if (S_ISFIFO(st_buf.st_mode)) {
 		if (fstatfs(lfd, &stfs_buf) < 0) {
-			pr_perror("Can't fstatfs on %d\n", p->fd_name);
+			pr_perror("Can't fstatfs on %d", p->fd_name);
 			return -1;
 		}
 
@@ -306,7 +306,7 @@ static int read_fd_params(pid_t pid, int pid_dir, char *fd, struct fd_parms *p)
 
 	file = fopen_proc(pid_dir, "fdinfo/%s", fd);
 	if (!file) {
-		pr_perror("Can't open %d's %s fdinfo\n", pid, fd);
+		pr_perror("Can't open %d's %s fdinfo", pid, fd);
 		return -1;
 	}
 
@@ -337,13 +337,13 @@ static int dump_task_files(pid_t pid, int pid_dir, struct cr_fdset *cr_fdset)
 	pr_info("----------------------------------------\n");
 
 	if (dump_cwd(pid_dir, cr_fdset)) {
-		pr_perror("Can't dump %d's cwd %s\n", pid);
+		pr_perror("Can't dump %d's cwd %s", pid);
 		return -1;
 	}
 
 	fd_dir = opendir_proc(pid_dir, "fd");
 	if (!fd_dir) {
-		pr_perror("Can't open %d's fd\n", pid);
+		pr_perror("Can't open %d's fd", pid);
 		return -1;
 	}
 
@@ -487,7 +487,7 @@ static int get_task_sigmask(pid_t pid, int pid_dir, u64 *task_sigset)
 	 */
 	file = fopen_proc(pid_dir, "status");
 	if (!file) {
-		pr_perror("Can't open %d status\n", pid);
+		pr_perror("Can't open %d status", pid);
 		goto err;
 	}
 
@@ -511,7 +511,7 @@ static int get_task_auxv(pid_t pid, int pid_dir, struct core_entry *core)
 	int ret, i;
 
 	if (fd < 0) {
-		pr_perror("Can't open %d's auxv\n", pid);
+		pr_perror("Can't open %d's auxv", pid);
 		return -1;
 	}
 
@@ -522,7 +522,7 @@ static int get_task_auxv(pid_t pid, int pid_dir, struct core_entry *core)
 			break;
 		else if (ret != sizeof(core->tc.mm_saved_auxv[0])) {
 			ret = -1;
-			pr_perror("Error readind %d's auxv[%d]\n",
+			pr_perror("Error readind %d's auxv[%d]",
 				  pid, i);
 			goto err;
 		}
@@ -542,7 +542,7 @@ static int get_task_personality(pid_t pid, int pid_dir, u32 *personality)
 
 	file = fopen_proc(pid_dir, "personality");
 	if (!file) {
-		pr_perror("Can't open %d personality\n", pid);
+		pr_perror("Can't open %d personality", pid);
 		goto err;
 	}
 
@@ -733,7 +733,7 @@ static int parse_threads(pid_t pid, int pid_dir, struct pstree_item *item)
 
 	dir = opendir_proc(pid_dir, "task");
 	if (!dir) {
-		pr_perror("Can't open %d/task\n", pid);
+		pr_perror("Can't open %d/task", pid);
 		return -1;
 	}
 
@@ -773,7 +773,7 @@ static int parse_children(pid_t pid, int pid_dir, struct pstree_item *item)
 
 		file = fopen_proc(pid_dir, "task/%d/children", item->threads[i]);
 		if (!file) {
-			pr_perror("Can't open %d children %d\n",
+			pr_perror("Can't open %d children %d",
 				  pid, item->threads[i]);
 			goto err;
 		}
@@ -983,7 +983,7 @@ static int finalize_core(pid_t pid, struct list_head *vma_area_list, struct cr_f
 	list_for_each_entry(vma_area, vma_area_list, list) {
 		ret = write(fd_core, &vma_area->vma, sizeof(vma_area->vma));
 		if (ret != sizeof(vma_area->vma)) {
-			pr_perror("\nUnable to write vma entry (%li written)\n", num);
+			pr_perror("\nUnable to write vma entry (%li written)", num);
 			goto err;
 		}
 		num++;
@@ -1005,7 +1005,7 @@ static int finalize_core(pid_t pid, struct list_head *vma_area_list, struct cr_f
 		if (!ret)
 			break;
 		if (ret != sizeof(va)) {
-			pr_perror("\nUnable to read VA of page (%li written)\n", num);
+			pr_perror("\nUnable to read VA of page (%li written)", num);
 			goto err;
 		}
 
@@ -1039,7 +1039,7 @@ static int finalize_core(pid_t pid, struct list_head *vma_area_list, struct cr_f
 			ret += sendfile(fd_core, fd_pages, NULL, PAGE_SIZE);
 			if (ret != sizeof(va) + PAGE_SIZE) {
 				pr_perror("\nUnable to write VMA_FILE_PRIVATE|VMA_ANON_PRIVATE "
-					  "page (%li, %li written)\n",
+					  "page (%li, %li written)",
 					  num, num_anon);
 				goto err;
 			}
@@ -1049,7 +1049,7 @@ static int finalize_core(pid_t pid, struct list_head *vma_area_list, struct cr_f
 			ret += sendfile(fd_pages_shmem, fd_pages, NULL, PAGE_SIZE);
 			if (ret != sizeof(va) + PAGE_SIZE) {
 				pr_perror("\nUnable to write VMA_ANON_SHARED "
-					  "page (%li, %li written)\n",
+					  "page (%li, %li written)",
 					  num, num_anon);
 				goto err;
 			}
@@ -1069,7 +1069,7 @@ err:
 	return ret;
 
 err_strno:
-	pr_perror("Error catched\n");
+	pr_perror("Error catched");
 	goto err;
 }
 
@@ -1193,7 +1193,7 @@ static int dump_one_task(struct pstree_item *item, struct cr_fdset *cr_fdset)
 
 	pid_dir = open_pid_proc(pid);
 	if (pid_dir < 0) {
-		pr_perror("Can't open %d proc dir\n", pid);
+		pr_perror("Can't open %d proc dir", pid);
 		goto err;
 	}
 
diff --git a/cr-restore.c b/cr-restore.c
index d2dd5ea..f917562 100644
--- a/cr-restore.c
+++ b/cr-restore.c
@@ -160,7 +160,7 @@ static int shmem_wait_and_open(int pid, struct shmem_info *si)
 	if (ret >= 0)
 		return ret;
 	else if (ret < 0)
-		pr_perror("     %d: Can't stat shmem at %s\n",
+		pr_perror("     %d: Can't stat shmem at %s",
 			  si->pid, path);
 	return ret;
 }
@@ -351,14 +351,14 @@ static int shmem_remap(void *old_addr, void *new_addr, unsigned long size)
 
 	fd = open(path, O_RDWR);
 	if (fd < 0) {
-		pr_perror("open(%s) failed\n", path);
+		pr_perror("open(%s) failed", path);
 		return -1;
 	}
 
 	ret = mmap(new_addr, size, PROT_READ | PROT_WRITE,
 		   MAP_SHARED | MAP_FIXED, fd, 0);
 	if (ret != new_addr) {
-		pr_perror("mmap failed\n");
+		pr_perror("mmap failed");
 		return -1;
 	}
 
@@ -374,7 +374,7 @@ static int prepare_shared(int ps_fd)
 
 	shmems = mmap(NULL, SHMEMS_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, 0, 0);
 	if (shmems == MAP_FAILED) {
-		pr_perror("Can't map shmem\n");
+		pr_perror("Can't map shmem");
 		return -1;
 	}
 
@@ -382,7 +382,7 @@ static int prepare_shared(int ps_fd)
 
 	task_entries = mmap(NULL, TASK_ENTRIES_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, 0, 0);
 	if (task_entries == MAP_FAILED) {
-		pr_perror("Can't map shmem\n");
+		pr_perror("Can't map shmem");
 		return -1;
 	}
 	task_entries->nr = 0;
@@ -390,7 +390,7 @@ static int prepare_shared(int ps_fd)
 
 	pipes = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, 0, 0);
 	if (pipes == MAP_FAILED) {
-		pr_perror("Can't map pipes\n");
+		pr_perror("Can't map pipes");
 		return -1;
 	}
 
@@ -544,7 +544,7 @@ static int try_fixup_shared_map(int pid, struct vma_entry *vi, int fd)
 		pr_info("%d: Fixing %lx vma to %lx/%d shmem -> %d\n",
 			pid, vi->start, si->shmid, si->pid, sh_fd);
 		if (sh_fd < 0) {
-			pr_perror("%d: Can't open shmem\n", pid);
+			pr_perror("%d: Can't open shmem", pid);
 			return -1;
 		}
 
@@ -553,7 +553,7 @@ static int try_fixup_shared_map(int pid, struct vma_entry *vi, int fd)
 		pr_info("%d: Fixed %lx vma %lx/%d shmem -> %d\n",
 			pid, vi->start, si->shmid, si->pid, sh_fd);
 		if (write(fd, vi, sizeof(*vi)) != sizeof(*vi)) {
-			pr_perror("%d: Can't write img\n", pid);
+			pr_perror("%d: Can't write img", pid);
 			return -1;
 		}
 	}
@@ -573,7 +573,7 @@ static int fixup_vma_fds(int pid, int fd)
 
 		ret = read(fd, &vi, sizeof(vi));
 		if (ret < 0) {
-			pr_perror("%d: Can't read vma_entry\n", pid);
+			pr_perror("%d: Can't read vma_entry", pid);
 		} else if (ret != sizeof(vi)) {
 			pr_err("%d: Incomplete vma_entry (%d != %d)\n",
 			       pid, ret, sizeof(vi));
@@ -653,7 +653,7 @@ static int fixup_pages_data(int pid, int fd)
 			break;
 
 		if (ret < 0 || ret != sizeof(va)) {
-			pr_perror("%d: Can't read virtual address\n", pid);
+			pr_perror("%d: Can't read virtual address", pid);
 			return -1;
 		}
 
@@ -702,7 +702,7 @@ static int prepare_and_sigreturn(int pid)
 		return -1;
 
 	if (fstat(fd, &buf)) {
-		pr_perror("%d: Can't stat\n", pid);
+		pr_perror("%d: Can't stat", pid);
 		return -1;
 	}
 
@@ -711,19 +711,19 @@ static int prepare_and_sigreturn(int pid)
 
 	fd_new = open(path, O_RDWR | O_CREAT | O_TRUNC, CR_FD_PERM);
 	if (fd_new < 0) {
-		pr_perror("%d: Can't open new image\n", pid);
+		pr_perror("%d: Can't open new image", pid);
 		return -1;
 	}
 
 	pr_info("%d: Preparing restore image %s (%li bytes)\n", pid, path, buf.st_size);
 	if (sendfile(fd_new, fd, NULL, buf.st_size) != buf.st_size) {
-		pr_perror("%d: sendfile failed\n", pid);
+		pr_perror("%d: sendfile failed", pid);
 		return -1;
 	}
 	close(fd);
 
 	if (fstat(fd_new, &buf)) {
-		pr_perror("%d: Can't stat\n", pid);
+		pr_perror("%d: Can't stat", pid);
 		return -1;
 	}
 
@@ -780,7 +780,7 @@ static int restore_pipe_data(struct pipe_entry *e, int wfd, int pipes_fd)
 	while (size != e->bytes) {
 		ret = splice(pipes_fd, NULL, wfd, NULL, e->bytes, 0);
 		if (ret < 0) {
-			pr_perror("\t%x: Error splicing data\n", e->pipeid);
+			pr_perror("\t%x: Error splicing data", e->pipeid);
 			return -1;
 		}
 		if (ret == 0) {
@@ -803,7 +803,7 @@ static int create_pipe(int pid, struct pipe_entry *e, struct pipe_info *pi, int
 	pr_info("\t%d: Creating pipe %x%s\n", pid, e->pipeid, pipe_is_rw(pi) ? "(rw)" : "");
 
 	if (pipe(pfd) < 0) {
-		pr_perror("%d: Can't create pipe\n", pid);
+		pr_perror("%d: Can't create pipe", pid);
 		return -1;
 	}
 
@@ -883,7 +883,7 @@ static int attach_pipe(int pid, struct pipe_entry *e, struct pipe_info *pi, int
 			tmp = dup2(tmp, e->fd);
 
 		if (tmp < 0) {
-			pr_perror("%d: Can't duplicate %d->%d\n",
+			pr_perror("%d: Can't duplicate %d->%d",
 					pid, tmp, e->fd);
 			return -1;
 		}
@@ -897,7 +897,7 @@ static int attach_pipe(int pid, struct pipe_entry *e, struct pipe_info *pi, int
 
 	fd = open(path, e->flags);
 	if (fd < 0) {
-		pr_perror("%d: Can't attach pipe\n", pid);
+		pr_perror("%d: Can't attach pipe", pid);
 		return -1;
 	}
 
@@ -1151,7 +1151,7 @@ static int restore_one_zobie(int pid, int exit_code)
 		}
 
 		if (kill(pid, signr) < 0)
-			pr_perror("Can't kill myself, will just exit\n");
+			pr_perror("Can't kill myself, will just exit");
 
 		exit_code = 0;
 	}
@@ -1231,7 +1231,7 @@ static inline int fork_with_pid(int pid, unsigned long ns_clone_flags)
 	stack = mmap(NULL, STACK_SIZE, PROT_WRITE | PROT_READ,
 			MAP_PRIVATE | MAP_GROWSDOWN | MAP_ANONYMOUS, -1, 0);
 	if (stack == MAP_FAILED) {
-		pr_perror("Failed to map stack for kid\n");
+		pr_perror("Failed to map stack for kid");
 		goto err;
 	}
 
@@ -1240,12 +1240,12 @@ static inline int fork_with_pid(int pid, unsigned long ns_clone_flags)
 	ca.clone_flags = ns_clone_flags;
 	ca.fd = open(LAST_PID_PATH, O_RDWR);
 	if (ca.fd < 0) {
-		pr_perror("%d: Can't open %s\n", pid, LAST_PID_PATH);
+		pr_perror("%d: Can't open %s", pid, LAST_PID_PATH);
 		goto err;
 	}
 
 	if (flock(ca.fd, LOCK_EX)) {
-		pr_perror("%d: Can't lock %s\n", pid, LAST_PID_PATH);
+		pr_perror("%d: Can't lock %s", pid, LAST_PID_PATH);
 		goto err;
 	}
 
@@ -1256,11 +1256,11 @@ static inline int fork_with_pid(int pid, unsigned long ns_clone_flags)
 			ns_clone_flags | SIGCHLD, &ca);
 
 	if (ret < 0)
-		pr_perror("Can't fork for %d\n", pid);
+		pr_perror("Can't fork for %d", pid);
 
 err_unlock:
 	if (flock(ca.fd, LOCK_UN))
-		pr_perror("%d: Can't unlock %s\n", pid, LAST_PID_PATH);
+		pr_perror("%d: Can't unlock %s", pid, LAST_PID_PATH);
 
 err:
 	if (stack != MAP_FAILED)
@@ -1316,7 +1316,7 @@ static int restore_task_with_children(void *_arg)
 	sigdelset(&blockmask, SIGCHLD);
 	ret = sigprocmask(SIG_BLOCK, &blockmask, NULL);
 	if (ret) {
-		pr_perror("%d: Can't block signals\n", pid);
+		pr_perror("%d: Can't block signals", pid);
 		exit(1);
 	}
 
@@ -1324,7 +1324,7 @@ static int restore_task_with_children(void *_arg)
 
 	fd = open_image_ro_nocheck(FMT_FNAME_PSTREE, pstree_pid);
 	if (fd < 0) {
-		pr_perror("%d: Can't reopen pstree image\n", pid);
+		pr_perror("%d: Can't reopen pstree image", pid);
 		exit(1);
 	}
 
@@ -1348,7 +1348,7 @@ static int restore_task_with_children(void *_arg)
 
 		ret = read(fd, pids, i);
 		if (ret != i) {
-			pr_perror("%d: Can't read children pids\n", pid);
+			pr_perror("%d: Can't read children pids", pid);
 			exit(1);
 		}
 
@@ -1375,7 +1375,7 @@ static int restore_root_task(int fd, struct cr_options *opts)
 
 	ret = read(fd, &e, sizeof(e));
 	if (ret != sizeof(e)) {
-		pr_perror("Can't read root pstree entry\n");
+		pr_perror("Can't read root pstree entry");
 		return -1;
 	}
 
@@ -1489,7 +1489,7 @@ static long restorer_get_vma_hint(pid_t pid, struct list_head *self_vma_list, lo
 	while (1) {
 		ret = read(fd, &vma, sizeof(vma));
 		if (ret && ret != sizeof(vma)) {
-			pr_perror("Can't read vma entry from core-%d\n", pid);
+			pr_perror("Can't read vma entry from core-%d", pid);
 			goto err_or_found;
 		}
 
@@ -1662,7 +1662,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid)
 
 	fd_core = open_image_ro_nocheck(FMT_FNAME_CORE_OUT, pid);
 	if (fd_core < 0)
-		pr_perror("Can't open core-out-%d\n", pid);
+		pr_perror("Can't open core-out-%d", pid);
 
 	if (get_image_path(self_vmas_path, sizeof(self_vmas_path),
 			   FMT_FNAME_VMAS, pid))
@@ -1678,7 +1678,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid)
 	// unlink(self_vmas_path);
 
 	if (fd_self_vmas < 0) {
-		pr_perror("Can't open %s\n", self_vmas_path);
+		pr_perror("Can't open %s", self_vmas_path);
 		goto err;
 	}
 
@@ -1686,7 +1686,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid)
 	list_for_each_entry(vma_area, &self_vma_list, list) {
 		ret = write(fd_self_vmas, &vma_area->vma, sizeof(vma_area->vma));
 		if (ret != sizeof(vma_area->vma)) {
-			pr_perror("\nUnable to write vma entry (%li written)\n", num);
+			pr_perror("\nUnable to write vma entry (%li written)", num);
 			goto err;
 		}
 		num++;
@@ -1706,7 +1706,7 @@ static void sigreturn_restore(pid_t pstree_pid, pid_t pid)
 	while (1) {
 		ret = read_img_eof(fd_pstree, &pstree_entry);
 		if (ret <= 0) {
-			pr_perror("Pid %d not found in process tree\n", pid);
+			pr_perror("Pid %d not found in process tree", pid);
 			goto err;
 		}
 
diff --git a/cr-show.c b/cr-show.c
index c164461..5cc43f7 100644
--- a/cr-show.c
+++ b/cr-show.c
@@ -90,7 +90,7 @@ static void show_files(int fd_files)
 		if (e.len) {
 			int ret = read(fd_files, local_buf, e.len);
 			if (ret != e.len) {
-				pr_perror("Can't read %d bytes\n", e.len);
+				pr_perror("Can't read %d bytes", e.len);
 				goto out;
 			}
 			local_buf[e.len] = 0;
@@ -429,7 +429,7 @@ static void show_core(int fd_core, bool show_content)
 	bool is_thread;
 
 	if (fstat(fd_core, &stat)) {
-		pr_perror("Can't get stat on core file\n");
+		pr_perror("Can't get stat on core file");
 		goto out;
 	}
 
@@ -469,7 +469,7 @@ static int cr_parse_file(struct cr_options *opts)
 
 	fd = open(opts->show_dump_file, O_RDONLY);
 	if (fd < 0) {
-		pr_perror("Can't open %s\n", opts->show_dump_file);
+		pr_perror("Can't open %s", opts->show_dump_file);
 		goto err;
 	}
 
diff --git a/crtools.c b/crtools.c
index 926d26b..560c609 100644
--- a/crtools.c
+++ b/crtools.c
@@ -148,13 +148,13 @@ struct cr_fdset *cr_fdset_open(int pid, unsigned long use_mask, struct cr_fdset
 
 		ret = unlink(path);
 		if (ret && errno != ENOENT) {
-			pr_perror("Unable to unlink %s\n", path);
+			pr_perror("Unable to unlink %s", path);
 			goto err;
 		}
 
 		ret = open(path, O_RDWR | O_CREAT | O_EXCL, CR_FD_PERM);
 		if (ret < 0) {
-			pr_perror("Unable to open %s\n", path);
+			pr_perror("Unable to open %s", path);
 			goto err;
 		}
 
@@ -191,7 +191,7 @@ struct cr_fdset *prep_cr_fdset_for_restore(int pid, unsigned long use_mask)
 
 		ret = open(path, O_RDWR, CR_FD_PERM);
 		if (ret < 0) {
-			pr_perror("Unable to open %s\n", path);
+			pr_perror("Unable to open %s", path);
 			goto err;
 		}
 
@@ -303,7 +303,7 @@ int main(int argc, char *argv[])
 	}
 
 	if (!getcwd(image_dir, sizeof(image_dir))) {
-		pr_perror("can't get currect directory\n");
+		pr_perror("can't get currect directory");
 		return -1;
 	}
 
diff --git a/files.c b/files.c
index 483b7cc..626ab79 100644
--- a/files.c
+++ b/files.c
@@ -90,13 +90,13 @@ int prepare_fdinfo_global()
 {
 	fdinfo_descs = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, 0, 0);
 	if (fdinfo_descs == MAP_FAILED) {
-		pr_perror("Can't map fdinfo_descs\n");
+		pr_perror("Can't map fdinfo_descs");
 		return -1;
 	}
 
 	fdinfo_list = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, 0, 0);
 	if (fdinfo_list == MAP_FAILED) {
-		pr_perror("Can't map fdinfo_list\n");
+		pr_perror("Can't map fdinfo_list");
 		return -1;
 	}
 	return 0;
@@ -177,7 +177,7 @@ int prepare_fd_pid(int pid)
 		if (ret == 0)
 			break;
 		if (ret != sizeof(e)) {
-			pr_perror("%d: Read fdinfo failed %d (expected %li)\n",
+			pr_perror("%d: Read fdinfo failed %d (expected %li)",
 				  pid, ret, sizeof(e));
 			return -1;
 		}
@@ -205,7 +205,7 @@ static int open_fe_fd(struct fdinfo_entry *fe, int fd)
 
 	tmp = open(path, fe->flags);
 	if (tmp < 0) {
-		pr_perror("Can't open file %s\n", path);
+		pr_perror("Can't open file %s", path);
 		return -1;
 	}
 
@@ -225,7 +225,7 @@ static int restore_cwd(struct fdinfo_entry *fe, int fd)
 	pr_info("Restore CWD %s\n", path);
 	ret = chdir(path);
 	if (ret < 0) {
-		pr_perror("Can't change dir %s\n", path);
+		pr_perror("Can't change dir %s", path);
 		return -1;
 	}
 
@@ -279,7 +279,7 @@ static int open_transport_fd(int pid, struct fdinfo_entry *fe,
 	}
 	ret = bind(sock, &saddr, sun_len);
 	if (ret < 0) {
-		pr_perror("Can't bind unix socket %s\n", saddr.sun_path + 1);
+		pr_perror("Can't bind unix socket %s", saddr.sun_path + 1);
 		return -1;
 	}
 
@@ -406,7 +406,7 @@ static int recv_fd(int sock)
 
 	cmsg = CMSG_FIRSTHDR(&msg);
 	if (!cmsg->cmsg_type == SCM_RIGHTS) {
-		pr_perror("got control message of unknown type %d\n",
+		pr_perror("got control message of unknown type %d",
 							  cmsg->cmsg_type);
 		return -1;
 	}
@@ -422,7 +422,7 @@ static int receive_fd(int pid, struct fdinfo_entry *fe, struct fdinfo_desc *fi)
 		if (fi->addr != fe->addr) {
 			tmp = dup2(fi->addr, fe->addr);
 			if (tmp < 0) {
-				pr_perror("Can't duplicate fd %d %d\n",
+				pr_perror("Can't duplicate fd %d %d",
 						fi->addr, fe->addr);
 				return -1;
 			}
@@ -533,7 +533,7 @@ int prepare_fds(int pid)
 
 	fdinfo_fd = open_image_ro(CR_FD_FDINFO, pid);
 	if (fdinfo_fd < 0) {
-		pr_perror("%d: Can't open pipes img\n", pid);
+		pr_perror("%d: Can't open pipes img", pid);
 		return -1;
 	}
 
@@ -548,7 +548,7 @@ int prepare_fds(int pid)
 				break;
 
 			if (ret != sizeof(fe)) {
-				pr_perror("%d: Bad fdinfo entry\n", pid);
+				pr_perror("%d: Bad fdinfo entry", pid);
 				goto err;
 			}
 
@@ -613,6 +613,6 @@ int try_fixup_file_map(int pid, struct vma_entry *vma_entry, int fd)
 
 	return 0;
 err:
-	pr_perror("%d: Can't fixup vma\n", pid);
+	pr_perror("%d: Can't fixup vma", pid);
 	return -1;
 }
diff --git a/include/util.h b/include/util.h
index efe1b03..b44165e 100644
--- a/include/util.h
+++ b/include/util.h
@@ -83,8 +83,7 @@ extern void printk(const char *format, ...);
 
 #define pr_perror(fmt, ...)					\
 	do {							\
-		pr_err("%s: " fmt,  strerror(errno),		\
-			##__VA_ARGS__);				\
+		pr_err(fmt ": %m\n", ##__VA_ARGS__);		\
 	} while (0)
 
 #ifndef BUG_ON_HANDLER
@@ -131,7 +130,7 @@ static inline int write_img_buf(int fd, void *ptr, int size)
 		return 0;
 
 	if (ret < 0)
-		pr_perror("Can't write img file\n");
+		pr_perror("Can't write img file");
 	else
 		pr_err("Img trimmed %d/%d\n", ret, size);
 	return -1;
@@ -156,7 +155,7 @@ static inline int read_img_buf_eof(int fd, void *ptr, int size)
 		return 0;
 
 	if (ret < 0)
-		pr_perror("Can't read img file\n");
+		pr_perror("Can't read img file");
 	else
 		pr_err("Img trimmed %d/%d\n", ret, size);
 	return -1;
diff --git a/log.c b/log.c
index a080cb0..8d1929a 100644
--- a/log.c
+++ b/log.c
@@ -40,7 +40,7 @@ int init_log(const char *name)
 	if (name) {
 		fd = open(name, O_CREAT | O_WRONLY);
 		if (fd == -1) {
-			pr_perror("Can't create log file %s\n", name);
+			pr_perror("Can't create log file %s", name);
 			return -1;
 		}
 	}
diff --git a/namespaces.c b/namespaces.c
index 7aa6f6c..43e7dc3 100644
--- a/namespaces.c
+++ b/namespaces.c
@@ -13,13 +13,13 @@ int switch_ns(int pid, int type, char *ns)
 	snprintf(buf, sizeof(buf), "/proc/%d/ns/%s", pid, ns);
 	nsfd = open(buf, O_RDONLY);
 	if (nsfd < 0) {
-		pr_perror("Can't open ipcns file\n");
+		pr_perror("Can't open ipcns file");
 		goto out;
 	}
 
 	ret = setns(nsfd, type);
 	if (ret < 0)
-		pr_perror("Can't setns %d/%s\n", pid, ns);
+		pr_perror("Can't setns %d/%s", pid, ns);
 
 	close(nsfd);
 out:
@@ -61,7 +61,7 @@ int dump_namespaces(int ns_pid)
 
 	pid = fork();
 	if (pid < 0) {
-		pr_perror("Can't fork ns dumper\n");
+		pr_perror("Can't fork ns dumper");
 		return -1;
 	}
 
@@ -72,7 +72,7 @@ int dump_namespaces(int ns_pid)
 
 	ret = waitpid(pid, &status, 0);
 	if (ret != pid) {
-		pr_perror("Can't wait ns dumper\n");
+		pr_perror("Can't wait ns dumper");
 		return -1;
 	}
 
diff --git a/parasite-syscall.c b/parasite-syscall.c
index 480e07e..6a3f797 100644
--- a/parasite-syscall.c
+++ b/parasite-syscall.c
@@ -349,7 +349,7 @@ static int parasite_prep_file(int type, struct parasite_dump_file_args *fa,
 		return -1;
 
 	if (fchmod(fdset->fds[type], CR_FD_PERM_DUMP)) {
-		pr_perror("Can't change permissions on %d file\n", type);
+		pr_perror("Can't change permissions on %d file", type);
 		return -1;
 	}
 
diff --git a/proc_parse.c b/proc_parse.c
index ebe1c90..85c4493 100644
--- a/proc_parse.c
+++ b/proc_parse.c
@@ -30,7 +30,7 @@ int parse_maps(pid_t pid, int pid_dir, struct list_head *vma_area_list, bool use
 
 	maps = fopen_proc(pid_dir, "maps");
 	if (!maps) {
-		pr_perror("Can't open %d's maps\n", pid);
+		pr_perror("Can't open %d's maps", pid);
 		goto err;
 	}
 
@@ -72,7 +72,7 @@ int parse_maps(pid_t pid, int pid_dir, struct list_head *vma_area_list, bool use
 			vma_area->vm_file_fd = openat(dirfd(map_files_dir), path, O_RDONLY);
 			if (vma_area->vm_file_fd < 0) {
 				if (errno != ENOENT) {
-					pr_perror("Failed opening %d's map %Lu\n", pid, start);
+					pr_perror("Failed opening %d's map %Lu", pid, start);
 					goto err;
 				}
 			}
@@ -115,7 +115,7 @@ int parse_maps(pid_t pid, int pid_dir, struct list_head *vma_area_list, bool use
 		if (vma_area->vm_file_fd >= 0) {
 
 			if (fstat(vma_area->vm_file_fd, &st_buf) < 0) {
-				pr_perror("Failed fstat on %d's map %Lu\n", pid, start);
+				pr_perror("Failed fstat on %d's map %Lu", pid, start);
 				goto err;
 			}
 			if (!S_ISREG(st_buf.st_mode)) {
@@ -296,7 +296,7 @@ int parse_pid_status(int pid_dir, struct proc_status_creds *cr)
 
 	f = fopen_proc(pid_dir, "status");
 	if (f == NULL) {
-		pr_perror("Can't open proc status\n");
+		pr_perror("Can't open proc status");
 		return -1;
 	}
 
diff --git a/ptrace.c b/ptrace.c
index b106ec2..1b3d583 100644
--- a/ptrace.c
+++ b/ptrace.c
@@ -39,13 +39,13 @@ int seize_task(pid_t pid)
 	ret = ptrace(PTRACE_SEIZE, pid, NULL,
 		       (void *)(unsigned long)PTRACE_SEIZE_DEVEL);
 	if (ret < 0) {
-		pr_perror("Can't seize task\n");
+		pr_perror("Can't seize task");
 		goto err;
 	}
 
 	ret = ptrace(PTRACE_INTERRUPT, pid, NULL, NULL);
 	if (ret < 0) {
-		pr_perror("Can't interrupt task\n");
+		pr_perror("Can't interrupt task");
 		goto err;
 	}
 
diff --git a/sockets.c b/sockets.c
index bd5e769..fd306ec 100644
--- a/sockets.c
+++ b/sockets.c
@@ -453,7 +453,7 @@ static int unix_collect_one(struct unix_diag_msg *m, struct rtattr **tb)
 
 			uv = RTA_DATA(tb[UNIX_DIAG_VFS]);
 			if (stat(name, &st)) {
-				pr_perror("Can't stat socket %d(%s)\n",
+				pr_perror("Can't stat socket %d(%s)",
 						m->udiag_ino, name);
 				goto err;
 			}
@@ -560,7 +560,7 @@ static int collect_sockets_nl(int nl, void *req, int size,
 	iov.iov_len	= size;
 
 	if (sendmsg(nl, &msg, 0) < 0) {
-		pr_perror("Can't send request message\n");
+		pr_perror("Can't send request message");
 		goto err;
 	}
 
@@ -581,7 +581,7 @@ static int collect_sockets_nl(int nl, void *req, int size,
 			if (errno == EINTR)
 				continue;
 			else {
-				pr_perror("Error receiving nl report\n");
+				pr_perror("Error receiving nl report");
 				goto err;
 			}
 		}
@@ -682,7 +682,7 @@ try_again:
 				attempts--;
 				goto try_again; /* FIXME - use avagin@'s waiters */
 			}
-			pr_perror("Can't restore connection (c)\n");
+			pr_perror("Can't restore connection (c)");
 			return -1;
 		}
 
@@ -727,7 +727,7 @@ static int run_accept_jobs(void)
 		unix_show_job("Run acc", aj->fd, -1);
 		fd = accept(aj->fd, NULL, NULL);
 		if (fd < 0) {
-			pr_perror("Can't restore connection (s)\n");
+			pr_perror("Can't restore connection (s)");
 			return -1;
 		}
 
@@ -784,7 +784,7 @@ static int run_connect_jobs_dgram(void)
 		}
 
 		if (connect(d->fd, (struct sockaddr *)&b->addr, sizeof(b->addr)) < 0) {
-			pr_perror("Can't connect peer %d on fd %d\n",
+			pr_perror("Can't connect peer %d on fd %d",
 				  d->peer, d->fd);
 			goto err;
 		}
@@ -840,7 +840,7 @@ static int open_unix_sk_dgram(int sk, struct unix_sk_entry *ue, int img_fd)
 			unlink(addr.sun_path);
 		if (bind(sk, (struct sockaddr *)&addr,
 			 sizeof(addr.sun_family) + ue->namelen) < 0) {
-			pr_perror("Can't bind socket\n");
+			pr_perror("Can't bind socket");
 			goto err;
 		}
 
@@ -914,12 +914,12 @@ static int open_unix_sk_stream(int sk, struct unix_sk_entry *ue, int img_fd)
 			unlink(addr.sun_path);
 		if (bind(sk, (struct sockaddr *)&addr,
 			 sizeof(addr.sun_family) + ue->namelen) < 0) {
-			pr_perror("Can't bind socket\n");
+			pr_perror("Can't bind socket");
 			goto err;
 		}
 
 		if (listen(sk, ue->backlog) < 0) {
-			pr_perror("Can't listen socket\n");
+			pr_perror("Can't listen socket");
 			goto err;
 		}
 
@@ -962,12 +962,12 @@ static int open_unix_sk_stream(int sk, struct unix_sk_entry *ue, int img_fd)
 
 			prep_conn_addr(ue->id, &addr, &len);
 			if (bind(sk, (struct sockaddr *)&addr, len) < 0) {
-				pr_perror("Can't bind socket\n");
+				pr_perror("Can't bind socket");
 				goto err;
 			}
 
 			if (listen(sk, 1) < 0) {
-				pr_perror("Can't listen socket\n");
+				pr_perror("Can't listen socket");
 				goto err;
 			}
 
@@ -1034,7 +1034,7 @@ static int open_unix_sk(struct unix_sk_entry *ue, int *img_fd)
 
 	sk = socket(PF_UNIX, ue->type, 0);
 	if (sk < 0) {
-		pr_perror("Can't create unix socket\n");
+		pr_perror("Can't create unix socket");
 		return -1;
 	}
 
@@ -1113,7 +1113,7 @@ static int open_inet_sk(struct inet_sk_entry *ie, int *img_fd)
 
 	sk = socket(ie->family, ie->type, ie->proto);
 	if (sk < 0) {
-		pr_perror("Can't create unix socket\n");
+		pr_perror("Can't create unix socket");
 		return -1;
 	}
 
@@ -1127,12 +1127,12 @@ static int open_inet_sk(struct inet_sk_entry *ie, int *img_fd)
 	memcpy(&addr.sin_addr.s_addr, ie->src_addr, sizeof(unsigned int) * 4);
 
 	if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) == -1) {
-		pr_perror("Inet socket bind failed\n");
+		pr_perror("Inet socket bind failed");
 		goto err;
 	}
 
 	if (listen(sk, ie->backlog) == -1) {
-		pr_perror("listen() failed on %d\n", sk);
+		pr_perror("listen() failed on %d", sk);
 		goto err;
 	}
 
diff --git a/util.c b/util.c
index de22151..5ee6e50 100644
--- a/util.c
+++ b/util.c
@@ -100,7 +100,7 @@ int close_safe(int *fd)
 		if (!ret)
 			*fd = -1;
 		else
-			pr_perror("Unable to close fd: %d\n", *fd);
+			pr_perror("Unable to close fd: %d", *fd);
 	}
 
 	return ret;
@@ -128,7 +128,7 @@ int reopen_fd_as_safe(int new_fd, int old_fd, bool allow_reuse_fd)
 
 		tmp = dup2(old_fd, new_fd);
 		if (tmp < 0) {
-			pr_perror("Dup %d -> %d failed\n", old_fd, new_fd);
+			pr_perror("Dup %d -> %d failed", old_fd, new_fd);
 			return tmp;
 		}
 
@@ -146,7 +146,7 @@ int move_img_fd(int *img_fd, int want_fd)
 
 		tmp = dup(*img_fd);
 		if (tmp < 0) {
-			pr_perror("Can't dup file\n");
+			pr_perror("Can't dup file");
 			return -1;
 		}
 
@@ -213,7 +213,7 @@ int open_pid_proc(pid_t pid)
 	sprintf(path, "/proc/%d", pid);
 	fd = open(path, O_RDONLY);
 	if (fd < 0)
-		pr_perror("Can't open %s\n", path);
+		pr_perror("Can't open %s", path);
 	return fd;
 }
 
diff --git a/uts_ns.c b/uts_ns.c
index bb4fcb4..6226f9e 100644
--- a/uts_ns.c
+++ b/uts_ns.c
@@ -30,7 +30,7 @@ int dump_uts_ns(int ns_pid, struct cr_fdset *fdset)
 
 	ret = uname(&ubuf);
 	if (ret < 0) {
-		pr_perror("Error calling uname\n");
+		pr_perror("Error calling uname");
 		return ret;
 	}
 
@@ -66,7 +66,7 @@ static int prepare_uts_str(int fd, char *n)
 				"/proc/sys/kernel/%s", n);
 		fd = open(path, O_WRONLY);
 		if (fd < 0) {
-			pr_perror("Can't open %s\n", path);
+			pr_perror("Can't open %s", path);
 			return -1;
 		}
 
@@ -75,7 +75,7 @@ static int prepare_uts_str(int fd, char *n)
 		ret = write(fd, str, len);
 		close(fd);
 		if (ret != len) {
-			pr_perror("Can't write %s to %s\n",
+			pr_perror("Can't write %s to %s",
 					str, path);
 			return -1;
 		}


More information about the CRIU mailing list