On Sun, Jan 31, 2016 at 09:39:52AM +0100, Landry Breuil wrote:
> Hi,
> 
> i'm tinkering with ldapd and writing regress tests for it, and to
> allow running independent instances (with separate port/control
> socket/etc) i needed to add the possibility to specify an alternative
> datadir, which was so far #defined in the code.
> Patch is pretty simple and works fine, i'm open to suggestions of course
> on a better wording for the manpage and option choose (i went for -r..)
> okays welcome too !
> 

the diff looks good and it would permit to make regress tests, so OK semarie@ :)

> 
> Index: ldapd.8
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ldapd/ldapd.8,v
> retrieving revision 1.12
> diff -u -r1.12 ldapd.8
> --- ldapd.8   11 Aug 2014 08:21:55 -0000      1.12
> +++ ldapd.8   23 Jan 2016 10:11:48 -0000
> @@ -57,6 +57,11 @@
>  .Ar file
>  as the configuration file, instead of the default
>  .Pa /etc/ldapd.conf .
> +.It Fl r Ar directory
> +Store and read database files in
> +.Ar directory
> +, instead of the default
> +.Pa /var/db/ldap .
>  .It Fl n
>  Configtest mode.
>  Only check the configuration file for validity.
> Index: ldapd.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ldapd/ldapd.c,v
> retrieving revision 1.16
> diff -u -r1.16 ldapd.c
> --- ldapd.c   17 Jan 2016 08:13:34 -0000      1.16
> +++ ldapd.c   23 Jan 2016 10:11:48 -0000
> @@ -50,6 +50,7 @@
>  
>  struct ldapd_stats    stats;
>  pid_t                         ldape_pid;
> +char *                        datadir;
>  
>  void
>  usage(void)
> @@ -57,7 +58,7 @@
>       extern char     *__progname;
>  
>       fprintf(stderr, "usage: %s [-dnv] [-D macro=value] "
> -         "[-f file] [-s file]\n", __progname);
> +         "[-f file] [-r directory] [-s file]\n", __progname);
>       exit(1);
>  }
>  
> @@ -117,9 +118,10 @@
>       struct event             ev_sigchld;
>       struct event             ev_sighup;
>  
> +     datadir = DATADIR;
>       log_init(1);            /* log to stderr until daemonized */
>  
> -     while ((c = getopt(argc, argv, "dhvD:f:ns:")) != -1) {
> +     while ((c = getopt(argc, argv, "dhvD:f:nr:s:")) != -1) {
>               switch (c) {
>               case 'd':
>                       debug = 1;
> @@ -139,6 +141,9 @@
>               case 'n':
>                       configtest = 1;
>                       break;
> +             case 'r':
> +                     datadir = optarg;
> +                     break;
>               case 's':
>                       csockpath = optarg;
>                       break;
> @@ -366,7 +371,7 @@
>       /* make sure path is null-terminated */
>       oreq->path[PATH_MAX] = '\0';
>  
> -     if (strncmp(oreq->path, DATADIR, strlen(DATADIR)) != 0) {
> +     if (strncmp(oreq->path, datadir, strlen(datadir)) != 0) {
>               log_warnx("refusing to open file %s", oreq->path);
>               fatal("ldape sent invalid open request");
>       }
> Index: namespace.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ldapd/namespace.c,v
> retrieving revision 1.14
> diff -u -r1.14 namespace.c
> --- namespace.c       24 Dec 2015 17:47:57 -0000      1.14
> +++ namespace.c       23 Jan 2016 10:11:48 -0000
> @@ -38,6 +38,7 @@
>  static int            namespace_set_fd(struct namespace *ns,
>                           struct btree **bt, int fd, unsigned int flags);
>  
> +extern char          *datadir;
>  int
>  namespace_begin_txn(struct namespace *ns, struct btree_txn **data_txn,
>      struct btree_txn **indx_txn, int rdonly)
> @@ -115,7 +116,7 @@
>       if (ns->sync == 0)
>               db_flags |= BT_NOSYNC;
>  
> -     if (asprintf(&ns->data_path, "%s/%s_data.db", DATADIR, ns->suffix) < 0)
> +     if (asprintf(&ns->data_path, "%s/%s_data.db", datadir, ns->suffix) < 0)
>               return -1;
>       log_info("opening namespace %s", ns->suffix);
>       ns->data_db = btree_open(ns->data_path, db_flags | BT_REVERSEKEY, 0644);
> @@ -124,7 +125,7 @@
>  
>       btree_set_cache_size(ns->data_db, ns->cache_size);
>  
> -     if (asprintf(&ns->indx_path, "%s/%s_indx.db", DATADIR, ns->suffix) < 0)
> +     if (asprintf(&ns->indx_path, "%s/%s_indx.db", datadir, ns->suffix) < 0)
>               return -1;
>       ns->indx_db = btree_open(ns->indx_path, db_flags, 0644);
>       if (ns->indx_db == NULL)
> 
> 

-- 
Sebastien Marie

Reply via email to