fsck: add BOOKMARKFS_FSCK_HANDLER_READONLY flag

instead of reusing the BOOKMARKFS_BACKEND_READONLY flag
This commit is contained in:
CismonX 2025-01-24 08:34:40 +08:00
parent 3cb99fe85b
commit b9e02d2d3d
No known key found for this signature in database
GPG key ID: 3094873E29A482FB
4 changed files with 13 additions and 14 deletions

View file

@ -344,7 +344,7 @@ init_handler (
flags |= BOOKMARKFS_FSCK_HANDLER_INTERACTIVE; flags |= BOOKMARKFS_FSCK_HANDLER_INTERACTIVE;
} }
if (info->flags.readonly) { if (info->flags.readonly) {
flags |= BOOKMARKFS_BACKEND_READONLY; flags |= BOOKMARKFS_FSCK_HANDLER_READONLY;
} }
if (0 != handler->create(info->handler_opts, flags, &ctx->handler_ctx)) { if (0 != handler->create(info->handler_opts, flags, &ctx->handler_ctx)) {
return -1; return -1;

View file

@ -34,7 +34,8 @@
#endif #endif
// init() flags // init() flags
#define BOOKMARKFS_FSCK_HANDLER_INTERACTIVE ( 1u << 16 ) #define BOOKMARKFS_FSCK_HANDLER_INTERACTIVE ( 1u << 0 )
#define BOOKMARKFS_FSCK_HANDLER_READONLY ( 1u << 1 )
#define BOOKMARKFS_FSCK_HANDLER_INFO_HELP ( 1u << 0 ) #define BOOKMARKFS_FSCK_HANDLER_INFO_HELP ( 1u << 0 )
#define BOOKMARKFS_FSCK_HANDLER_INFO_VERSION ( 1u << 1 ) #define BOOKMARKFS_FSCK_HANDLER_INFO_VERSION ( 1u << 1 )

View file

@ -28,16 +28,15 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "backend.h"
#include "backend_util.h" #include "backend_util.h"
#include "fsck_handler.h" #include "fsck_handler.h"
#include "fsck_util.h" #include "fsck_util.h"
#include "ioctl.h" #include "ioctl.h"
#include "xstd.h" #include "xstd.h"
#define FSCK_HANDLER_EXPECT_INPUT ( 1u << 24 ) #define FSCK_HANDLER_EXPECT_INPUT ( 1u << 16 )
#define FSCK_HANDLER_HAS_ENTRY ( 1u << 25 ) #define FSCK_HANDLER_HAS_ENTRY ( 1u << 17 )
#define FSCK_HANDLER_INHIBIT_NEXT ( 1u << 26 ) #define FSCK_HANDLER_INHIBIT_NEXT ( 1u << 18 )
struct handler_ctx { struct handler_ctx {
uint64_t parent_id; uint64_t parent_id;
@ -133,7 +132,7 @@ handle_input (
strncpy(ctx->data_buf.name, next, sizeof(ctx->data_buf.name)); strncpy(ctx->data_buf.name, next, sizeof(ctx->data_buf.name));
// fallthrough // fallthrough
case 'a': case 'a':
if (ctx->flags & BOOKMARKFS_BACKEND_READONLY) { if (ctx->flags & BOOKMARKFS_FSCK_HANDLER_READONLY) {
log_puts("cannot apply, fsck is running in readonly mode"); log_puts("cannot apply, fsck is running in readonly mode");
control = expect_input(ctx, &data->str); control = expect_input(ctx, &data->str);
break; break;
@ -278,7 +277,7 @@ handle_entry (
} }
int control = BOOKMARKFS_FSCK_NEXT; int control = BOOKMARKFS_FSCK_NEXT;
if (!(ctx->flags & BOOKMARKFS_BACKEND_READONLY)) { if (!(ctx->flags & BOOKMARKFS_FSCK_HANDLER_READONLY)) {
fix_entry(ctx, why, entry_data); fix_entry(ctx, why, entry_data);
control = BOOKMARKFS_FSCK_APPLY; control = BOOKMARKFS_FSCK_APPLY;
} }

View file

@ -34,16 +34,15 @@
#include <tcl.h> #include <tcl.h>
#include "backend.h"
#include "backend_util.h" #include "backend_util.h"
#include "fsck_handler.h" #include "fsck_handler.h"
#include "macros.h" #include "macros.h"
#include "version.h" #include "version.h"
#include "xstd.h" #include "xstd.h"
#define FSCK_HANDLER_UNSAFE ( 1u << 24 ) #define FSCK_HANDLER_UNSAFE ( 1u << 16 )
#define FSCK_HANDLER_EXPECT_INPUT ( 1u << 25 ) #define FSCK_HANDLER_EXPECT_INPUT ( 1u << 17 )
#define FSCK_HANDLER_INITIALIZED ( 1u << 26 ) #define FSCK_HANDLER_INITIALIZED ( 1u << 18 )
struct handler_ctx { struct handler_ctx {
Tcl_Interp *interp; Tcl_Interp *interp;
@ -147,7 +146,7 @@ init_interp (
DO_SET_VAR(interp, "isInteractive", DO_SET_VAR(interp, "isInteractive",
!!(flags & BOOKMARKFS_FSCK_HANDLER_INTERACTIVE)); !!(flags & BOOKMARKFS_FSCK_HANDLER_INTERACTIVE));
DO_SET_VAR(interp, "isReadonly", DO_SET_VAR(interp, "isReadonly",
!!(flags & BOOKMARKFS_BACKEND_READONLY)); !!(flags & BOOKMARKFS_FSCK_HANDLER_READONLY));
DO_SET_VAR(interp, "handler::next", BOOKMARKFS_FSCK_NEXT); DO_SET_VAR(interp, "handler::next", BOOKMARKFS_FSCK_NEXT);
DO_SET_VAR(interp, "handler::apply", BOOKMARKFS_FSCK_APPLY); DO_SET_VAR(interp, "handler::apply", BOOKMARKFS_FSCK_APPLY);
DO_SET_VAR(interp, "handler::userInput", BOOKMARKFS_FSCK_USER_INPUT); DO_SET_VAR(interp, "handler::userInput", BOOKMARKFS_FSCK_USER_INPUT);
@ -364,7 +363,7 @@ fsck_handler_run (
break; break;
case BOOKMARKFS_FSCK_APPLY: case BOOKMARKFS_FSCK_APPLY:
if (ctx->flags & BOOKMARKFS_BACKEND_READONLY) { if (ctx->flags & BOOKMARKFS_FSCK_HANDLER_READONLY) {
log_puts("cannot apply, fsck is running in readonly mode"); log_puts("cannot apply, fsck is running in readonly mode");
return -1; return -1;
} }