root/trunk/txlib/txmemstr.c

Revision 1, 3.0 kB (checked in by jvw, 3 years ago)

Initial check-in for TxWin? version 1.02 sources

Line 
1//
2//                     TxWin, Textmode Windowing Library
3//
4//   Original code Copyright (c) 1995-2005 Fsys Software and Jan van Wijk
5//
6// ==========================================================================
7//
8// This file contains Original Code and/or Modifications of Original Code as
9// defined in and that are subject to the GNU Lesser General Public License.
10// You may not use this file except in compliance with the License.
11// BY USING THIS FILE YOU AGREE TO ALL TERMS AND CONDITIONS OF THE LICENSE.
12// A copy of the License is provided with the Original Code and Modifications,
13// and is also available at http://www.dfsee.com/txwin/lgpl.htm
14//
15// This library is free software; you can redistribute it and/or modify
16// it under the terms of the GNU Lesser General Public License as published
17// by the Free Software Foundation; either version 2.1 of the License,
18// or (at your option) any later version.
19//
20// This library is distributed in the hope that it will be useful,
21// but WITHOUT ANY WARRANTY; without even the implied warranty of
22// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23// See the GNU Lesser General Public License for more details.
24//
25// You should have received a copy of the GNU Lesser General Public License
26// along with this library; (lgpl.htm) if not, write to the Free Software
27// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28//
29// Questions on TxWin licensing can be directed to: txwin@fsys.nl
30//
31// ==========================================================================
32//
33// Generic TX string functions, memory string (not null terminated)
34//
35// Author: J. van Wijk
36//
37// JvW  20-08-2005 Initial version, split off from TXSTRING
38
39#include <txlib.h>
40
41
42/*****************************************************************************/
43// Find occurence of a string in a memory region (with embedded NUL)
44/*****************************************************************************/
45char *TxMemStr                                  // RET   ptr to string or NULL
46(
47   void               *mem,                     // IN    memory region
48   char               *str,                     // IN    string to find
49   int                 len                      // IN    length of mem region
50)
51{
52   char               *rc = NULL;
53   char               *mr = (char *) mem;
54   int                 at = 0;                 // current position from start
55   int                 sl = strlen( str);
56   char               *hit;
57
58   while ((rc == NULL) && ((hit = memchr( mr + at, str[0], len -at)) != NULL))
59   {
60      if (strncmp( hit, str, sl) == 0)         // found a match
61      {
62         rc = hit;
63      }
64      else
65      {
66         at = hit - mr +1;
67      }
68   }
69   TRACES(("TxMemStr: mem:%8.8lx, str:'%s' rc:%8.8lx\n", mem, str, rc));
70   return (rc);
71}                                               // end 'TxMemStr'
72/*---------------------------------------------------------------------------*/
Note: See TracBrowser for help on using the browser.