#include <pwd.h>
#include <apr_getopt.h>
+#include <apr_pools.h>
+#include <apr_strings.h>
#include <dlfcn.h>
static CYUTF8String Run(CYPool &pool, int client, CYUTF8String code) {
const char *json;
- size_t size;
+ uint32_t size;
if (client == -1) {
mode_ = Running;
CYSendAll(client, code.data, code.size);
mode_ = Waiting;
CYRecvAll(client, &size, sizeof(size));
- if (size == _not(size_t))
+ if (size == _not(uint32_t))
json = NULL;
else {
char *temp(new(pool) char[size + 1]);
else
passwd = getpwuid(getuid());
- const char *basedir(apr_psprintf(pool, "%s/.cycript", passwd->pw_dir));
- const char *histfile(apr_psprintf(pool, "%s/history", basedir));
+ const char *basedir(pool.strcat(passwd->pw_dir, "/.cycript", NULL));
+ const char *histfile(pool.strcat(basedir, "/history", NULL));
size_t histlines(0);
rl_initialize();
void InjectLibrary(pid_t pid);
int Main(int argc, char const * const argv[], char const * const envp[]) {
+ _aprcall(apr_initialize());
+
+ apr_pool_t *pool;
+ apr_pool_create(&pool, NULL);
+
bool tty(isatty(STDIN_FILENO));
bool compile(false);
CYOptions options;
pid_t pid(_not(pid_t));
#endif
- CYPool pool;
apr_getopt_t *state;
_aprcall(apr_getopt_init(&state, pool, argc, argv));
pid = strtoul(arg, &end, 0);
if (arg + size != end) {
// XXX: arg needs to be escaped in some horrendous way of doom
- const char *command(apr_psprintf(pool, "ps axc|sed -e '/^ *[0-9]/{s/^ *\\([0-9]*\\)\\( *[^ ]*\\)\\{3\\} *-*\\([^ ]*\\)/\\3 \\1/;/^%s /{s/^[^ ]* //;q;};};d'", arg));
+ const char *command(apr_pstrcat(pool, "ps axc|sed -e '/^ *[0-9]/{s/^ *\\([0-9]*\\)\\( *[^ ]*\\)\\{3\\} *-*\\([^ ]*\\)/\\3 \\1/;/^", arg, " /{s/^[^ ]* //;q;};};d'", NULL));
if (FILE *pids = popen(command, "r")) {
char value[32];
}
}
+ apr_pool_destroy(pool);
+
return 0;
}