34 #define MIN_TOOL_NUMBER 1
35 #define MAX_TOOL_NUMBER 99
37 static int have_tools_file = 0;
38 static double tools[1+MAX_TOOL_NUMBER];
41 ProcessToolLine(
const char *cp)
51 while (isspace((
int) *cp)) {
57 fprintf(stderr, _(
"*** WARNING: Strange tool \"%s\" ignored.\n"), cp0);
60 if ((!isdigit((
int) cp[1])) || (!isdigit((
int) cp[2]))) {
61 fprintf(stderr, _(
"*** WARNING: No tool number in \"%s\".\n"), cp0);
69 toolNumber = atoi(tnb);
70 if ((toolNumber < MIN_TOOL_NUMBER) || (toolNumber > MAX_TOOL_NUMBER)) {
71 fprintf(stderr, _(
"*** WARNING: Can't parse tool number in \"%s\".\n"), cp0);
79 while (isspace((
int) *cp)) {
88 fprintf(stderr, _(
"*** WARNING: Tool T%02d diameter is impossible.\n"), toolNumber);
91 if (toolDia < 0.001) {
92 fprintf(stderr, _(
"*** WARNING: Tool T%02d diameter is very small - "
93 "are you sure?\n"), toolNumber);
96 if (tools[toolNumber] != 0) {
97 fprintf(stderr, _(
"*** ERROR: Tool T%02d is already defined.\n"), toolNumber);
98 fprintf(stderr, _(
"*** Exiting because this is a HOLD error at any board house.\n"));
103 tools[toolNumber] = toolDia;
108 gerbv_process_tools_file(
const char *tf)
114 memset(tools, 0,
sizeof(tools));
121 fprintf(stderr, _(
"*** ERROR: Failed to open file \"%s\" to read.\n"), tf);
125 memset(buf, 0,
sizeof(buf));
126 if (NULL == fgets(buf,
sizeof(buf)-1, f))
128 ProcessToolLine(buf);
137 gerbv_get_tool_diameter(
int toolNumber)
139 if (!have_tools_file)
141 if ((toolNumber < MIN_TOOL_NUMBER) || (toolNumber > MAX_TOOL_NUMBER))
143 return tools[toolNumber];