Branch data Line data Source code
1 : : #include "precizer.h"
2 : :
3 : : /**
4 : : * @brief Decide whether to protect a relative path from checksum recalculation
5 : : *
6 : : * Compares the path against PCRE2 patterns supplied via --lock-checksum=
7 : : *
8 : : * @param[in] relative_path Relative path to test
9 : : * @return LOCK_CHECKSUM if matched, DO_NOT_LOCK_CHECKSUM if not,
10 : : * FAIL_REGEXP_LOCK_CHECKSUM on PCRE2 error
11 : : */
12 : 3348 : LockChecksum match_checksum_lock_pattern(const char *relative_path)
13 : : {
14 [ + + ]: 3348 : if(config->lock_checksum_pcre_compiled == NULL)
15 : : {
16 : : // Nothing to lock
17 : 2724 : return(DO_NOT_LOCK_CHECKSUM);
18 : : }
19 : :
20 [ + + ]: 1252 : for(int i = 0; config->lock_checksum_pcre_compiled[i] != NULL; ++i)
21 : : {
22 : 792 : REGEXP result = match_regexp(config->lock_checksum_pcre_compiled[i],relative_path);
23 : :
24 [ + + ]: 792 : if(MATCH == result)
25 : : {
26 : : // Lock that file checksum from recalculation
27 : 164 : return(LOCK_CHECKSUM);
28 : :
29 [ - + ]: 628 : } else if(REGEXP_ERROR == result){
30 : :
31 : 0 : return(FAIL_REGEXP_LOCK_CHECKSUM);
32 : :
33 : : }
34 : : }
35 : :
36 : : // No regexp matched
37 : 460 : return(DO_NOT_LOCK_CHECKSUM);
38 : : }
|