Commit 5786b4ff authored by Claes Sjofors's avatar Claes Sjofors

Event message object changed from objid to attrref. Object suffix removed from...

Event message object changed from objid to attrref. Object suffix removed from all alarmtexts for base components. Object name added to alarmtexts in operator window. Toolbar added to alarm and eventlist.
parent d392e945
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -16,4 +16,5 @@ ...@@ -16,4 +16,5 @@
080317 cs bcomp General Frequencyconverter classes for Profibus PPO5 and PPO3 protocol, with motor, fan and pump aggregates. 080317 cs bcomp General Frequencyconverter classes for Profibus PPO5 and PPO3 protocol, with motor, fan and pump aggregates.
080404 cs bcomp Connections replaced with lines in graphs to enable usage in subwindows. 080404 cs bcomp Connections replaced with lines in graphs to enable usage in subwindows.
080602 cs bcomp Objectgraph for CompMode: MinSet/MaxSet and MinOut/MaxOut used for slider limits and input limits. 080602 cs bcomp Objectgraph for CompMode: MinSet/MaxSet and MinOut/MaxOut used for slider limits and input limits.
081028 cs bcomp Components BaseActuatorIncrDecr and BaseValveIncrDecr added. 081028 cs bcomp Components BaseActuatorIncrDecr and BaseValveIncrDecr added.
\ No newline at end of file 100128 cs bcomp Adding of main object name to alarm texts removed. Comma removed from alarmtexts.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -228,7 +228,7 @@ libxt-dev ...@@ -228,7 +228,7 @@ libxt-dev
libmotif-dev libmotif-dev
x11proto-print-dev x11proto-print-dev
libxmu-dev libxmu-dev
libxmp-dev libxpm-dev
libxp-dev libxp-dev
imlib11-dev imlib11-dev
...@@ -239,4 +239,4 @@ build with ...@@ -239,4 +239,4 @@ build with
Start wb and motif with Start wb and motif with
> wb_motif > wb_motif
> rt_xtt_motif > rt_xtt_motif
\ No newline at end of file
...@@ -389,6 +389,7 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -389,6 +389,7 @@ int check_conditions(sEvent *evp, HistQuery *query)
mh_sMsgInfo *msgInfop = NULL; mh_sMsgInfo *msgInfop = NULL;
mh_sMessage *mp = NULL; mh_sMessage *mp = NULL;
mh_sReturn *rp = NULL; mh_sReturn *rp = NULL;
char *event_name_p;
switch (evp->EventType) switch (evp->EventType)
{ {
...@@ -396,13 +397,16 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -396,13 +397,16 @@ int check_conditions(sEvent *evp, HistQuery *query)
case mh_eEvent_Info: case mh_eEvent_Info:
msgInfop = &(evp->Mess.message.Info); msgInfop = &(evp->Mess.message.Info);
mp = &(evp->Mess.message); mp = &(evp->Mess.message);
event_name_p = evp->Mess.message.EventName;
break; break;
case mh_eEvent_Ack: case mh_eEvent_Ack:
msgInfop = &(evp->Mess.ack.Info); msgInfop = &(evp->Mess.ack.Info);
event_name_p = evp->Mess.ack.EventName;
break; break;
case mh_eEvent_Cancel: case mh_eEvent_Cancel:
case mh_eEvent_Return: case mh_eEvent_Return:
msgInfop = &(evp->Mess.ret.Info); msgInfop = &(evp->Mess.ret.Info);
event_name_p = evp->Mess.ret.EventName;
rp = &(evp->Mess.ret); rp = &(evp->Mess.ret);
break; break;
case mh_eEvent_Block: case mh_eEvent_Block:
...@@ -410,6 +414,7 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -410,6 +414,7 @@ int check_conditions(sEvent *evp, HistQuery *query)
case mh_eEvent_Reblock: case mh_eEvent_Reblock:
case mh_eEvent_CancelBlock: case mh_eEvent_CancelBlock:
msgInfop = &(evp->Mess.block.Info); msgInfop = &(evp->Mess.block.Info);
event_name_p = evp->Mess.block.EventName;
break; break;
default: default:
return 2; return 2;
...@@ -444,7 +449,7 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -444,7 +449,7 @@ int check_conditions(sEvent *evp, HistQuery *query)
//compare the EventName //compare the EventName
if(query->eventName_str != NULL && (strlen(query->eventName_str) != 0) ) if(query->eventName_str != NULL && (strlen(query->eventName_str) != 0) )
{ {
if( EVEN( compareStr(msgInfop->EventName, query->eventName_str) ) ) if( EVEN( compareStr(event_name_p, query->eventName_str) ) )
return 2; return 2;
} }
if(query->eventText_str != NULL && (strlen(query->eventText_str) != 0) ) if(query->eventText_str != NULL && (strlen(query->eventText_str) != 0) )
...@@ -529,7 +534,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP) ...@@ -529,7 +534,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -552,7 +557,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP) ...@@ -552,7 +557,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = env->NewStringUTF( MsgP->EventText); jevText = env->NewStringUTF( MsgP->EventText);
jevName = env->NewStringUTF( MsgP->Info.EventName); jevName = env->NewStringUTF( MsgP->EventName);
jevTime = env->NewStringUTF( time_str); jevTime = env->NewStringUTF( time_str);
jevBirthTime = env->NewStringUTF( birthTime_str); jevBirthTime = env->NewStringUTF( birthTime_str);
...@@ -617,7 +622,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP) ...@@ -617,7 +622,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime); pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime);
...@@ -642,7 +647,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP) ...@@ -642,7 +647,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = env->NewStringUTF( MsgP->EventText); jevText = env->NewStringUTF( MsgP->EventText);
jevName = env->NewStringUTF( MsgP->Info.EventName); jevName = env->NewStringUTF( MsgP->EventName);
jevTime = env->NewStringUTF( time_str); jevTime = env->NewStringUTF( time_str);
jevBirthTime = env->NewStringUTF( birthTime_str); jevBirthTime = env->NewStringUTF( birthTime_str);
jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str); jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str);
...@@ -708,7 +713,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP) ...@@ -708,7 +713,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP)
jint oix, vid; jint oix, vid;
char time_str[40]; char time_str[40];
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.SupObject; pwr_tObjid objid = MsgP->SupObject.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -737,7 +742,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP) ...@@ -737,7 +742,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = env->NewStringUTF( " "); //eventText anvnds inte vid ack jevText = env->NewStringUTF( " "); //eventText anvnds inte vid ack
jevName = env->NewStringUTF( MsgP->Info.EventName); jevName = env->NewStringUTF( MsgP->EventName);
jevTime = env->NewStringUTF( time_str); jevTime = env->NewStringUTF( time_str);
jevBirthTime = env->NewStringUTF( birthTime_str); jevBirthTime = env->NewStringUTF( birthTime_str);
jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str); jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str);
......
...@@ -319,7 +319,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP) ...@@ -319,7 +319,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP)
jint oix, vid; jint oix, vid;
char time_str[40]; char time_str[40];
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.SupObject; pwr_tObjid objid = MsgP->SupObject.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -348,7 +348,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP) ...@@ -348,7 +348,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, " "); //eventText anvnds inte vid ack jevText = (*env)->NewStringUTF( env, " "); //eventText anvnds inte vid ack
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str); jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str);
...@@ -407,7 +407,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP) ...@@ -407,7 +407,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime); pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime);
...@@ -432,7 +432,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP) ...@@ -432,7 +432,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, MsgP->EventText); jevText = (*env)->NewStringUTF( env, MsgP->EventText);
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str); jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str);
...@@ -492,7 +492,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP) ...@@ -492,7 +492,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -515,7 +515,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP) ...@@ -515,7 +515,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, MsgP->EventText); jevText = (*env)->NewStringUTF( env, MsgP->EventText);
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
...@@ -570,7 +570,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP) ...@@ -570,7 +570,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -593,7 +593,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP) ...@@ -593,7 +593,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, MsgP->EventText); jevText = (*env)->NewStringUTF( env, MsgP->EventText);
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
......
...@@ -129,4 +129,5 @@ ...@@ -129,4 +129,5 @@
091211 cs rtt rt_rtt runable on sev station to show qcom nodes and qcom applications. 091211 cs rtt rt_rtt runable on sev station to show qcom nodes and qcom applications.
091211 cs pwre Format of pwre database changed. Delimiter character changed from : to ;. 091211 cs pwre Format of pwre database changed. Delimiter character changed from : to ;.
100111 cs pwrb Attribute (and method) Photo added to signal objects. 100111 cs pwrb Attribute (and method) Photo added to signal objects.
100111 cs co Set language is prepared for all languages and checks if language is installed. 100111 cs co Set language is prepared for all languages and checks if language is installed.
\ No newline at end of file 100129 cs emon Event object and sup object changed from objid to attrref. Increased size of eventname.
\ No newline at end of file
This diff is collapsed.
...@@ -2859,6 +2859,43 @@ cdh_NextObjectName ( ...@@ -2859,6 +2859,43 @@ cdh_NextObjectName (
return CDH__SUCCESS; return CDH__SUCCESS;
} }
//! Cut the leading segments of an object name.
/*!
Cut the leading segments of the name, and return the specified
number of segments.
\param outname Out string.
\param name In string.
*/
void cdh_CutNameSegments (
char *outname,
char *name,
int segments
)
{
char *s[20];
int i, j, last_i;
for( i = 0; i < segments; i++) {
s[i] = strrchr( name, '-');
if ( s[i] == 0) {
last_i = i;
break;
}
*s[i] = '+';
last_i = i;
}
for ( j = 0; j <= last_i; j++) {
if ( s[j] != 0)
*s[j] = '-';
}
if ( s[last_i] == 0)
strcpy( outname, name);
else
strcpy( outname, s[last_i] + 1);
}
/*@}*/ /*@}*/
......
...@@ -1041,6 +1041,8 @@ char *cdh_StringToObjectName( char *t, const char *s); ...@@ -1041,6 +1041,8 @@ char *cdh_StringToObjectName( char *t, const char *s);
pwr_tStatus cdh_NextObjectName( char *t, const char *s); pwr_tStatus cdh_NextObjectName( char *t, const char *s);
void cdh_CutNameSegments( char *outname, char *name, int segments);
/*@}*/ /*@}*/
#ifdef __cplusplus #ifdef __cplusplus
......
...@@ -491,6 +491,12 @@ xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp) ...@@ -491,6 +491,12 @@ xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp)
PWR_XDR_BYTES(xdrs, objp, sizeof(*objp)); PWR_XDR_BYTES(xdrs, objp, sizeof(*objp));
} }
bool_t
xdr_pwr_tAName(XDR *xdrs, pwr_tAName *objp)
{
PWR_XDR_BYTES(xdrs, objp, sizeof(*objp));
}
bool_t bool_t
xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp) xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp)
......
...@@ -195,6 +195,9 @@ xdr_pwr_tAttrName(XDR *xdrs, pwr_tAttrName *objp); ...@@ -195,6 +195,9 @@ xdr_pwr_tAttrName(XDR *xdrs, pwr_tAttrName *objp);
bool_t bool_t
xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp); xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp);
bool_t
xdr_pwr_tAName(XDR *xdrs, pwr_tAName *objp);
bool_t bool_t
xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp); xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp);
......
This diff is collapsed.
This diff is collapsed.
...@@ -1323,15 +1323,21 @@ static int rtt_menu_alarm_list_add( ...@@ -1323,15 +1323,21 @@ static int rtt_menu_alarm_list_add(
menu_ptr->arg3 = arg3; menu_ptr->arg3 = arg3;
menu_ptr->arg4 = arg4; menu_ptr->arg4 = arg4;
menu_ptr->time = net_NetTimeToTime( &EventP->Info.EventTime); menu_ptr->time = net_NetTimeToTime( &EventP->Info.EventTime);
strncpy( menu_ptr->eventname, EventP->Info.EventName, switch ( EventP->Info.EventType) {
sizeof( menu_ptr->eventname)); case mh_eEvent_Alarm:
strncpy( menu_ptr->eventname, EventP->Msg.EventName,
sizeof( menu_ptr->eventname));
menu_ptr->object = EventP->Msg.Object.Objid;
break;
default: ;
}
menu_ptr->eventname[sizeof(menu_ptr->eventname)-1] = 0;
strncpy( menu_ptr->eventtext, EventP->Msg.EventText, 80); strncpy( menu_ptr->eventtext, EventP->Msg.EventText, 80);
menu_ptr->eventflags = EventP->Info.EventFlags; menu_ptr->eventflags = EventP->Info.EventFlags;
menu_ptr->type = type; menu_ptr->type = type;
menu_ptr->eventprio = MsgP->Info.EventPrio; menu_ptr->eventprio = MsgP->Info.EventPrio;
memcpy ( &menu_ptr->eventid , &EventP->Info.Id, memcpy ( &menu_ptr->eventid , &EventP->Info.Id,
sizeof(EventP->Info.Id)); sizeof(EventP->Info.Id));
menu_ptr->object = EventP->Info.Object;
menu_ptr->status = MsgP->Status; menu_ptr->status = MsgP->Status;
(*index)++; (*index)++;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -92,6 +92,7 @@ class Xtt { ...@@ -92,6 +92,7 @@ class Xtt {
static void close_ok( void *ctx, void *data); static void close_ok( void *ctx, void *data);
static void change_value( void *ctx); static void change_value( void *ctx);
static void selection_changed( void *ctx); static void selection_changed( void *ctx);
static int xnav_get_select( void *ctx, pwr_tAttrRef *attrref, int *is_attr);
void activate_print(); void activate_print();
void activate_find(); void activate_find();
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment