Hi, I encountered some problems when building pkgtools/pkg_filecheck under darwin. I get build errors with incorrect db4 uses: pkg_filecheck.c: In function 'main': pkg_filecheck.c:101: error: too few arguments to function '(*((struct DB **)((i) * 4u) + db))->close' pkg_filecheck.c: In function 'check': pkg_filecheck.c:133: warning: passing argument 2 of '(*((struct DB **)((i) * 4u) + db))->get' from incompatible pointer type pkg_filecheck.c:133: error: too few arguments to function '(*((struct DB **)((i) * 4u) + db))->get' Using the attached patch fixes the issues, and simply make sure the functions are used with the signatures from: /usr/pkg/share/doc/db4/api_c/db_close.html /usr/pkg/share/doc/db4/api_c/db_get.html That is, .include "../../mk/bdb.buildlink3.mk" gets the db4-4.4.20nb1 package, so pkg_filecheck should use its api. However, pkg_filecheck builds fine under netbsd, and will fail with the attached patch. db4 pkg is installed, but bdb.buildlink3.mk do not require it, and pkg_filecheck uses /usr/include/db.h. What is the correct way to fix this problem ? One way is to force bdb.buildlink3 to pull the db4 package under netbsd as well, but it doesn't seem right. Best regards, antoine
Index: files/pkg_filecheck.c =================================================================== RCS file: /cvsroot/pkgsrc/pkgtools/pkg_filecheck/files/pkg_filecheck.c,v retrieving revision 1.4 diff -u -r1.4 pkg_filecheck.c --- files/pkg_filecheck.c 24 Oct 2006 19:23:38 -0000 1.4 +++ files/pkg_filecheck.c 16 Feb 2007 21:35:19 -0000 @@ -98,7 +98,7 @@ err = check(dir, db, ignore); for (i=0; db[i]; i++) - db[i]->close(db[i]); + db[i]->close(db[i],0); free(dir); free(db); free(ignore); @@ -130,7 +130,7 @@ found = 0; for (i=0; db[i]; i++) - if (db[i]->get(db[i], &key, &val, 0) == 0) { + if (db[i]->get(db[i], NULL, &key, &val, 0) == 0) { found = 1; break; }
Attachment:
pgpUCEcb3iS8L.pgp
Description: PGP signature