dect
/
libnl
Archived
13
0
Fork 0

Fix for dumping objects to a buffer instead of file descriptor

Attached is a patch to fix two problems with dumping objects to a buffer in=
stead of a file descriptor.
One was a problem in detecting the end of the buffer in the newline code.
The other was a problem with clearing the whole buffer before printing each=
 object.
This commit is contained in:
Bushman, Jeff 2012-05-16 11:50:25 -04:00 committed by Thomas Graf
parent 24d577c93d
commit ca883b61bc
3 changed files with 9 additions and 5 deletions

View File

@ -929,6 +929,9 @@ void nl_cache_dump_filter(struct nl_cache *cache,
if (!ops->oo_dump[type])
return;
if (params->dp_buf)
memset(params->dp_buf, 0, params->dp_buflen);
nl_list_for_each_entry(obj, &cache->c_items, ce_list) {
if (filter && !nl_object_match_filter(obj, filter))
continue;

View File

@ -259,6 +259,9 @@ int nl_object_is_marked(struct nl_object *obj)
*/
void nl_object_dump(struct nl_object *obj, struct nl_dump_params *params)
{
if (params->dp_buf)
memset(params->dp_buf, 0, params->dp_buflen);
dump_from_ops(obj, params);
}

View File

@ -824,7 +824,7 @@ void nl_new_line(struct nl_dump_params *params)
else if (params->dp_buf)
strncat(params->dp_buf, " ",
params->dp_buflen -
sizeof(params->dp_buf) - 1);
strlen(params->dp_buf) - 1);
}
}
@ -844,7 +844,8 @@ static void dump_one(struct nl_dump_params *parms, const char *fmt,
parms->dp_cb(parms, buf);
else
strncat(parms->dp_buf, buf,
parms->dp_buflen - strlen(parms->dp_buf) - 1);
parms->dp_buflen -
strlen(parms->dp_buf) - 1);
free(buf);
}
}
@ -1053,9 +1054,6 @@ void dump_from_ops(struct nl_object *obj, struct nl_dump_params *params)
params->dp_pre_dump = 1;
}
if (params->dp_buf)
memset(params->dp_buf, 0, params->dp_buflen);
if (obj->ce_ops->oo_dump[type])
obj->ce_ops->oo_dump[type](obj, params);
}