#include "platform_defs.h"
#include "command.h"
+#include "../quota/init.h"
static cmdinfo_t help_cmd;
static void help_onecmd(const char *cmd, const cmdinfo_t *ct);
help_cmd.cfunc = help_f;
help_cmd.argmin = 0;
help_cmd.argmax = 1;
- help_cmd.flags = CMD_FLAG_GLOBAL;
+ help_cmd.flags = CMD_FLAG_GLOBAL | CMD_ALL_FSTYPES;
help_cmd.args = _("[command]");
help_cmd.oneline = _("help for one or all commands");
#include "platform_defs.h"
#include "command.h"
+#include "../quota/init.h"
static cmdinfo_t quit_cmd;
quit_cmd.cfunc = quit_f;
quit_cmd.argmin = -1;
quit_cmd.argmax = -1;
- quit_cmd.flags = CMD_FLAG_GLOBAL;
+ quit_cmd.flags = CMD_FLAG_GLOBAL | CMD_ALL_FSTYPES;
quit_cmd.oneline = _("exit the program");
add_command(&quit_cmd);
init_check_command(
const cmdinfo_t *ct)
{
- if (fs_path &&
- !(ct->flags & CMD_FLAG_FOREIGN_OK) &&
- (fs_path->fs_flags & FS_FOREIGN)) {
- fprintf(stderr,
- _("foreign mount active, %s command is for XFS filesystems only\n"),
- ct->name);
- return 0;
- }
- return 1;
+ if (!fs_path)
+ return 1;
+
+ /* Always run commands that we are told to skip here */
+ if (ct->flags & CMD_ALL_FSTYPES)
+ return 1;
+
+ /* if it's an XFS filesystem, always run the command */
+ if (!(fs_path->fs_flags & FS_FOREIGN))
+ return 1;
+
+ /* If the user specified foreign filesysetms are ok, run it */
+ if (foreign_allowed &&
+ (ct->flags & CMD_FLAG_FOREIGN_OK))
+ return 1;
+
+ /* foreign filesystem and it's not a valid command! */
+ fprintf(stderr, _("%s command is for XFS filesystems only\n"),
+ ct->name);
+ return 0;
}
static void
extern void state_init(void);
extern void init_cvtnum(unsigned int *, unsigned int *);
+
+#define CMD_ALL_FSTYPES (1<<0) /* command is always available */