/************************************************************************/
/* */
/* memrchr -- Fast, right-to-left-scanning memory search */
/* */
/* ANSI C provides memchr, which scans memory using ascending */
/* addresses (to the right), starting from the specified */
/* address. However, there's no equivalent descending-address */
/* (right to left) function -- hence this module. */
/* */
/* Copyright (C) 1995-2000 Grouse Software. All rights reserved. */
/* Written for Grouse by behoffski (Brenton Hoff). */
/* */
/* Free software: no warranty; use anywhere is ok; spread the */
/* sources; note any mods; share variations and derivatives */
/* (including sending to behoffski@grouse.com.au). */
/* */
/************************************************************************/
#include "memrchr.h"
#include <string.h>
void *
memrchr(const void *buf, int c, size_t num)
{
unsigned char *pMem = (unsigned char *) buf;
for (;;) {
if (num-- == 0) {
return NULL;
}
if (*pMem-- == (unsigned char) c) {
break;
}
}
return (void *) (pMem + 1);
}