[RFC] strrstr function in libbb failes on some corner cases

Tito farmatito at tiscali.it
Tue Jun 17 11:52:20 UTC 2008


On Tuesday 17 June 2008 09:43:54 Bernhard Fischer wrote:
> On Mon, Jun 16, 2008 at 09:48:07PM +0200, Tito wrote:
> >On Monday 16 June 2008 09:47:31 Bernhard Fischer wrote:
> >> On Mon, Jun 16, 2008 at 08:45:18AM +0200, Tito wrote:
> >> >On Monday 16 June 2008 06:33:35 you wrote:
> 
> >> >> char* strrstr(const char *haystack, const char *needle)
> >> >> {
> >> >>         char *r = NULL;
> >> >> 
> >> >>         if (!needle[0])
> >> >>                 return r;
> >> >>         while (1) {
> >> >>                 char *p = strstr(haystack, needle);
> >> >>                 if (!p)
> >> >>                         return r;
> >> >>                 r = p;
> >> >>                 haystack = p + 1;
> 
> >Hi, just for fun, 
> >one more variant that seems to pass the tests as modified (for "")
> >
> >char* strrstr(const char *haystack, const char *needle)
> >{
> >	char *s = NULL;
> >
> >	while (*haystack) {
> >		s = (strstr(haystack++, needle)) ? : s;
> >	}
> >	return s;
> >}
> >
> >but size on my system is the same as Denys' version....  :(
> >
> >scripts/bloat-o-meter busybox_old busybox_unstripped
> >function                                             old     new   delta
> >strrstr                                               53      42     -11
> >------------------------------------------------------------------------------
> >(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-11)             Total: -11 bytes
> 
> Tito, can you pick one (your decision) and send me the full file
> (including your nice testcases)?
> TIA and cheers,
> 
HI,
Attached you can find a test.c file with both strrstr, mine and Denys', they show little
differences on "" vs. "" test case.
The test cases are improved and checked against the real strstr for consistency.
As you and Denys are more experienced it is up yo you to decide what to do.


Ciao,
Tito
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.c
Type: text/x-csrc
Size: 2983 bytes
Desc: not available
Url : http://lists.busybox.net/pipermail/busybox/attachments/20080617/85615543/attachment-0002.c 


More information about the busybox mailing list