[svn] 自动diff文件push的小例子 exe_push

#include <stdio.h>
#include <string.h>
#include <unistd.h> 

/*****************************************************************
*Function: get_system_output
*Description:call the system command,gets the return value of the command.
*Input:cmd
*Input:size
*Output:output
*****************************************************************/
static int get_system_output(char *cmd, char *output, int size)
{
	FILE *fp=NULL;	
	fp = popen(cmd, "r");	
	if (fp)
	{		
		if(fgets(output, size, fp) != NULL)
		{		
			if(output[strlen(output)-1] == '\n')			
				output[strlen(output)-1] = '\0';	
		}	
		pclose(fp);	
	}
	return 0;
}


int main(int argc, char **argv)
{

	char *p_file="./data.txt";	
	char *p_file_bck="./data.bck";	
	FILE *f=NULL;
	char str[1024]={0};
	char line_buffer[1024]={0};
	char *p_line_buffer = NULL;
	char *pcmd = NULL;
	char cmd[1024]={0};
	char file_info[64][1024]={'0'};
	char *p=NULL;
	int number=0,j=0;
	
	if (access(p_file,R_OK) !=0 )
	{
		printf(">>>>>>>>>>./data.txt ERROR! \n");
		return;
	}

	system("awk '{print($2)}' ./data.txt > ./data.bck");

	system("cat -n ./data.bck");
	
	printf("--------------------------------------------------------------------------------------------------------\n\n");



	if ((f = fopen(p_file_bck, "r")) != NULL)
	{
		while (fgets(line_buffer,sizeof(line_buffer),f),!feof(f)) // If the file ends, the value of the function feof(fp) is non-zero, otherwise not file end 0.
		{
		  // fgets(line_buffer,sizeof(line_buffer),f);	//fread(line_buffer, 1024, 1, f);
		   number++;
		   
		   memset(str, 0x0, sizeof(str));
		   strcpy(str, line_buffer);

		   if ( (str[strlen(str)-2] == '\n')  || (str[strlen(str)-2] == '\r') )
 			   str[strlen(str)-2]='\0'; 
		   
		   if ( (str[strlen(str)-1] == '\n') || (str[strlen(str)-1] == '\r') )
 			   str[strlen(str)-1]='\0'; 
				   
		   //copy to ~/lin/push_code/
		   memset(&cmd, 0x0, sizeof(cmd));
		   strcat(cmd, "cp ");
		   strcat(cmd, str);
		   strcat(cmd, "   ~/lin/push_code/");
		   printf("copy to %d:   %s\n", number, cmd);
		   system(cmd);
		   
		   
#if 1	   
		   //svn di to ~/lin/push_code/
		   memset(&cmd, 0x0, sizeof(cmd));
		   strcat(cmd, "svn di ");
		   strcat(cmd, str);
	  	   strcat(cmd, "  >  ~/lin/push_code/diff");
		   
		   p = strrchr(str, '/');
		   //printf("###p:\n%s\n",p);
		   strcat(cmd, p);
		   printf("svn  di %d:   %s\n", number, cmd);
		   system(cmd);
#endif   

		}
		printf("\n-----------------------------------------------ok------------------------------------------------------\n\n");

	}
	else
	{
		printf(">>>>>>>>>>./data.txt ERROR!! \n");
	}
		

    return 0;
}



M       package/ramips/appcustom/confapp/src/confapp.h
M       package/ramips/appcustom/confapp/src/main.c
M       package/ramips/appcustom/confapp/www/default/html/internet/ap_list.html
M       package/ramips/appcustom/confapp/www/default/html/internet/network.html

输出结果:

lbo@donglebuild2:~/work/code/code/openwrt7621/trunk/base$ ./exe 
     1  package/ramips/appcustom/confapp/src/confapp.h
     2  package/ramips/appcustom/confapp/src/main.c
     3  package/ramips/appcustom/confapp/www/default/html/internet/ap_list.html
     4  package/ramips/appcustom/confapp/www/default/html/internet/network.html
--------------------------------------------------------------------------------------------------------

copy to 1:   cp package/ramips/appcustom/confapp/src/confapp.h   ~/lin/push_code/
svn  di 1:   svn di package/ramips/appcustom/confapp/src/confapp.h  >  ~/lin/push_code/diff/confapp.h
copy to 2:   cp package/ramips/appcustom/confapp/src/main.c   ~/lin/push_code/
svn  di 2:   svn di package/ramips/appcustom/confapp/src/main.c  >  ~/lin/push_code/diff/main.c
copy to 3:   cp package/ramips/appcustom/confapp/www/default/html/internet/ap_list.html   ~/lin/push_code/
svn  di 3:   svn di package/ramips/appcustom/confapp/www/default/html/internet/ap_list.html  >  ~/lin/push_code/diff/ap_list.html
copy to 4:   cp package/ramips/appcustom/confapp/www/default/html/internet/network.html   ~/lin/push_code/
svn  di 4:   svn di package/ramips/appcustom/confapp/www/default/html/internet/network.html  >  ~/lin/push_code/diff/network.html

-----------------------------------------------ok------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值