Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/lib/libc/gen/getcap.c,v rcsdiff: /ftp/cvs/cvsroot/src/lib/libc/gen/getcap.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.50 retrieving revision 1.53 diff -u -p -r1.50 -r1.53 --- src/lib/libc/gen/getcap.c 2011/10/15 23:00:01 1.50 +++ src/lib/libc/gen/getcap.c 2014/06/26 20:14:32 1.53 @@ -1,4 +1,4 @@ -/* $NetBSD: getcap.c,v 1.50 2011/10/15 23:00:01 christos Exp $ */ +/* $NetBSD: getcap.c,v 1.53 2014/06/26 20:14:32 christos Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -41,7 +41,7 @@ #if 0 static char sccsid[] = "@(#)getcap.c 8.3 (Berkeley) 3/25/94"; #else -__RCSID("$NetBSD: getcap.c,v 1.50 2011/10/15 23:00:01 christos Exp $"); +__RCSID("$NetBSD: getcap.c,v 1.53 2014/06/26 20:14:32 christos Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -52,6 +52,7 @@ __RCSID("$NetBSD: getcap.c,v 1.50 2011/1 #include #include +#include #include #ifndef SMALL #include @@ -159,10 +160,7 @@ cgetset(const char *ent) * return NULL. */ char * -cgetcap(buf, cap, type) - char *buf; - const char *cap; - int type; +cgetcap(char *buf, const char *cap, int type) { char *bp; const char *cp; @@ -256,13 +254,6 @@ static int getent(char **cap, size_t *len, const char * const *db_array, int fd, const char *name, int depth, char *nfield) { -#ifndef SMALL - DB *capdbp; - char pbuf[MAXPATHLEN]; - char *cbuf; - int retval; - size_t clen; -#endif char *record, *newrecord; char *r_end, *rp; /* pacify gcc */ const char * const *db_p; @@ -324,9 +315,14 @@ getent(char **cap, size_t *len, const ch (void)lseek(fd, (off_t)0, SEEK_SET); } else { #ifndef SMALL + DB *capdbp; + char pbuf[MAXPATHLEN]; + char *cbuf; + int retval; + size_t clen; + (void)snprintf(pbuf, sizeof(pbuf), "%s.db", *db_p); - if (expandtc && - (capdbp = dbopen(pbuf, O_RDONLY, 0, DB_HASH, 0)) + if ((capdbp = dbopen(pbuf, O_RDONLY, 0, DB_HASH, 0)) != NULL) { free(record); retval = cdbget(capdbp, &record, name); @@ -393,7 +389,7 @@ getent(char **cap, size_t *len, const ch rp = record; for (;;) { if (bp >= b_end) { - int n; + ssize_t n; n = read(fd, buf, sizeof(buf)); if (n <= 0) { @@ -456,7 +452,7 @@ getent(char **cap, size_t *len, const ch * some more. */ if (rp >= r_end) { - u_int pos; + ptrdiff_t pos; size_t newsize; pos = rp - record; @@ -518,7 +514,8 @@ tc_exp: if (expandtc) { char *newicap, *s; size_t ilen, newilen; - int diff, iret, tclen; + int iret; + ptrdiff_t diff, tclen; char *icap, *scan, *tc, *tcstart, *tcend; /* @@ -597,7 +594,7 @@ tc_exp: */ diff = newilen - tclen; if (diff >= r_end - rp) { - u_int pos, tcpos, tcposend; + ptrdiff_t pos, tcpos, tcposend; size_t newsize; pos = rp - record; @@ -917,7 +914,7 @@ cgetstr(char *buf, const char *cap, char u_int m_room; const char *bp; char *mp; - int len; + ptrdiff_t len; char *mem, *newmem; _DIAGASSERT(buf != NULL); @@ -1033,7 +1030,8 @@ cgetstr(char *buf, const char *cap, char mem = newmem; } *str = mem; - return len; + _DIAGASSERT(__type_fit(int, len)); + return (int)len; } /* @@ -1052,7 +1050,7 @@ cgetustr(char *buf, const char *cap, cha u_int m_room; const char *bp; char *mp; - int len; + size_t len; char *mem, *newmem; _DIAGASSERT(buf != NULL); @@ -1117,7 +1115,8 @@ cgetustr(char *buf, const char *cap, cha mem = newmem; } *str = mem; - return len; + _DIAGASSERT(__type_fit(int, len)); + return (int)len; } /*