使用C来触发规则

时间:2016-11-12 15:18:34

标签: c makefile rules

我试图在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--;
    }
}

0 个答案:

没有答案