Patches for gcc15. Signed-off-by: André Malo Reference: https://bugs.gentoo.org/945469 diff '--color=auto' -Nur djbdns-1.05~/alloc.c djbdns-1.05/alloc.c --- djbdns-1.05~/alloc.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/alloc.c 2025-12-02 22:43:49.677462093 +0100 @@ -10,8 +10,7 @@ #define space ((char *) realspace) static unsigned int avail = SPACE; /* multiple of ALIGNMENT; 0<=avail<=SPACE */ -/*@null@*//*@out@*/char *alloc(n) -unsigned int n; +/*@null@*//*@out@*/void *alloc(size_t n) { char *x; n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */ @@ -21,9 +20,9 @@ return x; } -void alloc_free(x) -char *x; +void alloc_free(void *x_) { + char *x = x_; if (x >= space) if (x < space + SPACE) return; /* XXX: assuming that pointers are flat */ diff '--color=auto' -Nur djbdns-1.05~/alloc.h djbdns-1.05/alloc.h --- djbdns-1.05~/alloc.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/alloc.h 2025-12-02 22:43:49.677666536 +0100 @@ -1,8 +1,10 @@ +#include + #ifndef ALLOC_H #define ALLOC_H -extern /*@null@*//*@out@*/char *alloc(); -extern void alloc_free(); -extern int alloc_re(); +extern /*@null@*//*@out@*/void *alloc(size_t); +extern void alloc_free(void *); +extern int alloc_re(void *, size_t, size_t); #endif diff '--color=auto' -Nur djbdns-1.05~/alloc_re.c djbdns-1.05/alloc_re.c --- djbdns-1.05~/alloc_re.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/alloc_re.c 2025-12-02 22:43:49.677764806 +0100 @@ -1,11 +1,9 @@ #include "alloc.h" #include "byte.h" -int alloc_re(x,m,n) -char **x; -unsigned int m; -unsigned int n; +int alloc_re(void *x_, size_t m, size_t n) { + char **x = x_; char *y; y = alloc(n); diff '--color=auto' -Nur djbdns-1.05~/auto-str.c djbdns-1.05/auto-str.c --- djbdns-1.05~/auto-str.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/auto-str.c 2025-12-02 22:43:49.677856118 +0100 @@ -4,6 +4,7 @@ char bspace[256]; buffer b = BUFFER_INIT(buffer_unixwrite,1,bspace,sizeof bspace); +#define puts puts_ void puts(const char *s) { if (buffer_puts(&b,s) == -1) _exit(111); diff '--color=auto' -Nur djbdns-1.05~/axfr-get.c djbdns-1.05/axfr-get.c --- djbdns-1.05~/axfr-get.c 2025-12-02 22:43:37.114107512 +0100 +++ djbdns-1.05/axfr-get.c 2025-12-02 22:43:49.677982306 +0100 @@ -360,7 +360,7 @@ fd = open_trunc(fntmp); if (fd == -1) die_write(); - buffer_init(&b,buffer_unixwrite,fd,bspace,sizeof bspace); + buffer_init(&b,(buffer_op)buffer_unixwrite,fd,bspace,sizeof bspace); if (!stralloc_copyb(&packet,"\0\0\0\0\0\1\0\0\0\0\0\0",12)) die_generate(); if (!stralloc_catb(&packet,zone,zonelen)) die_generate(); diff '--color=auto' -Nur djbdns-1.05~/buffer.c djbdns-1.05/buffer.c --- djbdns-1.05~/buffer.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/buffer.c 2025-12-02 22:43:49.678114373 +0100 @@ -1,6 +1,6 @@ #include "buffer.h" -void buffer_init(buffer *s,int (*op)(),int fd,char *buf,unsigned int len) +void buffer_init(buffer *s, buffer_op op, int fd, char *buf, size_t len) { s->x = buf; s->fd = fd; diff '--color=auto' -Nur djbdns-1.05~/buffer_get.c djbdns-1.05/buffer_get.c --- djbdns-1.05~/buffer_get.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/buffer_get.c 2025-12-02 22:43:49.678243357 +0100 @@ -2,7 +2,7 @@ #include "byte.h" #include "error.h" -static int oneread(int (*op)(),int fd,char *buf,unsigned int len) +static ssize_t oneread(buffer_op op, int fd, char *buf, size_t len) { int r; @@ -13,7 +13,7 @@ } } -static int getthis(buffer *s,char *buf,unsigned int len) +static ssize_t getthis(buffer *s, char *buf, size_t len) { if (len > s->p) len = s->p; s->p -= len; @@ -22,9 +22,9 @@ return len; } -int buffer_feed(buffer *s) +ssize_t buffer_feed(buffer *s) { - int r; + ssize_t r; if (s->p) return s->p; r = oneread(s->op,s->fd,s->x,s->n); @@ -35,9 +35,9 @@ return r; } -int buffer_bget(buffer *s,char *buf,unsigned int len) +ssize_t buffer_bget(buffer *s, char *buf, size_t len) { - int r; + ssize_t r; if (s->p > 0) return getthis(s,buf,len); if (s->n <= len) return oneread(s->op,s->fd,buf,s->n); @@ -45,9 +45,9 @@ return getthis(s,buf,len); } -int buffer_get(buffer *s,char *buf,unsigned int len) +ssize_t buffer_get(buffer *s, char *buf, size_t len) { - int r; + ssize_t r; if (s->p > 0) return getthis(s,buf,len); if (s->n <= len) return oneread(s->op,s->fd,buf,len); @@ -60,7 +60,7 @@ return s->x + s->n; } -void buffer_seek(buffer *s,unsigned int len) +void buffer_seek(buffer *s, size_t len) { s->n += len; s->p -= len; diff '--color=auto' -Nur djbdns-1.05~/buffer.h djbdns-1.05/buffer.h --- djbdns-1.05~/buffer.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/buffer.h 2025-12-02 22:43:49.678364797 +0100 @@ -1,27 +1,31 @@ +#include +#include + #ifndef BUFFER_H #define BUFFER_H +typedef ssize_t (*buffer_op)(int, void *, size_t); typedef struct buffer { char *x; - unsigned int p; - unsigned int n; + size_t p; + size_t n; int fd; - int (*op)(); + buffer_op op; } buffer; -#define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), (op) } +#define BUFFER_INIT(op,fd,buf,len) { (buf), 0, (len), (fd), ((buffer_op)(op)) } #define BUFFER_INSIZE 8192 #define BUFFER_OUTSIZE 8192 -extern void buffer_init(buffer *,int (*)(),int,char *,unsigned int); +extern void buffer_init(buffer *, buffer_op, int, char *, size_t); extern int buffer_flush(buffer *); -extern int buffer_put(buffer *,const char *,unsigned int); -extern int buffer_putalign(buffer *,const char *,unsigned int); -extern int buffer_putflush(buffer *,const char *,unsigned int); -extern int buffer_puts(buffer *,const char *); -extern int buffer_putsalign(buffer *,const char *); -extern int buffer_putsflush(buffer *,const char *); +extern int buffer_put(buffer *, const char *, size_t); +extern int buffer_putalign(buffer *,const char *, size_t); +extern int buffer_putflush(buffer *,const char *, size_t); +extern int buffer_puts(buffer *, const char *); +extern int buffer_putsalign(buffer *, const char *); +extern int buffer_putsflush(buffer *, const char *); #define buffer_PUTC(s,c) \ ( ((s)->n != (s)->p) \ @@ -29,12 +33,12 @@ : buffer_put((s),&(c),1) \ ) -extern int buffer_get(buffer *,char *,unsigned int); -extern int buffer_bget(buffer *,char *,unsigned int); -extern int buffer_feed(buffer *); +extern ssize_t buffer_get(buffer *, char *, size_t); +extern ssize_t buffer_bget(buffer *, char *, size_t); +extern ssize_t buffer_feed(buffer *); extern char *buffer_peek(buffer *); -extern void buffer_seek(buffer *,unsigned int); +extern void buffer_seek(buffer *, size_t); #define buffer_PEEK(s) ( (s)->x + (s)->n ) #define buffer_SEEK(s,len) ( ( (s)->p -= (len) ) , ( (s)->n += (len) ) ) @@ -47,8 +51,8 @@ extern int buffer_copy(buffer *,buffer *); -extern int buffer_unixread(int,char *,unsigned int); -extern int buffer_unixwrite(int,const char *,unsigned int); +extern ssize_t buffer_unixread(int, void *, size_t); +extern ssize_t buffer_unixwrite(int, const void *, size_t); extern buffer *buffer_0; extern buffer *buffer_0small; diff '--color=auto' -Nur djbdns-1.05~/buffer_put.c djbdns-1.05/buffer_put.c --- djbdns-1.05~/buffer_put.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/buffer_put.c 2025-12-02 22:43:49.678490334 +0100 @@ -3,12 +3,12 @@ #include "byte.h" #include "error.h" -static int allwrite(int (*op)(),int fd,const char *buf,unsigned int len) +static int allwrite(buffer_op op, int fd, const char *buf, size_t len) { - int w; + ssize_t w; while (len) { - w = op(fd,buf,len); + w = op(fd,(char *)buf,len); if (w == -1) { if (errno == error_intr) continue; return -1; /* note that some data may have been written */ @@ -22,7 +22,7 @@ int buffer_flush(buffer *s) { - int p; + size_t p; p = s->p; if (!p) return 0; @@ -30,9 +30,9 @@ return allwrite(s->op,s->fd,s->x,p); } -int buffer_putalign(buffer *s,const char *buf,unsigned int len) +int buffer_putalign(buffer *s, const char *buf, size_t len) { - unsigned int n; + size_t n; while (len > (n = s->n - s->p)) { byte_copy(s->x + s->p,n,buf); s->p += n; buf += n; len -= n; @@ -44,9 +44,9 @@ return 0; } -int buffer_put(buffer *s,const char *buf,unsigned int len) +int buffer_put(buffer *s, const char *buf, size_t len) { - unsigned int n; + size_t n; n = s->n; if (len > n - s->p) { @@ -66,23 +66,23 @@ return 0; } -int buffer_putflush(buffer *s,const char *buf,unsigned int len) +int buffer_putflush(buffer *s, const char *buf, size_t len) { if (buffer_flush(s) == -1) return -1; return allwrite(s->op,s->fd,buf,len); } -int buffer_putsalign(buffer *s,const char *buf) +int buffer_putsalign(buffer *s, const char *buf) { return buffer_putalign(s,buf,str_len(buf)); } -int buffer_puts(buffer *s,const char *buf) +int buffer_puts(buffer *s, const char *buf) { return buffer_put(s,buf,str_len(buf)); } -int buffer_putsflush(buffer *s,const char *buf) +int buffer_putsflush(buffer *s, const char *buf) { return buffer_putflush(s,buf,str_len(buf)); } diff '--color=auto' -Nur djbdns-1.05~/buffer_read.c djbdns-1.05/buffer_read.c --- djbdns-1.05~/buffer_read.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/buffer_read.c 2025-12-02 22:43:49.678576265 +0100 @@ -1,7 +1,7 @@ #include #include "buffer.h" -int buffer_unixread(int fd,char *buf,unsigned int len) +ssize_t buffer_unixread(int fd, void *buf, size_t len) { - return read(fd,buf,len); + return read(fd,(char *)buf,len); } diff '--color=auto' -Nur djbdns-1.05~/buffer_write.c djbdns-1.05/buffer_write.c --- djbdns-1.05~/buffer_write.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/buffer_write.c 2025-12-02 22:43:49.678662799 +0100 @@ -1,7 +1,7 @@ #include #include "buffer.h" -int buffer_unixwrite(int fd,const char *buf,unsigned int len) +ssize_t buffer_unixwrite(int fd, const void *buf, size_t len) { - return write(fd,buf,len); + return write(fd,(const char *)buf,len); } diff '--color=auto' -Nur djbdns-1.05~/byte_chr.c djbdns-1.05/byte_chr.c --- djbdns-1.05~/byte_chr.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/byte_chr.c 2025-12-02 22:43:49.678749499 +0100 @@ -1,12 +1,9 @@ #include "byte.h" -unsigned int byte_chr(s,n,c) -char *s; -register unsigned int n; -int c; +unsigned int byte_chr(const char *s, register size_t n, int c) { register char ch; - register char *t; + register const char *t; ch = c; t = s; diff '--color=auto' -Nur djbdns-1.05~/byte_copy.c djbdns-1.05/byte_copy.c --- djbdns-1.05~/byte_copy.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/byte_copy.c 2025-12-02 22:43:49.678836184 +0100 @@ -1,10 +1,10 @@ #include "byte.h" -void byte_copy(to,n,from) -register char *to; -register unsigned int n; -register char *from; +void byte_copy(void *to_, register size_t n, const void *from_) { + register char *to = to_; + register const char *from = from_; + for (;;) { if (!n) return; *to++ = *from++; --n; if (!n) return; *to++ = *from++; --n; diff '--color=auto' -Nur djbdns-1.05~/byte_cr.c djbdns-1.05/byte_cr.c --- djbdns-1.05~/byte_cr.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/byte_cr.c 2025-12-02 22:43:49.678921918 +0100 @@ -1,10 +1,10 @@ #include "byte.h" -void byte_copyr(to,n,from) -register char *to; -register unsigned int n; -register char *from; +void byte_copyr(void *to_, register size_t n, const void *from_) { + register char *to = to_; + register const char *from = from_; + to += n; from += n; for (;;) { diff '--color=auto' -Nur djbdns-1.05~/byte_diff.c djbdns-1.05/byte_diff.c --- djbdns-1.05~/byte_diff.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/byte_diff.c 2025-12-02 22:43:49.679006562 +0100 @@ -1,9 +1,6 @@ #include "byte.h" -int byte_diff(s,n,t) -register char *s; -register unsigned int n; -register char *t; +int byte_diff(register const unsigned char *s, register size_t n, register const unsigned char *t) { for (;;) { if (!n) return 0; if (*s != *t) break; ++s; ++t; --n; diff '--color=auto' -Nur djbdns-1.05~/byte.h djbdns-1.05/byte.h --- djbdns-1.05~/byte.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/byte.h 2025-12-02 22:43:49.679094828 +0100 @@ -1,12 +1,13 @@ +#include + #ifndef BYTE_H #define BYTE_H -extern unsigned int byte_chr(); -extern unsigned int byte_rchr(); -extern void byte_copy(); -extern void byte_copyr(); -extern int byte_diff(); -extern void byte_zero(); +extern unsigned int byte_chr(const char *, register size_t, int); +extern void byte_copy(void *, register size_t, const void *); +extern void byte_copyr(void *, register size_t, const void *); +extern int byte_diff(register const unsigned char *, register size_t, register const unsigned char *); +extern void byte_zero(void *, register size_t); #define byte_equal(s,n,t) (!byte_diff((s),(n),(t))) diff '--color=auto' -Nur djbdns-1.05~/byte_zero.c djbdns-1.05/byte_zero.c --- djbdns-1.05~/byte_zero.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/byte_zero.c 2025-12-02 22:43:49.679184094 +0100 @@ -1,9 +1,8 @@ #include "byte.h" -void byte_zero(s,n) -char *s; -register unsigned int n; +void byte_zero(void *s_, register size_t n) { + char *s = s_; for (;;) { if (!n) break; *s++ = 0; --n; if (!n) break; *s++ = 0; --n; diff '--color=auto' -Nur djbdns-1.05~/cdb_make.c djbdns-1.05/cdb_make.c --- djbdns-1.05~/cdb_make.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/cdb_make.c 2025-12-02 22:43:49.679283267 +0100 @@ -14,7 +14,7 @@ c->numentries = 0; c->fd = fd; c->pos = sizeof c->final; - buffer_init(&c->b,buffer_unixwrite,fd,c->bspace,sizeof c->bspace); + buffer_init(&c->b,(buffer_op)buffer_unixwrite,fd,c->bspace,sizeof c->bspace); return seek_set(fd,c->pos); } diff '--color=auto' -Nur djbdns-1.05~/dnscache.c djbdns-1.05/dnscache.c --- djbdns-1.05~/dnscache.c 2025-12-02 22:43:37.146897195 +0100 +++ djbdns-1.05/dnscache.c 2025-12-02 22:43:49.679393606 +0100 @@ -52,7 +52,7 @@ static char buf[1024]; uint64 numqueries = 0; -static unsigned int truncate_len = 512; +static unsigned long truncate_len = 512; static int udp53; @@ -414,7 +414,7 @@ socket_tryreservein(udp53,131072); byte_zero(seed,sizeof seed); - read(0,seed,sizeof seed); + (void)read(0,seed,sizeof seed); dns_random_init(seed); close(0); diff '--color=auto' -Nur djbdns-1.05~/exit.h djbdns-1.05/exit.h --- djbdns-1.05~/exit.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/exit.h 2025-12-02 22:43:49.679506642 +0100 @@ -1,6 +1,6 @@ #ifndef EXIT_H #define EXIT_H -extern void _exit(); +#include #endif diff '--color=auto' -Nur djbdns-1.05~/FILES djbdns-1.05/FILES --- djbdns-1.05~/FILES 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/FILES 2025-12-02 22:43:49.679599711 +0100 @@ -225,7 +225,6 @@ trydrent.c trylsock.c trypoll.c -tryshsgr.c trysysel.c tryulong32.c tryulong64.c diff '--color=auto' -Nur djbdns-1.05~/generic-conf.c djbdns-1.05/generic-conf.c --- djbdns-1.05~/generic-conf.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/generic-conf.c 2025-12-02 22:43:49.679685284 +0100 @@ -43,7 +43,7 @@ fn = s; fd = open_trunc(fn); if (fd == -1) fail(); - buffer_init(&ss,buffer_unixwrite,fd,buf,sizeof buf); + buffer_init(&ss,(buffer_op)buffer_unixwrite,fd,buf,sizeof buf); } void outs(const char *s) diff '--color=auto' -Nur djbdns-1.05~/hasshsgr.h1 djbdns-1.05/hasshsgr.h1 --- djbdns-1.05~/hasshsgr.h1 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/hasshsgr.h1 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -/* sysdep: -shortsetgroups */ diff '--color=auto' -Nur djbdns-1.05~/hasshsgr.h2 djbdns-1.05/hasshsgr.h2 --- djbdns-1.05~/hasshsgr.h2 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/hasshsgr.h2 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -/* sysdep: +shortsetgroups */ -#define HASSHORTSETGROUPS 1 diff '--color=auto' -Nur djbdns-1.05~/hier.c djbdns-1.05/hier.c --- djbdns-1.05~/hier.c 2025-12-02 22:43:37.135670301 +0100 +++ djbdns-1.05/hier.c 2025-12-02 22:43:49.679872041 +0100 @@ -1,9 +1,11 @@ +#include +#include #include "auto_home.h" /* implemented in install.c and/or instcheck.c */ -void c(char*, char*, char*, int, int, int); -void h(char*, int, int, int); -void d(char*, char*, int, int, int); +void c(const char*, const char*, const char*, uid_t, gid_t, mode_t); +void h(const char*, uid_t, gid_t, mode_t); +void d(const char*, const char*, uid_t, gid_t, mode_t); void hier() diff '--color=auto' -Nur djbdns-1.05~/install.c djbdns-1.05/install.c --- djbdns-1.05~/install.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/install.c 2025-12-02 22:43:49.680010735 +0100 @@ -13,11 +13,7 @@ int fdsourcedir = -1; -void h(home,uid,gid,mode) -char *home; -int uid; -int gid; -int mode; +void h(const char *home, uid_t uid, gid_t gid, mode_t mode) { if (mkdir(home,0700) == -1) if (errno != error_exist) @@ -28,12 +24,7 @@ strerr_die4sys(111,FATAL,"unable to chmod ",home,": "); } -void d(home,subdir,uid,gid,mode) -char *home; -char *subdir; -int uid; -int gid; -int mode; +void d(const char *home, const char *subdir, uid_t uid, gid_t gid, mode_t mode) { if (chdir(home) == -1) strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); @@ -51,13 +42,7 @@ buffer ssin; buffer ssout; -void c(home,subdir,file,uid,gid,mode) -char *home; -char *subdir; -char *file; -int uid; -int gid; -int mode; +void c(const char *home, const char *subdir, const char *file, uid_t uid, gid_t gid, mode_t mode) { int fdin; int fdout; @@ -78,7 +63,7 @@ fdout = open_trunc(file); if (fdout == -1) strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": "); - buffer_init(&ssout,buffer_unixwrite,fdout,outbuf,sizeof outbuf); + buffer_init(&ssout,(buffer_op)buffer_unixwrite,fdout,outbuf,sizeof outbuf); switch(buffer_copy(&ssout,&ssin)) { case -2: @@ -101,14 +86,7 @@ strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": "); } -void z(home,subdir,file,len,uid,gid,mode) -char *home; -char *subdir; -char *file; -int len; -int uid; -int gid; -int mode; +void z(const char *home, const char *subdir, const char *file, int len, uid_t uid, gid_t gid, mode_t mode) { int fdout; @@ -120,7 +98,7 @@ fdout = open_trunc(file); if (fdout == -1) strerr_die6sys(111,FATAL,"unable to write .../",subdir,"/",file,": "); - buffer_init(&ssout,buffer_unixwrite,fdout,outbuf,sizeof outbuf); + buffer_init(&ssout,(buffer_op)buffer_unixwrite,fdout,outbuf,sizeof outbuf); while (len-- > 0) if (buffer_put(&ssout,"",1) == -1) @@ -139,7 +117,7 @@ strerr_die6sys(111,FATAL,"unable to chmod .../",subdir,"/",file,": "); } -int main() +int main(void) { fdsourcedir = open_read("."); if (fdsourcedir == -1) diff '--color=auto' -Nur djbdns-1.05~/instcheck.c djbdns-1.05/instcheck.c --- djbdns-1.05~/instcheck.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/instcheck.c 2025-12-02 22:43:49.680136082 +0100 @@ -10,15 +10,7 @@ #define FATAL "instcheck: fatal: " #define WARNING "instcheck: warning: " -void perm(prefix1,prefix2,prefix3,file,type,uid,gid,mode) -char *prefix1; -char *prefix2; -char *prefix3; -char *file; -int type; -int uid; -int gid; -int mode; +void perm(const char *prefix1, const char *prefix2, const char *prefix3, const char *file, mode_t type, uid_t uid, gid_t gid, mode_t mode) { struct stat st; @@ -40,46 +32,26 @@ strerr_warn6(WARNING,prefix1,prefix2,prefix3,file," has wrong type",0); } -void h(home,uid,gid,mode) -char *home; -int uid; -int gid; -int mode; +void h(const char *home, uid_t uid, gid_t gid, mode_t mode) { perm("","","",home,S_IFDIR,uid,gid,mode); } -void d(home,subdir,uid,gid,mode) -char *home; -char *subdir; -int uid; -int gid; -int mode; +void d(const char *home, const char *subdir, uid_t uid, gid_t gid, mode_t mode) { if (chdir(home) == -1) strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); perm("",home,"/",subdir,S_IFDIR,uid,gid,mode); } -void p(home,fifo,uid,gid,mode) -char *home; -char *fifo; -int uid; -int gid; -int mode; +void p(const char *home, const char *fifo, uid_t uid, gid_t gid, mode_t mode) { if (chdir(home) == -1) strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); perm("",home,"/",fifo,S_IFIFO,uid,gid,mode); } -void c(home,subdir,file,uid,gid,mode) -char *home; -char *subdir; -char *file; -int uid; -int gid; -int mode; +void c(const char *home, const char *subdir, const char *file, uid_t uid, gid_t gid, mode_t mode) { if (chdir(home) == -1) strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); @@ -88,20 +60,15 @@ perm(".../",subdir,"/",file,S_IFREG,uid,gid,mode); } -void z(home,file,len,uid,gid,mode) -char *home; -char *file; -int len; -int uid; -int gid; -int mode; +void z(const char *home, const char *file, int len, uid_t uid, gid_t gid, mode_t mode) { + (void)len; /* unused */ if (chdir(home) == -1) strerr_die4sys(111,FATAL,"unable to switch to ",home,": "); perm("",home,"/",file,S_IFREG,uid,gid,mode); } -int main() +int main(void) { hier(); _exit(0); diff '--color=auto' -Nur djbdns-1.05~/Makefile djbdns-1.05/Makefile --- djbdns-1.05~/Makefile 2025-12-02 22:43:37.154337056 +0100 +++ djbdns-1.05/Makefile 2025-12-02 22:43:49.680312281 +0100 @@ -510,12 +510,6 @@ *) cat hasdevtcp.h1 ;; \ esac ) > hasdevtcp.h -hasshsgr.h: \ -choose compile load tryshsgr.c hasshsgr.h1 hasshsgr.h2 chkshsgr \ -warn-shsgr - ./chkshsgr || ( cat warn-shsgr; exit 1 ) - ./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h - hier.o: \ compile hier.c auto_home.h ./compile hier.c @@ -682,7 +676,7 @@ dnstrace dnstracesort cachetest utime rts prot.o: \ -compile prot.c hasshsgr.h prot.h +compile prot.c prot.h ./compile prot.c qlog.o: \ diff '--color=auto' -Nur djbdns-1.05~/prot.c djbdns-1.05/prot.c --- djbdns-1.05~/prot.c 2025-12-02 22:43:37.135711312 +0100 +++ djbdns-1.05/prot.c 2025-12-02 22:43:49.680484591 +0100 @@ -1,21 +1,13 @@ #include -#include -#include "hasshsgr.h" #include "prot.h" -int prot_gid(int gid) +int prot_gid(gid_t gid) { -#ifdef HASSHORTSETGROUPS - short x[2]; - x[0] = gid; x[1] = 73; /* catch errors */ - if (setgroups(1,x) == -1) return -1; -#else if (setgroups(1,&gid) == -1) return -1; -#endif return setgid(gid); /* _should_ be redundant, but on some systems it isn't */ } -int prot_uid(int uid) +int prot_uid(uid_t uid) { return setuid(uid); } diff '--color=auto' -Nur djbdns-1.05~/prot.h djbdns-1.05/prot.h --- djbdns-1.05~/prot.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/prot.h 2025-12-02 22:43:49.680566680 +0100 @@ -1,7 +1,9 @@ #ifndef PROT_H #define PROT_H -extern int prot_gid(int); -extern int prot_uid(int); +#include + +extern int prot_gid(gid_t); +extern int prot_uid(uid_t); #endif diff '--color=auto' -Nur djbdns-1.05~/scan.h djbdns-1.05/scan.h --- djbdns-1.05~/scan.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/scan.h 2025-12-02 22:43:49.680657322 +0100 @@ -1,28 +1,9 @@ +#include + #ifndef SCAN_H #define SCAN_H -extern unsigned int scan_uint(const char *,unsigned int *); -extern unsigned int scan_xint(const char *,unsigned int *); -extern unsigned int scan_nbbint(const char *,unsigned int,unsigned int,unsigned int,unsigned int *); -extern unsigned int scan_ushort(const char *,unsigned short *); -extern unsigned int scan_xshort(const char *,unsigned short *); -extern unsigned int scan_nbbshort(const char *,unsigned int,unsigned int,unsigned int,unsigned short *); -extern unsigned int scan_ulong(const char *,unsigned long *); -extern unsigned int scan_xlong(const char *,unsigned long *); -extern unsigned int scan_nbblong(const char *,unsigned int,unsigned int,unsigned int,unsigned long *); - -extern unsigned int scan_plusminus(const char *,int *); -extern unsigned int scan_0x(const char *,unsigned int *); - -extern unsigned int scan_whitenskip(const char *,unsigned int); -extern unsigned int scan_nonwhitenskip(const char *,unsigned int); -extern unsigned int scan_charsetnskip(const char *,const char *,unsigned int); -extern unsigned int scan_noncharsetnskip(const char *,const char *,unsigned int); - -extern unsigned int scan_strncmp(const char *,const char *,unsigned int); -extern unsigned int scan_memcmp(const char *,const char *,unsigned int); - -extern unsigned int scan_long(const char *,long *); -extern unsigned int scan_8long(const char *,unsigned long *); +extern size_t scan_ulong(const char *,unsigned long *); +extern size_t scan_xlong(const char *,unsigned long *); #endif diff '--color=auto' -Nur djbdns-1.05~/scan_ulong.c djbdns-1.05/scan_ulong.c --- djbdns-1.05~/scan_ulong.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/scan_ulong.c 2025-12-02 22:43:49.680737768 +0100 @@ -1,8 +1,8 @@ #include "scan.h" -unsigned int scan_ulong(register const char *s,register unsigned long *u) +size_t scan_ulong(register const char *s,register unsigned long *u) { - register unsigned int pos = 0; + register size_t pos = 0; register unsigned long result = 0; register unsigned long c; while ((c = (unsigned long) (unsigned char) (s[pos] - '0')) < 10) { diff '--color=auto' -Nur djbdns-1.05~/select.h2 djbdns-1.05/select.h2 --- djbdns-1.05~/select.h2 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/select.h2 2025-12-02 22:43:49.680813138 +0100 @@ -6,6 +6,5 @@ #include #include #include -extern int select(); #endif diff '--color=auto' -Nur djbdns-1.05~/server.c djbdns-1.05/server.c --- djbdns-1.05~/server.c 2025-12-02 22:43:37.146971624 +0100 +++ djbdns-1.05/server.c 2025-12-02 22:43:49.680899783 +0100 @@ -84,7 +84,7 @@ { char *x; int udp53; - unsigned int truncate_len = 512; + unsigned long truncate_len = 512; x = env_get("IP"); if (!x) diff '--color=auto' -Nur djbdns-1.05~/socket_conn.c djbdns-1.05/socket_conn.c --- djbdns-1.05~/socket_conn.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/socket_conn.c 2025-12-02 22:43:49.680984062 +0100 @@ -26,7 +26,7 @@ dummy = sizeof sa; if (getpeername(s,(struct sockaddr *) &sa,&dummy) == -1) { - read(s,&ch,1); /* sets errno */ + (void)read(s,&ch,1); /* sets errno */ return 0; } return 1; diff '--color=auto' -Nur djbdns-1.05~/timeoutread.c djbdns-1.05/timeoutread.c --- djbdns-1.05~/timeoutread.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/timeoutread.c 2025-12-02 22:43:49.681061544 +0100 @@ -3,7 +3,7 @@ #include "iopause.h" #include "timeoutread.h" -int timeoutread(int t,int fd,char *buf,int len) +ssize_t timeoutread(int t,int fd,char *buf,size_t len) { struct taia now; struct taia deadline; diff '--color=auto' -Nur djbdns-1.05~/timeoutread.h djbdns-1.05/timeoutread.h --- djbdns-1.05~/timeoutread.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/timeoutread.h 2025-12-02 22:43:49.681137596 +0100 @@ -1,6 +1,6 @@ #ifndef TIMEOUTREAD_H #define TIMEOUTREAD_H -extern int timeoutread(); +extern ssize_t timeoutread(int, int, char *, size_t); #endif diff '--color=auto' -Nur djbdns-1.05~/timeoutwrite.c djbdns-1.05/timeoutwrite.c --- djbdns-1.05~/timeoutwrite.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/timeoutwrite.c 2025-12-02 22:43:49.681224643 +0100 @@ -3,7 +3,7 @@ #include "iopause.h" #include "timeoutwrite.h" -int timeoutwrite(int t,int fd,char *buf,int len) +ssize_t timeoutwrite(int t, int fd, const char *buf, size_t len) { struct taia now; struct taia deadline; diff '--color=auto' -Nur djbdns-1.05~/timeoutwrite.h djbdns-1.05/timeoutwrite.h --- djbdns-1.05~/timeoutwrite.h 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/timeoutwrite.h 2025-12-02 22:43:49.681300449 +0100 @@ -1,6 +1,6 @@ #ifndef TIMEOUTWRITE_H #define TIMEOUTWRITE_H -extern int timeoutwrite(); +extern ssize_t timeoutwrite(int, int, const char *, size_t); #endif diff '--color=auto' -Nur djbdns-1.05~/tinydns-data.c djbdns-1.05/tinydns-data.c --- djbdns-1.05~/tinydns-data.c 2025-12-02 22:43:37.114329011 +0100 +++ djbdns-1.05/tinydns-data.c 2025-12-02 22:43:49.681438800 +0100 @@ -181,18 +181,26 @@ strerr_die4x(111,FATAL,"unable to parse data line ",strnum,why); } +static unsigned int scan_u32(const char *s,uint32 *u) { + unsigned long l; + unsigned int r=scan_ulong(s,&l); + if ((uint32)l != l) return 0; + if (r) *u=l; + return r; +} + int main() { int fddata; - int i; - int j; + unsigned int i; + unsigned int j; int k; char ch; unsigned long ttl; char ttd[8]; char loc[2]; - unsigned long u; - char ip[4]; + uint32 u; + unsigned char ip[4]; char type[2]; char soa[20]; char buf[4]; @@ -252,19 +260,19 @@ if (!dns_domain_fromdot(&d1,f[0].s,f[0].len)) nomem(); if (!stralloc_0(&f[3])) nomem(); - if (!scan_ulong(f[3].s,&u)) uint32_unpack_big(defaultsoa,&u); + if (!scan_u32(f[3].s,&u)) uint32_unpack_big(defaultsoa,&u); uint32_pack_big(soa,u); if (!stralloc_0(&f[4])) nomem(); - if (!scan_ulong(f[4].s,&u)) uint32_unpack_big(defaultsoa + 4,&u); + if (!scan_u32(f[4].s,&u)) uint32_unpack_big(defaultsoa + 4,&u); uint32_pack_big(soa + 4,u); if (!stralloc_0(&f[5])) nomem(); - if (!scan_ulong(f[5].s,&u)) uint32_unpack_big(defaultsoa + 8,&u); + if (!scan_u32(f[5].s,&u)) uint32_unpack_big(defaultsoa + 8,&u); uint32_pack_big(soa + 8,u); if (!stralloc_0(&f[6])) nomem(); - if (!scan_ulong(f[6].s,&u)) uint32_unpack_big(defaultsoa + 12,&u); + if (!scan_u32(f[6].s,&u)) uint32_unpack_big(defaultsoa + 12,&u); uint32_pack_big(soa + 12,u); if (!stralloc_0(&f[7])) nomem(); - if (!scan_ulong(f[7].s,&u)) uint32_unpack_big(defaultsoa + 16,&u); + if (!scan_u32(f[7].s,&u)) uint32_unpack_big(defaultsoa + 16,&u); uint32_pack_big(soa + 16,u); if (!stralloc_0(&f[8])) nomem(); @@ -311,7 +319,7 @@ if (ip4_scan(f[1].s,ip)) { rr_start(DNS_T_A,ttl,ttd,loc); - rr_add(ip,4); + rr_add((const char*)ip,4); rr_finish(d2); } @@ -328,7 +336,7 @@ if (ip4_scan(f[1].s,ip)) { rr_start(DNS_T_A,ttl,ttd,loc); - rr_add(ip,4); + rr_add((const char*)ip,4); rr_finish(d1); if (line.s[0] == '=') { @@ -356,7 +364,7 @@ if (!dns_domain_fromdot(&d2,f[2].s,f[2].len)) nomem(); if (!stralloc_0(&f[3])) nomem(); - if (!scan_ulong(f[3].s,&u)) u = 0; + if (!scan_u32(f[3].s,&u)) u = 0; rr_start(DNS_T_MX,ttl,ttd,loc); uint16_pack_big(buf,u); @@ -366,7 +374,7 @@ if (ip4_scan(f[1].s,ip)) { rr_start(DNS_T_A,ttl,ttd,loc); - rr_add(ip,4); + rr_add((const char*)ip,4); rr_finish(d2); } break; @@ -387,13 +395,13 @@ if (!dns_domain_fromdot(&d2,f[2].s,f[2].len)) nomem(); if (!stralloc_0(&f[4])) nomem(); - if (!scan_ulong(f[4].s,&u)) u = 0; + if (!scan_u32(f[4].s,&u)) u = 0; uint16_pack_big(srv,u); if (!stralloc_0(&f[5])) nomem(); - if (!scan_ulong(f[5].s,&u)) u = 0; + if (!scan_u32(f[5].s,&u)) u = 0; uint16_pack_big(srv + 2,u); if (!stralloc_0(&f[3])) nomem(); - if (!scan_ulong(f[3].s,&u)) nomem(); + if (!scan_u32(f[3].s,&u)) nomem(); uint16_pack_big(srv + 4,u); rr_start(DNS_T_SRV,ttl,ttd,loc); @@ -455,7 +463,7 @@ locparse(&f[5],loc); if (!stralloc_0(&f[1])) nomem(); - scan_ulong(f[1].s,&u); + scan_u32(f[1].s,&u); uint16_pack_big(type,u); if (byte_equal(type,2,DNS_T_AXFR)) syntaxerror(": type AXFR prohibited"); diff '--color=auto' -Nur djbdns-1.05~/tinydns-edit.c djbdns-1.05/tinydns-edit.c --- djbdns-1.05~/tinydns-edit.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/tinydns-edit.c 2025-12-02 22:43:49.681607275 +0100 @@ -116,7 +116,7 @@ fdnew = open_trunc(fnnew); if (fdnew == -1) die_write(); if (fchmod(fdnew,st.st_mode & 0644) == -1) die_write(); - buffer_init(&bnew,buffer_unixwrite,fdnew,bnewspace,sizeof bnewspace); + buffer_init(&bnew,(buffer_op)buffer_unixwrite,fdnew,bnewspace,sizeof bnewspace); switch(mode) { case '.': case '&': diff '--color=auto' -Nur djbdns-1.05~/tryshsgr.c djbdns-1.05/tryshsgr.c --- djbdns-1.05~/tryshsgr.c 2001-02-11 22:11:45.000000000 +0100 +++ djbdns-1.05/tryshsgr.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,14 +0,0 @@ -int main() -{ - short x[4]; - - x[0] = x[1] = 1; - if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1); - - if (getgroups(1,x) == -1) _exit(1); - if (x[1] != 1) _exit(1); - x[1] = 2; - if (getgroups(1,x) == -1) _exit(1); - if (x[1] != 2) _exit(1); - _exit(0); -} diff '--color=auto' -Nur djbdns-1.05~/utime.c djbdns-1.05/utime.c --- djbdns-1.05~/utime.c 2025-12-02 22:43:37.135798404 +0100 +++ djbdns-1.05/utime.c 2025-12-02 22:44:19.625306556 +0100 @@ -8,10 +8,11 @@ char *ustr; unsigned long u; -time_t ut[2]; +struct utimbuf ut; int main(int argc,char **argv) { + (void)argc; /* unused */ fn = argv[1]; if (!fn) _exit(100); @@ -19,7 +20,7 @@ if (!ustr) _exit(100); scan_ulong(ustr,&u); - ut[0] = ut[1] = u; - if (utime(fn,ut) == -1) _exit(111); + ut.actime = ut.modtime = u; + if (utime(fn,&ut) == -1) _exit(111); _exit(0); }