head 1.54; access; symbols netbsd-10-0-RELEASE:1.53 netbsd-10-0-RC6:1.53 netbsd-10-0-RC5:1.53 netbsd-10-0-RC4:1.53 netbsd-10-0-RC3:1.53 netbsd-10-0-RC2:1.53 netbsd-10-0-RC1:1.53 netbsd-10:1.53.0.2 netbsd-10-base:1.53 netbsd-9-3-RELEASE:1.52 cjep_sun2x-base1:1.52 cjep_sun2x:1.52.0.12 cjep_sun2x-base:1.52 cjep_staticlib_x-base1:1.52 netbsd-9-2-RELEASE:1.52 cjep_staticlib_x:1.52.0.10 cjep_staticlib_x-base:1.52 netbsd-9-1-RELEASE:1.52 phil-wifi-20200421:1.52 phil-wifi-20200411:1.52 is-mlppp:1.52.0.8 is-mlppp-base:1.52 phil-wifi-20200406:1.52 netbsd-8-2-RELEASE:1.51.6.1 netbsd-9-0-RELEASE:1.52 netbsd-9-0-RC2:1.52 netbsd-9-0-RC1:1.52 phil-wifi-20191119:1.52 netbsd-9:1.52.0.6 netbsd-9-base:1.52 phil-wifi-20190609:1.52 netbsd-8-1-RELEASE:1.51.6.1 netbsd-8-1-RC1:1.51.6.1 pgoyette-compat-merge-20190127:1.52 pgoyette-compat-20190127:1.52 pgoyette-compat-20190118:1.52 pgoyette-compat-1226:1.52 pgoyette-compat-1126:1.52 pgoyette-compat-1020:1.52 pgoyette-compat-0930:1.52 pgoyette-compat-0906:1.52 netbsd-7-2-RELEASE:1.48 pgoyette-compat-0728:1.52 netbsd-8-0-RELEASE:1.51.6.1 phil-wifi:1.52.0.4 phil-wifi-base:1.52 pgoyette-compat-0625:1.52 netbsd-8-0-RC2:1.51.6.1 pgoyette-compat-0521:1.52 pgoyette-compat-0502:1.52 pgoyette-compat-0422:1.52 netbsd-8-0-RC1:1.51.6.1 pgoyette-compat-0415:1.52 pgoyette-compat-0407:1.52 pgoyette-compat-0330:1.52 pgoyette-compat-0322:1.52 pgoyette-compat-0315:1.52 netbsd-7-1-2-RELEASE:1.48 pgoyette-compat:1.52.0.2 pgoyette-compat-base:1.52 netbsd-7-1-1-RELEASE:1.48 matt-nb8-mediatek:1.51.0.10 matt-nb8-mediatek-base:1.51 perseant-stdc-iso10646:1.51.0.8 perseant-stdc-iso10646-base:1.51 netbsd-8:1.51.0.6 netbsd-8-base:1.51 prg-localcount2-base3:1.51 prg-localcount2-base2:1.51 prg-localcount2-base1:1.51 prg-localcount2:1.51.0.4 prg-localcount2-base:1.51 pgoyette-localcount-20170426:1.51 bouyer-socketcan-base1:1.51 pgoyette-localcount-20170320:1.51 netbsd-7-1:1.48.0.10 netbsd-7-1-RELEASE:1.48 netbsd-7-1-RC2:1.48 netbsd-7-nhusb-base-20170116:1.48 bouyer-socketcan:1.51.0.2 bouyer-socketcan-base:1.51 pgoyette-localcount-20170107:1.51 netbsd-7-1-RC1:1.48 pgoyette-localcount-20161104:1.51 netbsd-7-0-2-RELEASE:1.48 localcount-20160914:1.50 netbsd-7-nhusb:1.48.0.8 netbsd-7-nhusb-base:1.48 pgoyette-localcount-20160806:1.50 pgoyette-localcount-20160726:1.50 pgoyette-localcount:1.50.0.2 pgoyette-localcount-base:1.50 netbsd-7-0-1-RELEASE:1.48 netbsd-7-0:1.48.0.6 netbsd-7-0-RELEASE:1.48 netbsd-7-0-RC3:1.48 netbsd-7-0-RC2:1.48 netbsd-7-0-RC1:1.48 netbsd-5-2-3-RELEASE:1.35 netbsd-5-1-5-RELEASE:1.35 netbsd-6-0-6-RELEASE:1.39 netbsd-6-1-5-RELEASE:1.39 netbsd-7:1.48.0.4 netbsd-7-base:1.48 yamt-pagecache-base9:1.48 yamt-pagecache-tag8:1.39.8.2 netbsd-6-1-4-RELEASE:1.39 netbsd-6-0-5-RELEASE:1.39 tls-earlyentropy:1.48.0.2 tls-earlyentropy-base:1.48 riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.48 riastradh-drm2-base3:1.48 netbsd-6-1-3-RELEASE:1.39 netbsd-6-0-4-RELEASE:1.39 netbsd-5-2-2-RELEASE:1.35 netbsd-5-1-4-RELEASE:1.35 netbsd-6-1-2-RELEASE:1.39 netbsd-6-0-3-RELEASE:1.39 netbsd-5-2-1-RELEASE:1.35 netbsd-5-1-3-RELEASE:1.35 netbsd-6-1-1-RELEASE:1.39 riastradh-drm2-base2:1.44 riastradh-drm2-base1:1.44 riastradh-drm2:1.44.0.2 riastradh-drm2-base:1.44 netbsd-6-1:1.39.0.16 netbsd-6-0-2-RELEASE:1.39 netbsd-6-1-RELEASE:1.39 netbsd-6-1-RC4:1.39 netbsd-6-1-RC3:1.39 agc-symver:1.41.0.6 agc-symver-base:1.41 netbsd-6-1-RC2:1.39 netbsd-6-1-RC1:1.39 yamt-pagecache-base8:1.41 netbsd-5-2:1.35.0.28 netbsd-6-0-1-RELEASE:1.39 yamt-pagecache-base7:1.41 netbsd-5-2-RELEASE:1.35 netbsd-5-2-RC1:1.35 matt-nb6-plus-nbase:1.39 yamt-pagecache-base6:1.41 netbsd-6-0:1.39.0.14 netbsd-6-0-RELEASE:1.39 netbsd-6-0-RC2:1.39 tls-maxphys:1.41.0.2 tls-maxphys-base:1.48 matt-nb6-plus:1.39.0.12 matt-nb6-plus-base:1.39 netbsd-6-0-RC1:1.39 yamt-pagecache-base5:1.40 yamt-pagecache-base4:1.39 netbsd-6:1.39.0.10 netbsd-6-base:1.39 netbsd-5-1-2-RELEASE:1.35 netbsd-5-1-1-RELEASE:1.35 yamt-pagecache-base3:1.39 yamt-pagecache-base2:1.39 yamt-pagecache:1.39.0.8 yamt-pagecache-base:1.39 cherry-xenmp:1.39.0.6 cherry-xenmp-base:1.39 uebayasi-xip-base7:1.39 bouyer-quota2-nbase:1.39 bouyer-quota2:1.39.0.4 bouyer-quota2-base:1.39 matt-mips64-premerge-20101231:1.39 matt-nb5-mips64-premerge-20101231:1.35 matt-nb5-pq3:1.35.0.26 matt-nb5-pq3-base:1.35 netbsd-5-1:1.35.0.24 uebayasi-xip-base6:1.39 uebayasi-xip-base5:1.39 netbsd-5-1-RELEASE:1.35 uebayasi-xip-base4:1.39 uebayasi-xip-base3:1.39 netbsd-5-1-RC4:1.35 matt-nb5-mips64-k15:1.35 uebayasi-xip-base2:1.39 netbsd-5-1-RC3:1.35 netbsd-5-1-RC2:1.35 uebayasi-xip-base1:1.39 netbsd-5-1-RC1:1.35 uebayasi-xip:1.39.0.2 uebayasi-xip-base:1.39 netbsd-5-0-2-RELEASE:1.35 matt-nb5-mips64-premerge-20091211:1.35 matt-premerge-20091211:1.39 matt-nb5-mips64-u2-k2-k4-k7-k8-k9:1.35 matt-nb4-mips64-k7-u2a-k9b:1.35 matt-nb5-mips64-u1-k1-k5:1.35 matt-nb5-mips64:1.35.0.22 netbsd-5-0-1-RELEASE:1.35 jym-xensuspend-nbase:1.38 netbsd-5-0:1.35.0.20 netbsd-5-0-RELEASE:1.35 netbsd-5-0-RC4:1.35 netbsd-5-0-RC3:1.35 netbsd-5-0-RC2:1.35 jym-xensuspend:1.35.0.18 jym-xensuspend-base:1.38 netbsd-5-0-RC1:1.35 christos-time_t-nbase:1.35 christos-time_t:1.35.0.16 christos-time_t-base:1.35 netbsd-5:1.35.0.14 netbsd-5-base:1.35 matt-mips64-base2:1.35 matt-mips64:1.33.0.4 mjf-devfs2:1.35.0.12 mjf-devfs2-base:1.35 netbsd-4-0-1-RELEASE:1.31.2.2 wrstuden-revivesa-base-3:1.35 wrstuden-revivesa-base-2:1.35 wrstuden-fixsa-newbase:1.31.2.2 wrstuden-revivesa-base-1:1.35 simonb-wapbl-nbase:1.35 yamt-pf42-base4:1.35 simonb-wapbl:1.35.0.10 simonb-wapbl-base:1.35 yamt-pf42-base3:1.35 hpcarm-cleanup-nbase:1.35 yamt-pf42-baseX:1.35 yamt-pf42-base2:1.35 wrstuden-revivesa:1.35.0.8 wrstuden-revivesa-base:1.35 yamt-pf42:1.35.0.6 yamt-pf42-base:1.35 keiichi-mipv6:1.35.0.4 keiichi-mipv6-base:1.35 matt-armv6-nbase:1.35 matt-armv6-prevmlocking:1.33.2.1 wrstuden-fixsa-base-1:1.31.2.2 netbsd-4-0:1.31.2.2.0.2 netbsd-4-0-RELEASE:1.31.2.2 cube-autoconf:1.35.0.2 cube-autoconf-base:1.35 netbsd-4-0-RC5:1.31.2.2 netbsd-4-0-RC4:1.31.2.2 netbsd-4-0-RC3:1.31.2.2 netbsd-4-0-RC2:1.31.2.2 netbsd-4-0-RC1:1.31.2.2 matt-armv6:1.33.0.2 matt-armv6-base:1.35 matt-mips64-base:1.33 hpcarm-cleanup:1.32.0.2 hpcarm-cleanup-base:1.35 netbsd-3-1-1-RELEASE:1.29 netbsd-3-0-3-RELEASE:1.29 wrstuden-fixsa:1.31.0.4 wrstuden-fixsa-base:1.31.2.2 abandoned-netbsd-4-base:1.30 abandoned-netbsd-4:1.30.0.2 netbsd-3-1:1.29.0.6 netbsd-3-1-RELEASE:1.29 netbsd-3-0-2-RELEASE:1.29 netbsd-3-1-RC4:1.29 netbsd-3-1-RC3:1.29 netbsd-3-1-RC2:1.29 netbsd-3-1-RC1:1.29 netbsd-4:1.31.0.2 netbsd-4-base:1.31 netbsd-3-0-1-RELEASE:1.29 netbsd-3-0:1.29.0.4 netbsd-3-0-RELEASE:1.29 netbsd-3-0-RC6:1.29 netbsd-3-0-RC5:1.29 netbsd-3-0-RC4:1.29 netbsd-3-0-RC3:1.29 netbsd-3-0-RC2:1.29 netbsd-3-0-RC1:1.29 netbsd-2-0-3-RELEASE:1.25.2.2 netbsd-2-1:1.25.2.2.0.4 netbsd-2-1-RELEASE:1.25.2.2 netbsd-2-1-RC6:1.25.2.2 netbsd-2-1-RC5:1.25.2.2 netbsd-2-1-RC4:1.25.2.2 netbsd-2-1-RC3:1.25.2.2 netbsd-2-1-RC2:1.25.2.2 netbsd-2-1-RC1:1.25.2.2 netbsd-2-0-2-RELEASE:1.25.2.2 netbsd-3:1.29.0.2 netbsd-3-base:1.29 netbsd-2-0-1-RELEASE:1.25.2.2 netbsd-2:1.25.2.2.0.2 netbsd-2-base:1.25.2.2 netbsd-2-0-RELEASE:1.25.2.2 netbsd-2-0-RC5:1.25.2.2 netbsd-2-0-RC4:1.25.2.2 netbsd-2-0-RC3:1.25.2.2 netbsd-2-0-RC2:1.25.2.2 netbsd-2-0-RC1:1.25.2.2 netbsd-2-0:1.25.0.2 netbsd-2-0-base:1.25 netbsd-1-6-PATCH002-RELEASE:1.23 netbsd-1-6-PATCH002:1.23 netbsd-1-6-PATCH002-RC4:1.23 netbsd-1-6-PATCH002-RC3:1.23 netbsd-1-6-PATCH002-RC2:1.23 netbsd-1-6-PATCH002-RC1:1.23 netbsd-1-6-PATCH001:1.23 netbsd-1-6-PATCH001-RELEASE:1.23 netbsd-1-6-PATCH001-RC3:1.23 netbsd-1-6-PATCH001-RC2:1.23 netbsd-1-6-PATCH001-RC1:1.23 nathanw_sa_before_merge:1.23 nathanw_sa_end:1.22.6.1 fvdl_fs64_base:1.23 nathanw_sa_base:1.23 netbsd-1-6-RELEASE:1.23 netbsd-1-6-RC3:1.23 netbsd-1-6-RC2:1.23 netbsd-1-6-RC1:1.23 netbsd-1-6:1.23.0.2 netbsd-1-6-base:1.23 netbsd-1-5-PATCH003:1.22 netbsd-1-5-PATCH002:1.22 netbsd-1-5-PATCH001:1.22 nathanw_sa:1.22.0.6 netbsd-1-5-RELEASE:1.22 netbsd-1-5-BETA2:1.22 netbsd-1-5-BETA:1.22 netbsd-1-4-PATCH003:1.18.2.1 netbsd-1-5-ALPHA2:1.22 netbsd-1-5:1.22.0.4 netbsd-1-5-base:1.22 minoura-xpg4dl:1.22.0.2 minoura-xpg4dl-base:1.22 netbsd-1-4-PATCH002:1.18 wrstuden-devbsize-19991221:1.20 wrstuden-devbsize:1.20.0.4 wrstuden-devbsize-base:1.20 comdex-fall-1999:1.20.0.2 comdex-fall-1999-base:1.20 netbsd-1-4-PATCH001:1.18 netbsd-1-4-RELEASE:1.18 netbsd-1-4:1.18.0.2 netbsd-1-4-base:1.18 netbsd-1-3-PATCH003:1.8 netbsd-1-3-PATCH003-CANDIDATE2:1.8 netbsd-1-3-PATCH003-CANDIDATE1:1.8 netbsd-1-3-PATCH003-CANDIDATE0:1.8 netbsd-1-3-PATCH002:1.8 netbsd-1-3-PATCH001:1.8 lite-2:1.1.1.2 CSRG:1.1.1 netbsd-1-3-RELEASE:1.8 netbsd-1-3-BETA:1.8 netbsd-1-3:1.8.0.2 netbsd-1-3-base:1.8 netbsd-1-2-PATCH001:1.6 nsswitch:1.6.0.4 netbsd-1-2-RELEASE:1.6 netbsd-1-2-BETA:1.6 netbsd-1-2-base:1.6 netbsd-1-2:1.6.0.6 netbsd-1-1-PATCH001:1.6 netbsd-1-1-RELEASE:1.6 netbsd-1-1:1.6.0.2 netbsd-1-1-base:1.6 netbsd-1-0-PATCH06:1.5 netbsd-1-0-PATCH05:1.5 netbsd-1-0-PATCH04:1.5 netbsd-1-0-PATCH03:1.5 netbsd-1-0-PATCH02:1.5 netbsd-1-0-PATCH1:1.5 netbsd-1-0-PATCH0:1.5 netbsd-1-0-RELEASE:1.5 netbsd-1-0:1.5.0.2 netbsd-1-0-base:1.4 netbsd-0-9-RELEASE:1.1.1.1 netbsd-0-9-BETA:1.1.1.1 netbsd-0-9-ALPHA2:1.1.1.1 netbsd-0-9-ALPHA:1.1.1.1 netbsd-0-9:1.1.1.1.0.2 netbsd-0-9-base:1.1.1.1 netbsd-0-8:1.1.1.1 netbsd-alpha-1:1.1.1.1 patchkit-0-2-2:1.1.1.1 WFJ-386bsd-01:1.1.1.1 WFJ-920714:1.1.1; locks; strict; comment @ * @; 1.54 date 2023.08.01.17.51.24; author christos; state Exp; branches; next 1.53; commitid qkT3dztmIillS6zE; 1.53 date 2021.08.09.20.49.08; author andvar; state Exp; branches; next 1.52; commitid DVtnVgF9HMHM3l4D; 1.52 date 2018.02.20.02.35.24; author kamil; state Exp; branches; next 1.51; commitid 9SQ8cKp44IxOHxrA; 1.51 date 2016.10.12.20.01.22; author christos; state Exp; branches 1.51.6.1; next 1.50; commitid sXyVX7c54jnrrTpz; 1.50 date 2016.03.10.18.53.48; author leot; state Exp; branches 1.50.2.1; next 1.49; commitid gdxJsk0MushUZ7Yy; 1.49 date 2014.09.24.18.16.36; author christos; state Exp; branches; next 1.48; commitid lkEPJaaBSnW3WCRx; 1.48 date 2013.08.28.17.47.07; author riastradh; state Exp; branches; next 1.47; commitid r6Dfa0RYNbNVmf3x; 1.47 date 2013.08.28.15.46.23; author riastradh; state Exp; branches; next 1.46; commitid 8xKJHuXE10VQHe3x; 1.46 date 2013.08.27.18.29.28; author joerg; state Exp; branches; next 1.45; commitid MWQ4RFzXc2oND73x; 1.45 date 2013.08.19.13.03.12; author joerg; state Exp; branches; next 1.44; commitid HXU41oSzcOWN542x; 1.44 date 2013.06.24.04.21.20; author riastradh; state Exp; branches; next 1.43; commitid 6VKqBmjp9WKeZOUw; 1.43 date 2013.04.21.18.41.32; author joerg; state Exp; branches; next 1.42; 1.42 date 2013.04.19.23.28.47; author joerg; state Exp; branches; next 1.41; 1.41 date 2012.08.30.12.16.48; author drochner; state Exp; branches 1.41.2.1; next 1.40; 1.40 date 2012.04.20.16.20.45; author joerg; state Exp; branches; next 1.39; 1.39 date 2009.07.22.19.48.27; author kleink; state Exp; branches 1.39.8.1; next 1.38; 1.38 date 2009.05.01.20.01.23; author perry; state Exp; branches; next 1.37; 1.37 date 2009.05.01.17.16.49; author perry; state Exp; branches; next 1.36; 1.36 date 2009.04.10.23.00.53; author christos; state Exp; branches; next 1.35; 1.35 date 2007.10.19.15.58.53; author christos; state Exp; branches 1.35.18.1; next 1.34; 1.34 date 2007.10.18.02.23.37; author christos; state Exp; branches; next 1.33; 1.33 date 2007.08.02.21.49.10; author kristerw; state Exp; branches 1.33.2.1 1.33.4.1; next 1.32; 1.32 date 2007.05.30.21.14.37; author tls; state Exp; branches; next 1.31; 1.31 date 2006.08.12.23.50.13; author christos; state Exp; branches 1.31.2.1 1.31.4.1; next 1.30; 1.30 date 2005.07.28.16.26.53; author christos; state Exp; branches 1.30.2.1; next 1.29; 1.29 date 2005.03.13.15.09.50; author perry; state Exp; branches; next 1.28; 1.28 date 2005.02.03.04.39.32; author perry; state Exp; branches; next 1.27; 1.27 date 2004.07.12.23.35.14; author kleink; state Exp; branches; next 1.26; 1.26 date 2004.07.03.08.27.25; author junyoung; state Exp; branches; next 1.25; 1.25 date 2003.08.07.09.44.11; author agc; state Exp; branches 1.25.2.1; next 1.24; 1.24 date 2003.04.28.23.16.15; author bjh21; state Exp; branches; next 1.23; 1.23 date 2001.03.22.07.37.04; author kleink; state Exp; branches; next 1.22; 1.22 date 2000.01.10.16.58.38; author kleink; state Exp; branches 1.22.6.1; next 1.21; 1.21 date 99.12.22.21.26.19; author kleink; state Exp; branches; next 1.20; 1.20 date 99.09.09.09.30.40; author kleink; state Exp; branches; next 1.19; 1.19 date 99.09.08.22.09.36; author lukem; state Exp; branches; next 1.18; 1.18 date 98.07.27.09.09.26; author mycroft; state Exp; branches 1.18.2.1; next 1.17; 1.17 date 98.07.26.19.20.55; author mycroft; state Exp; branches; next 1.16; 1.16 date 98.07.26.13.34.18; author mycroft; state Exp; branches; next 1.15; 1.15 date 98.05.06.20.17.55; author kleink; state Exp; branches; next 1.14; 1.14 date 98.04.27.17.02.04; author tv; state Exp; branches; next 1.13; 1.13 date 98.02.03.04.45.41; author perry; state Exp; branches; next 1.12; 1.12 date 98.02.02.22.07.54; author perry; state Exp; branches; next 1.11; 1.11 date 98.02.02.21.07.57; author perry; state Exp; branches; next 1.10; 1.10 date 98.02.02.16.15.07; author kleink; state Exp; branches; next 1.9; 1.9 date 98.01.12.16.05.40; author kleink; state Exp; branches; next 1.8; 1.8 date 97.10.16.23.26.26; author christos; state Exp; branches; next 1.7; 1.7 date 97.07.13.18.02.16; author christos; state Exp; branches; next 1.6; 1.6 date 94.10.26.00.56.30; author cgd; state Exp; branches; next 1.5; 1.5 date 94.08.02.05.03.46; author jtc; state Exp; branches 1.5.2.1; next 1.4; 1.4 date 94.05.21.09.42.34; author cgd; state Exp; branches; next 1.3; 1.3 date 93.10.11.18.43.45; author jtc; state Exp; branches; next 1.2; 1.2 date 93.08.01.18.45.15; author mycroft; state Exp; branches; next 1.1; 1.1 date 93.03.21.09.45.37; author cgd; state Exp; branches 1.1.1.1; next ; 1.51.6.1 date 2018.02.25.23.53.59; author snj; state Exp; branches; next ; commitid 93Uf5T7IVMgNCisA; 1.50.2.1 date 2016.11.04.14.48.51; author pgoyette; state Exp; branches; next ; commitid 2m1JRwYmpwPkOOsz; 1.41.2.1 date 2013.06.23.06.28.49; author tls; state Exp; branches; next 1.41.2.2; commitid OnlO1cBgtQRcIHUw; 1.41.2.2 date 2014.08.20.00.02.05; author tls; state Exp; branches; next ; commitid jTnpym9Qu0o4R1Nx; 1.39.8.1 date 2012.05.23.10.07.30; author yamt; state Exp; branches; next 1.39.8.2; 1.39.8.2 date 2012.10.30.18.58.33; author yamt; state Exp; branches; next 1.39.8.3; 1.39.8.3 date 2014.05.22.11.36.35; author yamt; state Exp; branches; next ; commitid OndjEcbQZzO4KwBx; 1.35.18.1 date 2009.05.13.19.18.19; author jym; state Exp; branches; next ; 1.33.2.1 date 2007.11.06.23.11.05; author matt; state Exp; branches; next ; 1.33.4.1 date 2007.08.02.21.49.10; author kristerw; state dead; branches; next 1.33.4.2; 1.33.4.2 date 2007.08.02.21.49.11; author kristerw; state Exp; branches; next ; 1.31.2.1 date 2007.07.22.18.44.38; author liamjfoy; state Exp; branches; next 1.31.2.2; 1.31.2.2 date 2007.08.24.20.07.38; author liamjfoy; state Exp; branches; next ; 1.31.4.1 date 2007.09.03.07.01.08; author wrstuden; state Exp; branches; next ; 1.30.2.1 date 2006.08.27.06.08.52; author riz; state Exp; branches; next ; 1.25.2.1 date 2004.07.12.20.53.05; author he; state Exp; branches; next 1.25.2.2; 1.25.2.2 date 2004.07.14.09.02.02; author tron; state Exp; branches; next ; 1.22.6.1 date 2001.04.08.20.31.41; author nathanw; state Exp; branches; next ; 1.18.2.1 date 2000.07.05.21.04.39; author he; state Exp; branches; next ; 1.5.2.1 date 94.08.02.05.03.46; author jtc; state dead; branches; next 1.5.2.2; 1.5.2.2 date 94.08.02.05.03.47; author jtc; state Exp; branches; next ; 1.1.1.1 date 93.03.21.09.45.37; author cgd; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 98.02.02.07.23.07; author perry; state Exp; branches; next ; desc @@ 1.54 log @Add companion mempcpy to wmempcpy, bump. @ text @/* $NetBSD: string.h,v 1.53 2021/08/09 20:49:08 andvar Exp $ */ /*- * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @@(#)string.h 8.1 (Berkeley) 6/2/93 */ #ifndef _STRING_H_ #define _STRING_H_ #include #ifdef _BSD_SIZE_T_ typedef _BSD_SIZE_T_ size_t; #undef _BSD_SIZE_T_ #endif #include #include #include __BEGIN_DECLS void *memchr(const void *, int, size_t); int memcmp(const void *, const void *, size_t); void *memcpy(void * __restrict, const void * __restrict, size_t); void *memmove(void *, const void *, size_t); void *memset(void *, int, size_t); char *strcat(char * __restrict, const char * __restrict); char *strchr(const char *, int); int strcmp(const char *, const char *); int strcoll(const char *, const char *); char *strcpy(char * __restrict, const char * __restrict); size_t strcspn(const char *, const char *); __aconst char *strerror(int); size_t strlen(const char *); char *strncat(char * __restrict, const char * __restrict, size_t); int strncmp(const char *, const char *, size_t); char *strncpy(char * __restrict, const char * __restrict, size_t); char *strpbrk(const char *, const char *); char *strrchr(const char *, int); size_t strspn(const char *, const char *); char *strstr(const char *, const char *); char *strtok(char * __restrict, const char * __restrict); #if (_POSIX_C_SOURCE - 0 >= 199506L) || (_XOPEN_SOURCE - 0 >= 500) || \ defined(_REENTRANT) || defined(_NETBSD_SOURCE) char *strtok_r(char *, const char *, char **); int strerror_r(int, char *, size_t); #endif /* _POSIX_C_SOURCE >= 199506 || XOPEN_SOURCE >= 500 || ... */ size_t strxfrm(char * __restrict, const char * __restrict, size_t); #if (_POSIX_C_SOURCE - 0 >= 200112L) || defined(_XOPEN_SOURCE) || \ defined(_NETBSD_SOURCE) void *memccpy(void *, const void *, int, size_t); char *strdup(const char *); #endif #if (_POSIX_C_SOURCE - 0 >= 200809L) || (_XOPEN_SOURCE - 0 >= 700) || \ defined(_NETBSD_SOURCE) char *stpcpy(char * __restrict, const char * __restrict); char *stpncpy(char * __restrict, const char * __restrict, size_t); char *strndup(const char *, size_t); size_t strnlen(const char *, size_t); #ifndef __STRSIGNAL_DECLARED #define __STRSIGNAL_DECLARED /* also in unistd.h */ __aconst char *strsignal(int); #endif /* __STRSIGNAL_DECLARED */ #endif __END_DECLS #if defined(_NETBSD_SOURCE) #include /* for backwards-compatibility */ __BEGIN_DECLS void *memmem(const void *, size_t, const void *, size_t); char *strcasestr(const char *, const char *); char *strchrnul(const char *, int); size_t strlcat(char *, const char *, size_t); size_t strlcpy(char *, const char *, size_t); char *strsep(char **, const char *); char *stresep(char **, const char *, int); char *strnstr(const char *, const char *, size_t); void *memrchr(const void *, int, size_t); void *mempcpy(void * __restrict, const void * __restrict, size_t); void *explicit_memset(void *, int, size_t); int consttime_memequal(const void *, const void *, size_t); __END_DECLS #endif #if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE) # ifndef __LOCALE_T_DECLARED typedef struct _locale *locale_t; # define __LOCALE_T_DECLARED # endif __BEGIN_DECLS int strcoll_l(const char *, const char *, locale_t); size_t strxfrm_l(char * __restrict, const char * __restrict, size_t, locale_t); __aconst char *strerror_l(int, locale_t); __END_DECLS #endif /* _POSIX_C_SOURCE || _NETBSD_SOURCE */ #if _FORTIFY_SOURCE > 0 #include #endif #endif /* !defined(_STRING_H_) */ @ 1.53 log @fix various typos in compatibility, mainly in comments. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.52 2018/02/20 02:35:24 kamil Exp $ */ d109 1 @ 1.52 log @Mark in string.h: memccpy(3) and strdup(3) as _POSIX_C_SOURCE >= 2001 @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.51 2016/10/12 20:01:22 christos Exp $ */ d98 1 a98 1 #include /* for backwards-compatibilty */ @ 1.51 log @add strchrnull @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.50 2016/03/10 18:53:48 leot Exp $ */ d77 2 a78 1 #if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) @ 1.51.6.1 log @Pull up following revision(s) (requested by kamil in ticket #561): include/string.h: 1.52 Mark in string.h: memccpy(3) and strdup(3) as _POSIX_C_SOURCE >= 2001 @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.51 2016/10/12 20:01:22 christos Exp $ */ d77 1 a77 2 #if (_POSIX_C_SOURCE - 0 >= 200112L) || defined(_XOPEN_SOURCE) || \ defined(_NETBSD_SOURCE) @ 1.50 log @strndup() is part of XSI from The Open Group Base Specification Issue 7 and had a similar history of stpcpy(), stpncpy() and strnlen(). Make it visible under XOPEN_SOURCE>=700 too (not just _NETBSD_SOURCE). ok dholland@@ @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.49 2014/09/24 18:16:36 christos Exp $ */ d101 1 @ 1.50.2.1 log @Sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.51 2016/10/12 20:01:22 christos Exp $ */ a100 1 char *strchrnul(const char *, int); @ 1.49 log @add strnstr from FreeBSD @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.48 2013/08/28 17:47:07 riastradh Exp $ */ d86 1 a104 1 char *strndup(const char *, size_t); @ 1.48 log @Publish explicit_memset and consttime_memequal in userland libc. Remove the double-underscore from the userland versions, and do the weak alias dance instead, now that these are public parts of libc. As discussed on tech-userlevel: https://mail-index.netbsd.org/tech-userlevel/2013/06/24/msg007843.html (option 3) @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.47 2013/08/28 15:46:23 riastradh Exp $ */ d105 1 @ 1.47 log @Make explicit_memset match memset's return value. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.46 2013/08/27 18:29:28 joerg Exp $ */ d106 2 a107 2 void *__explicit_memset(void *, int, size_t); int __consttime_memequal(const void *, const void *, size_t); @ 1.46 log @Remove outdated comment. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.45 2013/08/19 13:03:12 joerg Exp $ */ d106 1 a106 1 void __explicit_memset(void *, int, size_t); @ 1.45 log @Add strerror_l. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.44 2013/06/24 04:21:20 riastradh Exp $ */ a91 6 /* * For POSIX compliance, we still need: * strcoll_l * strerror_l * strxfrm_l */ @ 1.44 log @Replace consttime_bcmp/explicit_bzero by consttime_memequal/explicit_memset. consttime_memequal is the same as the old consttime_bcmp. explicit_memset is to memset as explicit_bzero was to bcmp. Passes amd64 release and i386/ALL, but I'm sure I missed some spots, so please let me know. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.43 2013/04/21 18:41:32 joerg Exp $ */ d125 1 @ 1.43 log @__BEGIN_DECLS/__END_DECLS @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.42 2013/04/19 23:28:47 joerg Exp $ */ d112 2 a113 2 void __explicit_bzero(void *, size_t); int __consttime_bcmp(const void *, const void *, size_t); @ 1.42 log @Add dummy strcoll_l and strxfrm_l. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.41 2012/08/30 12:16:48 drochner Exp $ */ d122 1 d125 1 @ 1.41 log @Add "consttime_bcmp" and "explicit_bzero" functions for both kernel abd userland, as proposed on tech-security, with explicit_bzero using a volatile function pointer as suggested by Alan Barrett. Both do what the name says. For userland, both are prefixed by "__" to keep them out of the user namespace. Change some memset/memcmp uses to the new functions where it makes sense -- these are just some examples, more to come. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.40 2012/04/20 16:20:45 joerg Exp $ */ d117 9 @ 1.41.2.1 log @resync from head @ text @d1 1 a1 1 /* $NetBSD$ */ a116 11 #if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE) # ifndef __LOCALE_T_DECLARED typedef struct _locale *locale_t; # define __LOCALE_T_DECLARED # endif __BEGIN_DECLS int strcoll_l(const char *, const char *, locale_t); size_t strxfrm_l(char * __restrict, const char * __restrict, size_t, locale_t); __END_DECLS #endif /* _POSIX_C_SOURCE || _NETBSD_SOURCE */ @ 1.41.2.2 log @Rebase to HEAD as of a few days ago. @ text @d92 6 d112 2 a113 2 void *explicit_memset(void *, int, size_t); int consttime_memequal(const void *, const void *, size_t); a124 1 __aconst char *strerror_l(int, locale_t); @ 1.40 log @Do not wrap other header files with extern "C". @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.39 2009/07/22 19:48:27 kleink Exp $ */ d112 2 @ 1.39 log @Declare strsignal(3) in , per POSIX-2008, and adjust documentation accordingly. Fixes PR standards/41325 from Perry E. Metzger. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.38 2009/05/01 20:01:23 perry Exp $ */ d99 1 d103 1 d112 1 a113 1 __END_DECLS @ 1.39.8.1 log @sync with head. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.39 2009/07/22 19:48:27 kleink Exp $ */ a98 1 __END_DECLS a101 1 __BEGIN_DECLS d110 1 a111 1 #endif @ 1.39.8.2 log @sync with head @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.39.8.1 2012/05/23 10:07:30 yamt Exp $ */ a111 2 void __explicit_bzero(void *, size_t); int __consttime_bcmp(const void *, const void *, size_t); @ 1.39.8.3 log @sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments") @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.39.8.2 2012/10/30 18:58:33 yamt Exp $ */ d92 6 d112 2 a113 2 void *explicit_memset(void *, int, size_t); int consttime_memequal(const void *, const void *, size_t); a116 12 #if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE) # ifndef __LOCALE_T_DECLARED typedef struct _locale *locale_t; # define __LOCALE_T_DECLARED # endif __BEGIN_DECLS int strcoll_l(const char *, const char *, locale_t); size_t strxfrm_l(char * __restrict, const char * __restrict, size_t, locale_t); __aconst char *strerror_l(int, locale_t); __END_DECLS #endif /* _POSIX_C_SOURCE || _NETBSD_SOURCE */ @ 1.38 log @note that we have strsignal but it is in the wrong include file. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.37 2009/05/01 17:16:49 perry Exp $ */ d87 5 a96 2 * * and strsignal needs to be moved from unistd.h to here. @ 1.37 log @Add prototypes for stpcpy, stpncpy, strnlen, added in the latest POSIX. Implementations in libc to follow. For POSIX compliance, we are still missing: strcoll_l strerror_l strsignal strxfrm_l @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.36 2009/04/10 23:00:53 christos Exp $ */ a90 1 * strsignal d92 2 @ 1.36 log @add memrchr @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.35 2007/10/19 15:58:53 christos Exp $ */ d82 14 @ 1.35 log @kill _NETBSD_TOOLS. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.34 2007/10/18 02:23:37 christos Exp $ */ d91 1 @ 1.35.18.1 log @Sync with HEAD. Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.38 2009/05/01 20:01:23 perry Exp $ */ a81 15 #if (_POSIX_C_SOURCE - 0 >= 200809L) || (_XOPEN_SOURCE - 0 >= 700) || \ defined(_NETBSD_SOURCE) char *stpcpy(char * __restrict, const char * __restrict); char *stpncpy(char * __restrict, const char * __restrict, size_t); size_t strnlen(const char *, size_t); /* * For POSIX compliance, we still need: * strcoll_l * strerror_l * strxfrm_l * * and strsignal needs to be moved from unistd.h to here. */ #endif a90 1 void *memrchr(const void *, int, size_t); @ 1.34 log @Introduce _NETBSD_TOOLS for symbols the are needed in tools build @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.33 2007/08/02 21:49:10 kristerw Exp $ */ d82 1 a82 1 #if defined(_NETBSD_SOURCE) || defined(_NETBSD_TOOLS) @ 1.33 log @Do not include SSP files unless _FORTIFY_SOURCE > 0. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.32 2007/05/30 21:14:37 tls Exp $ */ d82 1 a82 1 #if defined(_NETBSD_SOURCE) @ 1.33.4.1 log @file string.h was added on branch matt-mips64 on 2007-08-02 21:49:11 +0000 @ text @d1 97 @ 1.33.4.2 log @Do not include SSP files unless _FORTIFY_SOURCE > 0. @ text @a0 97 /* $NetBSD: string.h,v 1.33 2007/08/02 21:49:10 kristerw Exp $ */ /*- * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @@(#)string.h 8.1 (Berkeley) 6/2/93 */ #ifndef _STRING_H_ #define _STRING_H_ #include #ifdef _BSD_SIZE_T_ typedef _BSD_SIZE_T_ size_t; #undef _BSD_SIZE_T_ #endif #include #include #include __BEGIN_DECLS void *memchr(const void *, int, size_t); int memcmp(const void *, const void *, size_t); void *memcpy(void * __restrict, const void * __restrict, size_t); void *memmove(void *, const void *, size_t); void *memset(void *, int, size_t); char *strcat(char * __restrict, const char * __restrict); char *strchr(const char *, int); int strcmp(const char *, const char *); int strcoll(const char *, const char *); char *strcpy(char * __restrict, const char * __restrict); size_t strcspn(const char *, const char *); __aconst char *strerror(int); size_t strlen(const char *); char *strncat(char * __restrict, const char * __restrict, size_t); int strncmp(const char *, const char *, size_t); char *strncpy(char * __restrict, const char * __restrict, size_t); char *strpbrk(const char *, const char *); char *strrchr(const char *, int); size_t strspn(const char *, const char *); char *strstr(const char *, const char *); char *strtok(char * __restrict, const char * __restrict); #if (_POSIX_C_SOURCE - 0 >= 199506L) || (_XOPEN_SOURCE - 0 >= 500) || \ defined(_REENTRANT) || defined(_NETBSD_SOURCE) char *strtok_r(char *, const char *, char **); int strerror_r(int, char *, size_t); #endif /* _POSIX_C_SOURCE >= 199506 || XOPEN_SOURCE >= 500 || ... */ size_t strxfrm(char * __restrict, const char * __restrict, size_t); #if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) void *memccpy(void *, const void *, int, size_t); char *strdup(const char *); #endif #if defined(_NETBSD_SOURCE) #include /* for backwards-compatibilty */ void *memmem(const void *, size_t, const void *, size_t); char *strcasestr(const char *, const char *); size_t strlcat(char *, const char *, size_t); size_t strlcpy(char *, const char *, size_t); char *strsep(char **, const char *); char *stresep(char **, const char *, int); char *strndup(const char *, size_t); #endif __END_DECLS #if _FORTIFY_SOURCE > 0 #include #endif #endif /* !defined(_STRING_H_) */ @ 1.33.2.1 log @sync with HEAD @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.35 2007/10/19 15:58:53 christos Exp $ */ @ 1.32 log @Match usage of FORTIFY_SOURCE on other platforms by not requiring special include path: the normal header files now include the "SSP" ones (which one should note are not really named right: SSP and FORTIFY_SOURCE are independent features). Disable USE_SSP on targets where the compiler doesn't support it at all (mips, alpha) or it's known broken (sh3). But enable FORTIFY_SOURCE, without SSP, on those platforms -- tested on mipsel. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.31 2006/08/12 23:50:13 christos Exp $ */ d94 1 d96 1 @ 1.31 log @Add stresep and strndup. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.30 2005/07/28 16:26:53 christos Exp $ */ d94 1 @ 1.31.4.1 log @Sync w/ NetBSD-4-RC_1 @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.31.2.2 2007/08/24 20:07:38 liamjfoy Exp $ */ a93 3 #if _FORTIFY_SOURCE > 0 #include #endif @ 1.31.2.1 log @Pull up to netbsd-4 (requested by christos in ticket #773): Move libssp to libc. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.32 2007/05/30 21:14:37 tls Exp $ */ a93 1 #include @ 1.31.2.2 log @Pull up following revision(s) (requested by kristerw in ticket #833): include/unistd.h: revision 1.112 lib/libc/ssp/snprintf_chk.c: revision 1.4 lib/libc/ssp/sprintf_chk.c: revision 1.4 lib/libc/ssp/vsprintf_chk.c: revision 1.4 lib/libc/ssp/gets_chk.c: revision 1.4 include/stdio.h: revision 1.70 lib/libc/ssp/vsnprintf_chk.c: revision 1.4 lib/libc/ssp/fgets_chk.c: revision 1.4 include/strings.h: revision 1.12 include/string.h: revision 1.33 Do not include SSP files unless _FORTIFY_SOURCE > 0. Update includes so that this builds for USE_FORT=no too. @ text @d1 1 a1 1 /* $NetBSD$ */ a93 1 #if _FORTIFY_SOURCE > 0 a94 1 #endif @ 1.30 log @Add strerror_r. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.29 2005/03/13 15:09:50 perry Exp $ */ d89 2 @ 1.30.2.1 log @Pull up following revision(s) (requested by tron in ticket #63): regress/lib/libc/string/Makefile: revision 1.9 lib/libc/string/strsep.3: revision 1.17 lib/libc/string/strsep.3: revision 1.18 regress/lib/libc/string/stresep/Makefile: revision 1.1 distrib/sets/lists/base/shl.mi: revision 1.364 regress/lib/libc/string/stresep/stresep_test.c: revision 1.1 lib/libc/gen/fstab.c: revision 1.28 lib/libc/shlib_version: revision 1.181 lib/libc/string/strndup.c: revision 1.1 lib/libc/string/strdup.3: revision 1.13 lib/libc/string/strdup.3: revision 1.14 lib/libc/string/Makefile.inc: revision 1.61 include/string.h: revision 1.31 distrib/sets/lists/comp/mi: revision 1.909 lib/libc/string/stresep.c: revision 1.1 lib/libc/include/namespace.h: revision 1.118 - Add strndup and stresep - Use stresep so in fstab so that we can mount paths with white space in th= em. Add stresep and strndup. add regression test for stresep. libc 146 man pages for stresep and strndup. Mark up NULL. stresep, not strnsep. Remove duplicate "the". Bump date for previous. @ text @d1 1 a1 1 /* $NetBSD$ */ a88 2 char *stresep(char **, const char *, int); char *strndup(const char *, size_t); @ 1.29 log @Add prototype for memmem(3). It is API compatible with the version in Linux. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.28 2005/02/03 04:39:32 perry Exp $ */ d73 1 @ 1.28 log @de-__P -- the hack is long since useless. Discussed with christos, matt, kleink, others. Approved by christos. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.27 2004/07/12 23:35:14 kleink Exp $ */ d83 1 @ 1.27 log @Move the strcasestr() prototype to the local extensions section. Also __P() it; this should be consistent within a single header. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.26 2004/07/03 08:27:25 junyoung Exp $ */ d49 21 a69 21 void *memchr __P((const void *, int, size_t)); int memcmp __P((const void *, const void *, size_t)); void *memcpy __P((void * __restrict, const void * __restrict, size_t)); void *memmove __P((void *, const void *, size_t)); void *memset __P((void *, int, size_t)); char *strcat __P((char * __restrict, const char * __restrict)); char *strchr __P((const char *, int)); int strcmp __P((const char *, const char *)); int strcoll __P((const char *, const char *)); char *strcpy __P((char * __restrict, const char * __restrict)); size_t strcspn __P((const char *, const char *)); __aconst char *strerror __P((int)); size_t strlen __P((const char *)); char *strncat __P((char * __restrict, const char * __restrict, size_t)); int strncmp __P((const char *, const char *, size_t)); char *strncpy __P((char * __restrict, const char * __restrict, size_t)); char *strpbrk __P((const char *, const char *)); char *strrchr __P((const char *, int)); size_t strspn __P((const char *, const char *)); char *strstr __P((const char *, const char *)); char *strtok __P((char * __restrict, const char * __restrict)); d72 1 a72 1 char *strtok_r __P((char *, const char *, char **)); d74 1 a74 1 size_t strxfrm __P((char * __restrict, const char * __restrict, size_t)); d77 2 a78 2 void *memccpy __P((void *, const void *, int, size_t)); char *strdup __P((const char *)); d83 4 a86 4 char *strcasestr __P((const char *, const char *)); size_t strlcat __P((char *, const char *, size_t)); size_t strlcpy __P((char *, const char *, size_t)); char *strsep __P((char **, const char *)); @ 1.26 log @Add strcasestr(3), case insensitive version of strstr(3). Bump libc minor. From FreeBSD. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.25 2003/08/07 09:44:11 agc Exp $ */ a53 3 #if defined(_NETBSD_SOURCE) char *strcasestr(const char *, const char *); #endif d83 1 @ 1.25 log @Move UCB-licensed code from 4-clause to 3-clause licence. Patches provided by Joel Baker in PR 22270, verified by myself. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.24 2003/04/28 23:16:15 bjh21 Exp $ */ d54 3 @ 1.25.2.1 log @Pull up revision 1.26 (requested by junyoung in ticket #638): Add strcasestr(3), case insensitive version of strstr(3). @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.25 2003/08/07 09:44:11 agc Exp $ */ a53 3 #if defined(_NETBSD_SOURCE) char *strcasestr(const char *, const char *); #endif @ 1.25.2.2 log @Pull up revision 1.27 (requested by kleink in ticket #643): Move the strcasestr() prototype to the local extensions section. Also __P() it; this should be consistent within a single header. @ text @d1 1 a1 1 /* $NetBSD$ */ d54 3 a85 1 char *strcasestr __P((const char *, const char *)); @ 1.24 log @Add a new feature-test macro, _NETBSD_SOURCE. If this is defined by the application, all NetBSD interfaces are made visible, even if some other feature-test macro (like _POSIX_C_SOURCE) is defined. defined _NETBSD_SOURCE if none of _ANSI_SOURCE, _POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve existing behaviour. This has two major advantages: + Programs that require non-POSIX facilities but define _POSIX_C_SOURCE can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS. + It makes most of the #ifs simpler, in that they're all now ORs of the various macros, rather than having checks for (!defined(_ANSI_SOURCE) || !defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place. I've tried not to change the semantics of the headers in any case where _NETBSD_SOURCE wasn't defined, but there were some places where the current semantics were clearly mad, and retaining them was harder than correcting them. In particular, I've mostly normalised things so that _ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE, _XOPEN_SOURCE and _NETBSD_SOURCE in that order. Tested by building for vax, encouraged by thorpej, and uncontested in tech-userlevel for a week. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.23 2001/03/22 07:37:04 kleink Exp $ */ d15 1 a15 5 * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors @ 1.23 log @Sprinkle some restrict qualifiers. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.22 2000/01/10 16:58:38 kleink Exp $ */ d74 2 a75 3 #if (!defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \ !defined(_XOPEN_SOURCE)) || defined(_REENTRANT) || \ (_POSIX_C_SOURCE - 0 >= 199506L) || (_XOPEN_SOURCE - 0 >= 500) d77 1 a77 1 #endif /* !defined(_ANSI_SOURCE) || defined(_REENTRANT) || ... */ d80 1 a80 2 #if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) || \ defined(_XOPEN_SOURCE) d83 1 a83 1 #endif /* !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) */ d85 1 a85 2 #if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \ !defined(_XOPEN_SOURCE) d90 1 a90 1 #endif /* !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) && ... */ @ 1.22 log @Move to for the purpose of avoiding conflicts due to std C headers including it, and a kernel module written in C++ would benfit as well. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.21 1999/12/22 21:26:19 kleink Exp $ */ d55 1 a55 1 void *memcpy __P((void *, const void *, size_t)); d58 1 a58 1 char *strcat __P((char *, const char *)); d62 1 a62 1 char *strcpy __P((char *, const char *)); d66 1 a66 1 char *strncat __P((char *, const char *, size_t)); d68 1 a68 1 char *strncpy __P((char *, const char *, size_t)); d73 1 a73 1 char *strtok __P((char *, const char *)); d79 1 a79 1 size_t strxfrm __P((char *, const char *, size_t)); @ 1.22.6.1 log @Merge trunk onto branch. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.23 2001/03/22 07:37:04 kleink Exp $ */ d55 1 a55 1 void *memcpy __P((void * __restrict, const void * __restrict, size_t)); d58 1 a58 1 char *strcat __P((char * __restrict, const char * __restrict)); d62 1 a62 1 char *strcpy __P((char * __restrict, const char * __restrict)); d66 1 a66 1 char *strncat __P((char * __restrict, const char * __restrict, size_t)); d68 1 a68 1 char *strncpy __P((char * __restrict, const char * __restrict, size_t)); d73 1 a73 1 char *strtok __P((char * __restrict, const char * __restrict)); d79 1 a79 1 size_t strxfrm __P((char * __restrict, const char * __restrict, size_t)); @ 1.21 log @For the benefit of G++'s null pointer constant implementation, #define NULL as __null with egcs 1.0 (GCC 2.90) and above. As several headers are affected by this change, move the definition into a new header file, , to ease maintenance. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.20 1999/09/09 09:30:40 kleink Exp $ */ d47 1 a47 1 #include @ 1.20 log @strlcat() and strlcpy() aren't ISO/IEC 9899:1990. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.19 1999/09/08 22:09:36 lukem Exp $ */ d47 1 a47 3 #ifndef NULL #define NULL 0 #endif @ 1.19 log @prototypes for strlcat() and strlcpy() @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.18 1998/07/27 09:09:26 mycroft Exp $ */ a66 2 size_t strlcat __P((char *, const char *, size_t)); size_t strlcpy __P((char *, const char *, size_t)); d92 2 @ 1.18 log @Make many of the new consts dependent on a new `__AUDIT__' flag, to avoid breaking third party software. *sigh* @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.17 1998/07/26 19:20:55 mycroft Exp $ */ d67 2 @ 1.18.2.1 log @Pull up revisions 1.19-1.20 (requested by he): Add declarations for strlcat() and strlcpy(). @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.18 1998/07/27 09:09:26 mycroft Exp $ */ a91 2 size_t strlcat __P((char *, const char *, size_t)); size_t strlcpy __P((char *, const char *, size_t)); @ 1.17 log @KNF nit. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.16 1998/07/26 13:34:18 mycroft Exp $ */ d66 1 a66 1 const char *strerror __P((int)); @ 1.16 log @const poisoning. @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.15 1998/05/06 20:17:55 kleink Exp $ */ d66 1 a66 1 const char *strerror __P((int)); @ 1.15 log @Make strtok_r() available to _XOPEN_SOURCE >= 500, and fix the protection of memccpy() and strdup(). @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.14 1998/04/27 17:02:04 tv Exp $ */ d66 1 a66 1 char *strerror __P((int)); @ 1.14 log @Move the #include line inside a !defined(_XOPEN_SOURCE) block (not just !POSIX and !ANSI) @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.13 1998/02/03 04:45:41 perry Exp $ */ d76 3 a78 2 #if (!defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE)) || \ defined(_REENTRANT) || (_POSIX_C_SOURCE - 0 >= 199506L) d83 2 a84 1 #if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) @ 1.13 log @restore include of sys/featuretest.h @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.12 1998/02/02 22:07:54 perry Exp $ */ a82 1 #include /* for backwards-compatibilty */ d89 1 @ 1.12 log @remove sys/featuretest.h -- why did kleink add it? @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.11 1998/02/02 21:07:57 perry Exp $ */ d52 1 @ 1.11 log @merge lite-2 @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.10 1998/02/02 16:15:07 kleink Exp $ */ a51 1 #include @ 1.10 log @Per XPG4.2, move the prototypes of bcmp(), bcopy(), bzero(), ffs(), index(), rindex(), strcasecmp() and strncasecmp() to . For now, include to get these prototypes; this should go away eventually. Also, protect the prototypes of strtok_r() and strsep(). @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.9 1998/01/12 16:05:40 kleink Exp $ */ d4 2 a5 2 * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. d35 1 a35 1 * @@(#)string.h 5.10 (Berkeley) 3/9/91 @ 1.9 log @Per XPG4, move the prototype of swab() from to . @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.8 1997/10/16 23:26:26 christos Exp $ */ d52 1 d76 2 d79 1 d82 2 a83 7 /* Nonstandard routines */ #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) int bcmp __P((const void *, const void *, size_t)); void bcopy __P((const void *, void *, size_t)); void bzero __P((void *, size_t)); int ffs __P((int)); char *index __P((const char *, int)); a84 2 char *rindex __P((const char *, int)); int strcasecmp __P((const char *, const char *)); d86 4 a89 1 int strncasecmp __P((const char *, const char *, size_t)); d91 1 a91 1 #endif d94 1 a94 1 #endif /* _STRING_H_ */ @ 1.8 log @move setmode and strsignal to unistd.h @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.7 1997/07/13 18:02:16 christos Exp $ */ a90 1 void swab __P((const void *, void *, size_t)); @ 1.7 log @Add missing strtok_r prototype @ text @d1 1 a1 1 /* $NetBSD: string.h,v 1.6 1994/10/26 00:56:30 cgd Exp $ */ a88 1 void strmode __P((int, char *)); a90 1 char *strsignal __P((int)); @ 1.6 log @new RCS ID format. @ text @d1 1 a1 1 /* $NetBSD$ */ d75 1 @ 1.5 log @Added prototype for new function strsignal() @ text @d1 2 d35 1 a35 2 * from: @@(#)string.h 5.10 (Berkeley) 3/9/91 * $Id: string.h,v 1.4 1994/05/21 09:42:34 cgd Exp $ @ 1.5.2.1 log @file string.h was added on branch netbsd-1-0 on 1994-08-02 05:03:47 +0000 @ text @d1 95 @ 1.5.2.2 log @Added prototype for new function strsignal() @ text @a0 95 /*- * Copyright (c) 1990 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * from: @@(#)string.h 5.10 (Berkeley) 3/9/91 * $Id: string.h,v 1.5 1994/08/02 05:03:46 jtc Exp $ */ #ifndef _STRING_H_ #define _STRING_H_ #include #ifdef _BSD_SIZE_T_ typedef _BSD_SIZE_T_ size_t; #undef _BSD_SIZE_T_ #endif #ifndef NULL #define NULL 0 #endif #include __BEGIN_DECLS void *memchr __P((const void *, int, size_t)); int memcmp __P((const void *, const void *, size_t)); void *memcpy __P((void *, const void *, size_t)); void *memmove __P((void *, const void *, size_t)); void *memset __P((void *, int, size_t)); char *strcat __P((char *, const char *)); char *strchr __P((const char *, int)); int strcmp __P((const char *, const char *)); int strcoll __P((const char *, const char *)); char *strcpy __P((char *, const char *)); size_t strcspn __P((const char *, const char *)); char *strerror __P((int)); size_t strlen __P((const char *)); char *strncat __P((char *, const char *, size_t)); int strncmp __P((const char *, const char *, size_t)); char *strncpy __P((char *, const char *, size_t)); char *strpbrk __P((const char *, const char *)); char *strrchr __P((const char *, int)); size_t strspn __P((const char *, const char *)); char *strstr __P((const char *, const char *)); char *strtok __P((char *, const char *)); size_t strxfrm __P((char *, const char *, size_t)); /* Nonstandard routines */ #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE) int bcmp __P((const void *, const void *, size_t)); void bcopy __P((const void *, void *, size_t)); void bzero __P((void *, size_t)); int ffs __P((int)); char *index __P((const char *, int)); void *memccpy __P((void *, const void *, int, size_t)); char *rindex __P((const char *, int)); int strcasecmp __P((const char *, const char *)); char *strdup __P((const char *)); void strmode __P((int, char *)); int strncasecmp __P((const char *, const char *, size_t)); char *strsep __P((char **, const char *)); char *strsignal __P((int)); void swab __P((const void *, void *, size_t)); #endif __END_DECLS #endif /* _STRING_H_ */ @ 1.4 log @add _BSD's to ansi types @ text @d34 1 a34 1 * $Id: string.h,v 1.3 1993/10/11 18:43:45 jtc Exp $ d90 1 @ 1.3 log @Changed preprocessor conditional so non-standard functions would not be declared in a _POSIX_SOURCE environment. @ text @d34 1 a34 1 * $Id: string.h,v 1.2 1993/08/01 18:45:15 mycroft Exp $ d41 3 a43 3 #ifdef _SIZE_T_ typedef _SIZE_T_ size_t; #undef _SIZE_T_ @ 1.2 log @Add RCS identifiers. @ text @d34 1 a34 1 * $Id: $ d77 1 a77 1 #ifndef _ANSI_SOURCE @ 1.1 log @Initial revision @ text @d33 2 a34 1 * @@(#)string.h 5.10 (Berkeley) 3/9/91 @ 1.1.1.1 log @initial import of 386bsd-0.1 sources @ text @@ 1.1.1.2 log @import lite-2 @ text @d2 2 a3 2 * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. d33 1 a33 1 * @@(#)string.h 8.1 (Berkeley) 6/2/93 d40 3 a42 3 #ifdef _BSD_SIZE_T_ typedef _BSD_SIZE_T_ size_t; #undef _BSD_SIZE_T_ @