#include <pwd.h>
#include <string.h>
#include "ini.h"
+#include "utility.h"
#include "version.h"
#define CFG_FILE "/etc/repo_shell.cfg"
char *owner;
} cfg_t;
-#undef USE_DEFAULTS
-#ifdef USE_DEFAULTS /* perhaps we want defaults? Not sure */
-static cfg_t cfg {
- svn_root: "/var/lib/svn/repositories",
- git_root: "/var/lib/git",
- owner: "repo"
-};
-#else
static cfg_t cfg;
-#endif
-
-static void die(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- fprintf(stderr, "error: ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, "\n" );
- va_end(ap);
- exit(1);
-}
-
-char *xstrdup(const char *str)
-{
- char *ret = strdup(str);
- if (!ret)
- die("out of memory");
- return ret;
-}
-
-void *xmalloc(size_t size)
-{
- void *ret;
-
- ret = malloc(size);
- if (!ret && !size)
- ret = malloc(1);
- if (!ret)
- die("out of memory");
- return ret;
-}
static uid_t user_uid(char *user)
{
execvp(argv[0], (char *const *) argv);
}
-#ifdef USE_DEFAULTS
- ini_parse("repo_shell.cfg", ini_handler, &cfg);
-#else
if (ini_parse(CFG_FILE, ini_handler, &cfg) < 0)
die("cannot read config file %s", CFG_FILE);
-#endif
prog = xstrdup(argv[2]);
if (!strncmp(prog, "git", 3) && isspace(prog[3]))