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>
/*