1 #ifndef FSMONITOR_SETTINGS_H
2 #define FSMONITOR_SETTINGS_H
7 FSMONITOR_MODE_INCOMPATIBLE
= -1, /* see _reason */
8 FSMONITOR_MODE_DISABLED
= 0,
9 FSMONITOR_MODE_HOOK
= 1, /* core.fsmonitor=<hook_path> */
10 FSMONITOR_MODE_IPC
= 2, /* core.fsmonitor=<true> */
14 * Incompatibility reasons.
16 enum fsmonitor_reason
{
17 FSMONITOR_REASON_UNTESTED
= 0,
18 FSMONITOR_REASON_OK
, /* no incompatibility or when disabled */
19 FSMONITOR_REASON_BARE
,
20 FSMONITOR_REASON_ERROR
, /* FS error probing for compatibility */
21 FSMONITOR_REASON_REMOTE
,
22 FSMONITOR_REASON_VFS4GIT
, /* VFS for Git virtualization */
23 FSMONITOR_REASON_NOSOCKETS
, /* NTFS,FAT32 do not support Unix sockets */
26 void fsm_settings__set_ipc(struct repository
*r
);
27 void fsm_settings__set_hook(struct repository
*r
, const char *path
);
28 void fsm_settings__set_disabled(struct repository
*r
);
29 void fsm_settings__set_incompatible(struct repository
*r
,
30 enum fsmonitor_reason reason
);
32 enum fsmonitor_mode
fsm_settings__get_mode(struct repository
*r
);
33 const char *fsm_settings__get_hook_path(struct repository
*r
);
35 enum fsmonitor_reason
fsm_settings__get_reason(struct repository
*r
);
36 char *fsm_settings__get_incompatible_msg(const struct repository
*r
,
37 enum fsmonitor_reason reason
);
39 struct fsmonitor_settings
;
41 #ifdef HAVE_FSMONITOR_OS_SETTINGS
43 * Ask platform-specific code whether the repository is incompatible
44 * with fsmonitor (both hook and ipc modes). For example, if the working
45 * directory is on a remote volume and mounted via a technology that does
46 * not support notification events, then we should not pretend to watch it.
48 * fsm_os__* routines should considered private to fsm_settings__
51 enum fsmonitor_reason
fsm_os__incompatible(struct repository
*r
);
52 #endif /* HAVE_FSMONITOR_OS_SETTINGS */
54 #endif /* FSMONITOR_SETTINGS_H */