我试图在C中设置一些函数,程序可以读取特定规则并根据文件的日期“触发”它。我的问题是,当功能正常时,结果不对。
从透视角度来看,该程序正在模仿'make'文件。这个'make'文件用于通过optarg(输入名称和进程)读取一些输入,然后通过另一个函数处理规则。之后,程序只需检查目标和依赖项的最后修改日期,并根据日期“触发”它们。
如果需要,函数本身需要触发规则,但它们不能用于我正在使用的测试。转换条件似乎提供了一些结果,直到我注意到它故意引发不必要的规则。
在我修改代码以使其工作时,在这种情况下我应该考虑什么?我是否需要再次更改条件,或添加更多变量。
bool detectrules(struct stat *filea, struct stat *fileb){
double check = difftime(filea->st_mtime,fileb->st_mtime);
if (check > 0) return 1;
else return 0;
}
void comparerules(Rule *rulea){
int VALUE= 0;
struct stat TargetA;
struct stat DependA;
while(1){
if(rulea[VALUE].targets == NULL) break;
VALUE++;
}
VALUE--;
while(1){
if(VALUE < 0) break;
TargetA.st_mtime = 0;
stat (rulea[VALUE].targets[0], &TargetA);
int m = 0;
while(1){
if(rulea[VALUE].depends[m] == NULL){
m = 0;
break;
}
DependA.st_mtime = 0;
stat (rulea[VALUE].depends[m], &DependA);
if(detectrules(&TargetA, &DependA) == 1){
printf("Fire rule %i \n",VALUE+1);
break;
}
m++;
}
VALUE--;
}
}