/**
* @file src/rc.c
* @brief Define run commands processing functions
*/
#include "chore.h"
#include "exproriented.h"
#include "main.h"
[[gnu::nonnull(3)]] static void
setCfgPath(char const *specified_cfgpath, size_t len, char *restrict cfgpath) {
char const *configdir = specified_cfgpath ?: ".config/rpx/";
char const *homedir = getenv("HOME") ?: ".";
size_t const hdlen = strlen(homedir);
strncpy(cfgpath, homedir, len);
cfgpath += hdlen;
*cfgpath++ = '/';
strncpy(cfgpath, configdir, len - hdlen - 1);
}
void loadInitScript(char const *path) {
char configpath[buf_size];
setCfgPath(path, buf_size, configpath);
size_t const configpathlen = strlen(configpath);
char fname[buf_size];
strncpy(fname, configpath, configpathlen);
DIR *dp dropdir = opendir(configpath) ?: p$return();
for (struct dirent const *entry; (entry = readdir(dp));) {
if (entry->d_name[0] == '.') continue; // ignore hidden files
strncpy(fname + configpathlen, entry->d_name, buf_size - configpathlen);
FILE *fp dropfile = fopen(fname, "r");
readerLoop(fp);
}
}