%% options copyright owner = Dirk Krause copyright year = 2017-xxxx license = bsd %% header /** @file dk4mm.h Make mode: Check if rebuilding destination file is necessary. */ #ifndef DK4CONF_H_INCLUDED #include #endif #ifndef DK4TYPES_H_INCLUDED #include #endif #ifdef __cplusplus extern "C" { #endif /** Check whether or not it is necessary to rebuild a destination file. @param dn Destination file name. @param sn Source file name. @return 0 if the destination file is up to date, any non-0 value otherwise. */ int dk4makemode_must_rebuild(const dkChar *dn, const dkChar *sn); #ifdef __cplusplus } #endif /* vim: set ai sw=4 ts=4 : */ %% module #include "dk4mm.h" #include "dk4statd.h" int dk4makemode_must_rebuild(const dkChar *dn, const dkChar *sn) { dk4_stat_t ds; dk4_stat_t ss; int back = 0; if ((NULL == dn) || (NULL == sn)) { goto finished; } if (0 != dk4stat(&ss, sn, NULL)) { /* Source file exists. */ back = 1; if (0 != dk4stat(&ds, dn, NULL)) { /* Destination file exists. */ if (ds.st_mtime > ss.st_mtime) { /* Destination file exists and is up to date. */ back = 0; } } } else { /* Source file does not exist. */ } finished: return back; } /* vim: set ai sw=4 ts=4 : */