Skip to content

Commit a85eb14

Browse files
committed
Overhaul config parsing
Use libucl, centralize parsing, add basic redis configurability.
1 parent 3ba7fcb commit a85eb14

18 files changed

+159
-233
lines changed

Makefile.am

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ AM_CPPFLAGS = @CPPFLAGS@ @LDAP_CPPFLAGS@ @BDB_CPPFLAGS@
44

55
bin_PROGRAMS = simvacation simunvacation
66

7-
simvacation_SOURCES = yasl.c yasl.h argcargv.c argcargv.h vdb.h vlu.h simvacation.h simvacation.c
8-
simvacation_LDADD =
7+
simvacation_SOURCES = yasl.c yasl.h vdb.h vlu.h vutil.c vutil.h simvacation.h simvacation.c
8+
simvacation_LDADD = $(LIBUCL_LIBS)
99

10-
simunvacation_SOURCES = yasl.c yasl.h argcargv.c argcargv.h simvacation.h vdb.h vlu.h simunvacation.c
11-
simunvacation_LDADD =
10+
simunvacation_SOURCES = yasl.c yasl.h simvacation.h vdb.h vlu.h vutil.c vutil.h simunvacation.c
11+
simunvacation_LDADD = $(LIBUCL_LIBS)
1212

1313
if BACKEND_NULL
1414
simvacation_SOURCES += vdb_null.c vdb_null.h vlu_null.c vlu_null.h

argcargv.c

Lines changed: 0 additions & 119 deletions
This file was deleted.

argcargv.h

Lines changed: 0 additions & 11 deletions
This file was deleted.

configure.ac

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ AC_PROG_CC
2121
AC_PROG_CC_C99
2222

2323
# Checks for libraries.
24+
PKG_CHECK_MODULES([LIBUCL], [libucl])
25+
2426
AS_IF([test x$with_backend = xbdb],
2527
[AX_PATH_BDB([4], [
2628
AC_DEFINE([HAVE_BDB], [1], [Define if BDB exists.])

packaging/rpm/simvacation.spec.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ URL: http://its.umich.edu/
88
Source0: %{name}-%{version}.tar.xz
99
BuildRequires: setup
1010
BuildRequires: pkgconfig(urcl)
11+
BuildRequires: pkgconfig(libucl)
1112
BuildRequires: openldap-devel
1213

1314
%description

simunvacation.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* simunvacation.c - clean up database files for people who are no longer
33
* "on vacation".
44
*
5-
* Copyright (c) 2004-2015 Regents of The University of Michigan.
5+
* Copyright (c) 2004-2016 Regents of The University of Michigan.
66
*
77
* Permission is hereby granted, free of charge, to any person obtaining a copy
88
* of this software and associated documentation files (the "Software"), to deal
@@ -36,6 +36,7 @@
3636
#include "simvacation.h"
3737
#include "vdb.h"
3838
#include "vlu.h"
39+
#include "vutil.h"
3940

4041
void usage( void );
4142

@@ -48,7 +49,9 @@ int main( int argc, char **argv)
4849

4950
struct vlu *vlu;
5051
struct vdb *vdb;
51-
char *vlu_config = CONFFILE;
52+
53+
char *config_file = CONFFILE;
54+
ucl_object_t *config;
5255

5356
struct name_list *uniqnames;
5457
struct name_list *u;
@@ -57,7 +60,7 @@ int main( int argc, char **argv)
5760
switch( (char) ch ) {
5861

5962
case 'c':
60-
vlu_config = optarg;
63+
config_file = optarg;
6164
break;
6265

6366
case 'd':
@@ -77,10 +80,14 @@ int main( int argc, char **argv)
7780
openlog( "simunvacation", LOG_PID, LOG_VACATION );
7881
}
7982

80-
vdb = vdb_init( "simunvacation" );
83+
if (( config = vacation_config( config_file )) == NULL ) {
84+
exit( 1 );
85+
}
86+
87+
vdb = vdb_init( config, "simunvacation" );
8188
uniqnames = vdb_get_names( vdb );
8289

83-
vlu = vlu_init( vlu_config );
90+
vlu = vlu_init( config );
8491
if ( vlu_connect( vlu ) != 0 ) {
8592
vdb_close( vdb );
8693
exit( 1 );

simvacation.c

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,12 @@
4141
#include <strings.h>
4242
#include <unistd.h>
4343

44+
#include <ucl.h>
45+
4446
#include "simvacation.h"
4547
#include "vdb.h"
4648
#include "vlu.h"
49+
#include "vutil.h"
4750

4851
/*
4952
* VACATION -- return a message to the sender when on vacation.
@@ -92,11 +95,12 @@ int debug;
9295
main( int argc, char **argv )
9396
{
9497
debug = 0;
95-
time_t interval;
96-
int ch, rc;
97-
char *vacmsg;
98-
char *progname;
99-
char *vlu_config = CONFFILE;
98+
time_t interval;
99+
int ch, rc;
100+
char *vacmsg;
101+
char *progname;
102+
char *config_file = CONFFILE;
103+
ucl_object_t *config;
100104

101105
if ( (progname = strrchr( argv[0], '/' )) == NULL )
102106
progname = strdup( argv[0] );
@@ -115,7 +119,7 @@ main( int argc, char **argv )
115119
while (( ch = getopt( argc, argv, "c:df:r:" )) != EOF ) {
116120
switch( (char) ch ) {
117121
case 'c':
118-
vlu_config = optarg;
122+
config_file = optarg;
119123
break;
120124
case 'd':
121125
debug = 1;
@@ -154,7 +158,11 @@ main( int argc, char **argv )
154158

155159
rcpt = *argv;
156160

157-
if (( vlu = vlu_init( vlu_config )) == NULL ) {
161+
if (( config = vacation_config( config_file )) == NULL ) {
162+
myexit( EX_TEMPFAIL );
163+
}
164+
165+
if (( vlu = vlu_init( config )) == NULL ) {
158166
myexit( EX_TEMPFAIL );
159167
}
160168

@@ -175,7 +183,7 @@ main( int argc, char **argv )
175183
myexit( rc );
176184
}
177185

178-
if (( vdb = vdb_init( rcpt )) == NULL ) {
186+
if (( vdb = vdb_init( config, rcpt )) == NULL ) {
179187
myexit( EX_OK );
180188
}
181189

vdb.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#ifndef BACKEND_VDB_H
22
#define BACKEND_VDB_H
33

4-
struct vdb *vdb_init( char * );
4+
#include <ucl.h>
5+
6+
struct vdb *vdb_init( const ucl_object_t *, const char * );
57
void vdb_close( struct vdb * );
68
int vdb_recent( struct vdb *, char * );
79
int vdb_store_interval( struct vdb *, time_t );

vdb_berkeley.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void bdb_err_log ( const DB_ENV *, const char *, const char * );
4646
char *bdb_path( char *, char * );
4747

4848
struct vdb *
49-
vdb_init( char *rcpt )
49+
vdb_init( const ucl_object_t *config, const char *rcpt )
5050
{
5151
int rc;
5252
char *path;

vdb_lmdb.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ char *lmdb_vdb_key( char *, char * );
4141
void lmdb_vdb_assert( MDB_env *, const char * );
4242

4343
struct vdb *
44-
vdb_init( char *rcpt )
44+
vdb_init( const ucl_object_t *config, const char *rcpt )
4545
{
4646
int rc;
4747
struct vdb *vdb;

0 commit comments

Comments
 (0)