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/sys/miscfs/kernfs/kernfs_vnops.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/miscfs/kernfs/kernfs_vnops.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.65 retrieving revision 1.73 diff -u -p -r1.65 -r1.73 --- src/sys/miscfs/kernfs/kernfs_vnops.c 1999/08/03 20:19:19 1.65 +++ src/sys/miscfs/kernfs/kernfs_vnops.c 2001/01/27 12:28:35 1.73 @@ -1,4 +1,4 @@ -/* $NetBSD: kernfs_vnops.c,v 1.65 1999/08/03 20:19:19 wrstuden Exp $ */ +/* $NetBSD: kernfs_vnops.c,v 1.73 2001/01/27 12:28:35 jdolecek Exp $ */ /* * Copyright (c) 1992, 1993 @@ -62,8 +62,6 @@ #include #include -#include - #include #define KSTRING 256 /* Largest I/O available via this filesystem */ @@ -80,7 +78,9 @@ struct kern_target kern_targets[] = { { DT_DIR, N("."), 0, KTT_NULL, VDIR, DIR_MODE }, { DT_DIR, N(".."), 0, KTT_NULL, VDIR, DIR_MODE }, { DT_REG, N("boottime"), &boottime.tv_sec, KTT_INT, VREG, READ_MODE }, - { DT_REG, N("copyright"), copyright, KTT_STRING, VREG, READ_MODE }, + /* XXX cast away const */ + { DT_REG, N("copyright"), (void *)copyright, + KTT_STRING, VREG, READ_MODE }, { DT_REG, N("hostname"), 0, KTT_HOSTNAME, VREG, WRITE_MODE }, { DT_REG, N("hz"), &hz, KTT_INT, VREG, READ_MODE }, { DT_REG, N("loadavg"), 0, KTT_AVENRUN, VREG, READ_MODE }, @@ -93,7 +93,9 @@ struct kern_target kern_targets[] = { { DT_BLK, N("rootdev"), &rootdev, KTT_DEVICE, VBLK, READ_MODE }, { DT_CHR, N("rrootdev"), &rrootdev, KTT_DEVICE, VCHR, READ_MODE }, { DT_REG, N("time"), 0, KTT_TIME, VREG, READ_MODE }, - { DT_REG, N("version"), version, KTT_STRING, VREG, READ_MODE }, + /* XXX cast away const */ + { DT_REG, N("version"), (void *)version, + KTT_STRING, VREG, READ_MODE }, #undef N }; static int nkern_targets = sizeof(kern_targets) / sizeof(kern_targets[0]); @@ -145,7 +147,7 @@ int kernfs_xread __P((struct kern_target int kernfs_xwrite __P((struct kern_target *, char *, int)); int (**kernfs_vnodeop_p) __P((void *)); -struct vnodeopv_entry_desc kernfs_vnodeop_entries[] = { +const struct vnodeopv_entry_desc kernfs_vnodeop_entries[] = { { &vop_default_desc, vn_default_error }, { &vop_lookup_desc, kernfs_lookup }, /* lookup */ { &vop_create_desc, kernfs_create }, /* create */ @@ -191,7 +193,7 @@ struct vnodeopv_entry_desc kernfs_vnodeo { &vop_bwrite_desc, kernfs_bwrite }, /* bwrite */ { (struct vnodeop_desc*)NULL, (int(*) __P((void *)))NULL } }; -struct vnodeopv_desc kernfs_vnodeop_opv_desc = +const struct vnodeopv_desc kernfs_vnodeop_opv_desc = { &kernfs_vnodeop_p, kernfs_vnodeop_entries }; int @@ -611,7 +613,7 @@ kernfs_readdir(v) struct uio *uio = ap->a_uio; struct dirent d; struct kern_target *kt; - int i; + off_t i; int error; off_t *cookies = NULL; int ncookies = 0, nc = 0; @@ -626,14 +628,17 @@ kernfs_readdir(v) error = 0; i = uio->uio_offset; + + if (i >= nkern_targets) + return 0; + memset((caddr_t)&d, 0, UIO_MX); d.d_reclen = UIO_MX; if (ap->a_ncookies) { nc = uio->uio_resid / UIO_MX; nc = min(nc, (nkern_targets - i)); - MALLOC(cookies, off_t *, nc * sizeof(off_t), M_TEMP, - M_WAITOK); + cookies = malloc(nc * sizeof(off_t), M_TEMP, M_WAITOK); *ap->a_cookies = cookies; } @@ -666,7 +671,7 @@ kernfs_readdir(v) if (ap->a_ncookies) { if (error) { - FREE(*ap->a_cookies, M_TEMP); + free(*ap->a_cookies, M_TEMP); *ap->a_ncookies = 0; *ap->a_cookies = NULL; } else