Module: xenomai-forge Branch: rtdm-api-waitqueues Commit: 273dc2c1d09e2c24377ed239072a7cb45d9c0f22 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=273dc2c1d09e2c24377ed239072a7cb45d9c0f22
Author: Philippe Gerum <r...@xenomai.org> Date: Fri Apr 11 11:46:21 2014 +0200 copperplate/registry: introduce fsobstack_grow_file() helper --- include/copperplate/registry-obstack.h | 3 +++ lib/copperplate/registry.c | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/include/copperplate/registry-obstack.h b/include/copperplate/registry-obstack.h index a08afef..0fd1e1c 100644 --- a/include/copperplate/registry-obstack.h +++ b/include/copperplate/registry-obstack.h @@ -54,6 +54,9 @@ extern "C" { int fsobstack_grow_format(struct fsobstack *o, const char *fmt, ...); +int fsobstack_grow_file(struct fsobstack *o, + const char *path); + int fsobstack_grow_syncobj_grant(struct fsobstack *o, struct syncobj *sobj, struct fsobstack_syncops *ops); diff --git a/lib/copperplate/registry.c b/lib/copperplate/registry.c index ef6aa45..fe8153a 100644 --- a/lib/copperplate/registry.c +++ b/lib/copperplate/registry.c @@ -822,6 +822,32 @@ int fsobstack_grow_format(struct fsobstack *o, const char *fmt, ...) return -ENOMEM; } +int fsobstack_grow_file(struct fsobstack *o, const char *path) +{ + int len = 0; + FILE *fp; + int c; + + fp = fopen(path, "r"); + if (fp == NULL) + return -errno; + + for (;;) { + c = fgetc(fp); + if (c == EOF) { + if (ferror(fp)) + len = -errno; + break; + } + obstack_1grow(&o->obstack, c); + len++; + } + + fclose(fp); + + return len; +} + ssize_t fsobstack_pull(struct fsobstack *o, char *buf, size_t size) { size_t len; _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git