1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*-
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Copyright (c) 2006 M. Warner Losh. All rights reserved.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Redistribution and use in source and binary forms, with or without
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * modification, are permitted provided that the following conditions
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * are met:
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * 1. Redistributions of source code must retain the above copyright
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * notice, this list of conditions and the following disclaimer.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * 2. Redistributions in binary form must reproduce the above copyright
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * notice, this list of conditions and the following disclaimer in the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * documentation and/or other materials provided with the distribution.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7bd3a2e26cc8569257b88c1691d559138e1d32d0Sriharsha Basavapatna *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include <sys/cdefs.h>
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo__FBSDID("$FreeBSD$");
06db247c678f0e3956535e8a6dec31d6c2108827raghuram
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/******************************************************************************
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Filename: p_string.c
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Instantiation of basic string operations to prevent inclusion of full
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * string library. These are simple implementations not necessarily optimized
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * for speed, but rather to show intent.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * Revision information:
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * 20AUG2004 kb_admin initial creation
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * 12JAN2005 kb_admin minor updates
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo *
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * BEGIN_KBDD_BLOCK
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng * No warranty, expressed or implied, is included with this software. It is
d10e4ef2fabf16c3237c6d6592496df3eac6a1efnarayan * provided "AS IS" and no warranty of any kind including statutory or aspects
06db247c678f0e3956535e8a6dec31d6c2108827raghuram * relating to merchantability or fitness for any purpose is provided. All
06db247c678f0e3956535e8a6dec31d6c2108827raghuram * intellectual property rights of others is maintained with the respective
678453a8ed49104d8adad58f3ba591bdc39883e8speer * owners. This software is not copyrighted and is intended for reference
cdfc78ad277d82b1080e7c86213063d1b73e7789raghuram * only.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * END_BLOCK
06db247c678f0e3956535e8a6dec31d6c2108827raghuram *****************************************************************************/
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#include "lib.h"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo/*
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * .KB_C_FN_DEFINITION_START
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * int p_strlen(char *)
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * This global function returns the number of bytes starting at the pointer
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * before (not including) the string termination character ('/0').
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo * .KB_C_FN_DEFINITION_END
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo */
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoint
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppop_strlen(const char *buffer)
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo{
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo const char *ptr = buffer;
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo while (*ptr++)
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo continue;
7bd3a2e26cc8569257b88c1691d559138e1d32d0Sriharsha Basavapatna return (ptr - buffer - 1);
7bd3a2e26cc8569257b88c1691d559138e1d32d0Sriharsha Basavapatna}
f0ca1d9a12d54d304791bc74525e2010ca924726sb