freebsd-ports/cad/spice/files/patch-src_lib_inp_inpfindl_c
Maho Nakata 43801110c6 1. REAL cleaning on this port. The files dir is now organized so the
port can be maintained: previously there were multifile patches and several
patches for the same file, now it is a lot cleaner.

2. I also merged a memory leak fix and some fixes from
spice3f5-spaghetti.

4. MFB and removed GNUREADLINE support

5. honor CFLAGS and CC.

6. Add documentation.

7. Maho didn't change the name of port spice to spice3.
because spice4 might :) appear in the future. version number
should be listed on *only* PORTVERSION.

8. drom maintainership

PR:		54603
Submitted by:	"Pedro F. Giffuni" <giffunip@yahoo.com>
2003-07-19 03:13:48 +00:00

107 lines
3.2 KiB
Text

--- src/lib/inp/inpfindl.c.orig Mon Apr 8 23:41:39 1991
+++ src/lib/inp/inpfindl.c Thu Jul 17 02:45:08 2003
@@ -1,11 +1,13 @@
/**********
Copyright 1990 Regents of the University of California. All rights reserved.
Author: 1985 Thomas L. Quarles
+Modified: 1999 Paolo Nenzi - Now we can use a two digits level code -
**********/
- /* INPfindLev(line)
+ /* INPfindLev(line,level)
* find the 'level' parameter on the given line and return its
- * value (1,2,or 3 for now, 1 default)
+ * value (1,2,..,99 for now, 1 default)
+ * NOTE: now limited to 9 for compatibility
*/
#include "spice.h"
@@ -24,58 +26,41 @@
char *where;
where = line;
-
- while(1) {
- where = index(where,'l');
- if(where == 0) { /* no 'l' in the line => no 'level' => default */
- *level = 1;
- return((char *)NULL);
- }
- if(strncmp(where,"level",5)!=0) { /* this l isn't in the word
- * 'level', so lets try again */
- where++; /* make sure we don't match same char again */
- continue;
- }
- /* found the word level, lets look at the rest of the line */
- where += 5;
+
+ where=strstr(line, "level");
+
+ if (where!=NULL) { /* found a level keyword on the line */
+
+ where += 5; /* skip the level keyword */
while( (*where == ' ') || (*where == '\t') || (*where == '=') ||
(*where == ',') || (*where == '(') || (*where == ')') ||
(*where == '+') ) { /* legal white space - ignore */
- where++;
+ where++;
}
+
/* now the magic number */
- switch(*where) {
- case '1':
+ sscanf(where,"%2d",level); /* We get the level number */
+ if (*level<0) {
+ *level=1;
+ return(INPmkTemp(" illegal (negative) argument to level parameter - level=1 assumed"));
+ }
+
+ if (*level>9) { /* Limit to change in the future */
*level=1;
+ return(INPmkTemp(" illegal (too high) argument to level parameter - level=1 assumed"));
+ }
+
return((char *)NULL);
- case '2':
- *level=2;
- return((char *)NULL);
- case '3':
- *level=3;
- return((char *)NULL);
- case '4':
- *level=4;
- return((char *)NULL);
- case '5':
- *level=5;
- return((char *)NULL);
- case '6':
- *level=6;
- return((char *)NULL);
- case '7':
- *level=7;
- return((char *)NULL);
- case '8':
- *level=8;
- return((char *)NULL);
- case '9':
- *level=9;
- return((char *)NULL);
- default:
- *level=1;
- return(INPmkTemp(
- " illegal argument to level parameter - level=1 assumed"));
- }
- }
+ }
+
+
+
+ else { /* no level on the line => default */
+ *level = 1;
+ return((char *)NULL);
+ }
+
+
+
+
}