diff --git a/libveriuser/Makefile.in b/libveriuser/Makefile.in index 93078de14..0de6faebb 100644 --- a/libveriuser/Makefile.in +++ b/libveriuser/Makefile.in @@ -16,7 +16,7 @@ # 59 Temple Place - Suite 330 # Boston, MA 02111-1307, USA # -#ident "$Id: Makefile.in,v 1.3 2002/05/23 03:46:42 steve Exp $" +#ident "$Id: Makefile.in,v 1.4 2002/05/24 20:29:07 steve Exp $" # # SHELL = /bin/sh @@ -45,7 +45,7 @@ LDFLAGS = @LDFLAGS@ STRIP = @STRIP@ A = a_close.o a_initialize.o -O = finish.o io_print.o $A +O = finish.o io_print.o mc_scan_plusargs.o $A all: libveriuser.a @@ -81,4 +81,4 @@ installdirs: mkinstalldirs uninstall:: rm -f $(libdir)/libveriuser.a --include $(patsubst %.o, dep/%.d, $O $P) +-include $(patsubst %.o, dep/%.d, $O) diff --git a/libveriuser/mc_scan_plusargs.c b/libveriuser/mc_scan_plusargs.c new file mode 100644 index 000000000..bb9722d17 --- /dev/null +++ b/libveriuser/mc_scan_plusargs.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2002 Michael Ruff (mruff at chiaro.com) + * + * This source code is free software; you can redistribute it + * and/or modify it in source code form 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 + */ +#if !defined(WINNT) +#ident "$Id: mc_scan_plusargs.c,v 1.1 2002/05/24 20:29:07 steve Exp $" +#endif + +# include +# include +# include + +/* + * mc_scan_plusargs implemented using VPI interface + */ +char *mc_scan_plusargs(char *plusarg) +{ + int argc, diff; + char **argv, *a, *p; + s_vpi_vlog_info vpi_vlog_info; + + /* get command line */ + if (! vpi_get_vlog_info(&vpi_vlog_info)) + return (char *)0; + + /* for each argument */ + argv = vpi_vlog_info.argv; + for (argc = 0; argc < vpi_vlog_info.argc; argc++, argv++) { + a = *argv; + p = plusarg; + + /* skip plus */ + if (*a == '+') a++; + + /* impossible matches */ + if (strlen(a) < strlen(p)) continue; + + diff = 0; + while (*p) { + + if (*a != *p) { + diff = 1; + break; + } + a++; p++; + } + + if (!diff) return a; + } + + /* didn't find it yet */ + return (char *)0; +} + +/* + * $Log: mc_scan_plusargs.c,v $ + * Revision 1.1 2002/05/24 20:29:07 steve + * Implement mc_scan_plusargs. + * + */ diff --git a/veriuser.h b/veriuser.h index 7a786cd33..29d3da1d2 100644 --- a/veriuser.h +++ b/veriuser.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: veriuser.h,v 1.3 2002/05/24 19:05:30 steve Exp $" +#ident "$Id: veriuser.h,v 1.4 2002/05/24 20:29:07 steve Exp $" #endif /* @@ -48,6 +48,7 @@ EXTERN_C_START extern void io_printf (const char *, ...) __attribute__((format (printf,1,2))); +extern char* mc_scan_plusargs(char*plusarg); extern int tf_dofinish(void); extern int tf_dostop(void); @@ -56,6 +57,9 @@ EXTERN_C_END /* * $Log: veriuser.h,v $ + * Revision 1.4 2002/05/24 20:29:07 steve + * Implement mc_scan_plusargs. + * * Revision 1.3 2002/05/24 19:05:30 steve * support GCC __attributes__ for printf formats. *