QString RcsInterfaceTarDiff::properties(QString version)
{
	QString command="tar -tzvf '"+repository+"' '"+version+"'";
	
	QStringList result=system_string(command);
	
	return result.join("\n");
}
示例#2
0
int
main (int argc, char **argv)
{
        char unameinfo[256];
        char gccinfo[256];

        system_string("uname -a", unameinfo, sizeof(unameinfo));
        system_string("gcc -v 2>&1 | tail -1", gccinfo, sizeof(gccinfo));

        printf ("void lnet_assert_wire_constants (void)\n"
                "{\n"
                "        /* Wire protocol assertions generated by 'wirecheck'\n"
                "         * running on %s\n"
                "         * with %s */\n"
                "\n", unameinfo, gccinfo);

        BLANK_LINE ();

        COMMENT ("Constants...");

        CHECK_DEFINE (LNET_PROTO_RA_MAGIC);

        CHECK_DEFINE (LNET_PROTO_TCP_MAGIC);
        CHECK_DEFINE (LNET_PROTO_TCP_VERSION_MAJOR);
        CHECK_DEFINE (LNET_PROTO_TCP_VERSION_MINOR);

        CHECK_VALUE (LNET_MSG_ACK);
        CHECK_VALUE (LNET_MSG_PUT);
        CHECK_VALUE (LNET_MSG_GET);
        CHECK_VALUE (LNET_MSG_REPLY);
        CHECK_VALUE (LNET_MSG_HELLO);

        check_lnet_handle_wire ();
        check_lnet_magicversion ();
        check_lnet_hdr ();

        printf ("}\n\n");

        return (0);
}
QStringList RcsInterfaceTarDiff::versions()
{
	QString command="tar -tzf '"+repository+"'";
	QStringList list;
	
	list=system_string(command);
	
	for(int i=0; i<list.size(); i++)
	{
		if(list[i]=="Properties.txt")
		{
			list.removeAt(i);
		}
	}
	
	return list;
}
QString RcsInterfaceTarDiff::diff(QString version1, QString version2)
{
	QString file1=temp_file();
	QString file2=temp_file();
	
	extract(file1, version1);
	extract(file2, version2);
	
	QStringList s1=read_file(file1);
	QStringList s2=read_file(file1);
	
	int len1=0, len2=0, len;
	
	for(int i=0;i<s1.size();i++)
	{
		if(len1<s1[i].size()) len1=s1[i].size();
	}
	
	for(int i=0;i<s2.size();i++)
	{
		if(len2<s2[i].size()) len2=s2[i].size();
	}
	
	len=len1+len2+10;
	
	QString command="diff -y -t -W "+QString::number(len)+" '"+file1+"' '"+file2+"'";
	
	QStringList result=system_string(command);
	
	
	
	//printf("Ejecutado diff\n");
	
	QFile::remove(file1);
	QFile::remove(file2);
	
	//Se construye la salida según los resultados de diff
	QString html;
	len2=len/2;
	
	html+="<html>"
	"<HEAD>"
		"<META HTTP-EQUIV='CONTENT-TYPE' CONTENT='text/html; charset=utf-8'>"
		"<TITLE>SimpleRcs</TITLE>"
	"</HEAD>"
	"<body>";
	
	html+="<b>Showing differences between:</b><br>";
		
	
	html+="<TABLE BORDER=1 BORDERCOLOR='#000000' CELLPADDING=3 CELLSPACING=0>"
		"<tr>"
			"<td></td>"
			"<td><b>"+version1+"</b></td>"
			"<td></td>"
			"<td></td>"
			"<td><b>"+version2+"</b></td>"
		"</tr>\n";
	
	int size=result.size();
	int line1_num=0;
	int line2_num=0;
	for(int i=0;i<size;i++)
	{
		QString line=result[i];
		len=line.size();
		QString ch;
		if(len2<len)
		{
			ch=line.mid(len1+2,5).trimmed();
		}
		else
		{
			ch=line.right(2).trimmed();
		}
		//printf("ch=%s\n", ch.toLocal8Bit().data());
		
		QString line1=line.left(len2-1).trimmed();
		QString line2=line.mid(len2+1).trimmed();
		QString color;
		
		line1=line1.replace("&", "&amp;");
		line1=line1.replace("<", "&lt;");
		line1=line1.replace(">", "&gt;");
		line1=line1.replace(" ", "&nbsp;");
		line1=line1.replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
		
		line2=line2.replace("&", "&amp;");
		line2=line2.replace("<", "&lt;");
		line2=line2.replace(">", "&gt;");
		line2=line2.replace(" ", "&nbsp;");
		line2=line2.replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
		
		line="";
		
		if( ch=="|" )
		{
			color="#23ff23";
			line1_num++;
			line2_num++;
		}
		else if(ch=="(" || ch==")" || ch=="/")
		{
			color="#ff0000";
			line1_num++;
			line2_num++;
		}
		else if( ch=="<" )
		{
			color="#ff0000";
			line1_num++;
			ch="&lt;";
		}
		else if( ch==">" )
		{
			color="#ffa000";
			line2_num++;
			ch="&gt;";
		}
		else
		{
			color="#ffffff";
			line1_num++;
			line2_num++;
		}
		
		line="<tr>"
			"<td BGCOLOR='"+color+"'>"+QString::number(line1_num)+"</td>"
			"<td BGCOLOR='"+color+"'>"+line1+"</td>"
			"<td BGCOLOR='"+color+"'>"+ch+"</td>"
			"<td BGCOLOR='"+color+"'>"+QString::number(line2_num)+"</td>"
			"<td BGCOLOR='"+color+"'>"+line2+"</td>"
		"</tr>";
		
		
		html+=line+"\n";
	}
	
	html+="</table></body></html>";
	
	//printf("%s", html.toLocal8Bit().data());
	
	return html;
}