43 lines
844 B
C

/*
* Copyright (c) Camden Dixie O'Brien
* SPDX-License-Identifier: AGPL-3.0-only
*/
#define _POSIX_C_SOURCE 199309L
#include <dlfcn.h>
#include <stdio.h>
#include <time.h>
typedef const char *(*getmsg_t)(void);
int main(void)
{
const char *libfn = "libmod.so";
const char *symn = "getmsg";
void *mod = NULL;
getmsg_t getmsg = NULL;
const struct timespec pause = { .tv_nsec = 100000000 };
while (1) {
if (mod)
dlclose(mod);
mod = dlopen(libfn, RTLD_NOW);
if (!mod) {
fprintf(
stderr, "Error: couldn't open %s: %s\n", libfn, dlerror());
return 1;
}
getmsg = (getmsg_t)dlsym(mod, symn);
if (!getmsg) {
fprintf(
stderr, "Error: couldn't find symbol %s: %s\n", symn,
dlerror());
return 1;
}
printf("\33[2K\r%s", getmsg());
fflush(stdout);
nanosleep(&pause, NULL);
}
return 0;
}