mirror of
https://git.sr.ht/~cismonx/bookmarkfs
synced 2025-06-07 19:58:50 +00:00
fsck: add result code for "." and ".." entries
BOOKMARKFS_FSCK_RESULT_NAME_INVALID should be used solely for names that are valid as filename, but not as bookmark name.
This commit is contained in:
parent
68281c2ecb
commit
d6df1cd89b
5 changed files with 18 additions and 10 deletions
|
@ -145,8 +145,8 @@ validate_filename_fsck (
|
|||
break;
|
||||
|
||||
case FILENAME_DOTDOT:
|
||||
extra = BOOKMARKFS_NAME_INVALID_REASON_DOTDOT;
|
||||
result = BOOKMARKFS_FSCK_RESULT_NAME_INVALID;
|
||||
extra = str[1] == '\0';
|
||||
result = BOOKMARKFS_FSCK_RESULT_NAME_DOTDOT;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -250,6 +250,7 @@ fix_entry (
|
|||
break;
|
||||
}
|
||||
// fallthrough
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_DOTDOT:
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_INVALID:
|
||||
sprintf(data->name, "fsck-%" PRIu64, data->id);
|
||||
break;
|
||||
|
|
|
@ -137,6 +137,7 @@ init_ctx (
|
|||
DO_SET_RESULT_VAR(interp, "nameDuplicate", NAME_DUPLICATE);
|
||||
DO_SET_RESULT_VAR(interp, "nameBadChar", NAME_BADCHAR);
|
||||
DO_SET_RESULT_VAR(interp, "nameBadLen", NAME_BADLEN);
|
||||
DO_SET_RESULT_VAR(interp, "nameDotDot", NAME_DOTDOT);
|
||||
DO_SET_RESULT_VAR(interp, "nameInvalid", NAME_INVALID);
|
||||
|
||||
struct stat stat_buf;
|
||||
|
|
|
@ -41,27 +41,33 @@ explain_fsck_result (
|
|||
char name_buf[sizeof(data->name)];
|
||||
escape_control_chars(name_buf, sizeof(name_buf), data->name, '?');
|
||||
|
||||
#define PRINT_FSCK_RESULT(s) \
|
||||
#define PRINT_FSCK_RESULT(s, ...) \
|
||||
printf("bookmark %" PRIu64 " name '%.*s' " s "\n", data->id, \
|
||||
(int)sizeof(name_buf), name_buf, data->extra);
|
||||
(int)sizeof(name_buf), name_buf, __VA_ARGS__);
|
||||
switch (result) {
|
||||
case BOOKMARKFS_FSCK_RESULT_END:
|
||||
break;
|
||||
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_DUPLICATE:
|
||||
PRINT_FSCK_RESULT("duplicates with %" PRIu64);
|
||||
PRINT_FSCK_RESULT("duplicates with %" PRIu64, data->extra);
|
||||
break;
|
||||
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_BADCHAR:
|
||||
PRINT_FSCK_RESULT("contains a bad character at offset %" PRIu64);
|
||||
PRINT_FSCK_RESULT("contains a bad character at offset %" PRIu64,
|
||||
data->extra);
|
||||
break;
|
||||
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_BADLEN:
|
||||
PRINT_FSCK_RESULT("has invalid length %" PRIu64);
|
||||
PRINT_FSCK_RESULT("has invalid length %" PRIu64, data->extra);
|
||||
break;
|
||||
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_DOTDOT:
|
||||
PRINT_FSCK_RESULT("%s", "is invalid (must not be '.' or '..')");
|
||||
break;
|
||||
|
||||
case BOOKMARKFS_FSCK_RESULT_NAME_INVALID:
|
||||
PRINT_FSCK_RESULT("is invalid (reason number %" PRIu64 ")");
|
||||
PRINT_FSCK_RESULT("is invalid (reason number %" PRIu64 ")",
|
||||
data->extra);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -43,6 +43,7 @@ enum bookmarkfs_fsck_result {
|
|||
BOOKMARKFS_FSCK_RESULT_NAME_DUPLICATE,
|
||||
BOOKMARKFS_FSCK_RESULT_NAME_BADCHAR,
|
||||
BOOKMARKFS_FSCK_RESULT_NAME_BADLEN,
|
||||
BOOKMARKFS_FSCK_RESULT_NAME_DOTDOT,
|
||||
BOOKMARKFS_FSCK_RESULT_NAME_INVALID,
|
||||
};
|
||||
|
||||
|
@ -50,8 +51,7 @@ enum bookmarkfs_fsck_result {
|
|||
* Predefined reason codes for BOOKMARKFS_FSCK_RESULT_NAME_INVALID.
|
||||
*/
|
||||
enum {
|
||||
BOOKMARKFS_NAME_INVALID_REASON_DOTDOT = 256,
|
||||
BOOKMARKFS_NAME_INVALID_REASON_NOTUTF8,
|
||||
BOOKMARKFS_NAME_INVALID_REASON_NOTUTF8 = 256,
|
||||
};
|
||||
|
||||
enum bookmarkfs_permd_op {
|
||||
|
|
Loading…
Add table
Reference in a new issue