mvwt/mvwt.c

58 lines
1.2 KiB
C

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <skalibs/sgetopt.h>
#include <skalibs/stralloc.h>
#include <skalibs/env.h>
#include <skalibs/bytestr.h>
#include <skalibs/strerr.h>
#include <skalibs/exec.h>
#include "config.h"
#define USAGE "mvwt [-c cachedir] id"
#define WALLTAKER_URL "walltaker.joi.how"
int
main(int argc, char *const *argv)
{
int opt;
subgetopt l = SUBGETOPT_ZERO;
stralloc envmod = STRALLOC_ZERO;
PROG = "mvwt";
const char *cachedir = CACHE_DIR;
while ((opt = subgetopt_r(argc, (const char * const*) argv, "c:", &l)) != -1) {
switch (opt) {
case 'c': /* wallpaper cache directory */
cachedir = l.arg;
break;
default:
printf("switch %d", argc);
strerr_dieusage(100, USAGE);
break;
}
}
argc -= l.ind;
argv += l.ind;
if (argc != 1) {
printf("argc %d", argc);
strerr_dieusage(100, USAGE);
}
if (chdir(cachedir) < 0)
strerr_diefu(111, "chdir to cache dir "
"(mkdir it if it doesn't exist)");
char const *wtc_argv[] = { "s6-tlsclient", "-N", "-Z", "--",
WALLTAKER_URL, "443", "mvwtc", argv[0], 0 };
if (!env_addmodif(&envmod, "CADIR", CADIR_DIR))
strerr_diefu(111, "set CADIR");
xmexec_m(wtc_argv, envmod.s, envmod.len);
return 111; /* uh oh! */
}