Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
12cfee59
Commit
12cfee59
authored
Nov 23, 2010
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Почистил от warning-ов генератор кода (codegen)
parent
2c2319d4
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
27 additions
and
49 deletions
+27
-49
TODO
TODO
+6
-0
ctl-cpp-cc-alone-ask.xsl
Utilities/codegen/ctl-cpp-cc-alone-ask.xsl
+1
-4
ctl-cpp-cc-alone.xsl
Utilities/codegen/ctl-cpp-cc-alone.xsl
+0
-4
ctl-cpp-cc-ask.xsl
Utilities/codegen/ctl-cpp-cc-ask.xsl
+1
-4
ctl-cpp-cc.xsl
Utilities/codegen/ctl-cpp-cc.xsl
+0
-4
ctl-cpp-common.xsl
Utilities/codegen/ctl-cpp-common.xsl
+9
-19
ctl-cpp-h-alone.xsl
Utilities/codegen/ctl-cpp-h-alone.xsl
+1
-0
Makefile.am
Utilities/codegen/tests/Makefile.am
+4
-4
TestGenAlone.cc
Utilities/codegen/tests/TestGenAlone.cc
+0
-6
TestGenAlone.h
Utilities/codegen/tests/TestGenAlone.h
+0
-2
testgen-alone.src.xml
Utilities/codegen/tests/testgen-alone.src.xml
+1
-1
libuniset.spec
conf/libuniset.spec
+4
-1
No files found.
TODO
View file @
12cfee59
...
@@ -32,3 +32,8 @@
...
@@ -32,3 +32,8 @@
----------
----------
smonit: processing "precision"
smonit: processing "precision"
admin: processing "precision"
admin: processing "precision"
codegen:
- Сделать работу с TestMode на основе заказа!
- Сделать работу с ResetMsg на основе askTimer! (подумать нужно ли..)
\ No newline at end of file
Utilities/codegen/ctl-cpp-cc-alone-ask.xsl
View file @
12cfee59
...
@@ -32,7 +32,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
...
@@ -32,7 +32,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
return;
return;
try
try
{
{
#warning Сделать работу с TestMode на основе заказа!
isTestMode = checkTestMode();
isTestMode = checkTestMode();
if( trTestMode.change(isTestMode) )
if( trTestMode.change(isTestMode) )
testMode(isTestMode);
testMode(isTestMode);
...
@@ -49,7 +48,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
...
@@ -49,7 +48,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
// проверка таймеров
// проверка таймеров
checkTimers(this);
checkTimers(this);
#warning Сделать работу с ResetMsg на основе askTimer!
if( resetMsgTime
>
0
&&
trResetMsg.hi(ptResetMsg.checkTime()) )
if( resetMsgTime
>
0
&&
trResetMsg.hi(ptResetMsg.checkTime()) )
{
{
// cout
<<
myname
<<
": ********* reset messages *********"
<<
endl;
// cout
<<
myname
<<
": ********* reset messages *********"
<<
endl;
...
@@ -165,8 +163,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::askSensors( UniversalIO::UIOCommand
...
@@ -165,8 +163,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::askSensors( UniversalIO::UIOCommand
{
{
unideb[Debug::CRIT]
<<
myname
<<
"(askSensors): catch(...)"
<<
endl;
unideb[Debug::CRIT]
<<
myname
<<
"(askSensors): catch(...)"
<<
endl;
}
}
#warning Сделать паузу между заказами настраиваемой из конф. файла
msleep(askPause);
msleep(2000);
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
...
Utilities/codegen/ctl-cpp-cc-alone.xsl
View file @
12cfee59
...
@@ -127,24 +127,20 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM
...
@@ -127,24 +127,20 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::preSensorInfo( UniSetTypes::SensorM
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askState( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askState( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{
{
// #warning НЕ РЕАЛИЗОВАНА...
if( _cmd == UniversalIO::UIONotify )
if( _cmd == UniversalIO::UIONotify )
{
{
SensorMessage _sm( _sid, (bool)ui.getState(_sid,_node) );
SensorMessage _sm( _sid, (bool)ui.getState(_sid,_node) );
_sm.node = _node;
_sm.node = _node;
// push( _sm.transport_msg() );
sensorInfo(
&
_sm);
sensorInfo(
&
_sm);
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askValue( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askValue( UniSetTypes::ObjectId _sid, UniversalIO::UIOCommand _cmd, UniSetTypes::ObjectId _node )
{
{
// #warning НЕ РЕАЛИЗОВАНА..
if( _cmd == UniversalIO::UIONotify )
if( _cmd == UniversalIO::UIONotify )
{
{
SensorMessage _sm( _sid, (long)ui.getValue(_sid,_node) );
SensorMessage _sm( _sid, (long)ui.getValue(_sid,_node) );
_sm.node = _node;
_sm.node = _node;
// push( _sm.transport_msg() );
sensorInfo(
&
_sm);
sensorInfo(
&
_sm);
}
}
}
}
...
...
Utilities/codegen/ctl-cpp-cc-ask.xsl
View file @
12cfee59
...
@@ -33,7 +33,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
...
@@ -33,7 +33,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
return;
return;
try
try
{
{
#warning Сделать работу с TestMode на основе заказа!
isTestMode = checkTestMode();
isTestMode = checkTestMode();
if( trTestMode.change(isTestMode) )
if( trTestMode.change(isTestMode) )
testMode(isTestMode);
testMode(isTestMode);
...
@@ -50,7 +49,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
...
@@ -50,7 +49,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::callback()
// проверка таймеров
// проверка таймеров
checkTimers(this);
checkTimers(this);
#warning Сделать работу с ResetMsg на основе askTimer!
if( resetMsgTime
>
0
&&
trResetMsg.hi(ptResetMsg.checkTime()) )
if( resetMsgTime
>
0
&&
trResetMsg.hi(ptResetMsg.checkTime()) )
{
{
// cout
<<
myname
<<
": ********* reset messages *********"
<<
endl;
// cout
<<
myname
<<
": ********* reset messages *********"
<<
endl;
...
@@ -253,8 +251,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::askSensors( UniversalIO::UIOCommand
...
@@ -253,8 +251,7 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::askSensors( UniversalIO::UIOCommand
{
{
unideb[Debug::CRIT]
<<
myname
<<
"(askSensors): catch(...)"
<<
endl;
unideb[Debug::CRIT]
<<
myname
<<
"(askSensors): catch(...)"
<<
endl;
}
}
#warning Сделать паузу между заказами настраиваемой из конф. файла
msleep(askPause);
msleep(2000);
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
...
Utilities/codegen/ctl-cpp-cc.xsl
View file @
12cfee59
...
@@ -159,24 +159,20 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::askSensors( UniversalIO::UIOCommand
...
@@ -159,24 +159,20 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::askSensors( UniversalIO::UIOCommand
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand cmd, UniSetTypes::ObjectId node )
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand cmd, UniSetTypes::ObjectId node )
{
{
// #warning НЕ РЕАЛИЗОВАНА...
if( cmd == UniversalIO::UIONotify )
if( cmd == UniversalIO::UIONotify )
{
{
SensorMessage sm( sid, (bool)ui.getState(sid,node) );
SensorMessage sm( sid, (bool)ui.getState(sid,node) );
sm.node = node;
sm.node = node;
// push( sm.transport_msg() );
sensorInfo(
&
sm);
sensorInfo(
&
sm);
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand cmd, UniSetTypes::ObjectId node )
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand cmd, UniSetTypes::ObjectId node )
{
{
// #warning НЕ РЕАЛИЗОВАНА..
if( cmd == UniversalIO::UIONotify )
if( cmd == UniversalIO::UIONotify )
{
{
SensorMessage sm( sid, (long)ui.getValue(sid,node) );
SensorMessage sm( sid, (long)ui.getValue(sid,node) );
sm.node = node;
sm.node = node;
// push( sm.transport_msg() );
sensorInfo(
&
sm);
sensorInfo(
&
sm);
}
}
}
}
...
...
Utilities/codegen/ctl-cpp-common.xsl
View file @
12cfee59
...
@@ -170,11 +170,6 @@
...
@@ -170,11 +170,6 @@
void setState( UniSetTypes::ObjectId sid, bool state );
void setState( UniSetTypes::ObjectId sid, bool state );
void askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand, UniSetTypes::ObjectId node = UniSetTypes::conf->getLocalNode() );
void askThreshold ( UniSetTypes::ObjectId sensorId, UniSetTypes::ThresholdId tid,
UniversalIO::UIOCommand cmd,
CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Long sensibility,
UniSetTypes::ObjectId backid = UniSetTypes::DefaultObjectId );
void updateValues();
void updateValues();
void setMsg( UniSetTypes::ObjectId code, bool state );
void setMsg( UniSetTypes::ObjectId code, bool state );
</xsl:template>
</xsl:template>
...
@@ -229,6 +224,7 @@
...
@@ -229,6 +224,7 @@
bool activated;
bool activated;
int activateTimeout; /*!
<
время ожидания готовности UniSetObject к работе */
int activateTimeout; /*!
<
время ожидания готовности UniSetObject к работе */
PassiveTimer ptStartUpTimeout; /*!
<
время на блокировку обработки WatchDog, если недавно был StartUp */
PassiveTimer ptStartUpTimeout; /*!
<
время на блокировку обработки WatchDog, если недавно был StartUp */
int askPause; /*!
<
пауза между неудачными попытками заказать датчики */
</xsl:template>
</xsl:template>
<xsl:template
name=
"COMMON-HEAD-PRIVATE"
>
<xsl:template
name=
"COMMON-HEAD-PRIVATE"
>
...
@@ -328,7 +324,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
...
@@ -328,7 +324,6 @@ void <xsl:value-of select="$CLASSNAME"/>_SK::sysCommand( SystemMessage* _sm )
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::setState( UniSetTypes::ObjectId _sid, bool _state )
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::setState( UniSetTypes::ObjectId _sid, bool _state )
{
{
#warning сделать setState отдельной функцией, а не через setValue
setValue(_sid, _state ? 1 : 0 );
setValue(_sid, _state ? 1 : 0 );
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
@@ -359,15 +354,6 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::activateObject()
...
@@ -359,15 +354,6 @@ bool <xsl:value-of select="$CLASSNAME"/>_SK::activateObject()
return true;
return true;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::askThreshold( UniSetTypes::ObjectId _sid, UniSetTypes::ThresholdId _tid,
UniversalIO::UIOCommand _cmd,
CORBA::Long lowLimit, CORBA::Long _hiLimit, CORBA::Long _sensibility,
UniSetTypes::ObjectId _backid )
{
#warning askThreshold НЕ РЕАЛИЗОВАНА...
// ui.askThreshold( _sid,_tid,_cmd,_lowLimit,_hiLimit,_sensibility,_backid);
}
// -----------------------------------------------------------------------------
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::preTimerInfo( UniSetTypes::TimerMessage* _tm )
void
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK::preTimerInfo( UniSetTypes::TimerMessage* _tm )
{
{
timerInfo(_tm);
timerInfo(_tm);
...
@@ -479,7 +465,8 @@ idHeartBeat(DefaultObjectId),
...
@@ -479,7 +465,8 @@ idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
maxHeartBeat(10),
confnode(0),
confnode(0),
smReadyTimeout(0),
smReadyTimeout(0),
activated(false)
activated(false),
askPause(2000)
{
{
unideb[Debug::CRIT]
<<
"
<xsl:value-of
select=
"$CLASSNAME"
/>
: init failed!!!!!!!!!!!!!!!"
<<
endl;
unideb[Debug::CRIT]
<<
"
<xsl:value-of
select=
"$CLASSNAME"
/>
: init failed!!!!!!!!!!!!!!!"
<<
endl;
throw Exception( string(myname+": init failed!!!") );
throw Exception( string(myname+": init failed!!!") );
...
@@ -508,7 +495,8 @@ idHeartBeat(DefaultObjectId),
...
@@ -508,7 +495,8 @@ idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
maxHeartBeat(10),
confnode(cnode),
confnode(cnode),
smReadyTimeout(0),
smReadyTimeout(0),
activated(false)
activated(false),
askPause(conf->getPIntProp(cnode,"askPause",2000))
{
{
<xsl:call-template
name=
"COMMON-ID-LIST"
/>
<xsl:call-template
name=
"COMMON-ID-LIST"
/>
...
@@ -736,7 +724,8 @@ idLocalTestMode_S(DefaultObjectId),
...
@@ -736,7 +724,8 @@ idLocalTestMode_S(DefaultObjectId),
idHeartBeat(DefaultObjectId),
idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
maxHeartBeat(10),
confnode(0),
confnode(0),
activated(false)
activated(false),
askPause(2000)
{
{
unideb[Debug::CRIT]
<<
"
<xsl:value-of
select=
"$CLASSNAME"
/>
: init failed!!!!!!!!!!!!!!!"
<<
endl;
unideb[Debug::CRIT]
<<
"
<xsl:value-of
select=
"$CLASSNAME"
/>
: init failed!!!!!!!!!!!!!!!"
<<
endl;
throw Exception( string(myname+": init failed!!!") );
throw Exception( string(myname+": init failed!!!") );
...
@@ -767,7 +756,8 @@ in_LocalTestMode_S(false),
...
@@ -767,7 +756,8 @@ in_LocalTestMode_S(false),
idHeartBeat(DefaultObjectId),
idHeartBeat(DefaultObjectId),
maxHeartBeat(10),
maxHeartBeat(10),
confnode(cnode),
confnode(cnode),
activated(false)
activated(false),
askPause(conf->getPIntProp(cnode,"askPause",2000))
{
{
si.node = conf->getLocalNode();
si.node = conf->getLocalNode();
...
...
Utilities/codegen/ctl-cpp-h-alone.xsl
View file @
12cfee59
...
@@ -52,6 +52,7 @@ class <xsl:value-of select="$CLASSNAME"/>_SK:
...
@@ -52,6 +52,7 @@ class <xsl:value-of select="$CLASSNAME"/>_SK:
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("
<xsl:value-of
select=
"normalize-space($OID)"
/>
") );
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("
<xsl:value-of
select=
"normalize-space($OID)"
/>
") );
</xsl:if>
</xsl:if>
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK();
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK();
virtual ~
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK();
virtual ~
<xsl:value-of
select=
"$CLASSNAME"
/>
_SK();
<xsl:call-template
name=
"COMMON-HEAD-PUBLIC"
/>
<xsl:call-template
name=
"COMMON-HEAD-PUBLIC"
/>
...
...
Utilities/codegen/tests/Makefile.am
View file @
12cfee59
noinst_PROGRAMS
=
test
noinst_PROGRAMS
=
test
test2
#test2
#test2
test_LDADD
=
$(top_builddir)
/lib/libUniSet.la
test_LDADD
=
$(top_builddir)
/lib/libUniSet.la
test_CXXFLAGS
=
-I
$(top_builddir)
/include
test_CXXFLAGS
=
-I
$(top_builddir)
/include
test_SOURCES
=
TestGen_SK.cc TestGen.cc TestGen-main.cc
test_SOURCES
=
TestGen_SK.cc TestGen.cc TestGen-main.cc
#
test2_LDADD = $(top_builddir)/lib/libUniSet.la
test2_LDADD
=
$(top_builddir)
/lib/libUniSet.la
#
test2_CXXFLAGS = -I$(top_builddir)/include
test2_CXXFLAGS
=
-I
$(top_builddir)
/include
#
test2_SOURCES = TestGenAlone_SK.cc TestGenAlone.cc TestGenAlone-main.cc
test2_SOURCES
=
TestGenAlone_SK.cc TestGenAlone.cc TestGenAlone-main.cc
GENERATED
=
TestGen_SK.h TestGen_SK.cc TestGen-main.cc
GENERATED
=
TestGen_SK.h TestGen_SK.cc TestGen-main.cc
GENERATED2
=
TestGenAlone_SK.h TestGenAlone_SK.cc TestGenAlone-main.cc
GENERATED2
=
TestGenAlone_SK.h TestGenAlone_SK.cc TestGenAlone-main.cc
...
...
Utilities/codegen/tests/TestGenAlone.cc
View file @
12cfee59
...
@@ -13,12 +13,6 @@ TestGenAlone::~TestGenAlone()
...
@@ -13,12 +13,6 @@ TestGenAlone::~TestGenAlone()
{
{
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
TestGenAlone
::
TestGenAlone
()
{
cerr
<<
": init failed!!!!!!!!!!!!!!!"
<<
endl
;
throw
Exception
();
}
// -----------------------------------------------------------------------------
void
TestGenAlone
::
step
()
void
TestGenAlone
::
step
()
{
{
cout
<<
"input2 state="
<<
in_input2_s
<<
endl
;
cout
<<
"input2 state="
<<
in_input2_s
<<
endl
;
...
...
Utilities/codegen/tests/TestGenAlone.h
View file @
12cfee59
...
@@ -14,8 +14,6 @@ class TestGenAlone:
...
@@ -14,8 +14,6 @@ class TestGenAlone:
protected
:
protected
:
TestGenAlone
();
virtual
void
step
();
virtual
void
step
();
void
sensorInfo
(
UniSetTypes
::
SensorMessage
*
sm
);
void
sensorInfo
(
UniSetTypes
::
SensorMessage
*
sm
);
void
timerInfo
(
UniSetTypes
::
TimerMessage
*
tm
);
void
timerInfo
(
UniSetTypes
::
TimerMessage
*
tm
);
...
...
Utilities/codegen/tests/testgen-alone.src.xml
View file @
12cfee59
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
<GlobalConfigure>
<GlobalConfigure>
<settings>
<settings>
<TestGenAlone>
<TestGenAlone
name=
"TestGenAlone"
>
<set
name=
"ID"
val=
"TestGenAlone"
/>
<set
name=
"ID"
val=
"TestGenAlone"
/>
<set
name=
"class-name"
val=
"TestGenAlone"
/>
<set
name=
"class-name"
val=
"TestGenAlone"
/>
<set
name=
"msg-count"
val=
"20"
/>
<set
name=
"msg-count"
val=
"20"
/>
...
...
conf/libuniset.spec
View file @
12cfee59
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
Name: libuniset
Name: libuniset
Version: 0.99
Version: 0.99
Release: eter2
0
Release: eter2
1
Summary: UniSet - library for building distributed industrial control systems
Summary: UniSet - library for building distributed industrial control systems
License: GPL
License: GPL
Group: Development/C++
Group: Development/C++
...
@@ -184,6 +184,9 @@ rm -f %buildroot%_libdir/*.la
...
@@ -184,6 +184,9 @@ rm -f %buildroot%_libdir/*.la
%exclude %_pkgconfigdir/libUniSet.pc
%exclude %_pkgconfigdir/libUniSet.pc
%changelog
%changelog
* Tue Nov 23 2010 Pavel Vainerman <pv@altlinux.ru> 0.99-eter20
- new build
* Tue Nov 16 2010 Pavel Vainerman <pv@etersoft.ru> 0.99-eter17
* Tue Nov 16 2010 Pavel Vainerman <pv@etersoft.ru> 0.99-eter17
- fixed bug in MBSlave
- fixed bug in MBSlave
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment