|
|
|
@ -119,20 +119,25 @@ int clock_nanosleep(clockid_t clockid, int flags,
|
|
|
|
|
const struct timespec *request,
|
|
|
|
|
struct timespec *remain);
|
|
|
|
|
|
|
|
|
|
__attribute__ ((nonnull (2))) __attribute__ ((malloc))
|
|
|
|
|
static inline char*
|
|
|
|
|
notcurses_data_path(const char* f){
|
|
|
|
|
char* datadir = notcurses_data_dir();
|
|
|
|
|
if(datadir == NULL){
|
|
|
|
|
return NULL;
|
|
|
|
|
notcurses_data_path(const char* ddir, const char* f){
|
|
|
|
|
char* datadir = NULL;
|
|
|
|
|
if(ddir == NULL){
|
|
|
|
|
datadir = notcurses_data_dir();
|
|
|
|
|
if(datadir == NULL){
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
ddir = datadir;
|
|
|
|
|
}
|
|
|
|
|
const size_t dlen = strlen(datadir);
|
|
|
|
|
const size_t dlen = strlen(ddir);
|
|
|
|
|
// cast is for benefit of c++ callers, sigh
|
|
|
|
|
char* path = (char*)malloc(dlen + 1 + strlen(f) + 1);
|
|
|
|
|
if(path == NULL){
|
|
|
|
|
free(datadir);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
strcpy(path, datadir);
|
|
|
|
|
strcpy(path, ddir);
|
|
|
|
|
free(datadir);
|
|
|
|
|
path[dlen] = path_separator();
|
|
|
|
|
strcpy(path + dlen + 1, f);
|
|
|
|
|