You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
#ifndef FSMONITOR_SETTINGS_H |
|
#define FSMONITOR_SETTINGS_H |
|
|
|
struct repository; |
|
|
|
enum fsmonitor_mode { |
|
FSMONITOR_MODE_INCOMPATIBLE = -1, /* see _reason */ |
|
FSMONITOR_MODE_DISABLED = 0, |
|
FSMONITOR_MODE_HOOK = 1, /* core.fsmonitor=<hook_path> */ |
|
FSMONITOR_MODE_IPC = 2, /* core.fsmonitor=<true> */ |
|
}; |
|
|
|
/* |
|
* Incompatibility reasons. |
|
*/ |
|
enum fsmonitor_reason { |
|
FSMONITOR_REASON_UNTESTED = 0, |
|
FSMONITOR_REASON_OK, /* no incompatibility or when disabled */ |
|
FSMONITOR_REASON_BARE, |
|
FSMONITOR_REASON_ERROR, /* FS error probing for compatibility */ |
|
FSMONITOR_REASON_REMOTE, |
|
FSMONITOR_REASON_VFS4GIT, /* VFS for Git virtualization */ |
|
FSMONITOR_REASON_NOSOCKETS, /* NTFS,FAT32 do not support Unix sockets */ |
|
}; |
|
|
|
void fsm_settings__set_ipc(struct repository *r); |
|
void fsm_settings__set_hook(struct repository *r, const char *path); |
|
void fsm_settings__set_disabled(struct repository *r); |
|
void fsm_settings__set_incompatible(struct repository *r, |
|
enum fsmonitor_reason reason); |
|
|
|
enum fsmonitor_mode fsm_settings__get_mode(struct repository *r); |
|
const char *fsm_settings__get_hook_path(struct repository *r); |
|
|
|
enum fsmonitor_reason fsm_settings__get_reason(struct repository *r); |
|
char *fsm_settings__get_incompatible_msg(struct repository *r, |
|
enum fsmonitor_reason reason); |
|
|
|
struct fsmonitor_settings; |
|
|
|
#ifdef HAVE_FSMONITOR_OS_SETTINGS |
|
/* |
|
* Ask platform-specific code whether the repository is incompatible |
|
* with fsmonitor (both hook and ipc modes). For example, if the working |
|
* directory is on a remote volume and mounted via a technology that does |
|
* not support notification events, then we should not pretend to watch it. |
|
* |
|
* fsm_os__* routines should considered private to fsm_settings__ |
|
* routines. |
|
*/ |
|
enum fsmonitor_reason fsm_os__incompatible(struct repository *r, int ipc); |
|
#endif /* HAVE_FSMONITOR_OS_SETTINGS */ |
|
|
|
#endif /* FSMONITOR_SETTINGS_H */
|
|
|