MOD aaa-12 解决删除和添加IP的时候,对文件的操作错误
SOL 解决删除和添加IP的时候,对文件的操作错误 修改人:zhangliang 检视人:zhangliang
This commit is contained in:
parent
4a15ae5dd2
commit
bc8a58dd2d
|
@ -2,7 +2,7 @@
|
|||
#define PARSEFILE_H_
|
||||
|
||||
#define IFCONFIG_PATH "/etc/network/interfaces"
|
||||
#define IF_BUFF_LEN 64
|
||||
#define IF_BUFF_LEN 128
|
||||
|
||||
void set_if_config(char *if_name, char *conf_name, char *conf_buff);
|
||||
void del_if_config(char *if_name, char *conf_buff);
|
||||
|
|
|
@ -234,12 +234,11 @@ void set_if_config(char *if_name, char *conf_name, char *conf_buff)
|
|||
char config_linebuf[IF_BUFF_LEN];
|
||||
char static_name[IF_BUFF_LEN] = {0};
|
||||
char iface_str[IF_BUFF_LEN] = {0};
|
||||
char iface_str2[IF_BUFF_LEN] = {0};
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
char *config_sign = "iface";
|
||||
char *leave_line;
|
||||
char *leave_line2;
|
||||
int alter_sign = 0;
|
||||
char *auto_line = NULL;
|
||||
char *iface_line = NULL;
|
||||
char *config_line = NULL;
|
||||
boolean next_flag = FALSE;
|
||||
|
||||
FILE *f;
|
||||
f = fopen(conf_path,"r+");
|
||||
|
@ -251,89 +250,116 @@ void set_if_config(char *if_name, char *conf_name, char *conf_buff)
|
|||
|
||||
fseek(f,0,SEEK_END);
|
||||
|
||||
long congig_lenth = ftell(f);
|
||||
long config_lenth = ftell(f);
|
||||
int configbuf_lenth = strlen(conf_buff);
|
||||
configbuf_lenth = configbuf_lenth + 5;
|
||||
char sum_buf[congig_lenth+configbuf_lenth];
|
||||
char sum_buf[config_lenth + configbuf_lenth];
|
||||
|
||||
memset(sum_buf,0,sizeof(sum_buf));
|
||||
fseek(f,0,SEEK_SET);
|
||||
|
||||
sprintf(iface_str, "%s %s", config_sign, if_name);
|
||||
sprintf(iface_str2, "auto %s", if_name);
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
sprintf(iface_str, "iface %s inet", if_name);
|
||||
sprintf(static_name, "iface %s inet static\n", if_name);
|
||||
|
||||
leave_line = NULL;
|
||||
leave_line2 = NULL;
|
||||
memset(config_linebuf,0,sizeof(config_linebuf));
|
||||
|
||||
while(fgets(config_linebuf,IF_BUFF_LEN,f) != NULL)
|
||||
{
|
||||
if(strlen(config_linebuf) < 3 || leave_line2) //判断是否是空行
|
||||
/* 该做的事情已经做完 */
|
||||
if(next_flag == TRUE)
|
||||
{
|
||||
strcat(sum_buf,config_linebuf);
|
||||
continue;
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
if(leave_line == NULL)
|
||||
/* 判断是否是空行 */
|
||||
if(strlen(config_linebuf) < 3)
|
||||
{
|
||||
leave_line = strstr(config_linebuf, iface_str);
|
||||
strcat(sum_buf,config_linebuf);
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
if(leave_line)
|
||||
/* 没有找到接口配置块,则继续循环 */
|
||||
if(auto_line == NULL)
|
||||
{
|
||||
auto_line = strstr(config_linebuf, auto_str);
|
||||
strcat(sum_buf, config_linebuf);
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 已经是下一个接口了*/
|
||||
if(strstr(config_linebuf, "auto"))
|
||||
{
|
||||
if(iface_line == NULL)
|
||||
{
|
||||
strcat(sum_buf, static_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(sum_buf,config_linebuf);
|
||||
}
|
||||
}
|
||||
/*leave_line != NULL && leave_line2 !=NULL*/
|
||||
else if((leave_line2 = strstr(config_linebuf,iface_str))
|
||||
|| (leave_line2 = strstr(config_linebuf,iface_str2)))
|
||||
{
|
||||
if(alter_sign == 0)
|
||||
if(config_line == NULL)
|
||||
{
|
||||
strcat(sum_buf, conf_buff);
|
||||
alter_sign = 1;
|
||||
}
|
||||
|
||||
strcat(sum_buf, config_linebuf);
|
||||
next_flag = TRUE;
|
||||
|
||||
goto next_while;
|
||||
}
|
||||
/*leave_line != NULL && leave_line2 == NULL*/
|
||||
else
|
||||
|
||||
/* 找到接口IP配置方式 */
|
||||
if(iface_line == NULL)
|
||||
{
|
||||
if(strstr(config_linebuf,conf_name) != NULL)
|
||||
iface_line = strstr(config_linebuf, iface_str);
|
||||
if(iface_line)
|
||||
{
|
||||
strcat(sum_buf,conf_buff);
|
||||
alter_sign = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcat(sum_buf,config_linebuf);
|
||||
strcat(sum_buf, static_name);
|
||||
goto next_while;
|
||||
}
|
||||
}
|
||||
|
||||
/* 找到配置行 */
|
||||
if(config_line == NULL)
|
||||
{
|
||||
config_line = strstr(config_linebuf, conf_name);
|
||||
if(config_line)
|
||||
{
|
||||
next_flag = TRUE;
|
||||
strcat(sum_buf, conf_buff);
|
||||
goto next_while;
|
||||
}
|
||||
}
|
||||
|
||||
strcat(sum_buf, config_linebuf);
|
||||
|
||||
next_while:
|
||||
if(fgetc(f)==EOF)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
fseek(f,-1,SEEK_CUR);
|
||||
|
||||
memset(config_linebuf, 0, sizeof(config_linebuf));
|
||||
}
|
||||
|
||||
if(leave_line == NULL)
|
||||
if( next_flag == FALSE )
|
||||
{
|
||||
if(auto_line == NULL)
|
||||
{
|
||||
sprintf(auto_str, "auto %s\n", if_name);
|
||||
sprintf(auto_str, "%s", static_name);
|
||||
strcat(sum_buf, auto_str);
|
||||
strcat(sum_buf, "\n");
|
||||
}
|
||||
|
||||
if(alter_sign == 0)
|
||||
if(iface_line == NULL)
|
||||
{
|
||||
strcat(sum_buf, static_name);
|
||||
}
|
||||
|
||||
if(config_line == NULL)
|
||||
{
|
||||
//strcat(sum_buf,"\n");
|
||||
strcat(sum_buf, conf_buff);
|
||||
}
|
||||
}
|
||||
|
||||
rpc_log_dbg("---sum_buf---->%s<----------\n",sum_buf);
|
||||
remove(conf_path);
|
||||
|
@ -364,14 +390,9 @@ void del_if_config(char *if_name, char *conf_buff)
|
|||
{
|
||||
char *conf_path = IFCONFIG_PATH;
|
||||
char config_linebuf[IF_BUFF_LEN];
|
||||
char iface_str[IF_BUFF_LEN] = {0};
|
||||
char iface_str2[IF_BUFF_LEN] = {0};
|
||||
char auto_str[IF_BUFF_LEN] = {0};
|
||||
char *config_sign = "iface";
|
||||
char *leave_line;
|
||||
char *leave_line2;
|
||||
int alter_sign = 0;
|
||||
|
||||
boolean next_flag = FALSE;
|
||||
char *auto_line = NULL;
|
||||
FILE *f;
|
||||
f = fopen(conf_path,"r+");
|
||||
if(f == NULL)
|
||||
|
@ -390,40 +411,51 @@ void del_if_config(char *if_name, char *conf_buff)
|
|||
memset(sum_buf,0,sizeof(sum_buf));
|
||||
fseek(f,0,SEEK_SET);
|
||||
|
||||
sprintf(iface_str, "%s %s", config_sign, if_name);
|
||||
sprintf(iface_str2, "auto %s", if_name);
|
||||
sprintf(auto_str, "auto %s", if_name);
|
||||
|
||||
leave_line = NULL;
|
||||
leave_line2 = NULL;
|
||||
|
||||
while(fgets(config_linebuf,256,f) != NULL)
|
||||
while(fgets(config_linebuf,IF_BUFF_LEN,f) != NULL)
|
||||
{
|
||||
if(strlen(config_linebuf) < 3 || leave_line2) //判断是否是空行
|
||||
/* 该做的事情已经做完 */
|
||||
if(next_flag == TRUE)
|
||||
{
|
||||
strcat(sum_buf,config_linebuf);
|
||||
continue;
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
if(leave_line == NULL)
|
||||
/* 判断是否是空行 */
|
||||
if(strlen(config_linebuf) < 3)
|
||||
{
|
||||
leave_line = strstr(config_linebuf, iface_str);
|
||||
strcat(sum_buf,config_linebuf);
|
||||
goto next_while;
|
||||
}
|
||||
/*leave_line != NULL && leave_line2 !=NULL*/
|
||||
else if((leave_line2 = strstr(config_linebuf,iface_str))
|
||||
|| (leave_line2 = strstr(config_linebuf,iface_str2)))
|
||||
{
|
||||
|
||||
/* 没有找到接口配置块,则继续循环 */
|
||||
if(auto_line == NULL)
|
||||
{
|
||||
auto_line = strstr(config_linebuf, auto_str);
|
||||
strcat(sum_buf,config_linebuf);
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 已经是下一个接口了, 则表示无法找到*/
|
||||
if(strstr(config_linebuf, "auto"))
|
||||
{
|
||||
strcat(sum_buf,config_linebuf);
|
||||
next_flag = TRUE;
|
||||
goto next_while;
|
||||
}
|
||||
|
||||
/* 找到配置行 */
|
||||
if(strstr(config_linebuf,conf_buff))
|
||||
{
|
||||
next_flag = TRUE;
|
||||
}
|
||||
/*leave_line != NULL && leave_line2 == NULL*/
|
||||
else
|
||||
{
|
||||
if(strstr(config_linebuf,conf_buff) == NULL)
|
||||
{
|
||||
strcat(sum_buf, config_linebuf);
|
||||
}
|
||||
}
|
||||
|
||||
next_while:
|
||||
|
||||
if(fgetc(f)==EOF)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue