From a1f20efd02681413e4e3a6dd99f61d6a0da7b7b2 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 7 Sep 2008 11:27:18 -0400 Subject: [PATCH] Revive struct empfile callback init as oninit Commit a71f0158 removed unused callback init. Bring it back renamed to oninit, and without the redundant first argument. --- include/file.h | 4 ++++ src/lib/common/file.c | 8 +++++--- src/lib/common/filetable.c | 22 ++++++++++++---------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/include/file.h b/include/file.h index 7e8cdd8e7..b3b89593d 100644 --- a/include/file.h +++ b/include/file.h @@ -60,6 +60,10 @@ struct empfile { /* flags bit EFF_CUSTOM also varies */ /* User callbacks, may all be null */ + /* + * Called after element initialization. ELT is the element. + */ + void (*oninit)(void *elt); /* * Called after read. ID is the element id, and ELT is the * element read. May modify the element. Modifications are diff --git a/src/lib/common/file.c b/src/lib/common/file.c index 0d4999d25..692ed1878 100644 --- a/src/lib/common/file.c +++ b/src/lib/common/file.c @@ -667,12 +667,14 @@ do_blank(struct empfile *ep, void *buf, int id, int count) struct emptypedstr *elt; memset(buf, 0, count * ep->size); - if (ep->flags & EFF_TYPED) { - for (i = 0; i < count; i++) { - elt = (struct emptypedstr *)((char *)buf + i * ep->size); + for (i = 0; i < count; i++) { + elt = (struct emptypedstr *)((char *)buf + i * ep->size); + if (ep->flags & EFF_TYPED) { elt->ef_type = ep->uid; elt->uid = id + i; } + if (ep->oninit) + ep->oninit(elt); } } diff --git a/src/lib/common/filetable.c b/src/lib/common/filetable.c index eaa155e54..4894369cc 100644 --- a/src/lib/common/filetable.c +++ b/src/lib/common/filetable.c @@ -62,28 +62,29 @@ /* Initializers for members flags... */ /* Unmapped cache */ #define UNMAPPED_CACHE(type, flags) \ - sizeof(type), (flags), NULL, 0, 0, 0, 0, -1, NULL, NULL + sizeof(type), (flags), NULL, 0, 0, 0, 0, -1, NULL, NULL, NULL /* * Mapped cache, array with known size. * Members cids, fids are not set. */ #define ARRAY_CACHE(array, flags) \ sizeof(*(array)), (flags), (char *)(array), \ - SZ((array)), 0, 0, 0, -1, NULL, NULL + SZ((array)), 0, 0, 0, -1, NULL, NULL, NULL /* * Mapped cache, array with unknown size. * Members csize, cids, fids are not set. */ #define PTR_CACHE(ptr, flags) \ sizeof(*(ptr)), (flags), (char *)(ptr), \ - 0, 0, 0, 0, -1, NULL, NULL + 0, 0, 0, 0, -1, NULL, NULL, NULL /* * Array-backed table. * The array's last element is the sentinel. */ -#define ARRAY_TABLE(array, flags) \ - sizeof(*(array)), (flags), (char *)(array), \ - SZ((array)), 0, SZ((array)) - 1, SZ((array)) - 1, -1, NULL, NULL +#define ARRAY_TABLE(array, flags) \ + sizeof(*(array)), (flags), (char *)(array), \ + SZ((array)), 0, SZ((array)) - 1, SZ((array)) - 1, -1, \ + NULL, NULL, NULL /* Common configuration table flags */ #define EFF_CFG (EFF_PRIVATE | EFF_MEM | EFF_STATIC | EFF_SENTINEL) @@ -144,9 +145,9 @@ struct empfile empfile[] = { {EF_LOAN, "loan", "loan", loan_ca, UNMAPPED_CACHE(struct lonstr, EFF_TYPED)}, {EF_MAP, "map", "map", NULL, - 0, 0, NULL, 0, 0, 0, 0, -1, NULL, NULL}, + 0, 0, NULL, 0, 0, 0, 0, -1, NULL, NULL, NULL}, {EF_BMAP, "bmap", "bmap", NULL, - 0, 0, NULL, 0, 0, 0, 0, -1, NULL, NULL}, + 0, 0, NULL, 0, 0, 0, 0, -1, NULL, NULL, NULL}, {EF_COMM, "commodity", "commodity", commodity_ca, UNMAPPED_CACHE(struct comstr, EFF_TYPED | EFF_OWNER)}, {EF_LOST, "lost", "lostitems", lost_ca, @@ -196,7 +197,7 @@ struct empfile empfile[] = { ARRAY_TABLE(empfile, EFF_CFG)}, {EF_VERSION, "version", NULL, NULL, sizeof(PACKAGE_STRING), EFF_STATIC, version, 1, 0, 1, 1, -1, - NULL, NULL}, + NULL, NULL, NULL}, {EF_META, "meta", NULL, mdchr_ca, PTR_CACHE(mdchr_ca, EFF_CFG)}, @@ -235,7 +236,8 @@ struct empfile empfile[] = { UNMAPPED_CACHE(struct natstr, EFF_TYPED | EFF_OWNER)}, /* Sentinel */ - {EF_BAD, NULL, NULL, NULL, 0, 0, NULL, 0, 0, 0, 0, -1, NULL, NULL}, + {EF_BAD, NULL, NULL, NULL, + 0, 0, NULL, 0, 0, 0, 0, -1, NULL, NULL, NULL}, }; static void -- 2.43.0