48 lines
880 B
C
48 lines
880 B
C
#pragma once
|
|
|
|
#include "ds.h"
|
|
|
|
typedef struct {
|
|
char *name;
|
|
void (*cb)(void *, int argc, char *argv[]);
|
|
void *data;
|
|
} wom_subcmd_t;
|
|
|
|
/**
|
|
* @brief pointer to all registered subcommands
|
|
*/
|
|
extern ds_sll_t *subcmds;
|
|
|
|
/**
|
|
* @brief register a new subcommand
|
|
*
|
|
* @param name name which should be used to call subcommand
|
|
* @param cb function to run when name is called
|
|
* @param data pointer to data to pass to the cb
|
|
* @return 0 on success
|
|
*/
|
|
int register_subcmd(char *name, void (*cb)(void *, int argc, char *argv[]), void *data);
|
|
|
|
|
|
/**
|
|
* @brief list out all registered subcmds
|
|
*
|
|
* @return list of subcmds
|
|
*/
|
|
char **list_subcmds();
|
|
|
|
/**
|
|
* @brief run subcmds mentioned in argv
|
|
*
|
|
* @param argc argc
|
|
* @param argv argv
|
|
*/
|
|
void run_subcmds(int argc, char *argv[]);
|
|
|
|
/**
|
|
* @brief unregister and free all subcmds
|
|
*
|
|
* @return 0 on success
|
|
*/
|
|
int cleanup_subcmds();
|