#include #include #include #include "strff.h" typedef struct { stralloc name; stralloc version; stralloc makedeps; stralloc buildcmd; stralloc installcmd; } pkg; static struct strff cfgff; static void pkg_load(pkg *pkg, char *path) { int fd; fd = open_read(path); if (fd < 0) diesys(111, "open_read ", path); stralloc_init(&pkg->name); stralloc_init(&pkg->version); stralloc_init(&pkg->makedeps); stralloc_init(&pkg->buildcmd); stralloc_init(&pkg->installcmd); strff_open(&cfgff, fd); if (!strff_get(&cfgff, "name", &pkg->name)) diesys(111, "cannot get value for name"); if (!strff_get(&cfgff, "version", &pkg->version)) diesys(111, "cannot get value for version"); if (!strff_get(&cfgff, "makedeps", &pkg->makedeps)) diesys(111, "cannot get value for makedeps"); if (!strff_get(&cfgff, "build", &pkg->buildcmd)) diesys(111, "cannot get value for buildcmd"); if (!strff_get(&cfgff, "install", &pkg->installcmd)) diesys(111, "cannot get value for installcmd"); } int main() { pkg pkg; pkg_load(&pkg, "./conf.strff"); buffer_puts(buffer_1, "name is '"); buffer_put(buffer_1, pkg.name.s, pkg.name.len); buffer_puts(buffer_1, "', "); buffer_puts(buffer_1, "version is '"); buffer_put(buffer_1, pkg.version.s, pkg.version.len); buffer_puts(buffer_1, "', "); buffer_puts(buffer_1, "makedeps is '"); buffer_put(buffer_1, pkg.makedeps.s, pkg.makedeps.len); buffer_puts(buffer_1, "', "); buffer_puts(buffer_1, "buildcmd is '"); buffer_put(buffer_1, pkg.buildcmd.s, pkg.buildcmd.len); buffer_puts(buffer_1, "', "); buffer_puts(buffer_1, "installcmd is '"); buffer_put(buffer_1, pkg.installcmd.s, pkg.installcmd.len); buffer_putsflush(buffer_1, "'\n"); return 0; }