Mercurial > projects > dstress
view extract__.c @ 1623:04022926a4d5
Fix dstress.run.b.bug_cod1_2528_C as reported by Don Clugston
Quoting Don's words from Ticket #8:
Fails because it returns 3 instead of 0.
The DStress test case is incorrect. The arrray literal is an int, so
it's 4 bytes. Casting it to void[] should give a length of 4 -- and
that's exactly what it does. Should be "return x.length - 4;".
author | Leandro Lucarella <llucax@gmail.com> |
---|---|
date | Fri, 05 Nov 2010 10:10:51 -0300 |
parents | 6cd84461e17b |
children |
line wrap: on
line source
/* svn://svn.kuehne.cn/dstress/extract__.c * * extract compiler flags for DStress test cases * [deprecated: use dstress.c] * * Copyright (C) 2004, 2005 Thomas Kuehne * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> // @WARNING@ works only with ASCII / UTF-8 source files int main(int argc, char* argv[]){ if(argc!=2){ printf("this stdin will be queried for the patter given as first argument\n"); return -1; } // the longest source line in the test is a bit over 1<<16 bytes long size_t length = 1 << 17; char* line = malloc(length); char* buffer; char* found; char* pattern=argv[1]; size_t pattern_length=strlen(pattern); errno=0; while(buffer=fgets(line, length, stdin)){ found = strstr(buffer, pattern); if(errno!=0){ break; }else if(found!=NULL){ found+=pattern_length; printf("%s", found); break; } } free(line); return 0; }