| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/backupfile.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||
| 7 | - | |||||||||||||||||||||||||
| 8 | - | |||||||||||||||||||||||||
| 9 | char const *simple_backup_suffix = | - | ||||||||||||||||||||||||
| 10 | ((void *)0) | - | ||||||||||||||||||||||||
| 11 | ; | - | ||||||||||||||||||||||||
| 12 | - | |||||||||||||||||||||||||
| 13 | - | |||||||||||||||||||||||||
| 14 | - | |||||||||||||||||||||||||
| 15 | - | |||||||||||||||||||||||||
| 16 | void | - | ||||||||||||||||||||||||
| 17 | set_simple_backup_suffix (char const *s) | - | ||||||||||||||||||||||||
| 18 | { | - | ||||||||||||||||||||||||
| 19 | if (!s
| 6-2119 | ||||||||||||||||||||||||
| 20 | s = getenv ("SIMPLE_BACKUP_SUFFIX"); executed 2119 times by 4 tests: s = getenv ("SIMPLE_BACKUP_SUFFIX");Executed by:
| 2119 | ||||||||||||||||||||||||
| 21 | simple_backup_suffix = s
| 0-2119 | ||||||||||||||||||||||||
| 22 | } executed 2125 times by 4 tests: end of blockExecuted by:
| 2125 | ||||||||||||||||||||||||
| 23 | - | |||||||||||||||||||||||||
| 24 | - | |||||||||||||||||||||||||
| 25 | - | |||||||||||||||||||||||||
| 26 | - | |||||||||||||||||||||||||
| 27 | - | |||||||||||||||||||||||||
| 28 | - | |||||||||||||||||||||||||
| 29 | static void | - | ||||||||||||||||||||||||
| 30 | check_extension (char *file, size_t filelen, char e) | - | ||||||||||||||||||||||||
| 31 | { | - | ||||||||||||||||||||||||
| 32 | char *base = last_component (file); | - | ||||||||||||||||||||||||
| 33 | size_t baselen = base_len (base); | - | ||||||||||||||||||||||||
| 34 | size_t baselen_max = 1 ? 255 : | - | ||||||||||||||||||||||||
| 35 | 14 dead code: 14 | - | ||||||||||||||||||||||||
| 36 | ; | - | ||||||||||||||||||||||||
| 37 | - | |||||||||||||||||||||||||
| 38 | if (0 || | - | ||||||||||||||||||||||||
| 39 | 14
| 0-62 | ||||||||||||||||||||||||
| 40 | < baselen
| 0-62 | ||||||||||||||||||||||||
| 41 | { | - | ||||||||||||||||||||||||
| 42 | - | |||||||||||||||||||||||||
| 43 | long name_max; | - | ||||||||||||||||||||||||
| 44 | - | |||||||||||||||||||||||||
| 45 | - | |||||||||||||||||||||||||
| 46 | - | |||||||||||||||||||||||||
| 47 | char tmp[sizeof "."]; | - | ||||||||||||||||||||||||
| 48 | memcpy (tmp, base, sizeof "."); | - | ||||||||||||||||||||||||
| 49 | strcpy (base, "."); | - | ||||||||||||||||||||||||
| 50 | - | |||||||||||||||||||||||||
| 51 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 52 | = 0; | - | ||||||||||||||||||||||||
| 53 | name_max = pathconf (file, | - | ||||||||||||||||||||||||
| 54 | _PC_NAME_MAX | - | ||||||||||||||||||||||||
| 55 | ); | - | ||||||||||||||||||||||||
| 56 | if (0 <= name_max
| 0 | ||||||||||||||||||||||||
| 57 | (*
| 0 | ||||||||||||||||||||||||
| 58 | == 0
| 0 | ||||||||||||||||||||||||
| 59 | { | - | ||||||||||||||||||||||||
| 60 | long size = baselen_max = name_max; | - | ||||||||||||||||||||||||
| 61 | if (name_max != size
| 0 | ||||||||||||||||||||||||
| 62 | baselen_max = never executed: baselen_max = (18446744073709551615UL) ; | 0 | ||||||||||||||||||||||||
| 63 | (18446744073709551615UL) never executed: baselen_max = (18446744073709551615UL) ; | 0 | ||||||||||||||||||||||||
| 64 | ; never executed: baselen_max = (18446744073709551615UL) ; | 0 | ||||||||||||||||||||||||
| 65 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 66 | memcpy (base, tmp, sizeof "."); | - | ||||||||||||||||||||||||
| 67 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 68 | - | |||||||||||||||||||||||||
| 69 | if (0 && baselen_max <= 12 dead code: )baselen_max <= 12 | - | ||||||||||||||||||||||||
| 70 | { dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 71 | - | |||||||||||||||||||||||||
| 72 | char *dot = dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 73 | (__extension__ (__builtin_constant_p ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 74 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 75 | ) && !__builtin_constant_p ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 76 | base dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 77 | ) && ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 78 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 79 | ) == '\0' ? (char *) __rawmemchr ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 80 | base dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 81 | , dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 82 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 83 | ) : __builtin_strchr ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 84 | base dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 85 | , dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 86 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 87 | ))) dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 88 | ; dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 89 | if (!dot) dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 90 | baselen_max = 8; dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 91 | else dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 92 | { dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 93 | char const *second_dot = dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 94 | (__extension__ (__builtin_constant_p ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 95 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 96 | ) && !__builtin_constant_p ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 97 | dot + 1 dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 98 | ) && ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 99 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 100 | ) == '\0' ? (char *) __rawmemchr ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 101 | dot + 1 dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 102 | , dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 103 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 104 | ) : __builtin_strchr ( dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 105 | dot + 1 dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 106 | , dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 107 | '.' dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 108 | ))) dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 109 | ; dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 110 | baselen_max = (second_dot dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 111 | ? second_dot - base dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 112 | : dot + 1 - base + 3); dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 113 | } dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 114 | } dead code: { char *dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( base ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( base , '.' ) : __builtin_strchr ( base , '.' ))) ; if (!dot) baselen_max = 8; else { char const *second_dot = (__extension__ (__builtin_constant_p ( '.' ) && !__builtin_constant_p ( dot + 1 ) && ( '.' ) == '\0' ? (char *) __rawmemchr ( dot + 1 , '.' ) : __builtin_strchr ( dot + 1 , '.' ))) ; baselen_max = (second_dot ? second_dot - base : dot + 1 - base + 3); } } | - | ||||||||||||||||||||||||
| 115 | - | |||||||||||||||||||||||||
| 116 | if (baselen_max < baselen
| 0-62 | ||||||||||||||||||||||||
| 117 | { | - | ||||||||||||||||||||||||
| 118 | baselen = file + filelen - base; | - | ||||||||||||||||||||||||
| 119 | if (baselen_max <= baselen
| 0 | ||||||||||||||||||||||||
| 120 | baselen = baselen_max - 1; never executed: baselen = baselen_max - 1; | 0 | ||||||||||||||||||||||||
| 121 | base[baselen] = e; | - | ||||||||||||||||||||||||
| 122 | base[baselen + 1] = '\0'; | - | ||||||||||||||||||||||||
| 123 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 124 | } executed 62 times by 2 tests: end of blockExecuted by:
| 62 | ||||||||||||||||||||||||
| 125 | - | |||||||||||||||||||||||||
| 126 | - | |||||||||||||||||||||||||
| 127 | - | |||||||||||||||||||||||||
| 128 | enum numbered_backup_result | - | ||||||||||||||||||||||||
| 129 | { | - | ||||||||||||||||||||||||
| 130 | - | |||||||||||||||||||||||||
| 131 | - | |||||||||||||||||||||||||
| 132 | BACKUP_IS_SAME_LENGTH, | - | ||||||||||||||||||||||||
| 133 | - | |||||||||||||||||||||||||
| 134 | - | |||||||||||||||||||||||||
| 135 | - | |||||||||||||||||||||||||
| 136 | BACKUP_IS_LONGER, | - | ||||||||||||||||||||||||
| 137 | - | |||||||||||||||||||||||||
| 138 | - | |||||||||||||||||||||||||
| 139 | - | |||||||||||||||||||||||||
| 140 | BACKUP_IS_NEW, | - | ||||||||||||||||||||||||
| 141 | - | |||||||||||||||||||||||||
| 142 | - | |||||||||||||||||||||||||
| 143 | BACKUP_NOMEM | - | ||||||||||||||||||||||||
| 144 | }; | - | ||||||||||||||||||||||||
| 145 | static enum numbered_backup_result | - | ||||||||||||||||||||||||
| 146 | numbered_backup (char **buffer, size_t buffer_size, size_t filelen, | - | ||||||||||||||||||||||||
| 147 | ptrdiff_t base_offset, DIR **dirpp) | - | ||||||||||||||||||||||||
| 148 | { | - | ||||||||||||||||||||||||
| 149 | enum numbered_backup_result result = BACKUP_IS_NEW; | - | ||||||||||||||||||||||||
| 150 | DIR *dirp = *dirpp; | - | ||||||||||||||||||||||||
| 151 | struct dirent *dp; | - | ||||||||||||||||||||||||
| 152 | char *buf = *buffer; | - | ||||||||||||||||||||||||
| 153 | size_t versionlenmax = 1; | - | ||||||||||||||||||||||||
| 154 | char *base = buf + base_offset; | - | ||||||||||||||||||||||||
| 155 | size_t baselen = base_len (base); | - | ||||||||||||||||||||||||
| 156 | - | |||||||||||||||||||||||||
| 157 | if (dirp
| 0-78 | ||||||||||||||||||||||||
| 158 | rewinddir (dirp); never executed: rewinddir (dirp); | 0 | ||||||||||||||||||||||||
| 159 | else | - | ||||||||||||||||||||||||
| 160 | { | - | ||||||||||||||||||||||||
| 161 | - | |||||||||||||||||||||||||
| 162 | - | |||||||||||||||||||||||||
| 163 | char tmp[sizeof "."]; | - | ||||||||||||||||||||||||
| 164 | memcpy (tmp, base, sizeof "."); | - | ||||||||||||||||||||||||
| 165 | strcpy (base, "."); | - | ||||||||||||||||||||||||
| 166 | dirp = opendir_safer (buf); | - | ||||||||||||||||||||||||
| 167 | if (!dirp
| 0-78 | ||||||||||||||||||||||||
| 168 | (*
| 0 | ||||||||||||||||||||||||
| 169 | ==
| 0 | ||||||||||||||||||||||||
| 170 | 12
| 0 | ||||||||||||||||||||||||
| 171 | ) | - | ||||||||||||||||||||||||
| 172 | result = BACKUP_NOMEM; never executed: result = BACKUP_NOMEM; | 0 | ||||||||||||||||||||||||
| 173 | memcpy (base, tmp, sizeof "."); | - | ||||||||||||||||||||||||
| 174 | strcpy (base + baselen, ".~1~"); | - | ||||||||||||||||||||||||
| 175 | if (!dirp
| 0-78 | ||||||||||||||||||||||||
| 176 | return never executed: result;return result;never executed: return result; | 0 | ||||||||||||||||||||||||
| 177 | *dirpp = dirp; | - | ||||||||||||||||||||||||
| 178 | } executed 78 times by 2 tests: end of blockExecuted by:
| 78 | ||||||||||||||||||||||||
| 179 | - | |||||||||||||||||||||||||
| 180 | while ((
| 78-413 | ||||||||||||||||||||||||
| 181 | ((void *)0)
| 78-413 | ||||||||||||||||||||||||
| 182 | ) | - | ||||||||||||||||||||||||
| 183 | { | - | ||||||||||||||||||||||||
| 184 | char const *p; | - | ||||||||||||||||||||||||
| 185 | char *q; | - | ||||||||||||||||||||||||
| 186 | - | |||||||||||||||||||||||||
| 187 | _Bool | - | ||||||||||||||||||||||||
| 188 | all_9s; | - | ||||||||||||||||||||||||
| 189 | size_t versionlen; | - | ||||||||||||||||||||||||
| 190 | - | |||||||||||||||||||||||||
| 191 | if ( | - | ||||||||||||||||||||||||
| 192 | (
| 50-363 | ||||||||||||||||||||||||
| 193 | dp
| 50-363 | ||||||||||||||||||||||||
| 194 | )->d_name))
| 50-363 | ||||||||||||||||||||||||
| 195 | < baselen + 4
| 50-363 | ||||||||||||||||||||||||
| 196 | continue; executed 363 times by 2 tests: continue;Executed by:
| 363 | ||||||||||||||||||||||||
| 197 | - | |||||||||||||||||||||||||
| 198 | if (memcmp (buf + base_offset, dp->d_name, baselen + 2) != 0
| 16-34 | ||||||||||||||||||||||||
| 199 | continue; executed 34 times by 2 tests: continue;Executed by:
| 34 | ||||||||||||||||||||||||
| 200 | - | |||||||||||||||||||||||||
| 201 | p = dp->d_name + baselen + 2; | - | ||||||||||||||||||||||||
| 202 | - | |||||||||||||||||||||||||
| 203 | - | |||||||||||||||||||||||||
| 204 | - | |||||||||||||||||||||||||
| 205 | - | |||||||||||||||||||||||||
| 206 | - | |||||||||||||||||||||||||
| 207 | if (! ('1' <= *p
| 0-16 | ||||||||||||||||||||||||
| 208 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
| 209 | all_9s = (*p == '9'); | - | ||||||||||||||||||||||||
| 210 | for (versionlen = 1; ((
| 0-16 | ||||||||||||||||||||||||
| 211 | all_9s &= (p[versionlen] == '9'); never executed: all_9s &= (p[versionlen] == '9'); | 0 | ||||||||||||||||||||||||
| 212 | - | |||||||||||||||||||||||||
| 213 | if (! (p[versionlen] == '~'
| 0-16 | ||||||||||||||||||||||||
| 214 | && (versionlenmax < versionlen
| 0-16 | ||||||||||||||||||||||||
| 215 | || (versionlenmax == versionlen
| 0-16 | ||||||||||||||||||||||||
| 216 | && memcmp (buf + filelen + 2, p, versionlen) <= 0
| 0-16 | ||||||||||||||||||||||||
| 217 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
| 218 | - | |||||||||||||||||||||||||
| 219 | - | |||||||||||||||||||||||||
| 220 | - | |||||||||||||||||||||||||
| 221 | - | |||||||||||||||||||||||||
| 222 | - | |||||||||||||||||||||||||
| 223 | versionlenmax = all_9s + versionlen; | - | ||||||||||||||||||||||||
| 224 | result = (all_9s
| 0-16 | ||||||||||||||||||||||||
| 225 | size_t new_buffer_size = filelen + 2 + versionlenmax + 2; | - | ||||||||||||||||||||||||
| 226 | if (buffer_size < new_buffer_size
| 0-16 | ||||||||||||||||||||||||
| 227 | { | - | ||||||||||||||||||||||||
| 228 | if (! (__builtin_constant_p (new_buffer_size)
| 0 | ||||||||||||||||||||||||
| 229 | (9223372036854775807L)
| 0 | ||||||||||||||||||||||||
| 230 | <
| 0 | ||||||||||||||||||||||||
| 231 | (18446744073709551615UL)
| 0 | ||||||||||||||||||||||||
| 232 | ?
| 0 | ||||||||||||||||||||||||
| 233 | (9223372036854775807L)
| 0 | ||||||||||||||||||||||||
| 234 | :
| 0 | ||||||||||||||||||||||||
| 235 | (18446744073709551615UL)
| 0 | ||||||||||||||||||||||||
| 236 | - 1) / (2) < (new_buffer_size)) : ({ __xalloc_count_type __xalloc_count; __builtin_mul_overflow (new_buffer_size, 2, &__xalloc_count); }))
| 0 | ||||||||||||||||||||||||
| 237 | new_buffer_size *= 2; never executed: new_buffer_size *= 2; | 0 | ||||||||||||||||||||||||
| 238 | char *new_buf = realloc (buf, new_buffer_size); | - | ||||||||||||||||||||||||
| 239 | if (!new_buf
| 0 | ||||||||||||||||||||||||
| 240 | { | - | ||||||||||||||||||||||||
| 241 | *buffer = buf; | - | ||||||||||||||||||||||||
| 242 | return never executed: BACKUP_NOMEM;return BACKUP_NOMEM;never executed: return BACKUP_NOMEM; | 0 | ||||||||||||||||||||||||
| 243 | } | - | ||||||||||||||||||||||||
| 244 | buf = new_buf; | - | ||||||||||||||||||||||||
| 245 | buffer_size = new_buffer_size; | - | ||||||||||||||||||||||||
| 246 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 247 | q = buf + filelen; | - | ||||||||||||||||||||||||
| 248 | *q++ = '.'; | - | ||||||||||||||||||||||||
| 249 | *q++ = '~'; | - | ||||||||||||||||||||||||
| 250 | *q = '0'; | - | ||||||||||||||||||||||||
| 251 | q += all_9s; | - | ||||||||||||||||||||||||
| 252 | memcpy (q, p, versionlen + 2); | - | ||||||||||||||||||||||||
| 253 | - | |||||||||||||||||||||||||
| 254 | - | |||||||||||||||||||||||||
| 255 | - | |||||||||||||||||||||||||
| 256 | q += versionlen; | - | ||||||||||||||||||||||||
| 257 | while (*--
| 0-16 | ||||||||||||||||||||||||
| 258 | * never executed: q = '0';*q = '0';never executed: *q = '0'; | 0 | ||||||||||||||||||||||||
| 259 | ++*q; | - | ||||||||||||||||||||||||
| 260 | } executed 16 times by 2 tests: end of blockExecuted by:
| 16 | ||||||||||||||||||||||||
| 261 | - | |||||||||||||||||||||||||
| 262 | *buffer = buf; | - | ||||||||||||||||||||||||
| 263 | return executed 78 times by 2 tests: result;return result;Executed by:
executed 78 times by 2 tests: return result;Executed by:
| 78 | ||||||||||||||||||||||||
| 264 | } | - | ||||||||||||||||||||||||
| 265 | - | |||||||||||||||||||||||||
| 266 | - | |||||||||||||||||||||||||
| 267 | - | |||||||||||||||||||||||||
| 268 | - | |||||||||||||||||||||||||
| 269 | - | |||||||||||||||||||||||||
| 270 | - | |||||||||||||||||||||||||
| 271 | char * | - | ||||||||||||||||||||||||
| 272 | backupfile_internal (char const *file, enum backup_type backup_type, | - | ||||||||||||||||||||||||
| 273 | _Bool | - | ||||||||||||||||||||||||
| 274 | rename) | - | ||||||||||||||||||||||||
| 275 | { | - | ||||||||||||||||||||||||
| 276 | ptrdiff_t base_offset = last_component (file) - file; | - | ||||||||||||||||||||||||
| 277 | size_t filelen = base_offset + strlen (file + base_offset); | - | ||||||||||||||||||||||||
| 278 | - | |||||||||||||||||||||||||
| 279 | if (! simple_backup_suffix
| 0-103 | ||||||||||||||||||||||||
| 280 | set_simple_backup_suffix ( never executed: set_simple_backup_suffix ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 281 | ((void *)0) never executed: set_simple_backup_suffix ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 282 | ); never executed: set_simple_backup_suffix ( ((void *)0) ); | 0 | ||||||||||||||||||||||||
| 283 | - | |||||||||||||||||||||||||
| 284 | - | |||||||||||||||||||||||||
| 285 | - | |||||||||||||||||||||||||
| 286 | size_t simple_backup_suffix_size = strlen (simple_backup_suffix) + 1; | - | ||||||||||||||||||||||||
| 287 | size_t backup_suffix_size_guess = simple_backup_suffix_size; | - | ||||||||||||||||||||||||
| 288 | enum { GUESS = sizeof ".~12345~" }; | - | ||||||||||||||||||||||||
| 289 | if (backup_suffix_size_guess < GUESS
| 0-103 | ||||||||||||||||||||||||
| 290 | backup_suffix_size_guess = GUESS; executed 103 times by 4 tests: backup_suffix_size_guess = GUESS;Executed by:
| 103 | ||||||||||||||||||||||||
| 291 | - | |||||||||||||||||||||||||
| 292 | ssize_t ssize = filelen + backup_suffix_size_guess + 1; | - | ||||||||||||||||||||||||
| 293 | char *s = malloc (ssize); | - | ||||||||||||||||||||||||
| 294 | if (!s
| 0-103 | ||||||||||||||||||||||||
| 295 | return never executed: s;return s;never executed: return s; | 0 | ||||||||||||||||||||||||
| 296 | - | |||||||||||||||||||||||||
| 297 | DIR *dirp = | - | ||||||||||||||||||||||||
| 298 | ((void *)0) | - | ||||||||||||||||||||||||
| 299 | ; | - | ||||||||||||||||||||||||
| 300 | while ( | - | ||||||||||||||||||||||||
| 301 | 1 | - | ||||||||||||||||||||||||
| 302 | ) | - | ||||||||||||||||||||||||
| 303 | { | - | ||||||||||||||||||||||||
| 304 | memcpy (s, file, filelen + 1); | - | ||||||||||||||||||||||||
| 305 | - | |||||||||||||||||||||||||
| 306 | if (backup_type == simple_backups
| 25-78 | ||||||||||||||||||||||||
| 307 | memcpy (s + filelen, simple_backup_suffix, simple_backup_suffix_size); executed 25 times by 4 tests: memcpy (s + filelen, simple_backup_suffix, simple_backup_suffix_size);Executed by:
| 25 | ||||||||||||||||||||||||
| 308 | else | - | ||||||||||||||||||||||||
| 309 | switch (numbered_backup (&s, ssize, filelen, base_offset, &dirp)) | - | ||||||||||||||||||||||||
| 310 | { | - | ||||||||||||||||||||||||
| 311 | case executed 16 times by 2 tests: BACKUP_IS_SAME_LENGTH:case BACKUP_IS_SAME_LENGTH:Executed by:
executed 16 times by 2 tests: case BACKUP_IS_SAME_LENGTH:Executed by:
| 16 | ||||||||||||||||||||||||
| 312 | break; executed 16 times by 2 tests: break;Executed by:
| 16 | ||||||||||||||||||||||||
| 313 | - | |||||||||||||||||||||||||
| 314 | case executed 62 times by 2 tests: BACKUP_IS_NEW:case BACKUP_IS_NEW:Executed by:
executed 62 times by 2 tests: case BACKUP_IS_NEW:Executed by:
| 62 | ||||||||||||||||||||||||
| 315 | if (backup_type == numbered_existing_backups
| 21-41 | ||||||||||||||||||||||||
| 316 | { | - | ||||||||||||||||||||||||
| 317 | backup_type = simple_backups; | - | ||||||||||||||||||||||||
| 318 | memcpy (s + filelen, simple_backup_suffix, | - | ||||||||||||||||||||||||
| 319 | simple_backup_suffix_size); | - | ||||||||||||||||||||||||
| 320 | } executed 21 times by 2 tests: end of blockExecuted by:
| 21 | ||||||||||||||||||||||||
| 321 | check_extension (s, filelen, '~'); | - | ||||||||||||||||||||||||
| 322 | break; executed 62 times by 2 tests: break;Executed by:
| 62 | ||||||||||||||||||||||||
| 323 | - | |||||||||||||||||||||||||
| 324 | case never executed: BACKUP_IS_LONGER:case BACKUP_IS_LONGER:never executed: case BACKUP_IS_LONGER: | 0 | ||||||||||||||||||||||||
| 325 | check_extension (s, filelen, '~'); | - | ||||||||||||||||||||||||
| 326 | break; never executed: break; | 0 | ||||||||||||||||||||||||
| 327 | - | |||||||||||||||||||||||||
| 328 | case never executed: BACKUP_NOMEM:case BACKUP_NOMEM:never executed: case BACKUP_NOMEM: | 0 | ||||||||||||||||||||||||
| 329 | free (s); | - | ||||||||||||||||||||||||
| 330 | - | |||||||||||||||||||||||||
| 331 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 332 | = | - | ||||||||||||||||||||||||
| 333 | 12 | - | ||||||||||||||||||||||||
| 334 | ; | - | ||||||||||||||||||||||||
| 335 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 336 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 337 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 338 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 339 | - | |||||||||||||||||||||||||
| 340 | if (! rename
| 9-94 | ||||||||||||||||||||||||
| 341 | break; executed 9 times by 2 tests: break;Executed by:
| 9 | ||||||||||||||||||||||||
| 342 | - | |||||||||||||||||||||||||
| 343 | int sdir = dirp
| 20-74 | ||||||||||||||||||||||||
| 344 | if (sdir < 0
| 20-74 | ||||||||||||||||||||||||
| 345 | { | - | ||||||||||||||||||||||||
| 346 | sdir = | - | ||||||||||||||||||||||||
| 347 | -100 | - | ||||||||||||||||||||||||
| 348 | ; | - | ||||||||||||||||||||||||
| 349 | base_offset = 0; | - | ||||||||||||||||||||||||
| 350 | } executed 20 times by 3 tests: end of blockExecuted by:
| 20 | ||||||||||||||||||||||||
| 351 | unsigned flags = backup_type == simple_backups
| 41-53 | ||||||||||||||||||||||||
| 352 | (1 << 0) | - | ||||||||||||||||||||||||
| 353 | ; | - | ||||||||||||||||||||||||
| 354 | if (renameat2 (
| 0-94 | ||||||||||||||||||||||||
| 355 | -100
| 0-94 | ||||||||||||||||||||||||
| 356 | , file, sdir, s + base_offset, flags) == 0
| 0-94 | ||||||||||||||||||||||||
| 357 | break; executed 94 times by 3 tests: break;Executed by:
| 94 | ||||||||||||||||||||||||
| 358 | int e = | - | ||||||||||||||||||||||||
| 359 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 360 | ; | - | ||||||||||||||||||||||||
| 361 | if (e !=
| 0 | ||||||||||||||||||||||||
| 362 | 17
| 0 | ||||||||||||||||||||||||
| 363 | ) | - | ||||||||||||||||||||||||
| 364 | { | - | ||||||||||||||||||||||||
| 365 | if (dirp
| 0 | ||||||||||||||||||||||||
| 366 | closedir (dirp); never executed: closedir (dirp); | 0 | ||||||||||||||||||||||||
| 367 | free (s); | - | ||||||||||||||||||||||||
| 368 | - | |||||||||||||||||||||||||
| 369 | (*__errno_location ()) | - | ||||||||||||||||||||||||
| 370 | = e; | - | ||||||||||||||||||||||||
| 371 | return never executed: return ((void *)0) ;never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 372 | ((void *)0) never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 373 | ; never executed: return ((void *)0) ; | 0 | ||||||||||||||||||||||||
| 374 | } | - | ||||||||||||||||||||||||
| 375 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 376 | - | |||||||||||||||||||||||||
| 377 | if (dirp
| 25-78 | ||||||||||||||||||||||||
| 378 | closedir (dirp); executed 78 times by 2 tests: closedir (dirp);Executed by:
| 78 | ||||||||||||||||||||||||
| 379 | return executed 103 times by 4 tests: s;return s;Executed by:
executed 103 times by 4 tests: return s;Executed by:
| 103 | ||||||||||||||||||||||||
| 380 | } | - | ||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |