magic/utils/getrect.c

133 lines
3.8 KiB
C
Raw Normal View History

/*
* getrect.c -
*
* *********************************************************************
* * Copyright (C) 1985, 1990 Regents of the University of California. *
* * Permission to use, copy, modify, and distribute this *
* * software and its documentation for any purpose and without *
* * fee is hereby granted, provided that the above copyright *
* * notice appear in all copies. The University of California *
* * makes no representations about the suitability of this *
* * software for any purpose. It is provided "as is" without *
* * express or implied warranty. Export of this software outside *
* * of the United States of America may require an export license. *
* *********************************************************************
* Lawrence Livermore National Laboratory
*
* This file contains a procedure, GetRect(), for gobbling up
* four integers from an input file.
*/
#ifndef lint
static char rcsid[] __attribute__ ((unused)) = "$Header: /usr/cvsroot/magic-8.0/utils/getrect.c,v 1.3 2010/06/24 12:37:58 tim Exp $";
#endif /* not lint */
#include <stdio.h>
#include <ctype.h>
#include "utils/magic.h"
#include "utils/geometry.h"
/*
* ----------------------------------------------------------------------------
*
* GetRect --
*
* Parse a rectangle from a file and fill in the supplied rect struct.
* We assume that the rectangle consists of four decimal numbers, each
* separated from the next by a single space, and terminated by a newline.
*
* ESTHETIC WARNING:
* The algorithm used here is gross but extremely fast.
*
* Results:
* FALSE on end of file or error, TRUE otherwise.
* If nonmanhattan extensions are enabled, it returns a
* direction result for triangles.
*
* Side effects:
* Fills in the contents of *rect.
*
* ----------------------------------------------------------------------------
*/
#define RECTBUFTHRESHOLD 100
int
GetRect(fin, skip, rect, scalen, scaled)
FILETYPE fin;
int skip; /* Number of bytes to skip before rect */
Rect *rect; /* Pointer to rectangle to be filled in */
int scalen; /* Scale up by this amount */
int scaled; /* Scale down by this amount */
{
int n, c;
char *cp;
bool isNegative;
int dir = 0x1;
while (skip-- > 0)
(void) FGETC(fin);
35 x warning: suggest parentheses around assignment used as truth value PlowRules1.c:439:9: warning: suggest parentheses around assignment used as truth value PlowTech.c:645:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:652:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:1019:17: warning: suggest parentheses around assignment used as truth value ResReadSim.c:270:13: warning: suggest parentheses around assignment used as truth value ResReadSim.c:871:9: warning: suggest parentheses around assignment used as truth value ResRex.c:1840:17: warning: suggest parentheses around assignment used as truth value getrect.c:72:9: warning: suggest parentheses around assignment used as truth value getrect.c:79:9: warning: suggest parentheses around assignment used as truth value getrect.c:86:9: warning: suggest parentheses around assignment used as truth value getrect.c:93:9: warning: suggest parentheses around assignment used as truth value hash.c:732:16: warning: suggest parentheses around assignment used as truth value heap.c:328:17: warning: suggest parentheses around assignment used as truth value heap.c:344:17: warning: suggest parentheses around assignment used as truth value netlist.c:323:17: warning: suggest parentheses around assignment used as truth value niceabort.c:121:9: warning: suggest parentheses around assignment used as truth value path.c:1102:12: warning: suggest parentheses around assignment used as truth value pathvisit.c:245:13: warning: suggest parentheses around assignment used as truth value pathvisit.c:295:17: warning: suggest parentheses around assignment used as truth value tech.c:656:17: warning: suggest parentheses around assignment used as truth value ext2spice.c:1591:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1622:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1813:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:1862:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:3808:16: warning: suggest parentheses around assignment used as truth value CalmaRdio.c:437:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:396:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:1772:29: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:372:9: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:1608:29: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:209:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:214:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:220:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:226:9: warning: suggest parentheses around assignment used as truth value CIFrdutils.c:1258:12: warning: suggest parentheses around assignment used as truth value GCC14 -Wall cleanup series [-Wparentheses]
2024-10-04 18:21:15 +02:00
if ((isNegative = ((c = FGETC(fin)) == '-'))) c = FGETC(fin);
for (n = 0; isdigit(c); n = n * 10 + c - '0', c = FGETC(fin))
/* Nothing */;
rect->r_xbot = isNegative ? -n : n;
if (!isspace(c)) goto bad;
while ((c = FGETC(fin)) != EOF && isspace(c)) /* Nothing */;
35 x warning: suggest parentheses around assignment used as truth value PlowRules1.c:439:9: warning: suggest parentheses around assignment used as truth value PlowTech.c:645:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:652:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:1019:17: warning: suggest parentheses around assignment used as truth value ResReadSim.c:270:13: warning: suggest parentheses around assignment used as truth value ResReadSim.c:871:9: warning: suggest parentheses around assignment used as truth value ResRex.c:1840:17: warning: suggest parentheses around assignment used as truth value getrect.c:72:9: warning: suggest parentheses around assignment used as truth value getrect.c:79:9: warning: suggest parentheses around assignment used as truth value getrect.c:86:9: warning: suggest parentheses around assignment used as truth value getrect.c:93:9: warning: suggest parentheses around assignment used as truth value hash.c:732:16: warning: suggest parentheses around assignment used as truth value heap.c:328:17: warning: suggest parentheses around assignment used as truth value heap.c:344:17: warning: suggest parentheses around assignment used as truth value netlist.c:323:17: warning: suggest parentheses around assignment used as truth value niceabort.c:121:9: warning: suggest parentheses around assignment used as truth value path.c:1102:12: warning: suggest parentheses around assignment used as truth value pathvisit.c:245:13: warning: suggest parentheses around assignment used as truth value pathvisit.c:295:17: warning: suggest parentheses around assignment used as truth value tech.c:656:17: warning: suggest parentheses around assignment used as truth value ext2spice.c:1591:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1622:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1813:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:1862:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:3808:16: warning: suggest parentheses around assignment used as truth value CalmaRdio.c:437:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:396:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:1772:29: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:372:9: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:1608:29: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:209:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:214:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:220:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:226:9: warning: suggest parentheses around assignment used as truth value CIFrdutils.c:1258:12: warning: suggest parentheses around assignment used as truth value GCC14 -Wall cleanup series [-Wparentheses]
2024-10-04 18:21:15 +02:00
if ((isNegative = (c == '-'))) c = FGETC(fin);
for (n = 0; isdigit(c); n = n * 10 + c - '0', c = FGETC(fin))
/* Nothing */;
rect->r_ybot = isNegative ? -n : n;
if (!isspace(c)) goto bad;
while ((c = FGETC(fin)) != EOF && isspace(c)) /* Nothing */;
35 x warning: suggest parentheses around assignment used as truth value PlowRules1.c:439:9: warning: suggest parentheses around assignment used as truth value PlowTech.c:645:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:652:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:1019:17: warning: suggest parentheses around assignment used as truth value ResReadSim.c:270:13: warning: suggest parentheses around assignment used as truth value ResReadSim.c:871:9: warning: suggest parentheses around assignment used as truth value ResRex.c:1840:17: warning: suggest parentheses around assignment used as truth value getrect.c:72:9: warning: suggest parentheses around assignment used as truth value getrect.c:79:9: warning: suggest parentheses around assignment used as truth value getrect.c:86:9: warning: suggest parentheses around assignment used as truth value getrect.c:93:9: warning: suggest parentheses around assignment used as truth value hash.c:732:16: warning: suggest parentheses around assignment used as truth value heap.c:328:17: warning: suggest parentheses around assignment used as truth value heap.c:344:17: warning: suggest parentheses around assignment used as truth value netlist.c:323:17: warning: suggest parentheses around assignment used as truth value niceabort.c:121:9: warning: suggest parentheses around assignment used as truth value path.c:1102:12: warning: suggest parentheses around assignment used as truth value pathvisit.c:245:13: warning: suggest parentheses around assignment used as truth value pathvisit.c:295:17: warning: suggest parentheses around assignment used as truth value tech.c:656:17: warning: suggest parentheses around assignment used as truth value ext2spice.c:1591:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1622:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1813:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:1862:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:3808:16: warning: suggest parentheses around assignment used as truth value CalmaRdio.c:437:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:396:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:1772:29: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:372:9: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:1608:29: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:209:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:214:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:220:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:226:9: warning: suggest parentheses around assignment used as truth value CIFrdutils.c:1258:12: warning: suggest parentheses around assignment used as truth value GCC14 -Wall cleanup series [-Wparentheses]
2024-10-04 18:21:15 +02:00
if ((isNegative = (c == '-'))) c = FGETC(fin);
for (n = 0; isdigit(c); n = n * 10 + c - '0', c = FGETC(fin))
/* Nothing */;
rect->r_xtop = isNegative ? -n : n;
if (!isspace(c)) goto bad;
while ((c = FGETC(fin)) != EOF && isspace(c)) /* Nothing */;
35 x warning: suggest parentheses around assignment used as truth value PlowRules1.c:439:9: warning: suggest parentheses around assignment used as truth value PlowTech.c:645:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:652:17: warning: suggest parentheses around assignment used as truth value PlowTech.c:1019:17: warning: suggest parentheses around assignment used as truth value ResReadSim.c:270:13: warning: suggest parentheses around assignment used as truth value ResReadSim.c:871:9: warning: suggest parentheses around assignment used as truth value ResRex.c:1840:17: warning: suggest parentheses around assignment used as truth value getrect.c:72:9: warning: suggest parentheses around assignment used as truth value getrect.c:79:9: warning: suggest parentheses around assignment used as truth value getrect.c:86:9: warning: suggest parentheses around assignment used as truth value getrect.c:93:9: warning: suggest parentheses around assignment used as truth value hash.c:732:16: warning: suggest parentheses around assignment used as truth value heap.c:328:17: warning: suggest parentheses around assignment used as truth value heap.c:344:17: warning: suggest parentheses around assignment used as truth value netlist.c:323:17: warning: suggest parentheses around assignment used as truth value niceabort.c:121:9: warning: suggest parentheses around assignment used as truth value path.c:1102:12: warning: suggest parentheses around assignment used as truth value pathvisit.c:245:13: warning: suggest parentheses around assignment used as truth value pathvisit.c:295:17: warning: suggest parentheses around assignment used as truth value tech.c:656:17: warning: suggest parentheses around assignment used as truth value ext2spice.c:1591:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1622:16: warning: suggest parentheses around assignment used as truth value ext2spice.c:1813:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:1862:12: warning: suggest parentheses around assignment used as truth value ext2spice.c:3808:16: warning: suggest parentheses around assignment used as truth value CalmaRdio.c:437:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:396:9: warning: suggest parentheses around assignment used as truth value CalmaWrite.c:1772:29: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:372:9: warning: suggest parentheses around assignment used as truth value CalmaWriteZ.c:1608:29: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:209:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:214:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:220:9: warning: suggest parentheses around assignment used as truth value CIFrdtech.c:226:9: warning: suggest parentheses around assignment used as truth value CIFrdutils.c:1258:12: warning: suggest parentheses around assignment used as truth value GCC14 -Wall cleanup series [-Wparentheses]
2024-10-04 18:21:15 +02:00
if ((isNegative = (c == '-'))) c = FGETC(fin);
for (n = 0; isdigit(c); n = n * 10 + c - '0', c = FGETC(fin))
/* Nothing */;
rect->r_ytop = isNegative ? -n : n;
if (scalen > 1)
{
rect->r_xbot *= scalen;
rect->r_ybot *= scalen;
rect->r_xtop *= scalen;
rect->r_ytop *= scalen;
}
if (scaled > 1)
{
rect->r_xbot /= scaled;
rect->r_ybot /= scaled;
rect->r_xtop /= scaled;
rect->r_ytop /= scaled;
}
while (c != EOF && c != '\n')
{
c = FGETC(fin);
switch ((char)c)
{
case 's':
dir |= 0x2;
break;
case 'e':
dir |= 0x4;
break;
}
}
return dir;
bad:
while (c != EOF && c != '\n')
c = FGETC(fin);
return (FALSE);
}