libsmi-svn related changes (generic and win related)

Hi,
appended is a diff against the latest svn repository about some common and some win related issues:
common stuff:
* lib/smi.c: changed smiAsprintf() calls to format SMI_LANGUAGE_UNKNOWN as decimal value.
comment: SMI_LANGUAGE_UNKNOWN is defined as 0 in lib/smi.h.in, so putting it as a format-string parameter to smiAsprintf() will fail. but i guess, replacing ``smiAsprintf(&s, SMI_LANGUAGE_UNKNOWN)'' by ``smiAsprintf(&s, "%s", "<language unknown>")'' would be more helpful.
* tools/dump-cm.c: explicit casting of double precision calculation to float.
comment: something like ``(float) val / 2.0'' results in a double value, because the float cast only belongs to val. so a ``(float) (val / 2.0)'' is better; but in ages of processor integrated math-units using double values should be no problem anyway.
* tools/dump-sizes.c: win-platform support and int64 abs calculation fix.
comment: the abs(3) function from stdlib.h takes and returns a integer, leading to possible precision loss with int64 values. at least linux has a llabs() call, but at least vc6 does not support it, so introducing this local m_abs() macro should be a good way to go.
* tools/dump-svg.c: unused variable cleanup
comment: this just cosmetic.
* tools/dump-xsd.c: win-platform support and use of predefined UINT64_MAX values instead of local hardcoded constants.
constants: likewise used in other modules this is for portability, especially windows, only.
and these explicitly win related changes:
* win/makefile: add dump-svg module.
* win/win.h: include limits.h for 64bit limits.
* win/Makefile.mingw: add dump-svg module and make linux cross-compile the default setting
well, at least the smiAsprintf() change in lib/smi.c and the m_abs() macro in tools/dump-sizes.c seems to be a real bugfix and should be worth to be included.
have fun, Erik
----------------------------------------------------------------------
diff -d -u -r libsmi-svn-2004-10-05-orig/lib/smi.c libsmi-svn-2004-10-05/lib/smi.c --- libsmi-svn-2004-10-05-orig/lib/smi.c Tue Oct 5 14:44:57 2004 +++ libsmi-svn-2004-10-05/lib/smi.c Tue Oct 5 22:49:06 2004 @@ -1768,7 +1768,7 @@ if (! isascii((int) smiValuePtr->value.ptr[i+k])) { smiFree(s); if (flags & SMI_RENDER_UNKNOWN) { - smiAsprintf(&s, SMI_LANGUAGE_UNKNOWN); + smiAsprintf(&s, "%d", SMI_LANGUAGE_UNKNOWN); } else { s = NULL; } @@ -1832,7 +1832,7 @@ default: smiFree(s); if (flags & SMI_RENDER_UNKNOWN) { - smiAsprintf(&s, SMI_LANGUAGE_UNKNOWN); + smiAsprintf(&s, "%d", SMI_LANGUAGE_UNKNOWN); } else { s = NULL; } @@ -1913,7 +1913,7 @@ case SMI_BASETYPE_UNKNOWN: default: if (flags & SMI_RENDER_UNKNOWN) { - smiAsprintf(&s, SMI_LANGUAGE_UNKNOWN); + smiAsprintf(&s, "%d", SMI_LANGUAGE_UNKNOWN); } else { s = NULL; } diff -d -u -r libsmi-svn-2004-10-05-orig/tools/dump-cm.c libsmi-svn-2004-10-05/tools/dump-cm.c --- libsmi-svn-2004-10-05-orig/tools/dump-cm.c Tue Oct 5 14:44:48 2004 +++ libsmi-svn-2004-10-05/tools/dump-cm.c Tue Oct 5 22:56:14 2004 @@ -2196,22 +2196,22 @@
static float getRectSX(GraphNode *tNode) { - return (float) tNode->dia.w / 2.0 + tNode->dia.x - RECTCORRECTION; + return (float) (tNode->dia.w / 2.0 + tNode->dia.x - RECTCORRECTION); }
static float getRectEX(GraphNode *tNode) { - return (float) tNode->dia.w / 2.0 + tNode->dia.x + RECTCORRECTION; + return (float) (tNode->dia.w / 2.0 + tNode->dia.x + RECTCORRECTION); }
static float getRectSY(GraphNode *tNode) { - return (float) tNode->dia.y - 2.0 - RECTCORRECTION; + return (float) (tNode->dia.y - 2.0 - RECTCORRECTION); }
static float getRectEY(GraphNode *tNode) { - return (float) tNode->dia.y - 2.0 + RECTCORRECTION; + return (float) (tNode->dia.y - 2.0 + RECTCORRECTION); }
@@ -2244,7 +2244,7 @@ return node->dia.x; break; case 1 : - return node->dia.w / 2.0 + node->dia.x; + return (float) (node->dia.w / 2.0 + node->dia.x); break; case 2 : return node->dia.x + node->dia.w; @@ -2259,7 +2259,7 @@ return node->dia.x; break; case 6 : - return node->dia.w / 2.0 + node->dia.x; + return (float) (node->dia.w / 2.0 + node->dia.x); break; case 7 : return node->dia.x + node->dia.w; @@ -2281,10 +2281,10 @@ return node->dia.y; break; case 3 : - return node->dia.y + TABLEHEIGHT / 2.0; + return (float) (node->dia.y + TABLEHEIGHT / 2.0); break; case 4 : - return node->dia.y + TABLEHEIGHT / 2.0; + return (float) (node->dia.y + TABLEHEIGHT / 2.0); break; case 5 : return node->dia.y + node->dia.h; @@ -2323,10 +2323,10 @@ return node->dia.y - dist; break; case 3 : - return node->dia.y + TABLEHEIGHT / 2.0; + return (float) (node->dia.y + TABLEHEIGHT / 2.0); break; case 4 : - return node->dia.y + TABLEHEIGHT / 2.0; + return (float) (node->dia.y + TABLEHEIGHT / 2.0); break; case 5 : return node->dia.y + node->dia.h + dist; diff -d -u -r libsmi-svn-2004-10-05-orig/tools/dump-sizes.c libsmi-svn-2004-10-05/tools/dump-sizes.c --- libsmi-svn-2004-10-05-orig/tools/dump-sizes.c Tue Oct 5 14:44:50 2004 +++ libsmi-svn-2004-10-05/tools/dump-sizes.c Tue Oct 5 23:05:17 2004 @@ -15,12 +15,19 @@
#include <stdio.h> #include <string.h> +#ifdef HAVE_WIN_H +#include "win.h" +#endif
#include "smi.h" #include "smidump.h"
static int silent = 0;
+/* + * help functions + */ +#define m_abs(a) ((a) < 0 ? -(a) : (a))
static SmiInteger32 getAbsMinEnum(SmiType *smiType) @@ -155,7 +162,7 @@ { SmiType *parent; SmiRange *range; - SmiInteger64 min = 9223372036854775808ULL; + SmiInteger64 min = LIBSMI_INT64_MAX;
range = smiGetFirstRange(smiType); if (! range) { @@ -164,8 +171,8 @@ }
for (; range; range = smiGetNextRange(range)) { - if (abs(range->minValue.value.integer64) < min) { - min = abs(range->minValue.value.integer64); + if (m_abs(range->minValue.value.integer64) < min) { + min = m_abs(range->minValue.value.integer64); } } return min; @@ -187,8 +194,8 @@ }
for (; range; range = smiGetNextRange(range)) { - if (abs(range->maxValue.value.integer64) > max) { - max = abs(range->maxValue.value.integer64); + if (m_abs(range->maxValue.value.integer64) > max) { + max = m_abs(range->maxValue.value.integer64); } } return max; diff -d -u -r libsmi-svn-2004-10-05-orig/tools/dump-svg.c libsmi-svn-2004-10-05/tools/dump-svg.c --- libsmi-svn-2004-10-05-orig/tools/dump-svg.c Tue Oct 5 14:44:48 2004 +++ libsmi-svn-2004-10-05/tools/dump-svg.c Tue Oct 5 23:32:08 2004 @@ -2543,7 +2543,6 @@ static void printSVGTitle(int modc, SmiModule **modv) { size_t length; - float width; char *note; int i;
diff -d -u -r libsmi-svn-2004-10-05-orig/tools/dump-xsd.c libsmi-svn-2004-10-05/tools/dump-xsd.c --- libsmi-svn-2004-10-05-orig/tools/dump-xsd.c Tue Oct 5 14:44:51 2004 +++ libsmi-svn-2004-10-05/tools/dump-xsd.c Tue Oct 5 22:37:29 2004 @@ -21,6 +21,9 @@ #include <string.h> #include <ctype.h> #include <time.h> +#ifdef HAVE_WIN_H +#include "win.h" +#endif
#include "smi.h" #include "smidump.h" @@ -1024,7 +1027,7 @@ SmiUnsigned64 min, max;
min = 0; - max = 18446744073709551615ULL; + max = LIBSMI_UINT64_MAX;
fprintStdRestHead( f, smiType ); @@ -1261,7 +1264,7 @@ SmiUnsigned64 min, max;
min = 0; - max = 18446744073709551615ULL; + max = LIBSMI_UINT64_MAX;
if( smiRange->minValue.value.unsigned64 < min ) { min = smiRange->minValue.value.unsigned64; diff -d -u -r libsmi-svn-2004-10-05-orig/win/Makefile.mingw libsmi-svn-2004-10-05/win/Makefile.mingw --- libsmi-svn-2004-10-05-orig/win/Makefile.mingw Tue Oct 5 14:44:47 2004 +++ libsmi-svn-2004-10-05/win/Makefile.mingw Tue Oct 5 23:46:27 2004 @@ -26,20 +26,26 @@ ## ## Commands: ## -CC = gcc -CP = copy -RM = del -AR = ar -MKDIR = -mkdir + +## +## Linux cross-compile is now the way to go. +## compilation within win-environment works, but you need to +## change path an options settings to get installation work. +## +# CC = gcc +# CP = copy +# RM = del +# AR = ar +# MKDIR = -mkdir
## ## Debian Linux mingw cross-compiler version: ## -# CC = i586-mingw32msvc-gcc -# CP = cp -# RM = rm -f -# AR = i586-mingw32msvc-ar -# MKDIR = -mkdir +CC = i586-mingw32msvc-gcc +CP = cp +RM = rm -f +AR = i586-mingw32msvc-ar +MKDIR = -mkdir
## ## Definitions: @@ -87,7 +93,8 @@ dump-scli.o \ dump-xsd.o \ dump-sppi.o \ - dump-sizes.o + dump-sizes.o \ + dump-svg.o # dump-smiv3.o # dump-fig.o
@@ -125,7 +132,7 @@ dump-imports.o dump-types.o dump-tree.o dump-mosy.o \ dump-corba.o dump-netsnmp.o dump-cm.o dump-jax.o dump-xml.o \ dump-identifiers.o dump-metrics.o dump-python.o dump-perl.o \ - dump-scli.o dump-xsd.o dump-sppi.o dump-sizes.o \ + dump-scli.o dump-xsd.o dump-sppi.o dump-sizes.o dump-svg.o \ shhopt.o $(SMILIB)
smidiff.exe: $(TOOLSOBJS) $(SMILIB) diff -d -u -r libsmi-svn-2004-10-05-orig/win/makefile libsmi-svn-2004-10-05/win/makefile --- libsmi-svn-2004-10-05-orig/win/makefile Tue Oct 5 14:44:47 2004 +++ libsmi-svn-2004-10-05/win/makefile Tue Oct 5 22:45:03 2004 @@ -105,7 +105,8 @@ $(TMPDIR)\dump-scli.obj \ $(TMPDIR)\dump-xsd.obj \ $(TMPDIR)\dump-sppi.obj \ - $(TMPDIR)\dump-sizes.obj + $(TMPDIR)\dump-sizes.obj \ + $(TMPDIR)\dump-svg.obj
SMIDIFFOBJS = \ $(TMPDIR)\smidiff.obj diff -d -u -r libsmi-svn-2004-10-05-orig/win/win.h libsmi-svn-2004-10-05/win/win.h --- libsmi-svn-2004-10-05-orig/win/win.h Tue Oct 5 14:44:47 2004 +++ libsmi-svn-2004-10-05/win/win.h Tue Oct 5 22:36:36 2004 @@ -16,6 +16,7 @@ #define _WIN_H
#include <ctype.h> +#include <limits.h> #include <io.h>
/*

Erik Nase wrote:
appended is a diff against the latest svn repository about some common and some win related issues: [...] well, at least the smiAsprintf() change in lib/smi.c and the m_abs() macro in tools/dump-sizes.c seems to be a real bugfix and should be worth to be included.
Thanks for your bunch of patches and of course for their very precise documentation! I've applied all of them, except for the SMI_LANGUAGE_UNKNOWN issue. I changed it to SMI_UNKNOWN_LABEL. I must have been a little too lax with C-M-/ when I wrote this. :-)
participants (2)
-
Erik Nase
-
Frank Strauß