tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

strchr.c (1254B)


      1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 #include "plstr.h"
      7 #include <string.h>
      8 
      9 PR_IMPLEMENT(char*)
     10 PL_strchr(const char* s, char c) {
     11  if ((const char*)0 == s) {
     12    return (char*)0;
     13  }
     14 
     15  return strchr(s, c);
     16 }
     17 
     18 PR_IMPLEMENT(char*)
     19 PL_strrchr(const char* s, char c) {
     20  if ((const char*)0 == s) {
     21    return (char*)0;
     22  }
     23 
     24  return strrchr(s, c);
     25 }
     26 
     27 PR_IMPLEMENT(char*)
     28 PL_strnchr(const char* s, char c, PRUint32 n) {
     29  if ((const char*)0 == s) {
     30    return (char*)0;
     31  }
     32 
     33  for (; n && *s; s++, n--)
     34    if (*s == c) {
     35      return (char*)s;
     36    }
     37 
     38  if (((char)0 == c) && (n > 0) && ((char)0 == *s)) {
     39    return (char*)s;
     40  }
     41 
     42  return (char*)0;
     43 }
     44 
     45 PR_IMPLEMENT(char*)
     46 PL_strnrchr(const char* s, char c, PRUint32 n) {
     47  const char* p;
     48 
     49  if ((const char*)0 == s) {
     50    return (char*)0;
     51  }
     52 
     53  for (p = s; n && *p; p++, n--);
     54 
     55  if (((char)0 == c) && (n > 0) && ((char)0 == *p)) {
     56    return (char*)p;
     57  }
     58 
     59  for (p--; p >= s; p--)
     60    if (*p == c) {
     61      return (char*)p;
     62    }
     63 
     64  return (char*)0;
     65 }