2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-31 06:15:24 +00:00

proc-parse: Add alloc_fhandle/free_fhandle helpers

This removes code duplication. There is no strong
need for free_fhandle but I decided to add it to
be consistent with alloc/free handlers.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
Cyrill Gorcunov
2013-01-16 02:22:06 +04:00
committed by Pavel Emelyanov
parent 8573f5ec53
commit d6664eea4a

View File

@@ -831,6 +831,19 @@ static char nybble(const char n)
return 0;
}
static int alloc_fhandle(FhEntry *fh)
{
fh->n_handle = FH_ENTRY_SIZES__min_entries;
fh->handle = xmalloc(pb_repeated_size(fh, handle));
return fh->handle == NULL ? -1 : 0;
}
static void free_fhandle(FhEntry *fh)
{
xfree(fh->handle);
}
static void parse_fhandle_encoded(char *tok, FhEntry *fh)
{
char *d = (char *)fh->handle;
@@ -958,17 +971,14 @@ int parse_fdinfo(int fd, int type,
if (ret != 7)
goto parse_err;
f_handle.n_handle = FH_ENTRY_SIZES__min_entries;
f_handle.handle = xmalloc(pb_repeated_size(&f_handle, handle));
if (!f_handle.handle)
if (alloc_fhandle(&f_handle))
return -1;
parse_fhandle_encoded(str + hoff, &f_handle);
entry.ffy.type = MARK_TYPE__INODE;
ret = cb(&entry, arg);
xfree(f_handle.handle);
free_fhandle(&f_handle);
if (ret)
return ret;
@@ -1021,16 +1031,13 @@ int parse_fdinfo(int fd, int type,
if (ret != 7)
goto parse_err;
f_handle.n_handle = FH_ENTRY_SIZES__min_entries;
f_handle.handle = xmalloc(pb_repeated_size(&f_handle, handle));
if (!f_handle.handle)
if (alloc_fhandle(&f_handle))
return -1;
parse_fhandle_encoded(str + hoff, entry.ify.f_handle);
ret = cb(&entry, arg);
xfree(f_handle.handle);
free_fhandle(&f_handle);
if (ret)
return ret;