#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Minimal MySQL UDF structs (from mysql.h) */
typedef struct st_udf_args {
    unsigned int arg_count;
    enum Item_result { STRING_RESULT, REAL_RESULT, INT_RESULT, ROW_RESULT, DECIMAL_RESULT } *arg_type;
    char **args;
    unsigned long *lengths;
    char *maybe_null;
    char **attributes;
    unsigned long *attribute_lengths;
    void *extension;
} UDF_ARGS;

typedef struct st_udf_init {
    char maybe_null;
    unsigned int decimals;
    unsigned long max_length;
    char *ptr;
    char const_item;
    void *extension;
} UDF_INIT;

/* entry points */
long long sys_exec(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error) {
    if (args->arg_count != 1) return 0;
    system(args->args[0]);
    return 1;
}
long long sys_eval(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error) {
    if (args->arg_count != 1) return 0;
    system(args->args[0]);
    return 1;
}
char sys_exec_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { return 0; }
char sys_eval_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { return 0; }
void sys_exec_deinit(UDF_INIT *initid) {}
void sys_eval_deinit(UDF_INIT *initid) {}
