summaryrefslogtreecommitdiffstats
path: root/src/shared/verbs.h
blob: 010c0df3fdc97f7d05bc9d9f8030e8cd34319be7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* SPDX-License-Identifier: LGPL-2.1+ */
#pragma once

#include <stdbool.h>

#define VERB_ANY ((unsigned) -1)

typedef enum VerbFlags {
        VERB_DEFAULT      = 1 << 0,
        VERB_ONLINE_ONLY  = 1 << 1,
        VERB_MUST_BE_ROOT = 1 << 2,
} VerbFlags;

typedef struct {
        const char *verb;
        unsigned min_args, max_args;
        VerbFlags flags;
        int (* const dispatch)(int argc, char *argv[], void *userdata);
} Verb;

bool running_in_chroot_or_offline(void);

int dispatch_verb(int argc, char *argv[], const Verb verbs[], void *userdata);